components/vim/vim72-patches/runtime.patch
changeset 198 172fc01ce997
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/vim/vim72-patches/runtime.patch	Thu Apr 07 16:25:07 2011 -0700
@@ -0,0 +1,58169 @@
+diff -Nur runtime/autoload/ccomplete.vim runtime/autoload/ccomplete.vim
+--- runtime/autoload/ccomplete.vim	2007-08-30 02:15:32.000000000 -0700
++++ runtime/autoload/ccomplete.vim	2011-01-18 10:40:55.368782092 -0800
+@@ -1,7 +1,7 @@
+ " Vim completion script
+ " Language:	C
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2007 Aug 30
++" Last Change:	2010 Mar 23
+ 
+ 
+ " This function is used for the 'omnifunc' option.
+@@ -161,7 +161,7 @@
+       let res = [{'match': match, 'tagline' : '', 'kind' : kind, 'info' : line}]
+     else
+       " Completing "var.", "var.something", etc.
+-      let res = s:Nextitem(strpart(line, 0, col), items[-1], 0, 1)
++      let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1)
+     endif
+   endif
+ 
+diff -Nur runtime/autoload/getscript.vim runtime/autoload/getscript.vim
+--- runtime/autoload/getscript.vim	2008-07-10 11:17:15.000000000 -0700
++++ runtime/autoload/getscript.vim	2011-01-18 10:40:55.376846683 -0800
+@@ -1,8 +1,8 @@
+ " ---------------------------------------------------------------------
+ " getscript.vim
+ "  Author:	Charles E. Campbell, Jr.
+-"  Date:	Jul 10, 2008
+-"  Version:	31
++"  Date:	Dec 28, 2009
++"  Version:	32
+ "  Installing:	:help glvs-install
+ "  Usage:	:help glvs
+ "
+@@ -12,19 +12,24 @@
+ " Initialization:	{{{1
+ " if you're sourcing this file, surely you can't be
+ " expecting vim to be in its vi-compatible mode!
++if exists("g:loaded_getscript")
++ finish
++endif
++let g:loaded_getscript= "v32"
+ if &cp
+  echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)"
+  finish
+ endif
++if v:version < 702
++ echohl WarningMsg
++ echo "***warning*** this version of getscript needs vim 7.2"
++ echohl Normal
++ finish
++endif
+ let s:keepcpo = &cpo
+ set cpo&vim
+ "DechoTabOn
+ 
+-if exists("g:loaded_getscript")
+- finish
+-endif
+-let g:loaded_getscript= "v31"
+-
+ " ---------------------------
+ " Global Variables: {{{1
+ " ---------------------------
+@@ -40,25 +45,6 @@
+   let g:getscript_cygwin= 0
+  endif
+ endif
+-" shell quoting character {{{2
+-if exists("g:netrw_shq") && !exists("g:getscript_shq")
+- let g:getscript_shq= g:netrw_shq
+-elseif !exists("g:getscript_shq")
+- if exists("&shq") && &shq != ""
+-  let g:getscript_shq= &shq
+- elseif exists("&sxq") && &sxq != ""
+-  let g:getscript_shq= &sxq
+- elseif has("win32") || has("win95") || has("win64") || has("win16")
+-  if g:getscript_cygwin
+-   let g:getscript_shq= "'"
+-  else
+-   let g:getscript_shq= '"'
+-  endif
+- else
+-  let g:getscript_shq= "'"
+- endif
+-" call Decho("g:getscript_shq<".g:getscript_shq.">")
+-endif
+ 
+ " wget vs curl {{{2
+ if !exists("g:GetLatestVimScripts_wget")
+@@ -112,7 +98,9 @@
+   endif
+  endif
+ 
+- if exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim)
++ if exists("g:GetLatestVimScripts_autoinstalldir") && isdirectory(g:GetLatestVimScripts_autoinstalldir)
++  let s:autoinstall= g:GetLatestVimScripts_autoinstalldir"
++ elseif exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim)
+   let s:autoinstall= $HOME."/".s:dotvim
+  endif
+ " call Decho("s:autoinstall<".s:autoinstall.">")
+@@ -165,7 +153,6 @@
+ "   call Dret("GetLatestVimScripts : unable to find a GetLatest subdirectory")
+    return
+   endif
+-
+   if filewritable(datadir) != 2
+    echoerr "(getLatestVimScripts) Your ".datadir." isn't writable"
+ "   call Dret("GetLatestVimScripts : non-writable directory<".datadir.">")
+@@ -182,21 +169,29 @@
+ "   call Dret("GetLatestVimScripts : non-writable datafile<".datafile.">")
+    return
+   endif
++  " --------------------
++  " Passed sanity checks
++  " --------------------
++
+ "  call Decho("datadir  <".datadir.">")
+ "  call Decho("datafile <".datafile.">")
+ 
+-  " don't let any events interfere (like winmanager's, taglist's, etc)
+-  let eikeep= &ei
+-  let hlskeep= &hls
+-  set ei=all hls&vim
+-
+-  " record current directory, change to datadir, open split window with
+-  " datafile
++  " don't let any event handlers interfere (like winmanager's, taglist's, etc)
++  let eikeep  = &ei
++  let hlskeep = &hls
++  let acdkeep = &acd
++  set ei=all hls&vim noacd
++
++  " Edit the datafile (ie. GetLatestVimScripts.dat):
++  " 1. record current directory (origdir),
++  " 2. change directory to datadir,
++  " 3. split window
++  " 4. edit datafile
+   let origdir= getcwd()
+ "  call Decho("exe cd ".fnameescape(substitute(datadir,'\','/','ge')))
+   exe "cd ".fnameescape(substitute(datadir,'\','/','ge'))
+   split
+-"  call Decho("exe e ".fnameescape(substitute(datafile,'\','/','ge')))
++"  call Decho("exe  e ".fnameescape(substitute(datafile,'\','/','ge')))
+   exe "e ".fnameescape(substitute(datafile,'\','/','ge'))
+   res 1000
+   let s:downloads = 0
+@@ -207,69 +202,68 @@
+ "  call Decho("searching plugins for GetLatestVimScripts dependencies")
+   let lastline    = line("$")
+ "  call Decho("lastline#".lastline)
+-  let plugins     = split(globpath(&rtp,"plugin/*.vim"),'\n')
++  let firstdir    = substitute(&rtp,',.*$','','')
++  let plugins     = split(globpath(firstdir,"plugin/*.vim"),'\n')
++  let plugins     = plugins + split(globpath(firstdir,"AsNeeded/*.vim"),'\n')
+   let foundscript = 0
+-  let firstdir= ""
+ 
++  " this loop updates the GetLatestVimScripts.dat file
++  " with dependencies explicitly mentioned in the plugins
++  " via   GetLatestVimScripts: ... lines
++  " It reads the plugin script at the end of the GetLatestVimScripts.dat
++  " file, examines it, and then removes it.
+   for plugin in plugins
++"   call Decho(" ")
+ "   call Decho("plugin<".plugin.">")
+ 
+-   " don't process plugins in system directories
+-   if firstdir == ""
+-    let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','')
+-"    call Decho("setting firstdir<".firstdir.">")
+-   else
+-    let curdir= substitute(plugin,'[/\\][^/\\]\+$','','')
+-"    call Decho("curdir<".curdir.">")
+-    if curdir != firstdir
+-"     call Decho("skipping subsequent plugins: curdir<".curdir."> != firstdir<".firstdir.">")
+-     break
+-    endif
+-   endif
+-
+    " read plugin in
+    " evidently a :r creates a new buffer (the "#" buffer) that is subsequently unused -- bwiping it
+    $
+-"   call Decho(" ")
+ "   call Decho(".dependency checking<".plugin."> line$=".line("$"))
+-"   call Decho("exe silent r ".fnameescape(plugin))
++"   call Decho("..exe silent r ".fnameescape(plugin))
+    exe "silent r ".fnameescape(plugin)
+    exe "silent bwipe ".bufnr("#")
+ 
+    while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0
+-    let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
+-    let llp1     = lastline+1
+-"    call Decho("..newscript<".newscript.">")
+-
+-    " don't process ""GetLatestVimScripts lines -- those that have been doubly-commented out
+-    if newscript !~ '^"'
+-     " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile
+-     let curline     = line(".")
+-     let noai_script = substitute(newscript,'\s*:AutoInstall:\s*','','e')
+-     exe llp1
+-     let srchline    = search('\<'.noai_script.'\>','bW')
+-"     call Decho("..noai_script<".noai_script."> srch=".srchline."curline#".line(".")." lastline#".lastline)
+-
+-     if srchline == 0
+-      " found a new script to permanently include in the datafile
+-      let keep_rega   = @a
+-      let @a          = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
+-      exe lastline."put a"
+-      echomsg "Appending <".@a."> to ".datafile." for ".newscript
+-"      call Decho("..APPEND (".noai_script.")<".@a."> to GetLatestVimScripts.dat")
+-      let @a          = keep_rega
+-      let lastline    = llp1
+-      let curline     = curline     + 1
+-      let foundscript = foundscript + 1
+-"     else	" Decho
+-"      call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
+-     endif
++    let depscript   = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e')
++    let depscriptid = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\(\d\+\)\s\+.*$','\1','')
++    let llp1        = lastline+1
++"    call Decho("..depscript<".depscript.">")
++
++    " found a "GetLatestVimScripts: # #" line in the script;
++    " check if its already in the datafile by searching backwards from llp1,
++    " the (prior to reading in the plugin script) last line plus one of the GetLatestVimScripts.dat file,
++    " for the script-id with no wrapping allowed.
++    let curline     = line(".")
++    let noai_script = substitute(depscript,'\s*:AutoInstall:\s*','','e')
++    exe llp1
++    let srchline    = search('^\s*'.depscriptid.'\s\+\d\+\s\+.*$','bW')
++    if srchline == 0
++     " this second search is taken when, for example, a   0 0 scriptname  is to be skipped over
++     let srchline= search('\<'.noai_script.'\>','bW')
++    endif
++"    call Decho("..noai_script<".noai_script."> depscriptid#".depscriptid." srchline#".srchline." curline#".line(".")." lastline#".lastline)
+ 
+-     let curline = curline + 1
+-     exe curline
++    if srchline == 0
++     " found a new script to permanently include in the datafile
++     let keep_rega   = @a
++     let @a          = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','')
++     echomsg "Appending <".@a."> to ".datafile." for ".depscript
++"     call Decho("..Appending <".@a."> to ".datafile." for ".depscript)
++     exe lastline."put a"
++     let @a          = keep_rega
++     let lastline    = llp1
++     let curline     = curline     + 1
++     let foundscript = foundscript + 1
++"    else	" Decho
++"     call Decho("..found <".noai_script."> (already in datafile at line#".srchline.")")
+     endif
++
++    let curline = curline + 1
++    exe curline
+    endwhile
+ 
++   " llp1: last line plus one
+    let llp1= lastline + 1
+ "   call Decho(".deleting lines: ".llp1.",$d")
+    exe "silent! ".llp1.",$d"
+@@ -282,7 +276,9 @@
+    setlocal nomod
+   endif
+ 
++  " --------------------------------------------------------------------
+   " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat
++  " --------------------------------------------------------------------
+ "  call Decho("begin: checking out-of-date scripts using datafile<".datafile.">")
+   setlocal lz
+   1
+@@ -322,8 +318,9 @@
+ 
+   " restore events and current directory
+   exe "cd ".fnameescape(substitute(origdir,'\','/','ge'))
+-  let &ei= eikeep
+-  let &hls= hlskeep
++  let &ei  = eikeep
++  let &hls = hlskeep
++  let &acd = acdkeep
+   setlocal nolz
+ "  call Dredir("BUFFER TEST (GetLatestVimScripts 2)","ls!")
+ "  call Dret("GetLatestVimScripts : did ".s:downloads." downloads")
+@@ -333,7 +330,7 @@
+ "  GetOneScript: (Get Latest Vim Script) this function operates {{{1
+ "    on the current line, interpreting two numbers and text as
+ "    ScriptID, SourceID, and Filename.
+-"    It downloads any scripts that have newer versions from vim.sf.net.
++"    It downloads any scripts that have newer versions from vim.sourceforge.net.
+ fun! s:GetOneScript(...)
+ "   call Dfunc("GetOneScript()")
+ 
+@@ -391,6 +388,7 @@
+ "   call Decho("fname   <".fname.">")
+   endif
+ 
++  " plugin author protection from downloading his/her own scripts atop their latest work
+   if scriptid == 0 || srcid == 0
+    " When looking for :AutoInstall: lines, skip scripts that have   0 0 scriptname
+    let @a= rega
+@@ -416,21 +414,21 @@
+ "  call Decho('considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid)
+   echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid
+ 
+-  " grab a copy of the plugin's vim.sf.net webpage
+-  let scriptaddr = 'http://vim.sf.net/script.php?script_id='.scriptid
++  " grab a copy of the plugin's vim.sourceforge.net webpage
++  let scriptaddr = 'http://vim.sourceforge.net/script.php?script_id='.scriptid
+   let tmpfile    = tempname()
+   let v:errmsg   = ""
+ 
+   " make up to three tries at downloading the description
+   let itry= 1
+   while itry <= 3
+-"   call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
++"   call Decho(".try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr)
+    if has("win32") || has("win16") || has("win95")
+-"    call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)."|bw!")
+-    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile).' '.s:Escape(scriptaddr)|bw!
++"    call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)."|bw!")
++    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)|bw!
+    else
+-"    call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr))
+-    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(tmpfile)." ".s:Escape(scriptaddr)
++"    call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr))
++    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr)
+    endif
+    if itry == 1
+     exe "silent vsplit ".fnameescape(tmpfile)
+@@ -495,8 +493,7 @@
+   let latestsrcid = latestsrcid + 0
+ "  call Decho("srcid=".srcid." latestsrcid=".latestsrcid." sname<".sname.">")
+ 
+-  " has the plugin's most-recent srcid increased, which indicates
+-  " that it has been updated
++  " has the plugin's most-recent srcid increased, which indicates that it has been updated
+   if latestsrcid > srcid
+ "   call Decho("[latestsrcid=".latestsrcid."] <= [srcid=".srcid."]: need to update <".sname.">")
+ 
+@@ -506,65 +503,103 @@
+     let sname= "NEW_".sname
+    endif
+ 
++   " -----------------------------------------------------------------------------
+    " the plugin has been updated since we last obtained it, so download a new copy
+-"   call Decho("...downloading new <".sname.">")
+-   echomsg "...downloading new <".sname.">"
++   " -----------------------------------------------------------------------------
++"   call Decho(".downloading new <".sname.">")
++   echomsg ".downloading new <".sname.">"
+    if has("win32") || has("win16") || has("win95")
+-"    call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)."|q")
+-    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid)|q
++"    call Decho(".new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)."|q")
++    new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)|q
+    else
+-"    call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id='))
+-    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".s:Escape(sname)." ".s:Escape('http://vim.sf.net/scripts/download_script.php?src_id=').latestsrcid
++"    call Decho(".exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='))
++    exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=').latestsrcid
+    endif
+ 
++   " --------------------------------------------------------------------------
+    " AutoInstall: only if doautoinstall has been requested by the plugin itself
++   " --------------------------------------------------------------------------
+    if doautoinstall
+-"    call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
++"    call Decho(" ")
++"    call Decho("Autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname))
+     if filereadable(sname)
+-"     call Decho("exe silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall))
+-     exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".s:Escape(s:autoinstall)
++"     call Decho("<".sname."> is readable")
++"     call Decho("exe silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall))
++     exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall)
+      let curdir    = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #")
+      let installdir= curdir."/Installed"
+      if !isdirectory(installdir)
+       call mkdir(installdir)
+      endif
+-"    call Decho("exe cd ".fnameescape(s:autoinstall))
++"     call Decho("curdir<".curdir."> installdir<".installdir.">")
++"     call Decho("exe cd ".fnameescape(s:autoinstall))
+      exe "cd ".fnameescape(s:autoinstall)
++
++     " determine target directory for moves
++     let firstdir= substitute(&rtp,',.*$','','')
++     let pname   = substitute(sname,'\..*','.vim','')
++"     call Decho("determine tgtdir: is <".firstdir.'/AsNeeded/'.pname." readable?")
++     if filereadable(firstdir.'/AsNeeded/'.pname)
++      let tgtdir= "AsNeeded"
++     else
++      let tgtdir= "plugin"
++     endif
++"     call Decho("tgtdir<".tgtdir.">  pname<".pname.">")
+      
+      " decompress
+      if sname =~ '\.bz2$'
+ "      call Decho("decompress: attempt to bunzip2 ".sname)
+-      exe "silent !bunzip2 ".s:Escape(sname)
++      exe "silent !bunzip2 ".shellescape(sname)
+       let sname= substitute(sname,'\.bz2$','','')
+ "      call Decho("decompress: new sname<".sname."> after bunzip2")
+      elseif sname =~ '\.gz$'
+ "      call Decho("decompress: attempt to gunzip ".sname)
+-      exe "silent !gunzip ".s:Escape(sname)
++      exe "silent !gunzip ".shellescape(sname)
+       let sname= substitute(sname,'\.gz$','','')
+ "      call Decho("decompress: new sname<".sname."> after gunzip")
++     else
++"      call Decho("no decompression needed")
+      endif
+      
+      " distribute archive(.zip, .tar, .vba) contents
+      if sname =~ '\.zip$'
+ "      call Decho("dearchive: attempt to unzip ".sname)
+-      exe "silent !unzip -o ".s:Escape(sname)
++      exe "silent !unzip -o ".shellescape(sname)
+      elseif sname =~ '\.tar$'
+ "      call Decho("dearchive: attempt to untar ".sname)
+-      exe "silent !tar -xvf ".s:Escape(sname)
++      exe "silent !tar -xvf ".shellescape(sname)
+      elseif sname =~ '\.vba$'
+ "      call Decho("dearchive: attempt to handle a vimball: ".sname)
+       silent 1split
++      if exists("g:vimball_home")
++       let oldvimballhome= g:vimball_home
++      endif
++      let g:vimball_home= s:autoinstall
+       exe "silent e ".fnameescape(sname)
+       silent so %
+       silent q
++      if exists("oldvimballhome")
++       let g:vimball_home= oldvimballhome
++      else
++       unlet g:vimball_home
++      endif
++     else
++"      call Decho("no dearchiving needed")
+      endif
+      
++     " ---------------------------------------------
++     " move plugin to plugin/ or AsNeeded/ directory
++     " ---------------------------------------------
+      if sname =~ '.vim$'
+-"      call Decho("dearchive: attempt to simply move ".sname." to plugin")
+-      exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." plugin"
++"      call Decho("dearchive: attempt to simply move ".sname." to ".tgtdir)
++      exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir
+      else
+ "      call Decho("dearchive: move <".sname."> to installdir<".installdir.">")
+-      exe "silent !".g:GetLatestVimScripts_mv." ".s:Escape(sname)." ".installdir
++      exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir
++     endif
++     if tgtdir != "plugin"
++"      call Decho("exe silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir)
++      exe "silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir
+      endif
+      
+      " helptags step
+@@ -600,20 +635,6 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:Escape: makes a string safe&suitable for the shell {{{2
+-fun! s:Escape(name)
+-"  call Dfunc("s:Escape(name<".a:name.">)")
+-  if exists("*shellescape")
+-   " shellescape() was added by patch 7.0.111
+-   let name= shellescape(a:name)
+-  else
+-   let name= g:getscript_shq . a:name . g:getscript_shq
+-  endif
+-"  call Dret("s:Escape ".name)
+-  return name
+-endfun
+-
+-" ---------------------------------------------------------------------
+ " Restore Options: {{{1
+ let &cpo= s:keepcpo
+ unlet s:keepcpo
+diff -Nur runtime/autoload/netrw.vim runtime/autoload/netrw.vim
+--- runtime/autoload/netrw.vim	2008-08-09 05:14:28.000000000 -0700
++++ runtime/autoload/netrw.vim	2011-04-03 09:27:21.009715104 -0700
+@@ -1,10 +1,10 @@
+ " netrw.vim: Handles file transfer and remote directory listing across
+ "            AUTOLOAD SECTION
+-" Date:		Aug 08, 2008
+-" Version:	132
++" Date:		May 14, 2010
++" Version:	138
+ " Maintainer:	Charles E Campbell, Jr <[email protected]>
+ " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
+-" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
++" Copyright:    Copyright (C) 1999-2009 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,
+@@ -22,12 +22,18 @@
+ if &cp || exists("g:loaded_netrw")
+   finish
+ endif
++let g:loaded_netrw = "v138"
++if v:version < 702
++ echohl WarningMsg
++ echo "***warning*** this version of netrw needs vim 7.2"
++ echohl Normal
++ finish
++endif
+ if !exists("s:NOTE")
+  let s:NOTE    = 0
+  let s:WARNING = 1
+  let s:ERROR   = 2
+ endif
+-let g:loaded_netrw = "v132"
+ 
+ " sanity checks
+ if v:version < 700
+@@ -45,25 +51,41 @@
+ " ======================
+ 
+ " ---------------------------------------------------------------------
++" NetrwInit: initializes variables if they haven't been defined {{{2
++"            Loosely,  varname = value.
++fun s:NetrwInit(varname,value)
++  if !exists(a:varname)
++   if type(a:value) == 0
++    exe "let ".a:varname."=".a:value
++   elseif type(a:value) == 1
++    exe "let ".a:varname."="."'".a:value."'"
++   else
++    exe "let ".a:varname."=".a:value
++   endif
++  endif
++endfun
++
++" ---------------------------------------------------------------------
+ "  Netrw Constants: {{{2
+-if !exists("g:NETRW_BOOKMARKMAX")
+- let g:NETRW_BOOKMARKMAX= 0
+-endif
+-if !exists("g:NETRW_DIRHIST_CNT")
+- let g:NETRW_DIRHIST_CNT= 0
+-endif
++call s:NetrwInit("g:netrw_dirhist_cnt",0)
+ if !exists("s:LONGLIST")
+- let s:THINLIST = 0
+- let s:LONGLIST = 1
+- let s:WIDELIST = 2
+- let s:TREELIST = 3
+- let s:MAXLIST  = 4
++ call s:NetrwInit("s:THINLIST",0)
++ call s:NetrwInit("s:LONGLIST",1)
++ call s:NetrwInit("s:WIDELIST",2)
++ call s:NetrwInit("s:TREELIST",3)
++ call s:NetrwInit("s:MAXLIST" ,4)
+ endif
+ 
+ " ---------------------------------------------------------------------
+ " Default values for netrw's global protocol variables {{{2
+ if !exists("g:netrw_dav_cmd")
++ if executable("cadaver")
+   let g:netrw_dav_cmd	= "cadaver"
++ elseif executable("curl")
++  let g:netrw_dav_cmd	= "curl"
++ else
++  let g:netrw_dav_cmd   = ""
++ endif
+ endif
+ if !exists("g:netrw_fetch_cmd")
+  if executable("fetch")
+@@ -78,35 +100,28 @@
+ if !exists("g:netrw_http_cmd")
+  if executable("elinks")
+   let g:netrw_http_cmd = "elinks"
+-  let g:netrw_http_xcmd= "-dump >"
++  call s:NetrwInit("g:netrw_http_xcmd","-source >")
+  elseif executable("links")
+   let g:netrw_http_cmd = "links"
+-  let g:netrw_http_xcmd= "-dump >"
++  call s:NetrwInit("g:netrw_http_xcmd","-source >")
+  elseif executable("curl")
+-  let g:netrw_http_cmd	= "curl -o"
++  let g:netrw_http_cmd	= "curl"
++  call s:NetrwInit("g:netrw_http_xcmd","-o")
+  elseif executable("wget")
+-  let g:netrw_http_cmd	= "wget -q -O"
++  let g:netrw_http_cmd	= "wget"
++  call s:NetrwInit("g:netrw_http_xcmd","-q -O")
+  elseif executable("fetch")
+-  let g:netrw_http_cmd	= "fetch -o"
++  let g:netrw_http_cmd	= "fetch"
++  call s:NetrwInit("g:netrw_http_xcmd","-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
++call s:NetrwInit("g:netrw_rcp_cmd"  , "rcp")
++call s:NetrwInit("g:netrw_rsync_cmd", "rsync")
++call s:NetrwInit("g:netrw_scp_cmd"  , "scp -q")
++call s:NetrwInit("g:netrw_sftp_cmd" , "sftp")
++call s:NetrwInit("g:netrw_ssh_cmd"  , "ssh")
+ 
+ if (has("win32") || has("win95") || has("win64") || has("win16"))
+   \ && exists("g:netrw_use_nt_rcp")
+@@ -134,40 +149,24 @@
+  endif
+ endif
+ " Default values - a-c ---------- {{{3
+-if !exists("g:netrw_alto")
+- let g:netrw_alto= &sb
+-endif
+-if !exists("g:netrw_altv")
+- let g:netrw_altv= &spr
+-endif
+-if !exists("g:netrw_browse_split")
+- let g:netrw_browse_split= 0
+-endif
+-if !exists("g:netrw_chgwin")
+- let g:netrw_chgwin    = -1
+-endif
+-if !exists("g:netrw_compress")
+- let g:netrw_compress= "gzip"
+-endif
+-if !exists("g:netrw_ctags")
+- let g:netrw_ctags= "ctags"
++call s:NetrwInit("g:netrw_alto"        , &sb)
++call s:NetrwInit("g:netrw_altv"        , &spr)
++call s:NetrwInit("g:netrw_banner"      , 1)
++call s:NetrwInit("g:netrw_browse_split", 0)
++call s:NetrwInit("g:netrw_chgwin"      , -1)
++call s:NetrwInit("g:netrw_compress"    , "gzip")
++call s:NetrwInit("g:netrw_ctags"       , "ctags")
++if !exists("g:netrw_cursorline")
++ let g:netrw_cursorline= 1
++ let s:netrw_usercul   = &cursorline
++ let s:netrw_usercuc   = &cursorcolumn
+ endif
+ " Default values - d-g ---------- {{{3
+-if !exists("g:NETRW_DIRHIST_CNT")
+- let g:NETRW_DIRHIST_CNT= 0
+-endif
+-if !exists("g:netrw_decompress")
+- let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
+-endif
+-if !exists("g:netrw_dirhistmax")
+- let g:netrw_dirhistmax= 10
+-endif
+-if !exists("g:netrw_fastbrowse")
+- let g:netrw_fastbrowse= 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
++call s:NetrwInit("g:netrw_dirhist_cnt"      , 0)
++call s:NetrwInit("g:netrw_decompress"       , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf"}')
++call s:NetrwInit("g:netrw_dirhistmax"       , 10)
++call s:NetrwInit("g:netrw_fastbrowse"       , 1)
++call s:NetrwInit("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_ftp_list_cmd")
+  if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
+   let g:netrw_ftp_list_cmd     = "ls -lF"
+@@ -179,13 +178,9 @@
+   let g:netrw_ftp_sizelist_cmd = "dir"
+  endif
+ endif
+-if !exists("g:netrw_ftpmode")
+- let g:netrw_ftpmode= "binary"
+-endif
++call s:NetrwInit("g:netrw_ftpmode",'binary')
+ " Default values - h-lh ---------- {{{3
+-if !exists("g:netrw_hide")
+- let g:netrw_hide= 1
+-endif
++call s:NetrwInit("g:netrw_hide",1)
+ if !exists("g:netrw_ignorenetrc")
+  if &shell =~ '\c\<\%(cmd\|4nt\)\.exe$'
+   let g:netrw_ignorenetrc= 1
+@@ -193,9 +188,7 @@
+   let g:netrw_ignorenetrc= 0
+  endif
+ endif
+-if !exists("g:netrw_keepdir")
+- let g:netrw_keepdir= 1
+-endif
++call s:NetrwInit("g:netrw_keepdir",1)
+ if !exists("g:netrw_list_cmd")
+  if g:netrw_scp_cmd =~ '^pscp' && executable("pscp")
+   " provide a 'pscp' listing command
+@@ -211,9 +204,7 @@
+   let g:netrw_list_cmd= ""
+  endif
+ endif
+-if !exists("g:netrw_list_hide")
+- let g:netrw_list_hide= ""
+-endif
++call s:NetrwInit("g:netrw_list_hide","")
+ " Default values - lh-lz ---------- {{{3
+ if !exists("g:netrw_localcopycmd")
+  if has("win32") || has("win95") || has("win64") || has("win16")
+@@ -228,9 +219,7 @@
+   let g:netrw_localcopycmd= ""
+  endif
+ endif
+-if !exists("g:netrw_local_mkdir")
+- let g:netrw_local_mkdir= "mkdir"
+-endif
++call s:NetrwInit("g:netrw_local_mkdir","mkdir")
+ if !exists("g:netrw_localmovecmd")
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   if g:netrw_cygwin
+@@ -244,128 +233,71 @@
+   let g:netrw_localmovecmd= ""
+  endif
+ endif
+-if !exists("g:netrw_local_rmdir")
+- let g:netrw_local_rmdir= "rmdir"
+-endif
+-if !exists("g:netrw_liststyle")
+- let g:netrw_liststyle= s:THINLIST
+-endif
++call s:NetrwInit("g:netrw_local_rmdir", "rmdir")
++call s:NetrwInit("g:netrw_liststyle"  , s:THINLIST)
++" sanity checks
+ if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST
+- " sanity check
+  let g:netrw_liststyle= s:THINLIST
+ endif
+ if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp'
+  let g:netrw_list_cmd= g:netrw_list_cmd." -l"
+ endif
+ " Default values - m-r ---------- {{{3
+-if !exists("g:netrw_markfileesc")
+- let g:netrw_markfileesc= '*./[\~'
+-endif
+-if !exists("g:netrw_maxfilenamelen")
+- let g:netrw_maxfilenamelen= 32
+-endif
+-if !exists("g:netrw_menu")
+- let g:netrw_menu= 1
+-endif
+-if !exists("g:netrw_mkdir_cmd")
+- let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir"
+-endif
+-if !exists("g:netrw_mousemaps")
+- if exists("&mouse") && &mouse =~ '[anh]'
+-  let g:netrw_mousemaps= 1
+- else
+-  let g:netrw_mousemaps= 0
+- endif
+-endif
+-if !exists("g:netrw_retmap")
+- let g:netrw_retmap= 0
+-endif
+-if !exists("g:netrw_preview")
+- let g:netrw_preview= 0
+-endif
+-if !exists("g:netrw_scpport")
+- let g:netrw_scpport= "-P"
+-endif
+-if !exists("g:netrw_sshport")
+- let g:netrw_sshport= "-p"
+-endif
+-if !exists("g:netrw_rename_cmd")
+- let g:netrw_rename_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mv"
+-endif
+-if !exists("g:netrw_rm_cmd")
+- let g:netrw_rm_cmd    = g:netrw_ssh_cmd." USEPORT HOSTNAME rm"
+-endif
+-if !exists("g:netrw_rmdir_cmd")
+- let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir"
+-endif
+-if !exists("g:netrw_rmf_cmd")
+- let g:netrw_rmf_cmd    = g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f"
+-endif
+-" Default values - s ---------- {{{3
+- " set up shell quoting character
+-if exists("g:netrw_silent") && g:netrw_silent != 0
+- let s:netrw_silentxfer= "silent "
++call s:NetrwInit("g:netrw_markfileesc"   , '*./[\~')
++call s:NetrwInit("g:netrw_maxfilenamelen", 32)
++call s:NetrwInit("g:netrw_menu"          , 1)
++call s:NetrwInit("g:netrw_mkdir_cmd"     , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir")
++call s:NetrwInit("g:netrw_mousemaps"     , (exists("&mouse") && &mouse =~ '[anh]'))
++call s:NetrwInit("g:netrw_retmap"        , 0)
++if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
++ call s:NetrwInit("g:netrw_chgperm"       , "chmod PERM FILENAME")
++elseif has("win32") || has("win95") || has("win64") || has("win16")
++ call s:NetrwInit("g:netrw_chgperm"       , "cacls FILENAME /e /p PERM")
+ else
+- let s:netrw_silentxfer= ""
+-endif
+-if !exists("g:netrw_sort_by")
+- " alternatives: date size
+- let g:netrw_sort_by= "name"
+-endif
+-if !exists("g:netrw_sort_options")
+- let g:netrw_sort_options= ""
+-endif
+-if !exists("g:netrw_sort_direction")
+- " alternative: reverse  (z y x ...)
+- let g:netrw_sort_direction= "normal"
++ call s:NetrwInit("g:netrw_chgperm"       , "chmod PERM FILENAME")
+ endif
++call s:NetrwInit("g:netrw_preview"       , 0)
++call s:NetrwInit("g:netrw_scpport"       , "-P")
++call s:NetrwInit("g:netrw_sshport"       , "-p")
++call s:NetrwInit("g:netrw_rename_cmd"    , g:netrw_ssh_cmd." USEPORT HOSTNAME mv")
++call s:NetrwInit("g:netrw_rm_cmd"        , g:netrw_ssh_cmd." USEPORT HOSTNAME rm")
++call s:NetrwInit("g:netrw_rmdir_cmd"     , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir")
++call s:NetrwInit("g:netrw_rmf_cmd"       , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f")
++" Default values - s ---------- {{{3
++" g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
++call s:NetrwInit("g:netrw_sepchr"        , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
++call s:NetrwInit("s:netrw_silentxfer"    , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent keepj " : "keepj ")
++call s:NetrwInit("g:netrw_sort_by"       , "name") " alternatives: date                                      , size
++call s:NetrwInit("g:netrw_sort_options"  , "")
++call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse  (z y x ...)
+ if !exists("g:netrw_sort_sequence")
+- let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
+-endif
+-if !exists("g:netrw_special_syntax")
+- let g:netrw_special_syntax= 0
+-endif
+-if !exists("g:netrw_ssh_browse_reject")
+-  let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
+-endif
+-if !has("patch192")
+- if !exists("g:netrw_use_noswf")
+-  let g:netrw_use_noswf= 1
++ if has("unix")
++  let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
++ else
++  let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
+  endif
+-else
+-  let g:netrw_use_noswf= 0
+ endif
++call s:NetrwInit("g:netrw_special_syntax"   , 0)
++call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$')
++call s:NetrwInit("g:netrw_use_noswf"        , 0)
+ " Default values - t-w ---------- {{{3
+-if !exists("g:netrw_timefmt")
+- let g:netrw_timefmt= "%c"
+-endif
+-if !exists("g:netrw_xstrlen")
+- let g:netrw_xstrlen= 1
+-endif
+-if !exists("g:NetrwTopLvlMenu")
+- let g:NetrwTopLvlMenu= "Netrw."
+-endif
+-if !exists("g:netrw_use_errorwindow")
+- let g:netrw_use_errorwindow= 1
+-endif
+-if !exists("g:netrw_win95ftp")
+- let g:netrw_win95ftp= 1
+-endif
+-if !exists("g:netrw_winsize")
+- let g:netrw_winsize= ""
+-endif
++call s:NetrwInit("g:netrw_timefmt","%c")
++call s:NetrwInit("g:netrw_xstrlen",0)
++call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
++call s:NetrwInit("g:netrw_use_errorwindow",1)
++call s:NetrwInit("g:netrw_win95ftp",1)
++call s:NetrwInit("g:netrw_winsize",25)
+ " ---------------------------------------------------------------------
+ " Default values for netrw's script variables: {{{2
+-if !exists("g:netrw_fname_escape")
+- let g:netrw_fname_escape= ' ?&;%'
+-endif
+-if !exists("g:netrw_glob_escape")
+-  let g:netrw_glob_escape= '[]*?`{~$'
+-endif
+-if !exists("g:netrw_tmpfile_escape")
+- let g:netrw_tmpfile_escape= ' &;'
++call s:NetrwInit("g:netrw_fname_escape",' ?&;%')
++if has("win32") || has("win95") || has("win64") || has("win16")
++ call s:NetrwInit("g:netrw_glob_escape",'[]*?`{$')
++else
++ call s:NetrwInit("g:netrw_glob_escape",'[]*?`{~$\')
+ endif
+-let s:netrw_map_escape = "<|\n\r\\\<C-V>\""
++call s:NetrwInit("g:netrw_menu_escape",'./&? \')
++call s:NetrwInit("g:netrw_tmpfile_escape",' &;')
++call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
+ 
+ " BufEnter event ignored by decho when following variable is true
+ "  Has a side effect that doau BufReadPost doesn't work, so
+@@ -384,7 +316,7 @@
+ "             NetrwBrowse.
+ "             vt: normally its "w:" or "s:" (a variable type)
+ fun! s:NetrwOptionSave(vt)
+-"  call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">")
++"  call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">"." winnr($)=".winnr("$"))
+ 
+ "  call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist"))
+   if !exists("{a:vt}netrw_optionsave")
+@@ -402,6 +334,7 @@
+   endif
+   let {a:vt}netrw_aikeep    = &l:ai
+   let {a:vt}netrw_awkeep    = &l:aw
++  let {a:vt}netrw_bombkeep  = &l:bomb
+   let {a:vt}netrw_cikeep    = &l:ci
+   let {a:vt}netrw_cinkeep   = &l:cin
+   let {a:vt}netrw_cinokeep  = &l:cino
+@@ -413,6 +346,7 @@
+   let {a:vt}netrw_fokeep    = &l:fo           " formatoptions
+   let {a:vt}netrw_gdkeep    = &l:gd           " gdefault
+   let {a:vt}netrw_hidkeep   = &l:hidden
++  let {a:vt}netrw_imkeep    = &l:im
+   let {a:vt}netrw_magickeep = &l:magic
+   let {a:vt}netrw_repkeep   = &l:report
+   let {a:vt}netrw_spellkeep = &l:spell
+@@ -430,7 +364,7 @@
+ " ------------------------------------------------------------------------
+ " s:NetrwOptionRestore: restore options {{{2
+ fun! s:NetrwOptionRestore(vt)
+-"  call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%"))
++"  call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")." winnr($)=".winnr("$"))
+   if !exists("{a:vt}netrw_optionsave")
+ "   call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
+ "   call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
+@@ -448,7 +382,7 @@
+ "     call Decho("exe keepjumps lcd ".fnameescape(curdir))  " NOTE: was g:netrw_fname_escape for some reason
+      try
+       if !exists("&l:acd") && !&l:acd
+-       exe 'keepjumps lcd '.fnameescape(curdir)
++       exe 'keepj lcd '.fnameescape(curdir)
+       endif
+      catch /^Vim\%((\a\+)\)\=:E472/
+       call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".curdir."> (permissions?)",61)
+@@ -458,6 +392,7 @@
+   endif
+   if exists("{a:vt}netrw_aikeep")   |let &l:ai     = {a:vt}netrw_aikeep      |unlet {a:vt}netrw_aikeep   |endif
+   if exists("{a:vt}netrw_awkeep")   |let &l:aw     = {a:vt}netrw_awkeep      |unlet {a:vt}netrw_awkeep   |endif
++  if exists("{a:vt}netrw_bombkeep") |let &l:bomb   = {a:vt}netrw_bombkeep    |unlet {a:vt}netrw_bombkeep |endif
+   if exists("{a:vt}netrw_cikeep")   |let &l:ci     = {a:vt}netrw_cikeep      |unlet {a:vt}netrw_cikeep   |endif
+   if exists("{a:vt}netrw_cinkeep")  |let &l:cin    = {a:vt}netrw_cinkeep     |unlet {a:vt}netrw_cinkeep  |endif
+   if exists("{a:vt}netrw_cinokeep") |let &l:cino   = {a:vt}netrw_cinokeep    |unlet {a:vt}netrw_cinokeep |endif
+@@ -470,6 +405,7 @@
+   if exists("{a:vt}netrw_fokeep")   |let &l:fo     = {a:vt}netrw_fokeep      |unlet {a:vt}netrw_fokeep   |endif
+   if exists("{a:vt}netrw_gdkeep")   |let &l:gd     = {a:vt}netrw_gdkeep      |unlet {a:vt}netrw_gdkeep   |endif
+   if exists("{a:vt}netrw_hidkeep")  |let &l:hidden = {a:vt}netrw_hidkeep     |unlet {a:vt}netrw_hidkeep  |endif
++  if exists("{a:vt}netrw_imkeep")   |let &l:im     = {a:vt}netrw_imkeep      |unlet {a:vt}netrw_imkeep   |endif
+   if exists("{a:vt}netrw_magic")    |let &l:magic  = {a:vt}netrw_magic       |unlet {a:vt}netrw_magic    |endif
+   if exists("{a:vt}netrw_repkeep")  |let &l:report = {a:vt}netrw_repkeep     |unlet {a:vt}netrw_repkeep  |endif
+   if exists("{a:vt}netrw_spellkeep")|let &l:spell  = {a:vt}netrw_spellkeep   |unlet {a:vt}netrw_spellkeep|endif
+@@ -503,19 +439,28 @@
+ " ---------------------------------------------------------------------
+ " s:NetrwSafeOptions: sets options to help netrw do its job {{{2
+ fun! s:NetrwSafeOptions()
+-"  call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">")
+-"  call Decho("window's ft=".&ft)
++"  call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
++"  call Decho("win#".winnr()."'s ft=".&ft)
+   setlocal cino=
+   setlocal com=
+   setlocal cpo-=aA
+   if exists("&acd") | setlocal noacd | endif
+-  setlocal nocin noai noci magic nospell nohid wig= noaw
++  setlocal nocin noai nobomb noci magic nospell nohid wig= noaw noim
+   setlocal fo=nroql2
+   setlocal tw=0
+   setlocal report=10000
++  setlocal isk+=@ isk+=* isk+=/
+   if g:netrw_use_noswf && has("win32") && !has("win95")
+    setlocal noswf
+   endif
++  call s:NetrwCursorline()
++
++  " allow the user to override safe options
++  if &ft == "netrw"
++"   call Decho("do any netrw FileType autocmds")
++   silent keepalt keepjumps doau FileType netrw
++  endif
++
+ "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
+ "  call Dret("s:NetrwSafeOptions")
+ endfun
+@@ -566,6 +511,16 @@
+ "  call Dret("netrw#NetrwClean")
+ endfun
+ 
++" ---------------------------------------------------------------------
++" netrw#Nread: {{{2
++fun! netrw#Nread(mode,fname)
++"  call Dfunc("netrw#Nread(mode=".a:mode." fname<".a:fname.">)")
++  call netrw#NetrwSavePosn()
++  call netrw#NetRead(a:mode,a:fname)
++  call netrw#NetrwRestorePosn()
++"  call Dret("netrw#Nread")
++endfun
++
+ " ------------------------------------------------------------------------
+ "  Netrw Transfer Functions: {{{1
+ " ===============================
+@@ -579,11 +534,12 @@
+ fun! netrw#NetRead(mode,...)
+ "  call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw)
+ 
+-  " save options {{{3
++  " NetRead: save options {{{3
+   call s:NetrwOptionSave("w:")
+   call s:NetrwSafeOptions()
++  call s:RestoreCursorline()
+ 
+-  " interpret mode into a readcmd {{{3
++  " NetRead: interpret mode into a readcmd {{{3
+   if     a:mode == 0 " read remote file before current line
+    let readcmd = "0r"
+   elseif a:mode == 1 " read file after current line
+@@ -599,7 +555,7 @@
+   let ichoice = (a:0 == 0)? 0 : 1
+ "  call Decho("readcmd<".readcmd."> ichoice=".ichoice)
+ 
+-  " Get Temporary Filename {{{3
++  " NetRead: get temporary filename {{{3
+   let tmpfile= s:GetTempfile("")
+   if tmpfile == ""
+ "   call Dret("netrw#NetRead : unable to get a tempfile!")
+@@ -666,28 +622,32 @@
+ "   call Decho("choice<" . choice . ">")
+    let ichoice= ichoice + 1
+ 
+-   " Determine method of read (ftp, rcp, etc) {{{3
++   " NetRead: Determine method of read (ftp, rcp, etc) {{{3
+    call s:NetrwMethod(choice)
++   if !exists("b:netrw_method") || b:netrw_method < 0
++"    call Dfunc("netrw#NetRead : unsupported method")
++    return
++   endif
+    let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix
+ 
+    " Check if NetrwBrowse() should be handling this request
+ "   call Decho("checking if NetrwBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">")
+    if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://'
+ "    call Decho("yes, choice matches '^.*[\/]$'")
+-    keepjumps call s:NetrwBrowse(0,choice)
++    keepj call s:NetrwBrowse(0,choice)
+ "    call Dret("netrw#NetRead :3 getcwd<".getcwd().">")
+     return
+    endif
+ 
+    " ============
+-   " Perform Protocol-Based Read {{{3
++   " NetRead: Perform Protocol-Based Read {{{3
+    " ===========================
+    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
+     echo "(netrw) Processing your read request..."
+    endif
+ 
+    ".........................................
+-   " rcp:  NetRead Method #1 {{{3
++   " NetRead: (rcp)  NetRead Method #1 {{{3
+    if  b:netrw_method == 1 " read with rcp
+ "    call Decho("read via rcp (method #1)")
+    " ER: nothing done with g:netrw_uid yet?
+@@ -709,22 +669,22 @@
+     endif
+    endif
+ "   call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+-   exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
++   exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
+    let result           = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
+    let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " ftp + <.netrc>:  NetRead Method #2 {{{3
++   " NetRead: (ftp + <.netrc>)  NetRead Method #2 {{{3
+    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
+ "     call Decho("read via ftp+.netrc (method #2)")
+      let netrw_fname= b:netrw_fname
+      call s:SaveBufVars()|new|call s:RestoreBufVars()
+      let filtbuf= bufnr("%")
+      setlocal ff=unix
+-     put =g:netrw_ftpmode
++     keepj put =g:netrw_ftpmode
+ "     call Decho("filter input: ".getline(line("$")))
+      if exists("g:netrw_ftpextracmd")
+-      put =g:netrw_ftpextracmd
++      keepj put =g:netrw_ftpextracmd
+ "      call Decho("filter input: ".getline(line("$")))
+      endif
+      call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile)
+@@ -745,7 +705,8 @@
+      endif
+      call s:SaveBufVars()
+      bd!
+-     if bufname("%") == "" && line("$") == 1 && getline("$") == ""
++     if bufname("%") == "" && getline("$") == "" && line('$') == 1
++      " needed when one sources a file in a nolbl setting window via ftp
+       q!
+      endif
+      call s:RestoreBufVars()
+@@ -753,7 +714,7 @@
+      let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " ftp + machine,id,passwd,filename:  NetRead Method #3 {{{3
++   " NetRead: (ftp + machine,id,passwd,filename)  NetRead Method #3 {{{3
+    elseif b:netrw_method == 3		" read with ftp + machine, id, passwd, and fname
+     " Construct execution string (four lines) which will be passed through filter
+ "    call Decho("read via ftp+mipf (method #3)")
+@@ -762,32 +723,32 @@
+     let filtbuf= bufnr("%")
+     setlocal ff=unix
+     if exists("g:netrw_port") && g:netrw_port != ""
+-     put ='open '.g:netrw_machine.' '.g:netrw_port
++     keepj put ='open '.g:netrw_machine.' '.g:netrw_port
+ "     call Decho("filter input: ".getline('.'))
+     else
+-     put ='open '.g:netrw_machine
++     keepj put ='open '.g:netrw_machine
+ "     call Decho("filter input: ".getline('.'))
+     endif
+ 
+     if exists("g:netrw_ftp") && g:netrw_ftp == 1
+-     put =g:netrw_uid
++     keepj put =g:netrw_uid
+ "     call Decho("filter input: ".getline('.'))
+-     put ='\"'.s:netrw_passwd.'\"'
++     keepj put ='\"'.s:netrw_passwd.'\"'
+ "     call Decho("filter input: ".getline('.'))
+     else
+-     put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
++     keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ "     call Decho("filter input: ".getline('.'))
+     endif
+ 
+     if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
+-     put =g:netrw_ftpmode
++     keepj put =g:netrw_ftpmode
+ "     call Decho("filter input: ".getline('.'))
+     endif
+     if exists("g:netrw_ftpextracmd")
+      put =g:netrw_ftpextracmd
+ "     call Decho("filter input: ".getline('.'))
+     endif
+-    put ='get \"'.netrw_fname.'\" '.tmpfile
++    keepj put ='get \"'.netrw_fname.'\" '.tmpfile
+ "    call Decho("filter input: ".getline('.'))
+ 
+     " perform ftp:
+@@ -809,7 +770,7 @@
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " scp: NetRead Method #4 {{{3
++   " NetRead: (scp) NetRead Method #4 {{{3
+    elseif     b:netrw_method  == 4	" read with scp
+ "    call Decho("read via scp (method #4)")
+     if exists("g:netrw_port") && g:netrw_port != ""
+@@ -817,13 +778,13 @@
+     else
+      let useport= ""
+     endif
+-"    call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
++"    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+     exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
+     let result           = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " http: NetRead Method #5 (wget) {{{3
++   " NetRead: (http) NetRead Method #5 (wget) {{{3
+    elseif     b:netrw_method  == 5
+ "    call Decho("read via http (method #5)")
+     if g:netrw_http_cmd == ""
+@@ -863,33 +824,43 @@
+     setlocal ro
+ 
+    ".........................................
+-   " cadaver: NetRead Method #6 {{{3
++   " NetRead: (dav) NetRead Method #6 {{{3
+    elseif     b:netrw_method  == 6
+ "    call Decho("read via cadaver (method #6)")
+ 
+-    " Construct execution string (four lines) which will be passed through filter
+-    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+-    new
+-    setlocal ff=unix
+-    if exists("g:netrw_port") && g:netrw_port != ""
+-     put ='open '.g:netrw_machine.' '.g:netrw_port
+-    else
+-     put ='open '.g:netrw_machine
++    if !executable(g:netrw_dav_cmd)
++     call netrw#ErrorMsg(s:ERROR,g:netrw_dav_cmd." is not executable",73)
++"     call Dret("netrw#NetRead : ".g:netrw_dav_cmd." not executable")
++     return
+     endif
+-    put ='user '.g:netrw_uid.' '.s:netrw_passwd
+-    put ='get '.netrw_fname.' '.tmpfile
+-    put ='quit'
++    if g:netrw_dav_cmd =~ "curl"
++"     call Decho("exe ".s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1))
++     exe s:netrw_silentxfer."!".g:netrw_dav_cmd." ".shellescape("dav://".g:netrw_machine.b:netrw_fname,1)." ".shellescape(tmpfile,1)
++    else
++     " Construct execution string (four lines) which will be passed through filter
++     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
++     new
++     setlocal ff=unix
++     if exists("g:netrw_port") && g:netrw_port != ""
++      keepj put ='open '.g:netrw_machine.' '.g:netrw_port
++     else
++      keepj put ='open '.g:netrw_machine
++     endif
++     keepj put ='user '.g:netrw_uid.' '.s:netrw_passwd
++     keepj put ='get '.netrw_fname.' '.tmpfile
++     keepj put ='quit'
+ 
+-    " perform cadaver operation:
+-    norm! 1Gdd
++     " perform cadaver operation:
++     keepj norm! 1Gdd
+ "    call Decho("executing: %!".g:netrw_dav_cmd)
+-    exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
+-    bd!
++     exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
++     bd!
++    endif
+     let result           = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " rsync: NetRead Method #7 {{{3
++   " NetRead: (rsync) NetRead Method #7 {{{3
+    elseif     b:netrw_method  == 7
+ "    call Decho("read via rsync (method #7)")
+ "    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+@@ -898,7 +869,7 @@
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " fetch: NetRead Method #8 {{{3
++   " NetRead: (fetch) NetRead Method #8 {{{3
+    "    fetch://[user@]host[:http]/path
+    elseif     b:netrw_method  == 8
+ "    call Decho("read via fetch (method #8)")
+@@ -928,7 +899,7 @@
+     setlocal ro
+ 
+    ".........................................
+-   " sftp: NetRead Method #9 {{{3
++   " NetRead: (sftp) NetRead Method #9 {{{3
+    elseif     b:netrw_method  == 9
+ "    call Decho("read via sftp (method #9)")
+ "    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile)
+@@ -937,13 +908,13 @@
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " Complain {{{3
++   " NetRead: Complain {{{3
+    else
+     call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",8)
+    endif
+   endwhile
+ 
+-  " cleanup {{{3
++  " NetRead: cleanup {{{3
+   if exists("b:netrw_method")
+ "   call Decho("cleanup b:netrw_method and b:netrw_fname")
+    unlet b:netrw_method
+@@ -951,7 +922,7 @@
+   endif
+   if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
+ "   call Decho("cleanup by deleting tmpfile<".tmpfile.">")
+-   call s:NetrwDelete(fnameescape(tmpfile))
++   call s:NetrwDelete(tmpfile)
+   endif
+   call s:NetrwOptionRestore("w:")
+ 
+@@ -963,12 +934,12 @@
+ fun! netrw#NetWrite(...) range
+ "  call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw)
+ 
+-  " option handling
++  " NetWrite: option handling {{{3
+   let mod= 0
+   call s:NetrwOptionSave("w:")
+   call s:NetrwSafeOptions()
+ 
+-  " Get Temporary Filename {{{3
++  " NetWrite: Get Temporary Filename {{{3
+   let tmpfile= s:GetTempfile("")
+   if tmpfile == ""
+ "   call Dret("netrw#NetWrite : unable to get a tempfile!")
+@@ -988,16 +959,16 @@
+    " (line numbers don't really make sense for that).
+    " Also supports the writing of tar and zip files.
+ "   call Decho("(write entire file) silent exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
+-   silent exe "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
++   exe "silent keepj w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
+   elseif g:netrw_cygwin
+    " write (selected portion of) file to temporary
+    let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','')
+ "   call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile))
+-   silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)
++   exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)
+   else
+    " write (selected portion of) file to temporary
+ "   call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
+-   silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
++   exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
+   endif
+ 
+   if curbufname == ""
+@@ -1007,7 +978,7 @@
+    0file!
+   endif
+ 
+-  " While choice loop: {{{3
++  " NetWrite: while choice loop: {{{3
+   while ichoice <= a:0
+ 
+    " Process arguments: {{{4
+@@ -1065,9 +1036,13 @@
+ 
+    " Determine method of write (ftp, rcp, etc) {{{4
+    call s:NetrwMethod(choice)
++   if !exists("b:netrw_method") || b:netrw_method < 0
++"    call Dfunc("netrw#NetWrite : unsupported method")
++    return
++   endif
+ 
+    " =============
+-   " Perform Protocol-Based Write {{{4
++   " NetWrite: Perform Protocol-Based Write {{{3
+    " ============================
+    if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1
+     echo "(netrw) Processing your write request..."
+@@ -1075,7 +1050,7 @@
+    endif
+ 
+    ".........................................
+-   " rcp: NetWrite Method #1 {{{4
++   " NetWrite: (rcp) NetWrite Method #1 {{{3
+    if  b:netrw_method == 1
+ "    call Decho("write via rcp (method #1)")
+     if s:netrw_has_nt_rcp == 1
+@@ -1096,17 +1071,23 @@
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " ftp + <.netrc>: NetWrite Method #2 {{{4
++   " NetWrite: (ftp + <.netrc>) NetWrite Method #2 {{{3
+    elseif b:netrw_method == 2
+ "    call Decho("write via ftp+.netrc (method #2)")
+-    let netrw_fname= b:netrw_fname
+-    new
++    let netrw_fname = b:netrw_fname
++
++    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
++    let bhkeep      = &l:bh
++    let curbuf      = bufnr("%")
++    setlocal bh=hide
++    enew
++
+ "    call Decho("filter input window#".winnr())
+     setlocal ff=unix
+-    put =g:netrw_ftpmode
++    keepj put =g:netrw_ftpmode
+ "    call Decho("filter input: ".getline('$'))
+     if exists("g:netrw_ftpextracmd")
+-     put =g:netrw_ftpextracmd
++     keepj put =g:netrw_ftpextracmd
+ "     call Decho("filter input: ".getline("$"))
+     endif
+     call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"')
+@@ -1126,34 +1107,52 @@
+      endif
+      let mod=1
+     endif
+-    bd!
++
++    " remove enew buffer (quietly)
++    let filtbuf= bufnr("%")
++    exe curbuf."b!"
++    let &l:bh            = bhkeep
++    exe filtbuf."bw!"
++
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{4
++   " NetWrite: (ftp + machine, id, passwd, filename) NetWrite Method #3 {{{3
+    elseif b:netrw_method == 3
+-    " Construct execution string (four lines) which will be passed through filter
++    " Construct execution string (three or more lines) which will be passed through filter
+ "    call Decho("read via ftp+mipf (method #3)")
+-    let netrw_fname= b:netrw_fname
+-    new
++    let netrw_fname = b:netrw_fname
++    let bhkeep      = &l:bh
++
++    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
++    let curbuf      = bufnr("%")
++    setlocal bh=hide
++    enew
+     setlocal ff=unix
++
+     if exists("g:netrw_port") && g:netrw_port != ""
+-     put ='open '.g:netrw_machine.' '.g:netrw_port
++     keepj put ='open '.g:netrw_machine.' '.g:netrw_port
+ "     call Decho("filter input: ".getline('.'))
+     else
+-     put ='open '.g:netrw_machine
++     keepj put ='open '.g:netrw_machine
+ "     call Decho("filter input: ".getline('.'))
+     endif
+     if exists("g:netrw_ftp") && g:netrw_ftp == 1
+-     put =g:netrw_uid
++     keepj put =g:netrw_uid
+ "     call Decho("filter input: ".getline('.'))
+-     put ='\"'.s:netrw_passwd.'\"'
++     keepj put ='\"'.s:netrw_passwd.'\"'
+ "     call Decho("filter input: ".getline('.'))
+     else
+-     put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
++     keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ "     call Decho("filter input: ".getline('.'))
+     endif
+-    put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
++    keepj put =g:netrw_ftpmode
++"    call Decho("filter input: ".getline('$'))
++    if exists("g:netrw_ftpextracmd")
++     keepj put =g:netrw_ftpextracmd
++"     call Decho("filter input: ".getline("$"))
++    endif
++    keepj put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"'
+ "    call Decho("filter input: ".getline('.'))
+     " save choice/id/password for future use
+     let b:netrw_lastfile = choice
+@@ -1162,7 +1161,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
+-    norm! 1Gdd
++    keepj norm! 1Gdd
+ "    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
+     exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
+@@ -1172,10 +1171,15 @@
+      endif
+      let mod=1
+     endif
+-    bd!
++
++    " remove enew buffer (quietly)
++    let filtbuf= bufnr("%")
++    exe curbuf."b!"
++    let &l:bh= bhkeep
++    exe filtbuf."bw!"
+ 
+    ".........................................
+-   " scp: NetWrite Method #4 {{{4
++   " NetWrite: (scp) NetWrite Method #4 {{{3
+    elseif     b:netrw_method == 4
+ "    call Decho("write via scp (method #4)")
+     if exists("g:netrw_port") && g:netrw_port != ""
+@@ -1188,7 +1192,7 @@
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " http: NetWrite Method #5 {{{4
++   " NetWrite: (http) NetWrite Method #5 {{{3
+    elseif     b:netrw_method == 5
+ "    call Decho("write via http (method #5)")
+     if !exists("g:netrw_quiet")
+@@ -1196,33 +1200,45 @@
+     endif
+ 
+    ".........................................
+-   " dav: NetWrite Method #6 (cadaver) {{{4
++   " NetWrite: (dav) NetWrite Method #6 (cadaver) {{{3
+    elseif     b:netrw_method == 6
+ "    call Decho("write via cadaver (method #6)")
+ 
+     " Construct execution string (four lines) which will be passed through filter
+-    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+-    new
++    let netrw_fname = escape(b:netrw_fname,g:netrw_fname_escape)
++    let bhkeep      = &l:bh
++
++    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
++    let curbuf      = bufnr("%")
++    setlocal bh=hide
++    enew
++
+     setlocal ff=unix
+     if exists("g:netrw_port") && g:netrw_port != ""
+-     put ='open '.g:netrw_machine.' '.g:netrw_port
++     keepj put ='open '.g:netrw_machine.' '.g:netrw_port
+     else
+-     put ='open '.g:netrw_machine
++     keepj put ='open '.g:netrw_machine
+     endif
+     if exists("g:netrw_uid") && exists("s:netrw_passwd")
+-     put ='user '.g:netrw_uid.' '.s:netrw_passwd
++     keepj put ='user '.g:netrw_uid.' '.s:netrw_passwd
+     endif
+-    put ='put '.tmpfile.' '.netrw_fname
++    keepj put ='put '.tmpfile.' '.netrw_fname
+ 
+     " perform cadaver operation:
+-    norm! 1Gdd
++    keepj norm! 1Gdd
+ "    call Decho("executing: %!".g:netrw_dav_cmd)
+     exe s:netrw_silentxfer."%!".g:netrw_dav_cmd
+-    bd!
++
++    " remove enew buffer (quietly)
++    let filtbuf= bufnr("%")
++    exe curbuf."b!"
++    let &l:bh            = bhkeep
++    exe filtbuf."bw!"
++
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " rsync: NetWrite Method #7 {{{4
++   " NetWrite: (rsync) NetWrite Method #7 {{{3
+    elseif     b:netrw_method == 7
+ "    call Decho("write via rsync (method #7)")
+ "    call Decho("executing: !".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1))
+@@ -1230,7 +1246,7 @@
+     let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " sftp: NetWrite Method #9 {{{4
++   " NetWrite: (sftp) NetWrite Method #9 {{{3
+    elseif     b:netrw_method == 9
+ "    call Decho("read via sftp (method #9)")
+     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+@@ -1239,24 +1255,32 @@
+     else
+      let uid_machine = g:netrw_machine
+     endif
+-    new
++
++    " formerly just a "new...bd!", that changed the window sizes when equalalways.  Using enew workaround instead
++    let bhkeep = &l:bh
++    let curbuf = bufnr("%")
++    setlocal bh=hide
++    enew
++
+     setlocal ff=unix
+-    put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname
++    call setline(1,'put "'.escape(tmpfile,'\').'" '.netrw_fname)
+ "    call Decho("filter input: ".getline('.'))
+-    norm! 1Gdd
+ "    call Decho("executing: %!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1))
+     exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1)
+-    bd!
+-    let b:netrw_lastfile= choice
++    let filtbuf= bufnr("%")
++    exe curbuf."b!"
++    let &l:bh            = bhkeep
++    exe filtbuf."bw!"
++    let b:netrw_lastfile = choice
+ 
+    ".........................................
+-   " Complain {{{4
++   " NetWrite: Complain {{{3
+    else
+     call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17)
+    endif
+   endwhile
+ 
+-  " Cleanup: {{{3
++  " NetWrite: Cleanup: {{{3
+ "  call Decho("cleanup")
+   if s:FileReadable(tmpfile)
+ "   call Decho("tmpfile<".tmpfile."> readable, will now delete it")
+@@ -1269,6 +1293,7 @@
+    let &mod= mod
+   endif
+ 
++  " restore equalalways
+ "  call Dret("netrw#NetWrite")
+ endfun
+ 
+@@ -1369,12 +1394,8 @@
+ 
+    " rename buffer back to remote filename
+ "   call Decho("exe silent! keepalt file ".fnameescape(rfile))
+-   exe "silent! keepalt file ".fnameescape(rfile)
+-   if a:method == 5
+-    set ft=html
+-   else
+-    filetype detect
+-   endif
++   exe "sil! keepalt file ".fnameescape(rfile)
++   filetype detect
+ "   call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
+    let line1 = 1
+    let line2 = line("$")
+@@ -1406,7 +1427,7 @@
+ "   call Decho("NetReadFixup() not called, doesn't exist  (line1=".line1." line2=".line2.")")
+   endif
+ 
+-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm'
++  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+    " update the Buffers menu
+    call s:UpdateBuffersMenu()
+   endif
+@@ -1422,18 +1443,34 @@
+ 
+ " ------------------------------------------------------------------------
+ " s:NetrwMethod:  determine method of transfer {{{2
+-"  method == 1: rcp
+-"	     2: ftp + <.netrc>
+-"	     3: ftp + machine, id, password, and [path]filename
+-"	     4: scp
+-"	     5: http (wget)
+-"	     6: cadaver
+-"	     7: rsync
+-"	     8: fetch
+-"	     9: sftp
+-fun! s:NetrwMethod(choice)  " globals: method machine id passwd fname
++" Input:
++"   choice = url   [protocol:]//[userid@]hostname[:port]/[path-to-file]
++" Output:
++"  b:netrw_method= 1: rcp                                             
++"                  2: ftp + <.netrc>                                  
++"	           3: ftp + machine, id, password, and [path]filename 
++"	           4: scp                                             
++"	           5: http (wget)                                     
++"	           6: dav
++"	           7: rsync                                           
++"	           8: fetch                                           
++"	           9: sftp                                            
++"  g:netrw_machine= hostname
++"  b:netrw_fname  = filename
++"  g:netrw_port   = optional port number (for ftp)
++"  g:netrw_choice = copy of input url (choice)
++fun! s:NetrwMethod(choice)
+ "   call Dfunc("NetrwMethod(a:choice<".a:choice.">)")
+ 
++   " record current g:netrw_machine, if any
++   " curmachine used if protocol == ftp and no .netrc
++   if exists("g:netrw_machine")
++    let curmachine= g:netrw_machine
++"    call Decho("curmachine<".curmachine.">")
++   else
++    let curmachine= "N O T A HOST"
++   endif
++
+   " initialization
+   let b:netrw_method  = 0
+   let g:netrw_machine = ""
+@@ -1449,7 +1486,7 @@
+   " rcphf    : [user@]host:filename		     Use rcp
+   " scpurm   : scp://[user@]host[[#:]port]/filename  Use scp
+   " httpurm  : http://[user@]host/filename	     Use wget
+-  " davurm   : dav[s]://host[:port]/path             Use cadaver
++  " davurm   : dav[s]://host[:port]/path             Use cadaver/curl
+   " rsyncurm : rsync://host[:port]/path              Use rsync
+   " fetchurm : fetch://[user@]host[:http]/filename   Use fetch (defaults to ftp, override for http)
+   " sftpurm  : sftp://[user@]host/filename  Use scp
+@@ -1518,9 +1555,14 @@
+    let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
+    let g:netrw_port   = substitute(a:choice,ftpurm,'\4',"")
+    let b:netrw_fname  = substitute(a:choice,ftpurm,'\5',"")
++"   call Decho("g:netrw_machine<".g:netrw_machine.">")
+    if userid != ""
+     let g:netrw_uid= userid
+    endif
++   if exists("s:netrw_passwd") && curmachine != g:netrw_machine
++    " if there's a change in hostname, require password re-entry
++    unlet s:netrw_passwd
++   endif
+    if exists("g:netrw_uid") && exists("s:netrw_passwd")
+     let b:netrw_method = 3
+    else
+@@ -1592,7 +1634,7 @@
+ 
+   else
+    if !exists("g:netrw_quiet")
+-    call netrw#ErrorMsg(s:WARNING,"cannot determine method",45)
++    call netrw#ErrorMsg(s:WARNING,"cannot determine method (format: protocol://[user@]hostname[:port]/[path])",45)
+    endif
+    let b:netrw_method  = -1
+   endif
+@@ -1626,10 +1668,24 @@
+ if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
+  fun! NetReadFixup(method, line1, line2)
+ "   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
++
++   " sanity checks -- attempt to convert inputs to integers
++   let method = a:method + 0
++   let line1  = a:line1 + 0
++   let line2  = a:line2 + 0
++   if type(method) != 0 || type(line1) != 0 || type(line2) != 0 || method < 0 || line1 <= 0 || line2 <= 0
++"    call Dret("NetReadFixup")
++    return
++   endif
++
+    if method == 3   " ftp (no <.netrc>)
+     let fourblanklines= line2 - 3
+-    silent fourblanklines.",".line2."g/^\s*/d"
++    if fourblanklines >= line1
++     exe "sil keepj ".fourblanklines.",".line2."g/^\s*$/d"
++     call histdel("/",-1)
++    endif
+    endif
++
+ "   call Dret("NetReadFixup")
+  endfun
+ endif
+@@ -1649,7 +1705,7 @@
+    let g:netrw_uid= input('Enter username: ')
+   endif
+  else	" from command line
+-"  call Dfunc("NetUserPass(a:1<".a:1.">) {")
++"  call Dfunc("NetUserPass(a:1<".a:1.">)")
+   let g:netrw_uid= a:1
+  endif
+ 
+@@ -1678,7 +1734,7 @@
+    nnoremap <buffer> <silent> <cr>	:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
+    nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
+    nnoremap <buffer> <silent> a		:call <SID>NetrwHide(1)<cr>
+-   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> mc	:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
+    nnoremap <buffer> <silent> md	:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
+    nnoremap <buffer> <silent> me	:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
+@@ -1694,41 +1750,92 @@
+    nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
+    nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
+    nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
+-   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(1)<cr>
++   nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> c		:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
+    nnoremap <buffer> <silent> d		:call <SID>NetrwMakeDir("")<cr>
+    nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(1)<cr>
++   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
+    nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(3)<cr>
+    nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(1)<cr>
+    nnoremap <buffer> <silent> p		:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
+    nnoremap <buffer> <silent> P		:call <SID>NetrwPrevWinOpen(1)<cr>
+-   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
+-   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> qf	:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
+    nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
+    nnoremap <buffer> <silent> s		:call <SID>NetrwSortStyle(1)<cr>
+    nnoremap <buffer> <silent> S		:call <SID>NetSortSequence(1)<cr>
+    nnoremap <buffer> <silent> t		:call <SID>NetrwSplit(4)<cr>
+-   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookmarkDir(4,expand("%"))<cr>
+-   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookmarkDir(5,expand("%"))<cr>
++   nnoremap <buffer> <silent> T		:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
++   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
++   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
+    nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(5)<cr>
+    nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
+    nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(1)<cr>
++   inoremap <buffer> <silent> <cr>	<c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
++   inoremap <buffer> <silent> -		<c-o>:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
++   inoremap <buffer> <silent> a		<c-o>:call <SID>NetrwHide(1)<cr>
++   inoremap <buffer> <silent> mb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> mc	<c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
++   inoremap <buffer> <silent> md	<c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
++   inoremap <buffer> <silent> me	<c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
++   inoremap <buffer> <silent> mf	<c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
++   inoremap <buffer> <silent> mg	<c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
++   inoremap <buffer> <silent> mh	<c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
++   inoremap <buffer> <silent> mm	<c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
++   inoremap <buffer> <silent> mp	<c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
++   inoremap <buffer> <silent> mr	<c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
++   inoremap <buffer> <silent> ms	<c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
++   inoremap <buffer> <silent> mT	<c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
++   inoremap <buffer> <silent> mt	<c-o>:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
++   inoremap <buffer> <silent> mu	<c-o>:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
++   inoremap <buffer> <silent> mx	<c-o>:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
++   inoremap <buffer> <silent> mz	<c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
++   inoremap <buffer> <silent> gb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> gh	<c-o>:<c-u>call <SID>NetrwHidden(1)<cr>
++   inoremap <buffer> <silent> gp	<c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> c		<c-o>:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> C		<c-o>:let g:netrw_chgwin= winnr()<cr>
++   inoremap <buffer> <silent> d		<c-o>:call <SID>NetrwMakeDir("")<cr>
++   inoremap <buffer> <silent> i		<c-o>:call <SID>NetrwListStyle(1)<cr>
++   inoremap <buffer> <silent> I		<c-o>:call <SID>NetrwBannerCtrl(1)<cr>
++   inoremap <buffer> <silent> o		<c-o>:call <SID>NetrwSplit(3)<cr>
++   inoremap <buffer> <silent> O		<c-o>:call <SID>NetrwObtain(1)<cr>
++   inoremap <buffer> <silent> p		<c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
++   inoremap <buffer> <silent> P		<c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
++   inoremap <buffer> <silent> qb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> mB	<c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> qf	<c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
++   inoremap <buffer> <silent> r		<c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
++   inoremap <buffer> <silent> s		<c-o>:call <SID>NetrwSortStyle(1)<cr>
++   inoremap <buffer> <silent> S		<c-o>:call <SID>NetSortSequence(1)<cr>
++   inoremap <buffer> <silent> t		<c-o>:call <SID>NetrwSplit(4)<cr>
++   inoremap <buffer> <silent> T		<c-o>:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
++   inoremap <buffer> <silent> u		<c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
++   inoremap <buffer> <silent> U		<c-o>:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
++   inoremap <buffer> <silent> v		<c-o>:call <SID>NetrwSplit(5)<cr>
++   inoremap <buffer> <silent> x		<c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
++   inoremap <buffer> <silent> %		<c-o>:call <SID>NetrwOpenFile(1)<cr>
+    if !hasmapto('<Plug>NetrwHideEdit')
+     nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
++    imap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
+    endif
+    nnoremap <buffer> <silent> <Plug>NetrwHideEdit	:call <SID>NetrwHideEdit(1)<cr>
+    if !hasmapto('<Plug>NetrwRefresh')
+     nmap <buffer> <unique> <c-l> <Plug>NetrwRefresh
++    imap <buffer> <unique> <c-l> <Plug>NetrwRefresh
+    endif
+    nnoremap <buffer> <silent> <Plug>NetrwRefresh		:call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
+    if s:didstarstar || !mapcheck("<s-down>","n")
+     nnoremap <buffer> <silent> <s-down>	:Nexplore<cr>
++    inoremap <buffer> <silent> <s-down>	:Nexplore<cr>
+    endif
+    if s:didstarstar || !mapcheck("<s-up>","n")
+     nnoremap <buffer> <silent> <s-up>	:Pexplore<cr>
++    inoremap <buffer> <silent> <s-up>	:Pexplore<cr>
+    endif
+    let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape)
+    if g:netrw_mousemaps == 1
+@@ -1737,14 +1844,22 @@
+     nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
+     exe 'nnoremap <buffer> <silent> <rightmouse>  <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+     exe 'vnoremap <buffer> <silent> <rightmouse>  <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
++    inoremap <buffer> <silent> <leftmouse>   <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(1)<cr>
++    inoremap <buffer> <silent> <middlemouse> <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
++    inoremap <buffer> <silent> <s-leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
++    exe 'inoremap <buffer> <silent> <rightmouse>  <c-o><leftmouse><c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+    endif
+    exe 'nnoremap <buffer> <silent> <del>	:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+-   exe 'vnoremap <buffer> <silent> <del>	:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+    exe 'nnoremap <buffer> <silent> D		:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+-   exe 'vnoremap <buffer> <silent> D		:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
+    exe 'nnoremap <buffer> <silent> R		:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
+-   exe 'vnoremap <buffer> <silent> R		:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
+    exe 'nnoremap <buffer> <silent> <Leader>m	:call <SID>NetrwMakeDir("")<cr>'
++   exe 'vnoremap <buffer> <silent> <del>	:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
++   exe 'vnoremap <buffer> <silent> D		:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
++   exe 'vnoremap <buffer> <silent> R		:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
++   exe 'inoremap <buffer> <silent> <del>	<c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
++   exe 'inoremap <buffer> <silent> D		<c-o>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
++   exe 'inoremap <buffer> <silent> R		<c-o>:call <SID>NetrwLocalRename("'.mapsafecurdir.'")<cr>'
++   exe 'inoremap <buffer> <silent> <Leader>m	<c-o>:call <SID>NetrwMakeDir("")<cr>'
+    nnoremap <buffer> <F1>		:he netrw-quickhelp<cr>
+ 
+   else " remote
+@@ -1754,7 +1869,7 @@
+    nnoremap <buffer> <silent> <c-l>	:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
+    nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
+    nnoremap <buffer> <silent> a		:call <SID>NetrwHide(0)<cr>
+-   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookmarkDir(0,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> mc	:<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
+    nnoremap <buffer> <silent> md	:<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
+    nnoremap <buffer> <silent> me	:<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
+@@ -1770,32 +1885,80 @@
+    nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
+    nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
+    nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
+-   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookmarkDir(1,b:netrw_cur)<cr>
++   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
+    nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(0)<cr>
++   nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
+    nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(0)<cr>
++   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
+    nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(0)<cr>
+    nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(0)<cr>
+    nnoremap <buffer> <silent> p		:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
+    nnoremap <buffer> <silent> P		:call <SID>NetrwPrevWinOpen(0)<cr>
+-   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookmarkDir(2,b:netrw_curdir)<cr>
+-   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookmarkDir(6,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> qf	:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
+    nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
+    nnoremap <buffer> <silent> s		:call <SID>NetrwSortStyle(0)<cr>
+    nnoremap <buffer> <silent> S		:call <SID>NetSortSequence(0)<cr>
+    nnoremap <buffer> <silent> t		:call <SID>NetrwSplit(1)<cr>
+-   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookmarkDir(4,b:netrw_curdir)<cr>
+-   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> T		:call <SID>NetrwSplit(1)<bar>norm! gT<cr>
++   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
++   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
+    nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(2)<cr>
+    nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
+    nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(0)<cr>
++   inoremap <buffer> <silent> <cr>	<c-o>:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
++   inoremap <buffer> <silent> <c-l>	<c-o>:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
++   inoremap <buffer> <silent> -		<c-o>:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
++   inoremap <buffer> <silent> a		<c-o>:call <SID>NetrwHide(0)<cr>
++   inoremap <buffer> <silent> mb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> mc	<c-o>:<c-u>call <SID>NetrwMarkFileCopy(0)<cr>
++   inoremap <buffer> <silent> md	<c-o>:<c-u>call <SID>NetrwMarkFileDiff(0)<cr>
++   inoremap <buffer> <silent> me	<c-o>:<c-u>call <SID>NetrwMarkFileEdit(0)<cr>
++   inoremap <buffer> <silent> mf	<c-o>:<c-u>call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
++   inoremap <buffer> <silent> mg	<c-o>:<c-u>call <SID>NetrwMarkFileGrep(0)<cr>
++   inoremap <buffer> <silent> mh	<c-o>:<c-u>call <SID>NetrwMarkHideSfx(0)<cr>
++   inoremap <buffer> <silent> mm	<c-o>:<c-u>call <SID>NetrwMarkFileMove(0)<cr>
++   inoremap <buffer> <silent> mp	<c-o>:<c-u>call <SID>NetrwMarkFilePrint(0)<cr>
++   inoremap <buffer> <silent> mr	<c-o>:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr>
++   inoremap <buffer> <silent> ms	<c-o>:<c-u>call <SID>NetrwMarkFileSource(0)<cr>
++   inoremap <buffer> <silent> mT	<c-o>:<c-u>call <SID>NetrwMarkFileTag(0)<cr>
++   inoremap <buffer> <silent> mt	<c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
++   inoremap <buffer> <silent> mu	<c-o>:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
++   inoremap <buffer> <silent> mx	<c-o>:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
++   inoremap <buffer> <silent> mz	<c-o>:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
++   inoremap <buffer> <silent> gb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
++   inoremap <buffer> <silent> gh	<c-o>:<c-u>call <SID>NetrwHidden(0)<cr>
++   inoremap <buffer> <silent> gp	<c-o>:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> C		<c-o>:let g:netrw_chgwin= winnr()<cr>
++   inoremap <buffer> <silent> i		<c-o>:call <SID>NetrwListStyle(0)<cr>
++   inoremap <buffer> <silent> I		<c-o>:call <SID>NetrwBannerCtrl(1)<cr>
++   inoremap <buffer> <silent> o		<c-o>:call <SID>NetrwSplit(0)<cr>
++   inoremap <buffer> <silent> O		<c-o>:call <SID>NetrwObtain(0)<cr>
++   inoremap <buffer> <silent> p		<c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
++   inoremap <buffer> <silent> P		<c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
++   inoremap <buffer> <silent> qb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> mB	<c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> qf	<c-o>:<c-u>call <SID>NetrwFileInfo(0,<SID>NetrwGetWord())<cr>
++   inoremap <buffer> <silent> r		<c-o>:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
++   inoremap <buffer> <silent> s		<c-o>:call <SID>NetrwSortStyle(0)<cr>
++   inoremap <buffer> <silent> S		<c-o>:call <SID>NetSortSequence(0)<cr>
++   inoremap <buffer> <silent> t		<c-o>:call <SID>NetrwSplit(1)<cr>
++   inoremap <buffer> <silent> T		<c-o>:call <SID>NetrwSplit(1)<bar>norm! gT<cr>
++   inoremap <buffer> <silent> u		<c-o>:<c-u>call <SID>NetrwBookHistHandler(4,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> U		<c-o>:<c-u>call <SID>NetrwBookHistHandler(5,b:netrw_curdir)<cr>
++   inoremap <buffer> <silent> v		<c-o>:call <SID>NetrwSplit(2)<cr>
++   inoremap <buffer> <silent> x		<c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
++   inoremap <buffer> <silent> %		<c-o>:call <SID>NetrwOpenFile(0)<cr>
+    if !hasmapto('<Plug>NetrwHideEdit')
+     nmap <buffer> <c-h> <Plug>NetrwHideEdit
++    imap <buffer> <c-h> <Plug>NetrwHideEdit
+    endif
+    nnoremap <buffer> <silent> <Plug>NetrwHideEdit	:call <SID>NetrwHideEdit(0)<cr>
+    if !hasmapto('<Plug>NetrwRefresh')
+     nmap <buffer> <c-l> <Plug>NetrwRefresh
++    imap <buffer> <c-l> <Plug>NetrwRefresh
+    endif
+ 
+    let mapsafepath     = escape(s:path, s:netrw_map_escape)
+@@ -1808,15 +1971,24 @@
+     nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
+     exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+     exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++    inoremap <buffer> <silent> <leftmouse>   <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr>
++    inoremap <buffer> <silent> <middlemouse> <c-o><leftmouse><c-o>:call <SID>NetrwPrevWinOpen(0)<cr>
++    inoremap <buffer> <silent> <s-leftmouse> <c-o><leftmouse><c-o>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
++    exe 'inoremap <buffer> <silent> <rightmouse> <c-o><leftmouse><c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+    endif
+    exe 'nnoremap <buffer> <silent> <del>	:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'nnoremap <buffer> <silent> d		:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
++   exe 'nnoremap <buffer> <silent> D		:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'nnoremap <buffer> <silent> R		:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+    exe 'vnoremap <buffer> <silent> <del>	:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+-   exe 'nnoremap <buffer> <silent> d	:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
+-   exe 'nnoremap <buffer> <silent> D	:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+-   exe 'vnoremap <buffer> <silent> D	:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+-   exe 'nnoremap <buffer> <silent> R	:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+-   exe 'vnoremap <buffer> <silent> R	:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'vnoremap <buffer> <silent> D		:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'vnoremap <buffer> <silent> R		:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'inoremap <buffer> <silent> <del>	<c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'inoremap <buffer> <silent> d		<c-o>:call <SID>NetrwMakeDir("'.mapsafeusermach.'")<cr>'
++   exe 'inoremap <buffer> <silent> D		<c-o>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
++   exe 'inoremap <buffer> <silent> R		<c-o>:call <SID>NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
+    nnoremap <buffer> <F1>			:he netrw-quickhelp<cr>
++   inoremap <buffer> <F1>			<c-o>:he netrw-quickhelp<cr>
+   endif
+   call s:SetRexDir(a:islocal,b:netrw_curdir)
+ "  call Dret("s:BrowserMaps")
+@@ -1836,7 +2008,7 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-"  s:NetrwBookmarkDir: {{{2
++"  s:NetrwBookHistHandler: {{{2
+ "    0: (user: <mb>)   bookmark current directory
+ "    1: (user: <gb>)   change to the bookmarked directory
+ "    2: (user: <qb>)   list bookmarks
+@@ -1844,32 +2016,27 @@
+ "    4: (user: <u>)    go up   (previous) bookmark
+ "    5: (user: <U>)    go down (next)     bookmark
+ "    6: (user: <mB>)   delete bookmark
+-fun! s:NetrwBookmarkDir(chg,curdir)
+-"  call Dfunc("NetrwBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax)
++fun! s:NetrwBookHistHandler(chg,curdir)
++"  call Dfunc("s:NetrwBookHistHandler(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." histcnt=".g:netrw_dirhist_cnt." histmax=".g:netrw_dirhistmax)
+ 
+   if a:chg == 0
+    " bookmark the current directory
+ "   call Decho("(user: <b>) bookmark the current directory")
+-   if v:count > 0
+-    " handle bookmark# specified via the count
+-    let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
+-    if !exists("g:NETRW_BOOKMARKMAX")
+-     let g:NETRW_BOOKMARKMAX= v:count
+-    elseif v:count > g:NETRW_BOOKMARKMAX
+-     let g:NETRW_BOOKMARKMAX= v:count
+-    endif
+-   else
+-    " handle no count specified
+-    let g:NETRW_BOOKMARKMAX                       = g:NETRW_BOOKMARKMAX + 1
+-    let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir
++   if !exists("g:netrw_bookmarklist")
++    let g:netrw_bookmarklist= []
++   endif
++   if index(g:netrw_bookmarklist,a:curdir) == -1
++    " curdir not currently in g:netrw_bookmarklist, so include it
++    call add(g:netrw_bookmarklist,a:curdir)
++    call sort(g:netrw_bookmarklist)
+    endif
+    echo "bookmarked the current directory"
+ 
+   elseif a:chg == 1
+    " change to the bookmarked directory
+-"   call Decho("(user: <B>) change to the bookmarked directory")
+-   if exists("g:NETRW_BOOKMARKDIR_{v:count}")
+-    exe "e ".fnameescape(g:NETRW_BOOKMARKDIR_{v:count})
++"   call Decho("(user: <".v:count."mb>) change to the bookmarked directory")
++   if exists("g:netrw_bookmarklist[v:count-1]")
++    exe "e ".fnameescape(g:netrw_bookmarklist[v:count-1])
+    else
+     echomsg "Sorry, bookmark#".v:count." doesn't exist!"
+    endif
+@@ -1879,29 +2046,27 @@
+    let didwork= 0
+    " list user's bookmarks
+ "   call Decho("(user: <q>) list user's bookmarks")
+-   if exists("g:NETRW_BOOKMARKMAX")
+-"    call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
+-    let cnt= 0
+-    while cnt <= g:NETRW_BOOKMARKMAX
+-     if exists("g:NETRW_BOOKMARKDIR_{cnt}")
+-"      call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
+-      echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
+-      let didwork= 1
+-     endif
+-     let cnt= cnt + 1
+-    endwhile
++   if exists("g:netrw_bookmarklist")
++"    call Decho('list '.len(g:netrw_bookmarklist).' bookmarks')
++    let cnt= 1
++    for bmd in g:netrw_bookmarklist
++"     call Decho("Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1])
++     echo "Netrw Bookmark#".cnt.": ".g:netrw_bookmarklist[cnt-1]
++     let didwork = 1
++     let cnt     = cnt + 1
++    endfor
+    endif
+ 
+    " list directory history
+-   let cnt     = g:NETRW_DIRHIST_CNT
++   let cnt     = g:netrw_dirhist_cnt
+    let first   = 1
+    let histcnt = 0
+-   while ( first || cnt != g:NETRW_DIRHIST_CNT )
+-"    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT)
++   while ( first || cnt != g:netrw_dirhist_cnt )
++"    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt)
+     let histcnt= histcnt + 1
+-    if exists("g:NETRW_DIRHIST_{cnt}")
+-"     call Decho("Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt})
+-     echo "Netrw  History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}
++    if exists("g:netrw_dirhist_{cnt}")
++"     call Decho("Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt})
++     echo "Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt}
+      let didwork= 1
+     endif
+     let first = 0
+@@ -1917,101 +2082,151 @@
+   elseif a:chg == 3
+    " saves most recently visited directories (when they differ)
+ "   call Decho("(browsing) record curdir history")
+-   if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir
+-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+-"    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e')
+-    let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir
+-"    call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
++   if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir
++    let g:netrw_dirhist_cnt                   = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
++    let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir
++"    call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
+    endif
+ 
+   elseif a:chg == 4
+    " u: change to the previous directory stored on the history list
+ "   call Decho("(user: <u>) chg to prev dir from history")
+-   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
+-   if g:NETRW_DIRHIST_CNT < 0
+-    let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
++   let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
++   if g:netrw_dirhist_cnt < 0
++    let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
+    endif
+-   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
+-"    call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
++   if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
++"    call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
+     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+      setlocal ma noro
+ "     call Decho("setlocal ma noro")
+-     %d
++     keepj %d
+      setlocal nomod
+ "     call Decho("setlocal nomod")
+     endif
+-"    "    call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
+-    exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
++"    "    call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
++    exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
+    else
+-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
++    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+     echo "Sorry, no predecessor directory exists yet"
+    endif
+ 
+   elseif a:chg == 5
+    " U: change to the subsequent directory stored on the history list
+ "   call Decho("(user: <U>) chg to next dir from history")
+-   let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
+-   if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}")
+-"    call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">")
++   let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
++   if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
++"    call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
+     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+      setlocal ma noro
+ "     call Decho("setlocal ma noro")
+-     %d
++     keepj %d
+ "     call Decho("removed all lines from buffer (%d)")
+      setlocal nomod
+ "     call Decho("setlocal nomod")
+     endif
+-"    call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
+-    exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
++"    call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
++    exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
+    else
+-    let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax
+-    if g:NETRW_DIRHIST_CNT < 0
+-     let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax
++    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
++    if g:netrw_dirhist_cnt < 0
++     let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
+     endif
+     echo "Sorry, no successor directory exists yet"
+    endif
+ 
+   elseif a:chg == 6
+-   if v:count > 0 && v:count == g:NETRW_BOOKMARKMAX
+-    " delete the v:count'th bookmark
+-"    call Decho("delete bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}.">")
+-    unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
+-    let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
+-
+-   elseif v:count > 0
+-"    call Decho("delete by shifting bookmark#".v:count."<".g:NETRW_BOOKMARKDIR_{v:count}.">")
+-    let cnt= v:count
+-    while cnt < g:NETRW_BOOKMARKMAX
+-     let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
+-     let cnt                       = cnt + 1
+-    endwhile
+-    unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
+-    let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
++   " delete the v:count'th bookmark
++"   call Decho("delete bookmark#".v:count."<".g:netrw_bookmarklist[v:count-1].">")
++   let savefile= s:NetrwHome()."/.netrwbook"
++   if filereadable(savefile)
++    call s:NetrwBookHistSave() " done here to merge bookmarks first
++    call delete(savefile)
++   endif
++   call remove(g:netrw_bookmarklist,v:count-1)
++  endif
++  call s:NetrwBookmarkMenu()
++"  call Dret("s:NetrwBookHistHandler")
++endfun
+ 
+-   elseif exists("b:netrw_curdir")
+-    " look for current directory amongst the bookmarks and remove that bookmark
+-"    call Decho("search for bookmark<".b:netrw_curdir.">")
+-    let cnt= 1
+-    while cnt <= g:NETRW_BOOKMARKMAX
+-"     call Decho("checking: g:NETRW_BOOKMARKDIR_".cnt."<".g:NETRW_BOOKMARKDIR_{cnt}.">")
+-     if g:NETRW_BOOKMARKDIR_{cnt} == b:netrw_curdir
+-      if cnt < g:NETRW_BOOKMARKMAX
+-"       call Decho("delete bookmark#".cnt."<".b:netrw_curdir.">")
+-       while cnt < g:NETRW_BOOKMARMAX
+-        let g:NETRW_BOOKMARKDIR_{cnt} = g:NETRW_BOOKMARKDIR_{(cnt+1)}
+-        let cnt                       = cnt + 1
+-       endwhile
+-      endif
+-      unlet g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX}
+-      let g:NETRW_BOOKMARKMAX= g:NETRW_BOOKMARKMAX - 1
++" ---------------------------------------------------------------------
++" s:NetrwBookHistRead: this function reads bookmarks and history {{{2
++"                      Sister function: s:NetrwBookHistSave()
++fun! s:NetrwBookHistRead()
++"  call Dfunc("s:NetrwBookHistRead()")
++  if !exists("s:netrw_initbookhist")
++   let home    = s:NetrwHome()
++   let savefile= home."/.netrwbook"
++   if filereadable(savefile)
++"    call Decho("sourcing .netrwbook")
++    exe "so ".savefile
++   endif
++   let savefile= home."/.netrwhist"
++   if filereadable(savefile)
++"    call Decho("sourcing .netrwhist")
++    exe "so ".savefile
++   endif
++   let s:netrw_initbookhist= 1
++   au VimLeave * call s:NetrwBookHistSave()
++  endif
++"  call Dret("s:NetrwBookHistRead")
++endfun
++
++" ---------------------------------------------------------------------
++" s:NetrwBookHistSave: this function saves bookmarks and history {{{2
++"                      Sister function: s:NetrwBookHistRead()
++"                      I used to do this via viminfo but that appears to
++"                      be unreliable for long-term storage
++"                      COMBAK: does $HOME work under windows???
++fun! s:NetrwBookHistSave()
++"  call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax)
++  let savefile= s:NetrwHome()."/.netrwhist"
++  1split
++  call s:NetrwEnew()
++  setlocal cino= com= cpo-=aA fo=nroql2 tw=0 report=10000 noswf
++  setlocal nocin noai noci magic nospell nohid wig= noaw
++  setlocal ma noro write
++  if exists("&acd") | setlocal noacd | endif
++  silent %d
++
++  " save .netrwhist -- no attempt to merge
++  silent! file .netrwhist
++  call setline(1,"let g:netrw_dirhistmax  =".g:netrw_dirhistmax)
++  call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt)
++  let lastline = line("$")
++  let cnt      = 1
++  while cnt <= g:netrw_dirhist_cnt
++   call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'")
++   let cnt= cnt + 1
++  endwhile
++  exe "sil! w! ".savefile
++
++  sil keepj %d
++  if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
++   " merge and write .netrwbook
++   let savefile= s:NetrwHome()."/.netrwbook"
++
++   if filereadable(savefile)
++    let booklist= deepcopy(g:netrw_bookmarklist)
++    exe "sil keepj so ".savefile
++    for bdm in booklist
++     if index(g:netrw_bookmarklist,bdm) == -1
++      call add(g:netrw_bookmarklist,bdm)
+      endif
+-     let cnt= cnt + 1
+-    endwhile
++    endfor
++    call sort(g:netrw_bookmarklist)
++    exe "sil! w! ".savefile
+    endif
+ 
++   " construct and save .netrwbook
++   call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist))
++   exe "sil! w! ".savefile
+   endif
+-  call s:NetrwBookmarkMenu()
+-"  call Dret("NetrwBookmarkDir")
++  let bgone= bufnr("%")
++  q!
++  exe bgone."bwipe!"
++
++"  call Dret("s:NetrwBookHistSave")
+ endfun
+ 
+ " ---------------------------------------------------------------------
+@@ -2021,9 +2236,23 @@
+ "  with the requested remote hostname first.
+ fun! s:NetrwBrowse(islocal,dirname)
+   if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif
+-"  call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">")
++"  call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr())
+ "  call Decho("tab#".tabpagenr()." win#".winnr())
+ "  call Dredir("ls!")
++  if !exists("s:netrw_initbookhist")
++   call s:NetrwBookHistRead()
++  endif
++"  call FOTEST(7)
++"call Decho("COMBAK#01 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
++
++  " simplify the dirname (especially for ".."s in dirnames)
++  if a:dirname !~ '^\a\+://'
++   let dirname= simplify(a:dirname)
++  else
++   let dirname= a:dirname
++  endif
++"  call FOTEST(8)
++"call Decho("COMBAK#02 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   if exists("s:netrw_skipbrowse")
+    unlet s:netrw_skipbrowse
+@@ -2043,44 +2272,49 @@
+   endif
+ 
+   call s:NetrwOptionSave("w:")
+-  call s:NetrwSafeOptions()
++"  call FOTEST(9)
++"call Decho("COMBAK#03 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   " re-instate any marked files
+   if exists("s:netrwmarkfilelist_{bufnr('%')}")
+ "   call Decho("clearing marked files")
+    exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
+   endif
++"  call FOTEST(10)
++"call Decho("COMBAK#04 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
+ "   call Decho("handle w:netrw_acdkeep:")
+-"   call Decho("keepjumps lcd ".fnameescape(a:dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
+-   exe 'keepjumps lcd '.fnameescape(a:dirname)
++"   call Decho("keepjumps lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")")
++   exe 'keepj lcd '.fnameescape(dirname)
++   call s:NetrwSafeOptions()
+ "   call Decho("getcwd<".getcwd().">")
+ 
+-  elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"'
++  elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"'
+    " looks like a regular file, attempt transfer
+-"   call Decho("attempt transfer as regular file<".a:dirname.">")
++"   call Decho("attempt transfer as regular file<".dirname.">")
+ 
+    " remove any filetype indicator from end of dirname, except for the {{{3
+    " "this is a directory" indicator (/).
+    " There shouldn't be one of those here, anyway.
+-   let path= substitute(a:dirname,'[*=@|]\r\=$','','e')
++   let path= substitute(dirname,'[*=@|]\r\=$','','e')
+ "   call Decho("new path<".path.">")
+-   call s:RemotePathAnalysis(a:dirname)
++   call s:RemotePathAnalysis(dirname)
+ 
+    " remote-read the requested file into current buffer {{{3
+-   mark '
+-   call s:NetrwEnew(a:dirname)
++   keepj mark '
++   call s:NetrwEnew(dirname)
++   call s:NetrwSafeOptions()
+    setlocal ma noro
+ "   call Decho("setlocal ma noro")
+-   let b:netrw_curdir= a:dirname
++   let b:netrw_curdir= dirname
+ "   call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
+-   exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
+-   exe "silent keepalt doau BufReadPre ".fnameescape(s:fname)
++   exe "sil! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
++   exe "sil keepalt doau BufReadPre ".fnameescape(s:fname)
+    silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
+    if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz'
+     " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
+-    exe "silent keepalt doau BufReadPost ".fnameescape(s:fname)
++    exe "sil keepalt doau BufReadPost ".fnameescape(s:fname)
+    endif
+ 
+    " save certain window-oriented variables into buffer-oriented variables {{{3
+@@ -2092,17 +2326,21 @@
+ "   call Dret("s:NetrwBrowse : file<".s:fname.">")
+    return
+   endif
++"  call FOTEST(11)
++"call Decho("COMBAK#05 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
+   call s:UseBufWinVars()
+ 
+   " set up some variables {{{3
+   let b:netrw_browser_active = 1
+-  let dirname                = a:dirname
++  let dirname                = dirname
+   let s:last_sort_by         = g:netrw_sort_by
+ 
+   " set up menu {{{3
+   call s:NetrwMenu(1)
++"  call FOTEST(12)
++"call Decho("COMBAK#06 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   " set up buffer {{{3
+   let reusing= s:NetrwGetBuffer(a:islocal,dirname)
+@@ -2122,9 +2360,11 @@
+ "   call Dret("s:NetrwBrowse : re-using buffer")
+    return
+   endif
++""  call FOTEST(13) " PROBLEM WITH LISTING
++"call Decho("COMBAK#07 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   " set b:netrw_curdir to the new directory name {{{3
+-"  call Decho("set b:netrw_curdir to the new directory name:")
++"  call Decho("set b:netrw_curdir to the new directory name:  (buf#".bufnr("%").")")
+    let b:netrw_curdir= dirname
+   if b:netrw_curdir =~ '[/\\]$'
+    let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
+@@ -2143,6 +2383,8 @@
+    let b:netrw_curdir= b:netrw_curdir.'/'
+   endif
+ "  call Decho("b:netrw_curdir<".b:netrw_curdir.">")
++""  call FOTEST(14) " PROBLEM WITH LISTING
++"call Decho("COMBAK#08 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   " ------------
+   " (local only) {{{3
+@@ -2160,7 +2402,7 @@
+     if !exists("&l:acd") || !&l:acd
+ "     call Decho('exe keepjumps lcd '.fnameescape(b:netrw_curdir))
+      try
+-      exe 'keepjumps lcd '.fnameescape(b:netrw_curdir)
++      exe 'keepj lcd '.fnameescape(b:netrw_curdir)
+      catch /^Vim\%((\a\+)\)\=:E472/
+       call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",61)
+       if exists("w:netrw_prvdir")
+@@ -2183,11 +2425,11 @@
+   else
+ "   call Decho("remote only:")
+ 
+-   " analyze a:dirname and g:netrw_list_cmd {{{4
+-"   call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> a:dirname<".a:dirname.">")
+-   if a:dirname =~ "^NetrwTreeListing\>"
++   " analyze dirname and g:netrw_list_cmd {{{4
++"   call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> dirname<".dirname.">")
++   if dirname =~ "^NetrwTreeListing\>"
+     let dirname= b:netrw_curdir
+-"    call Decho("(dirname was ".a:dirname.") dirname<".dirname.">")
++"    call Decho("(dirname was ".dirname.") dirname<".dirname.">")
+    elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+     let dirname= substitute(b:netrw_curdir,'\\','/','g')
+     if dirname !~ '/$'
+@@ -2196,7 +2438,7 @@
+     let b:netrw_curdir = dirname
+ "    call Decho("(liststyle is TREELIST) dirname<".dirname.">")
+    else
+-    let dirname = substitute(a:dirname,'\\','/','g')
++    let dirname = substitute(dirname,'\\','/','g')
+ "    call Decho("(normal) dirname<".dirname.">")
+    endif
+ 
+@@ -2214,12 +2456,25 @@
+    let b:netrw_curdir= dirname
+ "   call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)")
+   endif  " (additional remote handling)
++""  call FOTEST(15) " PROBLEM WITH LISTING
++"call Decho("COMBAK#09 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+ 
+   " -----------------------
+   " Directory Listing: {{{3
+   " -----------------------
+   call s:BrowserMaps(a:islocal)
++""  call FOTEST(16) " PROBLEM WITH LISTING
+   call s:PerformListing(a:islocal)
++"  call FOTEST(17)
++"call Decho("COMBAK#10 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
++
++  " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
++  " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
++  " However, s:NetrwBrowse() causes the ShellCmdPost event itself to fire once; setting
++  " the variable below avoids that second refresh of the screen.  The s:LocalBrowseShellCmdRefresh()
++  " function gets called due to that autocmd; it notices that the following variable is set
++  " and skips the refresh and sets s:locbrowseshellcmd to zero. Oct 13, 2008
++  let s:locbrowseshellcmd= 1
+ 
+ "  call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
+ "  call Dret("s:NetrwBrowse : did PerformListing")
+@@ -2274,13 +2529,14 @@
+ "  call Decho("--re-use a buffer if possible--")
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+    " find NetrwTreeList buffer if there is one
++"   call Decho("find NetrwTreeList buffer if there is one")
+    if exists("w:netrw_treebufnr") && w:netrw_treebufnr > 0
+ "    call Decho("  re-use w:netrw_treebufnr=".w:netrw_treebufnr)
+     let eikeep= &ei
+     set ei=all
+     exe "b ".w:netrw_treebufnr
+     let &ei= eikeep
+-"    call Dret("s:NetrwGetBuffer : bufnum#".bufnum."<NetrwTreeListing>")
++"    call Dret("s:NetrwGetBuffer : bufnum#".w:netrw_treebufnr."<NetrwTreeListing>")
+     return
+    endif
+    let bufnum= -1
+@@ -2297,7 +2553,7 @@
+ "   call Decho("  bufnr(dirname<".escape(dirname,'\').">)=".bufnum)
+ 
+    if bufnum < 0 && dirname !~ '/$'
+-    " trying appending a trailing /
++    " try appending a trailing /
+ "    call Decho("  try appending a trailing / to dirname<".dirname.">")
+     let bufnum= bufnr(escape(dirname.'/','\'))
+     if bufnum > 0
+@@ -2306,7 +2562,7 @@
+    endif
+ 
+    if bufnum < 0 && dirname =~ '/$'
+-    " trying removing a trailing /
++    " try removing a trailing /
+ "    call Decho("  try removing a trailing / from dirname<".dirname.">")
+     let bufnum= bufnr(escape(substitute(dirname,'/$','',''),'\'))
+     if bufnum > 0
+@@ -2318,17 +2574,34 @@
+    " note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/  and abc/ matches)
+    if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.'
+     " handle approximate matches
+-"    call Decho("  handling approx match: bufnum#%d<".bufname(bufnum)."> approx=dirname<".dirname.">")
++"    call Decho("  handling approx match: bufnum#".bufnum."<".bufname(bufnum)."> approx-dirname<".dirname.">")
+     let ibuf    = 1
+     let buflast = bufnr("$")
+-"    call Decho("  findbuf2: buflast=".buflast)
++"    call Decho("  findbuf2: buflast=bufnr($)=".buflast)
+     while ibuf <= buflast
+      let bname= substitute(bufname(ibuf),'\\','/','g')
+      let bname= substitute(bname,'.\zs/$','','')
+-"     call Decho("  findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">")
+-     if bname != '' && dirname =~ '/'.bname.'/\=$' | break | endif
+-     if bname   =~ '^'.dirname.'/\=$' | break | endif
+-     if dirname =~ '^'.bname.'/$'     | break | endif
++"     call Decho("  findbuf3: while [ibuf=",ibuf."]<=[buflast=".buflast."]: dirname<".dirname."> bname=bufname(".ibuf.")<".bname.">")
++     if bname != '' && dirname =~ '/'.bname.'/\=$' && dirname !~ '^/'
++      " bname is not empty
++      " dirname ends with bname,
++      " dirname doesn't start with /, so its not a absolute path
++"      call Decho("  findbuf3a: passes test 1 : dirname<".dirname.'> =~ /'.bname.'/\=$ && dirname !~ ^/')
++      break
++     endif
++     if bname =~ '^'.dirname.'/\=$'
++      " bname begins with dirname
++"      call Decho('  findbuf3b: passes test 2 : bname<'.bname.'>=~^'.dirname.'/\=$')
++      break
++     endif
++     if dirname =~ '^'.bname.'/$'
++"      call Decho('  findbuf3c: passes test 3 : dirname<'.dirname.'>=~^'.bname.'/$')
++      break
++     endif
++     if bname != '' && dirname =~ '/'.bname.'$' && bname == bufname("%") && line("$") == 1
++"      call Decho('  findbuf3d: passes test 4 : dirname<'.dirname.'>=~ /'.bname.'$')
++      break
++     endif
+      let ibuf= ibuf + 1
+     endwhile
+     if ibuf > buflast
+@@ -2341,9 +2614,9 @@
+   endif
+ 
+   " get enew buffer and name it -or- re-use buffer {{{3
+-"  call Decho("--get enew buffer and name it OR re-use buffer-- (bufnum=".bufnum.")")
+-  mark '
++  keepj mark '
+   if bufnum < 0 || !bufexists(bufnum)
++"   call Decho("--get enew buffer and name it (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
+    call s:NetrwEnew(dirname)
+ "   call Decho("  got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)")
+    " name the buffer
+@@ -2357,7 +2630,8 @@
+     endif
+     let w:netrw_treebufnr= bufnr("%")
+ "    call Decho("  exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum))
+-    exe 'silent! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
++    exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
++    set bt=nofile noswf
+     nnoremap <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
+     nnoremap <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
+     nnoremap <silent> <buffer> [[       :silent call <SID>TreeListMove('[')<cr>
+@@ -2366,15 +2640,16 @@
+    else
+ "    let v:errmsg= "" " Decho
+     let escdirname= fnameescape(dirname)
+-"    call Decho("  errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
++"    call Decho("  errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">")
+ "    call Decho('  exe silent! keepalt file '.escdirname)
+-    exe 'silent! keepalt file '.escdirname
++"    let v:errmsg= "" " Decho
++    exe 'sil! keepalt file '.escdirname
+ "    call Decho("  errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
+    endif
+ "   call Decho("  named enew buffer#".bufnr("%")."<".bufname("%").">")
+ 
+   else " Re-use the buffer
+-"   call Decho("--re-use buffer#".bufnum.": --")
++"   call Decho("--re-use buffer#".bufnum." (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
+    let eikeep= &ei
+    set ei=all
+    if getline(2) =~ '^" Netrw Directory Listing'
+@@ -2386,7 +2661,7 @@
+    endif
+    if bufname("%") == '.'
+ "    call Decho("exe silent! keepalt file ".fnameescape(getcwd()))
+-    exe "silent! keepalt file ".fnameescape(getcwd())
++    exe "sil! keepalt file ".fnameescape(getcwd())
+    endif
+    let &ei= eikeep
+    if line("$") <= 1
+@@ -2396,7 +2671,7 @@
+    elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+ "    call Decho("--re-use tree listing--")
+ "    call Decho("  clear buffer<".expand("%")."> with :%d")
+-    silent %d
++    sil keepj %d
+     call s:NetrwListSettings(a:islocal)
+ "    call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
+     return 0
+@@ -2411,7 +2686,7 @@
+   "  slow   0         D      D      Deleting a buffer implies it will not be re-used (slow)
+   "  med    1         D      H
+   "  fast   2         H      H
+-"  call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--")
++"  call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--")
+   let fname= expand("%")
+   call s:NetrwListSettings(a:islocal)
+ "  call Decho("exe keepalt file ".fnameescape(fname))
+@@ -2420,7 +2695,7 @@
+   " delete all lines from buffer {{{3
+ "  call Decho("--delete all lines from buffer--")
+ "  call Decho("  clear buffer<".expand("%")."> with :%d")
+-  keepalt silent! %d
++  sil! keepalt keepj %d
+ 
+ "  call Dret("s:NetrwGetBuffer 0 : buf#".bufnr("%"))
+   return 0
+@@ -2462,12 +2737,12 @@
+   if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
+    " Active Banner support
+ "   call Decho("active banner handling")
+-   norm! 0
++   keepj norm! 0
+    let dirname= "./"
+    let curline= getline('.')
+ 
+    if curline =~ '"\s*Sorted by\s'
+-    norm s
++    keepj norm s
+     let s:netrw_skipbrowse= 1
+     echo 'Pressing "s" also works'
+ 
+@@ -2476,27 +2751,27 @@
+     echo 'Press "S" to edit sorting sequence'
+ 
+    elseif curline =~ '"\s*Quick Help:'
+-    norm ?
++    keepj norm ?
+     let s:netrw_skipbrowse= 1
+     echo 'Pressing "?" also works'
+ 
+    elseif curline =~ '"\s*\%(Hiding\|Showing\):'
+-    norm a
++    keepj norm a
+     let s:netrw_skipbrowse= 1
+     echo 'Pressing "a" also works'
+ 
+    elseif line("$") > w:netrw_bannercnt
+-    exe 'silent keepjumps '.w:netrw_bannercnt
++    exe 'sil keepj '.w:netrw_bannercnt
+    endif
+ 
+   elseif w:netrw_liststyle == s:THINLIST
+ "   call Decho("thin column handling")
+-   norm! 0
++   keepj norm! 0
+    let dirname= getline('.')
+ 
+   elseif w:netrw_liststyle == s:LONGLIST
+ "   call Decho("long column handling")
+-   norm! 0
++   keepj norm! 0
+    let dirname= substitute(getline('.'),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e')
+ 
+   elseif w:netrw_liststyle == s:TREELIST
+@@ -2510,6 +2785,7 @@
+    if !exists("b:netrw_cpf")
+     let b:netrw_cpf= 0
+     exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
++    call histdel("/",-1)
+ "   call Decho("computed cpf=".b:netrw_cpf)
+    endif
+ 
+@@ -2518,18 +2794,18 @@
+ "   call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart."  bannercnt=".w:netrw_bannercnt)
+ "   call Decho("1: dirname<".dirname.">")
+    if filestart == 0
+-    norm! 0ma
++    keepj norm! 0ma
+    else
+     call cursor(line("."),filestart+1)
+-    norm! ma
++    keepj norm! ma
+    endif
+    let rega= @a
+    let eofname= filestart + b:netrw_cpf + 1
+    if eofname <= col("$")
+     call cursor(line("."),filestart+b:netrw_cpf+1)
+-    norm! "ay`a
++    keepj norm! "ay`a
+    else
+-    norm! "ay$
++    keepj norm! "ay$
+    endif
+    let dirname = @a
+    let @a      = rega
+@@ -2549,7 +2825,7 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:NetrwListSettings: {{{2
++" s:NetrwListSettings: make standard settings for a netrw listing {{{2
+ fun! s:NetrwListSettings(islocal)
+ "  call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
+   let fname= bufname("%")
+@@ -2615,25 +2891,52 @@
+ 
+   " clear buffer - this will cause NetrwBrowse/LocalBrowseCheck to do a refresh
+ "  call Decho("clear buffer<".expand("%")."> with :%d")
+-  %d
++  keepj %d
++  " following prevents tree listing buffer from being marked "modified"
++  setlocal nomod
+ 
+   " refresh the listing
++"  call Decho("refresh the listing")
+   let svpos= netrw#NetrwSavePosn()
+   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   call netrw#NetrwRestorePosn(svpos)
++  call s:NetrwCursorline()
+ 
+   " keep cursor on the filename
+-  silent keepjumps $
++  sil keepj $
+   let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
+ "  call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
+   if result <= 0 && exists("w:netrw_bannercnt")
+-   exe "keepjumps ".w:netrw_bannercnt
++   exe "keepj ".w:netrw_bannercnt
+   endif
+ 
+ "  call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
+ endfun
+ 
+ " ---------------------------------------------------------------------
++" s:NetrwBannerCtrl: toggles the display of the banner {{{2
++fun! s:NetrwBannerCtrl(islocal)
++"  call Dfunc("s:NetrwBannerCtrl(islocal=".a:islocal.") g:netrw_banner=".g:netrw_banner)
++
++  " toggle the banner (enable/suppress)
++  let g:netrw_banner= !g:netrw_banner
++
++  " refresh the listing
++  let svpos= netrw#NetrwSavePosn()
++  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
++
++  " keep cursor on the filename
++  let fname= s:NetrwGetWord()
++  sil keepj $
++  let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
++"  call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
++  if result <= 0 && exists("w:netrw_bannercnt")
++   exe "keepj ".w:netrw_bannercnt
++  endif
++"  call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner)
++endfun
++
++" ---------------------------------------------------------------------
+ " s:NetrwBookmarkMenu: Uses menu priorities {{{2
+ "                      .2.[cnt] for bookmarks, and
+ "                      .3.[cnt] for history
+@@ -2642,37 +2945,47 @@
+   if !exists("s:netrw_menucnt")
+    return
+   endif
+-"  call Dfunc("NetrwBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt)
++"  call Dfunc("NetrwBookmarkMenu()  histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt)
+ 
+   " the following test assures that gvim is running, has menus available, and has menus enabled.
+   if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+    if exists("g:NetrwTopLvlMenu")
+ "    call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
+-    exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
++    exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
++    exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete'
++   endif
++   if !exists("s:netrw_initbookhist")
++    call s:NetrwBookHistRead()
+    endif
+ 
+    " show bookmarked places
+-   let cnt       = 1
+-   while cnt <= g:NETRW_BOOKMARKMAX
+-    if exists("g:NETRW_BOOKMARKDIR_{cnt}")
+-     let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'. ')
+-"     call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.'	:e '.bmdir)
+-     exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.'	:e '.bmdir."\<cr>"
+-    endif
+-    let cnt= cnt + 1
+-   endwhile
++   if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
++    let cnt= 1
++    for bmd in g:netrw_bookmarklist
++"     call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.'	:e '.bmd)
++     let bmd= escape(bmd,g:netrw_menu_escape)
++
++     " show bookmarks for goto menu
++     exe 'sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.'	:e '.bmd."\<cr>"
++
++     " show bookmarks for deletion menu
++     exe 'sil! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.'	'.cnt."mB"
++     let cnt= cnt + 1
++    endfor
++
++   endif
+ 
+    " show directory browsing history
+-   let cnt     = g:NETRW_DIRHIST_CNT
++   let cnt     = g:netrw_dirhist_cnt
+    let first   = 1
+    let histcnt = 0
+-   while ( first || cnt != g:NETRW_DIRHIST_CNT )
++   while ( first || cnt != g:netrw_dirhist_cnt )
+     let histcnt  = histcnt + 1
+-    let priority = g:NETRW_DIRHIST_CNT + histcnt
+-    if exists("g:NETRW_DIRHIST_{cnt}")
+-     let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ')
+-"     call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.'	:e '.bmdir)
+-     exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.'	:e '.bmdir."\<cr>"
++    let priority = g:netrw_dirhist_cnt + histcnt
++    if exists("g:netrw_dirhist_{cnt}")
++     let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
++"     call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir)
++     exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir."\<cr>"
+     endif
+     let first = 0
+     let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
+@@ -2680,6 +2993,7 @@
+      let cnt= cnt + g:netrw_dirhistmax
+     endif
+    endwhile
++
+   endif
+ "  call Dret("NetrwBookmarkMenu")
+ endfun
+@@ -2706,9 +3020,13 @@
+   call s:NetrwSafeOptions()
+   let nbcd_curpos                = netrw#NetrwSavePosn()
+   let s:nbcd_curpos_{bufnr('%')} = nbcd_curpos
+-  let dirname                    = substitute(b:netrw_curdir,'\\','/','ge')
+-  let newdir                     = a:newdir
+-  let dolockout                  = 0
++  if (has("win32") || has("win95") || has("win64") || has("win16"))
++   let dirname                   = substitute(b:netrw_curdir,'\\','/','ge')
++  else
++   let dirname= b:netrw_curdir
++  endif
++  let newdir    = a:newdir
++  let dolockout = 0
+ 
+   " set up o/s-dependent directory recognition pattern
+   if has("amiga")
+@@ -2737,6 +3055,7 @@
+     else
+      let dirname= s:NetrwTreeDir()."/".newdir
+     endif
++"    call Decho("dirname<".dirname.">")
+ "    call Decho("tree listing")
+    elseif newdir =~ '^\(/\|\a:\)'
+     let dirname= newdir
+@@ -2751,10 +3070,14 @@
+     if !exists("s:didsplit")
+      if     g:netrw_browse_split == 1
+       new
+-      wincmd _
++      if !&ea
++       wincmd _
++      endif
+      elseif g:netrw_browse_split == 2
+       rightb vert new
+-      wincmd |
++      if !&ea
++       wincmd |
++      endif
+      elseif g:netrw_browse_split == 3
+       tabnew
+      elseif g:netrw_browse_split == 4
+@@ -2781,6 +3104,22 @@
+ "     call Decho("remote file: NetrwBrowse will edit it")
+     endif
+     let dolockout= 1
++
++    " handle g:Netrw_funcref -- call external-to-netrw functions
++    "   This code will handle g:Netrw_funcref as an individual function reference
++    "   or as a list of function references.  It will ignore anything that's not
++    "   a function reference.  See  :help Funcref  for information about function references.
++    if exists("g:Netrw_funcref")
++     if type(g:Netrw_funcref) == 2
++      call g:Netrw_funcref()
++     elseif type(g:Netrw_funcref) == 3
++      for Fncref in g:Netrw_funcref
++       if type(FncRef) == 2
++        call FncRef()
++       endif
++      endfor
++     endif
++    endif
+    endif
+ 
+   elseif newdir =~ '^/'
+@@ -2810,7 +3149,7 @@
+ "    call Decho("clear buffer<".expand("%")."> with :%d")
+     setlocal noro ma
+ "    call Decho("setlocal noro ma")
+-    keepjumps %d
++    keepj %d
+    endif
+ 
+    if has("amiga")
+@@ -2846,7 +3185,7 @@
+ "   call Decho("setlocal noro ma")
+    if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir"))
+ "    call Decho("clear buffer<".expand("%")."> with :%d")
+-    keepjumps %d
++    keepj %d
+    endif
+    let treedir      = s:NetrwTreeDir()
+    let s:treecurpos = nbcd_curpos
+@@ -2887,7 +3226,7 @@
+     " close tree listing for selected subdirectory
+ "    call Decho("closing selected subdirectory<".dirname.">")
+     call remove(w:netrw_treedict,treedir)
+-"    call Decho("removed     entry<".dirname."> from treedict")
++"    call Decho("removed     entry<".treedir."> from treedict")
+ "    call Decho("yielding treedict<".string(w:netrw_treedict).">")
+     let dirname= w:netrw_treetop
+    else
+@@ -2896,6 +3235,7 @@
+ "    call Decho("go down one dir: treedir<".treedir.">")
+    endif
+    call s:SetRexDir(a:islocal,dirname)
++   let s:treeforceredraw = 1
+ 
+   else
+    " go down one directory
+@@ -2916,17 +3256,40 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:NetrwBrowseX:  allows users to write custom functions to operate on {{{2
+-"              files given their extension.  Passes 0=local, 1=remote
++" s:NetrwBrowseX:  (implements "x") executes a special "viewer" script or program for the {{{2
++"              given filename; typically this means given their extension.
++"              0=local, 1=remote
+ fun! netrw#NetrwBrowseX(fname,remote)
+ "  call Dfunc("NetrwBrowseX(fname<".a:fname."> remote=".a:remote.")")
+ 
++  " special core dump handler
++  if a:fname =~ '/core\(\.\d\+\)\=$'
++   if exists("g:Netrw_corehandler")
++    if type(g:Netrw_corehandler) == 2
++     " g:Netrw_corehandler is a function reference (see :help Funcref)
++"     call Decho("g:Netrw_corehandler is a funcref")
++     call g:Netrw_corehandler(a:fname)
++    elseif type(g:netrw_corehandler) == 3)
++     " g:Netrw_corehandler is a List of function references (see :help Funcref)
++"     call Decho("g:Netrw_corehandler is a List")
++     for Fncref in g:Netrw_corehandler
++      if type(FncRef) == 2
++       call FncRef(a:fname)
++      endif
++     endfor
++    endif
++"    call Dret("NetrwBrowseX : coredump handler invoked")
++    return
++   endif
++  endif
++
+   " set up the filename
+   " (lower case the extension, make a local copy of a remote file)
+   let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e')
+   if has("win32") || has("win95") || has("win64") || has("win16")
+    let exten= substitute(exten,'^.*$','\L&\E','')
+   endif
++"  call Decho("exten<".exten.">")
+ 
+   " seems kde systems often have gnome-open due to dependencies, even though
+   " gnome-open's subsidiary display tools are largely absent.  Kde systems
+@@ -2945,16 +3308,30 @@
+ 
+   if a:remote == 1
+    " create a local copy
+-   let fname= fnamemodify(tempname(),":r").".".exten
+-"   call Decho("a:remote=".a:remote.": create a local copy of <".fname."> as <".fname.">")
+-   exe "silent keepjumps bot 1new ".fnameescape(fname)
++"   call Decho("a:remote=".a:remote.": create a local copy of <".a:fname.">")
+    setlocal bh=delete
+-"   call Decho("read <".fnameescape(fname).">, now writing: exe w! ".fnameescape(fname))
+-   exe "silent! w! ".fnameescape(fname)
+-   q
++   call netrw#NetRead(3,a:fname)
++   " attempt to rename tempfile
++   let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','')
++   let newname= substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','')
++"   call Decho("basename<".basename.">")
++"   call Decho("newname <".newname.">")
++   if rename(s:netrw_tmpfile,newname) == 0
++    " renaming succeeded
++    let fname= newname
++   else
++    " renaming failed
++    let fname= s:netrw_tmpfile
++   endif
+   else
+    let fname= a:fname
++   " special ~ handler for local
++   if fname =~ '^\~' && expand("$HOME") != ""
++"    call Decho('invoking special ~ handler')
++    let fname= substitute(fname,'^\~',expand("$HOME"),'')
++   endif
+   endif
++"  call Decho("fname<".fname.">")
+ "  call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
+ 
+   " set up redirection
+@@ -2973,6 +3350,7 @@
+ 
+   " extract any viewing options.  Assumes that they're set apart by quotes.
+   if exists("g:netrw_browsex_viewer")
++"   call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">")
+    if g:netrw_browsex_viewer =~ '\s'
+     let viewer  = substitute(g:netrw_browsex_viewer,'\s.*$','','')
+     let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." "
+@@ -3004,24 +3382,31 @@
+    let ret= v:shell_error
+ 
+   elseif has("win32") || has("win64")
+-"   call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
+-   exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
++   if executable("start")
++"    call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
++    exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
++   elseif executable("rundll32")
++"    call Decho('exe silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
++    exe 'silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
++   else
++    call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
++   endif
+    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    let ret= v:shell_error
+ 
+   elseif has("unix") && executable("gnome-open") && !s:haskdeinit
+ "   call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir)
+-   exe "silent !gnome-open ".shellescape(fname,1).redir
++   exe "sil !gnome-open ".shellescape(fname,1).redir
+    let ret= v:shell_error
+ 
+   elseif has("unix") && executable("kfmclient") && s:haskdeinit
+ "   call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir)
+-   exe "silent !kfmclient exec ".shellescape(fname,1)." ".redir
++   exe "sil !kfmclient exec ".shellescape(fname,1)." ".redir
+    let ret= v:shell_error
+ 
+   elseif has("macunix") && executable("open")
+ "   call Decho("exe silent !open ".shellescape(fname,1)." ".redir)
+-   exe "silent !open ".shellescape(fname,1)." ".redir
++   exe "sil !open ".shellescape(fname,1)." ".redir
+    let ret= v:shell_error
+ 
+   else
+@@ -3052,7 +3437,7 @@
+    if g:netrw_use_noswf
+     setlocal noswf
+    endif
+-   exe "norm! \<c-o>"
++   exe "keepj norm! \<c-o>"
+ "   redraw!
+   endif
+ 
+@@ -3060,53 +3445,110 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
++" s:NetrwChgPerm: (implements "gp") change file permission {{{2
++fun! s:NetrwChgPerm(islocal,curdir)
++"  call Dfunc("s:NetrwChgPerm(islocal=".a:islocal." curdir<".a:curdir.">)")
++  call inputsave()
++  let newperm= input("Enter new permission: ")
++  call inputrestore()
++  let chgperm= substitute(g:netrw_chgperm,'\<FILENAME\>',shellescape(expand("<cfile>")),'')
++  let chgperm= substitute(chgperm,'\<PERM\>',shellescape(newperm),'')
++"  call Decho("chgperm<".chgperm.">")
++  call system(chgperm)
++  if v:shell_error != 0
++   call netrw#ErrorMsg(1,"changing permission on file<".expand("<cfile>")."> seems to have failed",75)
++  endif
++  if a:islocal
++   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
++  endif
++"  call Dret("s:NetrwChgPerm")
++endfun
++
++" ---------------------------------------------------------------------
++" s:NetrwClearExplore: clear explore variables (if any) {{{2
++fun! s:NetrwClearExplore()
++"  call Dfunc("s:NetrwClearExplore()")
++  2match none
++  if exists("s:explore_match")        |unlet s:explore_match        |endif
++  if exists("s:explore_indx")         |unlet s:explore_indx         |endif
++  if exists("s:netrw_explore_prvdir") |unlet s:netrw_explore_prvdir |endif
++  if exists("s:dirstarstar")          |unlet s:dirstarstar          |endif
++  if exists("s:explore_prvdir")       |unlet s:explore_prvdir       |endif
++  if exists("w:netrw_explore_indx")   |unlet w:netrw_explore_indx   |endif
++  if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
++  if exists("w:netrw_explore_list")   |unlet w:netrw_explore_list   |endif
++  if exists("w:netrw_explore_bufnr")  |unlet w:netrw_explore_bufnr  |endif
++"   redraw!
++  echo " "
++  echo " "
++"  call Dret("s:NetrwClearExplore")
++endfun
++
++" ---------------------------------------------------------------------
+ " netrw#Explore: launch the local browser in the directory of the current file {{{2
+-"          dosplit==0: the window will be split iff the current file has
+-"                      been modified
+-"          dosplit==1: the window will be split before running the local
+-"                      browser
++"          indx:  == -1: Nexplore
++"                 == -2: Pexplore
++"                 ==  +: this is overloaded:
++"                      * If Nexplore/Pexplore is in use, then this refers to the
++"                        indx'th item in the w:netrw_explore_list[] of items which
++"                        matched the */pattern **/pattern *//pattern **//pattern
++"                      * If Hexplore or Vexplore, then this will override
++"                        g:netrw_winsize to specify the qty of rows or columns the
++"                        newly split window should have.
++"          dosplit==0: the window will be split iff the current file has been modified
++"          dosplit==1: the window will be split before running the local browser
++"          style == 0: Explore     style == 1: Explore!
++"                == 2: Hexplore    style == 3: Hexplore!
++"                == 4: Vexplore    style == 5: Vexplore!
++"                == 6: Texplore
+ fun! netrw#Explore(indx,dosplit,style,...)
+ "  call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0)
+   if !exists("b:netrw_curdir")
+    let b:netrw_curdir= getcwd()
+ "   call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)")
+   endif
+-  let curfile= b:netrw_curdir
+-"  call Decho("curfile<".curfile.">")
++  let curdir     = simplify(b:netrw_curdir)
++  let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
++"  call Decho("curdir<".curdir.">  curfiledir<".curfiledir.">")
++"  call FOTEST(1)
+ 
+   " save registers
+-  silent! let keepregstar = @*
+-  silent! let keepregplus = @+
+-  silent! let keepregslash= @/
++  sil! let keepregstar = @*
++  sil! let keepregplus = @+
++  sil! let keepregslash= @/
+ 
+   " if dosplit or file has been modified
+   if a:dosplit || &modified || a:style == 6
+-"   call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style)
++"   call Decho("case dosplit=".a:dosplit." modified=".&modified." a:style=".a:style.": dosplit or file has been modified")
+    call s:SaveWinVars()
++   let winsize= g:netrw_winsize
++   if a:indx > 0
++    let winsize= a:indx
++   endif
+ 
+    if a:style == 0      " Explore, Sexplore
+ "    call Decho("style=0: Explore or Sexplore")
+-    exe g:netrw_winsize."wincmd s"
++    exe winsize."wincmd s"
+ 
+    elseif a:style == 1  "Explore!, Sexplore!
+ "    call Decho("style=1: Explore! or Sexplore!")
+-    exe g:netrw_winsize."wincmd v"
++    exe winsize."wincmd v"
+ 
+    elseif a:style == 2  " Hexplore
+ "    call Decho("style=2: Hexplore")
+-    exe "bel ".g:netrw_winsize."wincmd s"
++    exe "bel ".winsize."wincmd s"
+ 
+    elseif a:style == 3  " Hexplore!
+ "    call Decho("style=3: Hexplore!")
+-    exe "abo ".g:netrw_winsize."wincmd s"
++    exe "abo ".winsize."wincmd s"
+ 
+    elseif a:style == 4  " Vexplore
+ "    call Decho("style=4: Vexplore")
+-    exe "lefta ".g:netrw_winsize."wincmd v"
++    exe "lefta ".winsize."wincmd v"
+ 
+    elseif a:style == 5  " Vexplore!
+ "    call Decho("style=5: Vexplore!")
+-    exe "rightb ".g:netrw_winsize."wincmd v"
++    exe "rightb ".winsize."wincmd v"
+ 
+    elseif a:style == 6  " Texplore
+     call s:SaveBufVars()
+@@ -3115,45 +3557,54 @@
+     call s:RestoreBufVars()
+    endif
+    call s:RestoreWinVars()
++"  else " Decho
++"   call Decho("case a:dosplit=".a:dosplit." AND modified=".&modified." AND a:style=".a:style." is not 6")
+   endif
+-  norm! 0
++  keepj norm! 0
++"  call FOTEST(2)
+ 
+   if a:0 > 0
+-"   call Decho("case [a:0=".a:0."]>0: a:1<".a:1.">")
++"   call Decho("case [a:0=".a:0."] > 0: a:1<".a:1.">")
+    if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin))
+-    let dirname= substitute(a:1,'\~',expand("$HOME"),'')
++"    call Decho("case a:1: ~ and unix or cygwin")
++    let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),''))
+ "    call Decho("using dirname<".dirname.">  (case: ~ && unix||cygwin)")
+    elseif a:1 == '.'
+-    let dirname= exists("b:netrw_curdir")? b:netrw_curdir : getcwd()
++"    call Decho("case a:1: .")
++    let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd())
+     if dirname !~ '/$'
+      let dirname= dirname."/"
+     endif
+ "    call Decho("using dirname<".dirname.">  (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")")
+    elseif a:1 =~ '\$'
+-    let dirname= expand(a:1)
++"    call Decho("case a:1: $")
++    let dirname= simplify(expand(a:1))
++"    call Decho("using user-specified dirname<".dirname."> with $env-var")
++   elseif a:1 !~ '^\*/'
++"    call Decho("case a:1: other, not pattern or filepattern")
++    let dirname= simplify(a:1)
++"    call Decho("using user-specified dirname<".dirname.">")
+    else
++"    call Decho("case a:1: pattern or filepattern")
+     let dirname= a:1
+-"    call Decho("using dirname<".dirname.">")
+    endif
+   else
+    " clear explore
+-"   call Decho("clearing explore variables")
+-   2match none
+-   if exists("s:explore_match")        |unlet s:explore_match        |endif
+-   if exists("s:explore_indx")         |unlet s:explore_indx         |endif
+-   if exists("s:dirstarstar")          |unlet s:dirstarstar          |endif
+-   if exists("s:dirstarstar")          |unlet s:dirstarstar          |endif
+-   if exists("w:netrw_explore_indx")   |unlet w:netrw_explore_indx   |endif
+-   if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif
+-   if exists("w:netrw_explore_list")   |unlet w:netrw_explore_list   |endif
+-   if exists("w:netrw_explore_bufnr")  |unlet w:netrw_explore_bufnr  |endif
+-"   redraw!
+-   echo " "
+-   echo " "
++"   call Decho("case a:0=".a:0.": clearing Explore list")
++   call s:NetrwClearExplore()
+ "   call Dret("netrw#Explore : cleared list")
+    return
+   endif
+ 
++"  call FOTEST(3)
++"  call Decho("dirname<".dirname.">")
++  if dirname =~ '\.\./\=$'
++   let dirname= simplify(fnamemodify(dirname,':p:h'))
++  elseif dirname =~ '\.\.' || dirname == '.'
++   let dirname= simplify(fnamemodify(dirname,':p'))
++  endif
++"  call Decho("dirname<".dirname.">  (after simplify)")
++
+   if dirname =~ '/\*\*/'
+    " handle .../**/.../filepat
+ "   call Decho("case Explore .../**/.../filepat")
+@@ -3192,15 +3643,19 @@
+    " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
+    let starpat= 4
+ "   call Decho("case Explore **/filepat (starpat=".starpat.")")
++
+   else
+    let starpat= 0
++"   call Decho("default case: starpat=".starpat)
+   endif
++"  call FOTEST(4)
+ 
+   if starpat == 0 && a:indx >= 0
+    " [Explore Hexplore Vexplore Sexplore] [dirname]
+-"   call Decho("case dirname<".dirname."> a:indx=".a:indx.": Explore Hexplore Vexplore Sexplore")
++"   call Decho("case starpat==0 && a:indx=".a:indx.": dirname<".dirname."> Explore Hexplore Vexplore Sexplore")
+    if dirname == ""
+-    let dirname= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
++    let dirname= curfiledir
++"    call Decho("empty dirname, using current file's directory<".dirname.">")
+    endif
+    if dirname =~ '^scp:' || dirname =~ '^ftp:'
+ "    call Decho("calling NetrwBrowse(0,dirname<".dirname.">)")
+@@ -3211,11 +3666,11 @@
+     call netrw#LocalBrowseCheck(dirname)
+    endif
+ 
+-"   call Decho("curfile<".curfile.">")
++"   call Decho("curdir<".curdir.">")
+    if has("win32") || has("win95") || has("win64") || has("win16")
+-    call search('\<'.substitute(curfile,'^.*[/\\]','','e').'\>','cW')
++    keepj call search('\<'.substitute(curdir,'^.*[/\\]','','e').'\>','cW')
+    else
+-    call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW')
++    keepj call search('\<'.substitute(curdir,'^.*/','','e').'\>','cW')
+    endif
+ 
+   " starpat=1: Explore *//pattern  (current directory only search for files containing pattern)
+@@ -3224,7 +3679,7 @@
+   " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
+   elseif a:indx <= 0
+    " Nexplore, Pexplore, Explore: handle starpat
+-"   call Decho("case Nexplore, Pexplore, <s-down>, <s-up>: starpat=".starpat." a:indx=".a:indx)
++"   call Decho("case a:indx<=0: Nexplore, Pexplore, <s-down>, <s-up> starpat=".starpat." a:indx=".a:indx)
+    if !mapcheck("<s-up>","n") && !mapcheck("<s-down>","n") && exists("b:netrw_curdir")
+ "    call Decho("set up <s-up> and <s-down> maps")
+     let s:didstarstar= 1
+@@ -3237,17 +3692,18 @@
+     if !exists("w:netrw_explore_indx")
+      let w:netrw_explore_indx= 0
+     endif
++
+     let indx = a:indx
+ "    call Decho("starpat=".starpat.": set indx= [a:indx=".indx."]")
+-"
++
+     if indx == -1
+      " Nexplore
+ "     call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
+      if !exists("w:netrw_explore_list") " sanity check
+       call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
+-      silent! let @* = keepregstar
+-      silent! let @+ = keepregstar
+-      silent! let @/ = keepregslash
++      sil! let @* = keepregstar
++      sil! let @+ = keepregstar
++      sil! let @/ = keepregslash
+ "      call Dret("netrw#Explore")
+       return
+      endif
+@@ -3268,9 +3724,9 @@
+ "     call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")")
+      if !exists("w:netrw_explore_list") " sanity check
+       call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
+-      silent! let @* = keepregstar
+-      silent! let @+ = keepregstar
+-      silent! let @/ = keepregslash
++      sil! let @* = keepregstar
++      sil! let @+ = keepregstar
++      sil! let @/ = keepregslash
+ "      call Dret("netrw#Explore")
+       return
+      endif
+@@ -3290,6 +3746,7 @@
+      " Explore -- initialize
+      " build list of files to Explore with Nexplore/Pexplore
+ "     call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")")
++     call s:NetrwClearExplore()
+      let w:netrw_explore_indx= 0
+      if !exists("b:netrw_curdir")
+       let b:netrw_curdir= getcwd()
+@@ -3300,17 +3757,24 @@
+      if starpat == 1
+       " starpat=1: Explore *//pattern  (current directory only search for files containing pattern)
+ "      call Decho("starpat=".starpat.": build *//pattern list")
+-      exe "vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
+-      let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)')
++"      call Decho("pattern<".pattern.">")
++      try
++       exe "keepj noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
++      catch /^Vim\%((\a\+)\)\=:E480/
++       call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
++"       call Dret("netrw#Explore : unable to find pattern<".pattern.">")
++       return
++      endtry
++      let w:netrw_explore_list = s:NetrwExploreListUniq(map(getqflist(),'bufname(v:val.bufnr)'))
+       if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
+ 
+      elseif starpat == 2
+       " starpat=2: Explore **//pattern (recursive descent search for files containing pattern)
+ "      call Decho("starpat=".starpat.": build **//pattern list")
+       try
+-       exe "silent vimgrep /".pattern."/gj "."**/*"
++       exe "sil keepj noautocmd vimgrep /".pattern."/gj "."**/*"
+       catch /^Vim\%((\a\+)\)\=:E480/
+-      	call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
++       call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
+        if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
+        silent! let @* = keepregstar
+        silent! let @+ = keepregstar
+@@ -3320,19 +3784,22 @@
+       endtry
+       let s:netrw_curdir       = b:netrw_curdir
+       let w:netrw_explore_list = getqflist()
+-      let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')
++      let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)'))
+ 
+      elseif starpat == 3
+       " starpat=3: Explore */filepat   (search in current directory for filenames matching filepat)
+ "      call Decho("starpat=".starpat.": build */filepat list")
+-      let dirname             = substitute(dirname,'^\*/','','')
+-      let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
+-      if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
++      let filepat= substitute(dirname,'^\*/','','')
++      let filepat= substitute(filepat,'^[%#<]','\\&','')
++"      call Decho("b:netrw_curdir<".b:netrw_curdir.">")
++"      call Decho("filepat<".filepat.">")
++      let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n'))
++      if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif
+ 
+      elseif starpat == 4
+       " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
+ "      call Decho("starpat=".starpat.": build **/filepat list")
+-      let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n')
++      let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n'))
+       if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
+      endif " switch on starpat to build w:netrw_explore_list
+ 
+@@ -3342,9 +3809,9 @@
+ 
+      if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
+       call netrw#ErrorMsg(s:WARNING,"no files matched",42)
+-      silent! let @* = keepregstar
+-      silent! let @+ = keepregstar
+-      silent! let @/ = keepregslash
++      sil! let @* = keepregstar
++      sil! let @+ = keepregstar
++      sil! let @/ = keepregslash
+ "      call Dret("netrw#Explore : no files matched")
+       return
+      endif
+@@ -3352,7 +3819,7 @@
+ 
+     " NetrwStatusLine support - for exploring support
+     let w:netrw_explore_indx= indx
+-"    call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
++"    call Decho("w:netrw_explore_list<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
+ 
+     " wrap the indx around, but issue a note
+     if indx >= w:netrw_explore_listlen || indx < 0
+@@ -3360,7 +3827,6 @@
+      let indx                = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0
+      let w:netrw_explore_indx= indx
+      call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
+-     sleep 1
+     endif
+ 
+     exe "let dirfile= w:netrw_explore_list[".indx."]"
+@@ -3374,9 +3840,9 @@
+      let w:netrw_liststyle= g:netrw_liststyle
+     endif
+     if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST
+-     call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
++     keepj call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
+     else
+-     call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
++     keepj call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
+     endif
+     let w:netrw_explore_mtchcnt = indx + 1
+     let w:netrw_explore_bufnr   = bufnr("%")
+@@ -3389,18 +3855,18 @@
+     if !exists("g:netrw_quiet")
+      call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
+     endif
+-    silent! let @* = keepregstar
+-    silent! let @+ = keepregstar
+-    silent! let @/ = keepregslash
++    sil! let @* = keepregstar
++    sil! let @+ = keepregstar
++    sil! let @/ = keepregslash
+ "    call Dret("netrw#Explore : missing +path_extra")
+     return
+    endif
+ 
+   else
+-"   call Decho("case Explore newdir<".dirname.">")
++"   call Decho("default case: Explore newdir<".dirname.">")
+    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/'
+-    silent! unlet w:netrw_treedict
+-    silent! unlet w:netrw_treetop
++    sil! unlet w:netrw_treedict
++    sil! unlet w:netrw_treetop
+    endif
+    let newdir= dirname
+    if !exists("b:netrw_curdir")
+@@ -3409,14 +3875,19 @@
+     call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir))
+    endif
+   endif
++"  call FOTEST(5)
+ 
+   " visual display of **/ **// */ Exploration files
++"  call Decho("w:netrw_explore_indx=".(exists("w:netrw_explore_indx")? w:netrw_explore_indx : "doesn't exist"))
++"  call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "n/a").">")
+   if exists("w:netrw_explore_indx") && exists("b:netrw_curdir")
++"   call Decho("s:explore_prvdir<".(exists("s:explore_prvdir")? s:explore_prvdir : "-doesn't exist-"))
+    if !exists("s:explore_prvdir") || s:explore_prvdir != b:netrw_curdir
+     " only update match list if current directory isn't the same as before
++"    call Decho("only update match list if current directory not the same as before")
+     let s:explore_prvdir = b:netrw_curdir
+     let s:explore_match  = ""
+-    let dirlen           = strlen(b:netrw_curdir)
++    let dirlen           = s:Strlen(b:netrw_curdir)
+     if b:netrw_curdir !~ '/$'
+      let dirlen= dirlen + 1
+     endif
+@@ -3425,15 +3896,15 @@
+ "     call Decho("fname<".fname.">")
+      if fname =~ '^'.b:netrw_curdir
+       if s:explore_match == ""
+-       let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++       let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>'
+       else
+-       let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++       let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>'
+       endif
+      elseif fname !~ '^/' && fname != prvfname
+       if s:explore_match == ""
+-       let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++       let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc).'\>'
+       else
+-       let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++       let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc).'\>'
+       endif
+      endif
+      let prvfname= fname
+@@ -3449,14 +3920,33 @@
+    echo " "
+ "   call Decho("cleared explore match list")
+   endif
++"  call FOTEST(6)
+ 
+-  silent! let @* = keepregstar
+-  silent! let @+ = keepregstar
+-  silent! let @/ = keepregslash
++  sil! let @* = keepregstar
++  sil! let @+ = keepregstar
++  sil! let @/ = keepregslash
+ "  call Dret("netrw#Explore : @/<".@/.">")
+ endfun
+ 
+ " ---------------------------------------------------------------------
++" s:NetrwExploreListUniq: {{{2
++fun! s:NetrwExploreListUniq(explist)
++"  call Dfunc("s:NetrwExploreListUniq(explist)")
++
++  " this assumes that the list is already sorted
++  let newexplist= []
++  for member in a:explist
++   if !exists("uniqmember") || member != uniqmember
++    let uniqmember = member
++    let newexplist = newexplist + [ member ]
++   endif
++  endfor
++
++"  call Dret("s:NetrwExploreListUniq")
++  return newexplist
++endfun
++
++" ---------------------------------------------------------------------
+ " s:NetrwHide: this function is invoked by the "a" map for browsing {{{2
+ "          and switches the hiding mode.  The actual hiding is done by
+ "          s:NetrwListHide().
+@@ -3490,16 +3980,14 @@
+ "     call Decho("hide: g:netrw_list_hide<".g:netrw_list_hide.">")
+     endif
+    endfor
+-   unlet s:netrwmarkfilelist_{bufnr("%")}
+-   unlet s:netrwmarkfilemtch_{bufnr("%")}
+-   2match none
++   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
+    let g:netrw_hide= 1
+ 
+   else
+ 
+    " switch between show-all/show-not-hidden/show-hidden
+    let g:netrw_hide=(g:netrw_hide+1)%3
+-   exe "norm! 0"
++   exe "keepj norm! 0"
+    if g:netrw_hide && g:netrw_list_hide == ""
+     call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49)
+ "    call Dret("NetrwHide")
+@@ -3522,7 +4010,7 @@
+   if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+'
+    " remove pattern from hiding list
+    let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','')
+-  elseif strlen(g:netrw_list_hide) >= 1
++  elseif s:Strlen(g:netrw_list_hide) >= 1
+    let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+'
+   else
+    let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
+@@ -3535,9 +4023,63 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
++"  s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2
++fun! s:NetrwHome()
++  if exists("g:netrw_home")
++   let home= g:netrw_home
++  else
++   " go to vim plugin home
++   for home in split(&rtp,',') + ['']
++    if isdirectory(home) && filewritable(home) | break | endif
++     let basehome= substitute(home,'[/\\]\.vim$','','')
++    if isdirectory(basehome) && filewritable(basehome)
++     let home= basehome."/.vim"
++     break
++    endif
++   endfor
++   if home == ""
++    " just pick the first directory
++    let home= substitute(&rtp,',.*$','','')
++   endif
++   if (has("win32") || has("win95") || has("win64") || has("win16"))
++    let home= substitute(home,'/','\\','g')
++   endif
++  endif
++  " insure that the home directory exists
++  if !isdirectory(home)
++   if exists("g:netrw_mkdir")
++    call system(g:netrw_mkdir." ".shellescape(home))
++   else
++    call mkdir(home)
++   endif
++  endif
++  let g:netrw_home= home
++  return home
++endfun
++
++" ---------------------------------------------------------------------
+ " s:NetrwLeftmouse: handles the <leftmouse> when in a netrw browsing window {{{2
+ fun! s:NetrwLeftmouse(islocal)
+ "  call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
++
++  " check if the status bar was clicked on instead of a file/directory name
++  call feedkeys("\<LeftMouse>")
++  let c= getchar()
++  let mouse_lnum = v:mouse_lnum
++  let wlastline  = line('w$')
++  let lastline   = line('$')
++"  call Decho("v:mouse_lnum=".mouse_lnum." line(w$)=".wlastline." line($)=".lastline." v:mouse_win=".v:mouse_win." winnr#".winnr())
++"  call Decho("v:mouse_col =".v:mouse_col."     col=".col(".")."  wincol =".wincol()." winwidth   =".winwidth(0))
++  if mouse_lnum >= wlastline + 1 || v:mouse_win != winnr()
++   " appears to be a status bar leftmouse click
++"   call Dret("s:NetrwLeftmouse : detected a status bar leftmouse click")
++   return
++  endif
++  if v:mouse_col != col('.')
++"   call Dret("s:NetrwLeftmouse : detected a vertical separator bar leftmouse click")
++   return
++  endif
++
+   if a:islocal
+    if exists("b:netrw_curdir")
+     call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
+@@ -3576,15 +4118,15 @@
+    " Prune the list by hiding any files which match
+    if g:netrw_hide == 1
+ "    call Decho("hiding<".hide."> listhide<".listhide.">")
+-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
++    exe 'sil keepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d'
+    elseif g:netrw_hide == 2
+ "    call Decho("showing<".hide."> listhide<".listhide.">")
+-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
++    exe 'sil keepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @'
+    endif
+   endwhile
+   if g:netrw_hide == 2
+-   exe 'silent keepjumps '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
+-   exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
++   exe 'sil keepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d'
++   exe 'sil keepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
+   endif
+ 
+ "  call Dret("NetrwListHide")
+@@ -3606,7 +4148,7 @@
+ "  call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
+ 
+   " refresh the listing
+-  silent call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
++  silent keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
+ 
+   " restore cursor position
+   call netrw#NetrwRestorePosn(svpos)
+@@ -3678,12 +4220,12 @@
+     call mkdir(fullnewdir,"p")
+    else
+     let netrw_origdir= s:NetrwGetcwd(1)
+-    exe 'keepjumps lcd '.fnameescape(b:netrw_curdir)
++    exe 'keepj lcd '.fnameescape(b:netrw_curdir)
+ "    call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">")
+ "    call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1))
+-    exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
++    exe "sil! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
+     if !g:netrw_keepdir
+-     exe 'keepjumps lcd '.fnameescape(netrw_origdir)
++     exe 'keepj lcd '.fnameescape(netrw_origdir)
+ "     call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">")
+     endif
+    endif
+@@ -3705,7 +4247,7 @@
+    let mkdircmd  = s:MakeSshCmd(g:netrw_mkdir_cmd)
+    let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname
+ "   call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1))
+-   exe "silent! !".mkdircmd." ".shellescape(newdirname,1)
++   exe "sil! !".mkdircmd." ".shellescape(newdirname,1)
+    if v:shell_error == 0
+     " refresh listing
+     let svpos= netrw#NetrwSavePosn()
+@@ -3749,6 +4291,7 @@
+ "  call Dfunc("s:NetrwMarkFile(islocal=".a:islocal." fname<".a:fname.">)")
+   let curbufnr= bufnr("%")
+   let curdir  = b:netrw_curdir
++  let trailer = '[@=|\/\*]\=\>'
+   if exists("s:netrwmarkfilelist_{curbufnr}")
+    " markfile list exists
+ "   call Decho("starting s:netrwmarkfilelist_{curbufnr}<".string(s:netrwmarkfilelist_{curbufnr}).">")
+@@ -3759,7 +4302,7 @@
+     " append filename to buffer's markfilelist
+ "    call Decho("append filename<".a:fname."> to local markfilelist_".curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">")
+     call add(s:netrwmarkfilelist_{curbufnr},a:fname)
+-    let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++    let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer
+ 
+    else
+     " remove filename from buffer's markfilelist
+@@ -3767,7 +4310,7 @@
+     call filter(s:netrwmarkfilelist_{curbufnr},'v:val != a:fname')
+     if s:netrwmarkfilelist_{curbufnr} == []
+      " local markfilelist is empty; remove it entirely
+-"     call Decho("markfile list now empty, unlet s:netrwmarkfilelist_".curbufnr." and ...mtch_".curbufnr)
++"     call Decho("markfile list now empty")
+      call s:NetrwUnmarkList(curbufnr,curdir)
+     else
+      " rebuild match list to display markings correctly
+@@ -3776,9 +4319,9 @@
+      let first                           = 1
+      for fname in s:netrwmarkfilelist_{curbufnr}
+       if first
+-       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer
+       else
+-       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>'
++       let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").trailer
+       endif
+       let first= 0
+      endfor
+@@ -3799,7 +4342,7 @@
+    if a:fname =~ '/$'
+     let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc)
+    else
+-    let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).'\>'
++    let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).trailer
+    endif
+ "   call Decho("ending s:netrwmarkfilemtch_".curbufnr."<".s:netrwmarkfilemtch_{curbufnr}.">")
+   endif
+@@ -3830,7 +4373,9 @@
+   " set up 2match'ing to netrwmarkfilemtch list
+   if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != ""
+ "   call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/")
+-   exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
++   if exists("g:did_drchip_netrwlist_syntax")
++    exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/"
++   endif
+   else
+ "   call Decho("2match none")
+    2match none
+@@ -3858,7 +4403,7 @@
+     for sfx in sort(keys(g:netrw_decompress))
+      if fname =~ '\'.sfx.'$'
+       " fname has a suffix indicating that its compressed; apply associated decompression routine
+-      let exe= s:WinPath(g:netrw_decompress[sfx])
++      let exe= netrw#WinPath(g:netrw_decompress[sfx])
+ "      call Decho("fname<".fname."> is compressed so decompress with <".exe.">")
+       if a:islocal
+        if g:netrw_keepdir
+@@ -3883,10 +4428,10 @@
+      unlet exe
+     elseif a:islocal
+      " fname not a compressed file, so compress it
+-     call system(s:WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname)))
++     call system(netrw#WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname)))
+     else
+      " fname not a compressed file, so compress it
+-     call s:RemoteSystem(s:WinPath(g:netrw_compress)." ".shellescape(fname))
++     call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".shellescape(fname))
+     endif
+    endfor
+    call s:NetrwUnmarkList(curbufnr,curdir)
+@@ -3927,7 +4472,7 @@
+ "   call Decho("copy from local to local")
+    let args= join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"shellescape(b:netrw_curdir.\"/\".v:val)"))
+ "   call Decho("system(".g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt).")")
+-   call system(s:WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt))
++   call system(netrw#WinPath(g:netrw_localcopycmd)." ".args." ".shellescape(s:netrwmftgt))
+ 
+   elseif  a:islocal && !s:netrwmftgt_islocal
+    " Copy marked files, local directory to remote directory
+@@ -3948,10 +4493,10 @@
+    if exists("*mkdir")
+     call mkdir(tmpdir)
+    else
+-    exe "silent! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1)
++    exe "sil! !".g:netrw_local_mkdir.' '.shellescape(tmpdir,1)
+    endif
+    if isdirectory(tmpdir)
+-    exe "keepjumps lcd ".fnameescape(tmpdir)
++    exe "keepj lcd ".fnameescape(tmpdir)
+     call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
+     let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
+     call s:NetrwUpload(localfiles,s:netrwmftgt)
+@@ -3959,10 +4504,10 @@
+      for fname in s:netrwmarkfilelist_{bufnr('%')}
+       call s:NetrwDelete(fname)
+      endfor
+-     exe "keepjumps lcd ".fnameescape(curdir)
+-     exe "silent !".g:netrw_local_rmdir." ".shellescape(tmpdir,1)
++     exe "keepj lcd ".fnameescape(curdir)
++     exe "sil !".g:netrw_local_rmdir." ".shellescape(tmpdir,1)
+     else
+-     exe "keepjumps lcd ".fnameescape(curdir)
++     exe "keepj lcd ".fnameescape(curdir)
+     endif
+    endif
+   endif
+@@ -3982,7 +4527,9 @@
+   if a:islocal
+    call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
+   endif
+-  call s:LocalBrowseShellCmdRefresh()
++  if g:netrw_fastbrowse <= 1
++   call s:LocalBrowseShellCmdRefresh()
++  endif
+   
+ "  call Dret("s:NetrwMarkFileCopy 1")
+   return 1
+@@ -4064,10 +4611,10 @@
+    for fname in s:netrwmarkfilelist_{curbufnr}
+     if a:islocal
+      if g:netrw_keepdir
+-      let fname= shellescape(s:WinPath(s:ComposePath(curdir,fname)))
++      let fname= shellescape(netrw#WinPath(s:ComposePath(curdir,fname)))
+      endif
+     else
+-     let fname= shellescape(s:WinPath(b:netrw_curdir.fname))
++     let fname= shellescape(netrw#WinPath(b:netrw_curdir.fname))
+     endif
+     if cmd =~ '%'
+      let xcmd= substitute(cmd,'%',fname,'g')
+@@ -4185,7 +4732,13 @@
+ 
+    " use vimgrep for both local and remote
+ "   call Decho("exe vimgrep".pat." ".netrwmarkfilelist)
+-   exe "vimgrep".pat." ".netrwmarkfilelist
++   try
++    exe "keepj noautocmd vimgrep".pat." ".netrwmarkfilelist
++    catch /^Vim\%((\a\+)\)\=:E480/
++     call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
++"     call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">")
++     return
++   endtry
+ 
+    2match none
+    call netrw#NetrwRestorePosn(svpos)
+@@ -4290,7 +4843,9 @@
+   if a:islocal
+    call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
+   endif
+-  call s:LocalBrowseShellCmdRefresh()
++  if g:netrw_fastbrowse <= 1
++   call s:LocalBrowseShellCmdRefresh()
++  endif
+   
+ "  call Dret("s:NetrwMarkFileMove")
+ endfun
+@@ -4342,24 +4897,15 @@
+    " get the matching list of files using local glob()
+ "   call Decho("handle local regexp")
+    let dirname  = escape(b:netrw_curdir,g:netrw_glob_escape)
+-   let filelist = glob(s:ComposePath(dirname,regexp))
+-   if filelist != ""
+-    let filelist= filelist."\n"
+-   endif
++   let files = glob(s:ComposePath(dirname,regexp))
++"   call Decho("files<".files.">")
++   let filelist= split(files,"\n")
+ 
+   " mark the list of files
+-  while filelist != ""
+-   if filelist =~ '\n'
+-    let filename = substitute(filelist,'\n.*$','','e')
+-    let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
+-   else
+-    let filename = filelist
+-    let filelist = ""
+-   endif
+-"   call Decho("filelist<".filelist.">")
+-"   call Decho("filename<".filename.">")
+-   call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','',''))
+-  endwhile
++  for fname in filelist
++"   call Decho("fname<".fname.">")
++   call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','',''))
++  endfor
+ 
+   else
+ "   call Decho("handle remote regexp")
+@@ -4367,28 +4913,34 @@
+    " convert displayed listing into a filelist
+    let eikeep = &ei
+    let areg   = @a
+-   silent %y a
++   sil keepj %y a
+    set ei=all ma
+ "   call Decho("set ei=all ma")
+    1split
+-   enew
+-   silent norm! "ap
+-   2
++   call s:NetrwEnew()
++   call s:NetrwSafeOptions()
++   sil keepj norm! "ap
++   keepj 2
+    let bannercnt= search('^" =====','W')
+-   exe "silent 1,".bannercnt."d"
++   exe "sil keepj 1,".bannercnt."d"
+    set bt=nofile
+    if     g:netrw_liststyle == s:LONGLIST
+-    silent %s/\s\{2,}\S.*$//e
++    sil keepj %s/\s\{2,}\S.*$//e
++    call histdel("/",-1)
+    elseif g:netrw_liststyle == s:WIDELIST
+-    silent %s/\s\{2,}/\r/ge
++    sil keepj %s/\s\{2,}/\r/ge
++    call histdel("/",-1)
+    elseif g:netrw_liststyle == s:TREELIST
+-    silent %s/^| //e
+-    silent! g/^ .*$/d
++    sil keepj %s/^| //e
++    sil! keepj g/^ .*$/d
++    call histdel("/",-1)
++    call histdel("/",-1)
+    endif
+    " convert regexp into the more usual glob-style format
+    let regexp= substitute(regexp,'\*','.*','g')
+ "   call Decho("regexp<".regexp.">")
+-   exe "silent! v/".escape(regexp,'/')."/d"
++   exe "sil! keepj v/".escape(regexp,'/')."/d"
++   call histdel("/",-1)
+    let filelist= getline(1,line("$"))
+    q!
+    for filename in filelist
+@@ -4458,7 +5010,8 @@
+     e tags
+     let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','')
+ "    call Decho("curdir<".curdir."> path<".path.">")
+-    exe '%s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
++    exe 'keepj %s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e'
++    call histdel("/",-1)
+     wq!
+    endif
+    2match none
+@@ -4518,13 +5071,13 @@
+   endif
+   let s:netrwmftgt_islocal= a:islocal
+ 
+-  if g:netrw_fastbrowse > 0
++  if g:netrw_fastbrowse <= 1
+    call s:LocalBrowseShellCmdRefresh()
+   endif
+   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   call netrw#NetrwRestorePosn(svpos)
+   if !hadtgt
+-   norm! j
++   sil! keepj norm! j
+   endif
+ 
+ "  call Dret("s:NetrwMarkFileTgt : netrwmftgt<".(exists("s:netrwmftgt")? s:netrwmftgt : "").">")
+@@ -4652,58 +5205,56 @@
+    if !exists("s:netrw_menu_enabled") && a:domenu
+ "    call Decho("initialize menu")
+     let s:netrw_menu_enabled= 1
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.1     '.g:NetrwTopLvlMenu.'Help<tab><F1>	<F1>'
+-    call s:NetrwBookmarkMenu() " provide some history!  uses priorities 2,3, reserves 4
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.5     '.g:NetrwTopLvlMenu.'-Sep1-	:'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.6     '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-	-'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.7     '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x	x'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.1   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb	mb'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.2   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete<tab>mB	mB'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.3   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Bookmark<tab>gb	gb'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.4   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u	u'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.5   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U	U'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.8.6   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb	qb'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.1   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<Plug>NetrwHideEdit"
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.2   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S	S'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.3   '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh	gh"
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.4   '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l>	\<Plug>NetrwRefresh"
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.9.5   '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.10    '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.11.1  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr>	'."\<cr>"
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.11.2  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p	p'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.11.3  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P	P'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.11.4  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Window<tab>o	o'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.11.5  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Window<tab>v	v'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.1  '.g:NetrwTopLvlMenu.'Explore.Directory\ Name	:Explore '
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.2  '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */	:Explore */'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.2  '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/	:Explore **/'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.3  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (curdir\ only)<tab>:Explore\ *//	:Explore *//'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (+subdirs)<tab>:Explore\ **//	:Explore **//'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore	:Nexplore<cr>'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore	:Pexplore<cr>'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.13    '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d	d'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.1  '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ File<tab>mf	mf'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.2  '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexp<tab>mr	mr'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.3  '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Control<tab>a	a'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.4  '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Target<tab>mc	mc'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.5  '.g:NetrwTopLvlMenu.'Marked\ Files.Delete<tab>D	D'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.6  '.g:NetrwTopLvlMenu.'Marked\ Files.Diff<tab>md	md'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.7  '.g:NetrwTopLvlMenu.'Marked\ Files.Edit<tab>me	me'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.8  '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmd<tab>mx	mx'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.9  '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Target<tab>mm	mm'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.Obtain<tab>O	O'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Print<tab>mp	mp'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.Replace<tab>R	R'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Target<tab>mt	mt'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.Tag<tab>mT	mT'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompress<tab>mz	mz'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.15    '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O	O'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.16.1  '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)<tab>i	i'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.16.2  '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show<tab>a	a'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.16.3  '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order<tab>'."r	r"
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.16.4  '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s	s'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.17    '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R	R'
+-    exe 'silent! menu '.g:NetrwMenuPriority.'.18    '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c	c'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.1     '.g:NetrwTopLvlMenu.'Help<tab><F1>	<F1>'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.5     '.g:NetrwTopLvlMenu.'-Sep1-	:'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.6     '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-	-'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.7     '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x	x'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.8.1   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directory<tab>mb	mb'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.8.4   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)<tab>u	u'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.8.5   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)<tab>U	U'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.8.6   '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.List<tab>qb	qb'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.9.1   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List<tab><ctrl-h>'."	\<c-h>'"
++    exe 'sil! menu '.g:NetrwMenuPriority.'.9.2   '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ Sequence<tab>S	S'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.9.3   '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files<tab>'."gh	gh"
++    exe 'sil! menu '.g:NetrwMenuPriority.'.9.4   '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
++    exe 'sil! menu '.g:NetrwMenuPriority.'.9.5   '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
++    exe 'sil! menu '.g:NetrwMenuPriority.'.10    '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.11.1  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr>	'."\<cr>"
++    exe 'sil! menu '.g:NetrwMenuPriority.'.11.2  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p	p'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.11.3  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P	P'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.11.4  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Window<tab>o	o'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.11.5  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Window<tab>v	v'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.1  '.g:NetrwTopLvlMenu.'Explore.Directory\ Name	:Explore '
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.2  '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */	:Explore */'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.2  '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/	:Explore **/'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.3  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *//	:Explore *//'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **//	:Explore **//'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Next\ Match<tab>:Nexplore	:Nexplore<cr>'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.12.4  '.g:NetrwTopLvlMenu.'Explore.Prev\ Match<tab>:Pexplore	:Pexplore<cr>'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.13    '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d	d'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.1  '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ File<tab>mf	mf'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.2  '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexp<tab>mr	mr'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.3  '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Control<tab>a	a'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.4  '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Target<tab>mc	mc'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.5  '.g:NetrwTopLvlMenu.'Marked\ Files.Delete<tab>D	D'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.6  '.g:NetrwTopLvlMenu.'Marked\ Files.Diff<tab>md	md'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.7  '.g:NetrwTopLvlMenu.'Marked\ Files.Edit<tab>me	me'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.8  '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmd<tab>mx	mx'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.9  '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Target<tab>mm	mm'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.Obtain<tab>O	O'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Print<tab>mp	mp'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.Replace<tab>R	R'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Target<tab>mt	mt'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.Tag<tab>mT	mT'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompress<tab>mz	mz'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.15    '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O	O'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.16.1  '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)<tab>i	i'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.16.2  '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show<tab>a	a'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.16.3  '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order<tab>'."r	r"
++    exe 'sil! menu '.g:NetrwMenuPriority.'.16.4  '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)<tab>s	s'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.17    '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R	R'
++    exe 'sil! menu '.g:NetrwMenuPriority.'.18    '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c	c'
++    call s:NetrwBookmarkMenu() " provide some history!  uses priorities 2,3, reserves 4, 8.2.x
+     let s:netrw_menucnt= 28
+ 
+    elseif !a:domenu
+@@ -4714,9 +5265,9 @@
+ 
+     if s:netrwcnt <= 1
+ "     call Decho("clear menus")
+-     exe 'silent! unmenu '.g:NetrwTopLvlMenu
++     exe 'sil! unmenu '.g:NetrwTopLvlMenu
+ "     call Decho('exe silent! unmenu '.g:NetrwTopLvlMenu.'*')
+-     silent! unlet s:netrw_menu_enabled
++     sil! unlet s:netrw_menu_enabled
+     endif
+    endif
+ "   call Dret("NetrwMenu")
+@@ -4731,8 +5282,8 @@
+ "  call Dfunc("NetrwObtain(islocal=".a:islocal.")")
+ 
+   if exists("s:netrwmarkfilelist_{bufnr('%')}")
+-   let islocal= s:netrwmarkfilelist_{bufnr("%")}[1] !~ '^\a\+://'
+-   call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr("%")})
++   let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\+://'
++   call netrw#NetrwObtain(islocal,s:netrwmarkfilelist_{bufnr('%')})
+    call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir)
+   else
+    call netrw#NetrwObtain(a:islocal,expand("<cWORD>"))
+@@ -4769,7 +5320,7 @@
+   endif
+ "  call Decho("tgtdir<".tgtdir.">")
+ 
+-  if b:netrw_islocal
++  if exists("b:netrw_islocal") && b:netrw_islocal
+    " obtain a file from local b:netrw_curdir to (local) tgtdir
+ "   call Decho("obtain a file from local ".b:netrw_curdir." to ".tgtdir)
+    if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
+@@ -4826,7 +5377,7 @@
+      let tmpbufnr= bufnr("%")
+      setlocal ff=unix
+      if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
+-      put =g:netrw_ftpmode
++      keepj put =g:netrw_ftpmode
+ "      call Decho("filter input: ".getline('$'))
+      endif
+ 
+@@ -4836,7 +5387,7 @@
+      endif
+ 
+      if exists("g:netrw_ftpextracmd")
+-      put =g:netrw_ftpextracmd
++      keepj put =g:netrw_ftpextracmd
+ "      call Decho("filter input: ".getline('$'))
+      endif
+      for fname in fnamelist
+@@ -4866,44 +5417,44 @@
+     setlocal ff=unix
+ 
+     if exists("g:netrw_port") && g:netrw_port != ""
+-     put ='open '.g:netrw_machine.' '.g:netrw_port
++     keepj put ='open '.g:netrw_machine.' '.g:netrw_port
+ "     call Decho("filter input: ".getline('$'))
+     else
+-     put ='open '.g:netrw_machine
++     keepj put ='open '.g:netrw_machine
+ "     call Decho("filter input: ".getline('$'))
+     endif
+ 
+     if exists("g:netrw_ftp") && g:netrw_ftp == 1
+-     put =g:netrw_uid
++     keepj put =g:netrw_uid
+ "     call Decho("filter input: ".getline('$'))
+-     put ='\"'.s:netrw_passwd.'\"'
++     keepj put ='\"'.s:netrw_passwd.'\"'
+ "     call Decho("filter input: ".getline('$'))
+     else
+-     put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
++     keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ "     call Decho("filter input: ".getline('$'))
+     endif
+ 
+     if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
+-     put =g:netrw_ftpmode
++     keepj put =g:netrw_ftpmode
+ "     call Decho("filter input: ".getline('$'))
+     endif
+ 
+     if exists("b:netrw_fname") && b:netrw_fname != ""
+-     call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
++     keepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
+ "     call Decho("filter input: ".getline('$'))
+     endif
+ 
+     if exists("g:netrw_ftpextracmd")
+-     put =g:netrw_ftpextracmd
++     keepj put =g:netrw_ftpextracmd
+ "     call Decho("filter input: ".getline('$'))
+     endif
+ 
+     if exists("g:netrw_ftpextracmd")
+-     put =g:netrw_ftpextracmd
++     keepj put =g:netrw_ftpextracmd
+ "     call Decho("filter input: ".getline('$'))
+     endif
+     for fname in fnamelist
+-     call setline(line("$")+1,'get "'.fname.'"')
++     keepj call setline(line("$")+1,'get "'.fname.'"')
+     endfor
+ "    call Decho("filter input: ".getline('$'))
+ 
+@@ -4911,7 +5462,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
+-    norm! 1Gdd
++    keepj norm! 1Gdd
+ "    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
+     exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
+@@ -4921,6 +5472,14 @@
+       call netrw#ErrorMsg(s:ERROR,getline(1),5)
+      endif
+     endif
++   elseif !exists("b:netrw_method") || b:netrw_method < 0
++"    call Dfunc("netrw#NetrwObtain : unsupported method")
++    return
++   endif
++
++   " restore status line
++   if type(a:fname) == 1 && exists("s:netrw_users_stl")
++    call s:SetupNetrwStatusLine(s:netrw_users_stl)
+    endif
+ 
+   endif
+@@ -4989,8 +5548,8 @@
+     let &ei= eikeep
+ "    call Decho("bnr=".bnr." bnrcnt=".bnrcnt." buftype=".&bt." winnr#".winnr())
+     if bnrcnt == 1
+-     let bufname= bufname(winbufnr(winnr()))
+-     let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel")
++     let bufname = bufname(winbufnr(winnr()))
++     let choice  = confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel")
+ "     call Decho("bufname<".bufname."> choice=".choice." winnr#".winnr())
+ 
+      if choice == 1
+@@ -5106,25 +5665,25 @@
+     if b:netrw_method == 2
+      " handle uploading a list of files via ftp+.netrc
+      let netrw_fname = b:netrw_fname
+-     silent keepjumps new
++     sil keepj new
+ "     call Decho("filter input window#".winnr())
+ 
+-     put =g:netrw_ftpmode
++     keepj put =g:netrw_ftpmode
+ "     call Decho("filter input: ".getline('$'))
+ 
+      if exists("g:netrw_ftpextracmd")
+-      put =g:netrw_ftpextracmd
++      keepj put =g:netrw_ftpextracmd
+ "      call Decho("filter input: ".getline('$'))
+      endif
+ 
+-     call setline(line("$")+1,'lcd "'.fromdir.'"')
++     keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
+ "     call Decho("filter input: ".getline('$'))
+ 
+-     call setline(line("$")+1,'cd "'.tgtdir.'"')
++     keepj call setline(line("$")+1,'cd "'.tgtdir.'"')
+ "     call Decho("filter input: ".getline('$'))
+ 
+      for fname in a:fname
+-      call setline(line("$")+1,'put "'.fname.'"')
++      keepj call setline(line("$")+1,'put "'.fname.'"')
+ "      call Decho("filter input: ".getline('$'))
+      endfor
+ 
+@@ -5137,7 +5696,8 @@
+       exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+      endif
+      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
+-     silent g/Local directory now/d
++     sil keepj g/Local directory now/d
++     call histdel("/",-1)
+      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
+       call netrw#ErrorMsg(s:ERROR,getline(1),14)
+      else
+@@ -5152,38 +5712,38 @@
+      setlocal ff=unix
+ 
+      if exists("g:netrw_port") && g:netrw_port != ""
+-      put ='open '.g:netrw_machine.' '.g:netrw_port
++      keepj put ='open '.g:netrw_machine.' '.g:netrw_port
+ "      call Decho("filter input: ".getline('$'))
+      else
+-      put ='open '.g:netrw_machine
++      keepj put ='open '.g:netrw_machine
+ "      call Decho("filter input: ".getline('$'))
+      endif
+ 
+      if exists("g:netrw_ftp") && g:netrw_ftp == 1
+-      put =g:netrw_uid
++      keepj put =g:netrw_uid
+ "      call Decho("filter input: ".getline('$'))
+-      call setline(line("$")+1,'"'.s:netrw_passwd.'"')
++      keepj call setline(line("$")+1,'"'.s:netrw_passwd.'"')
+ "      call Decho("filter input: ".getline('$'))
+      else
+-      put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
++      keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+ "      call Decho("filter input: ".getline('$'))
+      endif
+ 
+-     call setline(line("$")+1,'lcd "'.fromdir.'"')
++     keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
+ "     call Decho("filter input: ".getline('$'))
+ 
+      if exists("b:netrw_fname") && b:netrw_fname != ""
+-      call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
++      keepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"')
+ "      call Decho("filter input: ".getline('$'))
+      endif
+ 
+      if exists("g:netrw_ftpextracmd")
+-      put =g:netrw_ftpextracmd
++      keepj put =g:netrw_ftpextracmd
+ "      call Decho("filter input: ".getline('$'))
+      endif
+ 
+      for fname in a:fname
+-      call setline(line("$")+1,'put "'.fname.'"')
++      keepj call setline(line("$")+1,'put "'.fname.'"')
+ "      call Decho("filter input: ".getline('$'))
+      endfor
+ 
+@@ -5191,11 +5751,12 @@
+      " -i       : turns off interactive prompting from ftp
+      " -n  unix : DON'T use <.netrc>, even though it exists
+      " -n  win32: quit being obnoxious about password
+-     norm! 1Gdd
++     keepj norm! 1Gdd
+ "     call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n")
+      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
+-     silent g/Local directory now/d
++     sil keepj g/Local directory now/d
++     call histdel("/",-1)
+      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
+       let debugkeep= &debug
+       setlocal debug=msg
+@@ -5205,6 +5766,9 @@
+      else
+       bw!|q
+      endif
++    elseif !exists("b:netrw_method") || b:netrw_method < 0
++"     call Dfunc("netrw#NetrwUpload : unsupported method")
++     return
+     endif
+    else
+     call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63)
+@@ -5222,7 +5786,14 @@
+   call s:NetrwSafeOptions()
+   if has("quickfix")
+    if !isdirectory(a:path)
+-    exe (g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
++    if g:netrw_preview && !g:netrw_alto
++     let pvhkeep= &pvh
++     let &pvh   = winwidth(0) - g:netrw_winsize
++    endif
++    exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
++    if exists("pvhkeep")
++     let &pvh= pvhkeep
++    endif
+    elseif !exists("g:netrw_quiet")
+     call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
+    endif
+@@ -5243,7 +5814,7 @@
+   setlocal ma noro
+ "  call Decho("setlocal ma noro")
+ "  call Decho("clear buffer<".expand("%")."> with :%d")
+-  %d
++  keepj %d
+   if a:islocal
+    call netrw#LocalBrowseCheck(a:dirname)
+   else
+@@ -5325,13 +5896,12 @@
+     let seq     = seqlist
+     let seqlist = ""
+    endif
+-   let sepchr= "\<Char-0xff>"
+    if priority < 10
+-    let spriority= "00".priority.sepchr
++    let spriority= "00".priority.g:netrw_sepchr
+    elseif priority < 100
+-    let spriority= "0".priority.sepchr
++    let spriority= "0".priority.g:netrw_sepchr
+    else
+-    let spriority= priority.sepchr
++    let spriority= priority.g:netrw_sepchr
+    endif
+ "   call Decho("priority=".priority." spriority<".spriority."> seq<".seq."> seqlist<".seqlist.">")
+ 
+@@ -5344,15 +5914,18 @@
+    if seq == '*'
+     let starpriority= spriority
+    else
+-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
++    exe 'sil keepj '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/'
++    call histdel("/",-1)
+     " sometimes multiple sorting patterns will match the same file or directory.
+     " The following substitute is intended to remove the excess matches.
+-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}'.sepchr.'\d\{3}\//s/^\d\{3}'.sepchr.'\(\d\{3}\/\).\@=/\1/e'
++    exe 'sil keepj '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
++    call histdel("/",-1)
+    endif
+    let priority = priority + 1
+   endwhile
+   if exists("starpriority")
+-   exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}'.sepchr.'/s/^/'.starpriority.'/'
++   exe 'sil keepj '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
++   call histdel("/",-1)
+   endif
+ 
+   " Following line associated with priority -- items that satisfy a priority
+@@ -5361,7 +5934,8 @@
+   " priority pattern needs to be retained.  So, at this point, these excess
+   " priority prefixes need to be removed, but not directories that happen to
+   " be just digits themselves.
+-  exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}'.sepchr.'\)\%(\d\{3}'.sepchr.'\)\+\ze./\1/e'
++  exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
++  call histdel("/",-1)
+ 
+ "  call Dret("SetSort")
+ endfun
+@@ -5374,7 +5948,7 @@
+   let svpos= netrw#NetrwSavePosn()
+ 
+   let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'
+-  norm! 0
++  keepj norm! 0
+   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   call netrw#NetrwRestorePosn(svpos)
+ 
+@@ -5405,12 +5979,12 @@
+ 
+   elseif a:mode == 1
+    " remote and t
+-   let cursorword  = s:NetrwGetWord()
++   let newdir  = s:NetrwBrowseChgDir(0,s:NetrwGetWord())
+ "   call Decho("tabnew")
+    tabnew
+    let s:didsplit= 1
+    call s:RestoreWinVars()
+-   call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,cursorword))
++   call s:NetrwBrowse(0,newdir)
+    unlet s:didsplit
+ 
+   elseif a:mode == 2
+@@ -5433,8 +6007,8 @@
+ 
+   elseif a:mode == 4
+    " local and t
+-   let netrw_curdir= b:netrw_curdir
+    let cursorword  = s:NetrwGetWord()
++   let netrw_curdir= s:NetrwTreeDir()
+ "   call Decho("tabnew")
+    tabnew
+    let b:netrw_curdir= netrw_curdir
+@@ -5505,12 +6079,13 @@
+   if w:netrw_liststyle == s:TREELIST
+ "   call Decho("w:netrrw_liststyle is TREELIST:")
+ "   call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">")
++
++   " extract tree directory if on a line specifying a subdirectory (ie. ends with "/")
+    if getline('.') =~ '/$'
+     let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e')
+    else
+     let treedir= ""
+    endif
+-
+ "   call Decho("treedir<".treedir.">")
+ 
+    " detect user attempting to close treeroot
+@@ -5518,18 +6093,18 @@
+ "    call Decho("user attempted to close treeroot")
+     " now force a refresh
+ "    call Decho("clear buffer<".expand("%")."> with :%d")
+-    keepjumps %d
++    keepj %d
+ "    call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
+     return b:netrw_curdir
+    endif
+ 
+    " elide all non-depth information
+    let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e')
+-"   call Decho("depth<".depth."> 1st subst")
++"   call Decho("depth<".depth."> 1st subst (non-depth info removed)")
+ 
+    " elide first depth
+    let depth = substitute(depth,'^| ','','')
+-"   call Decho("depth<".depth."> 2nd subst")
++"   call Decho("depth<".depth."> 2nd subst (first depth removed)")
+ 
+    " construct treedir by searching backwards at correct depth
+ "   call Decho("constructing treedir<".treedir."> depth<".depth.">")
+@@ -5548,11 +6123,6 @@
+   endif
+   let treedir= substitute(treedir,'//$','/','')
+ 
+-"  " now force a refresh
+-"" call DECHO("clear buffer<".expand("%")."> with :%d")
+-"  setlocal ma noro
+-"  keepjumps %d
+-
+ "  call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
+   return treedir
+ endfun
+@@ -5604,7 +6174,7 @@
+     call s:NetrwTreeDisplay(direntry.'/',depth)
+    else
+ "    call Decho("<".entry."> is not a key in treedict (no subtree)")
+-    call setline(line("$")+1,depth.entry)
++    keepj call setline(line("$")+1,depth.entry)
+    endif
+   endfor
+ "  call Dret("NetrwTreeDisplay")
+@@ -5638,7 +6208,7 @@
+ "   call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
+    exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d'
+    let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$"))
+-"   call Decho("w:treedict[".a:dirname."]= ".w:netrw_treedict[a:dirname])
++"   call Decho("w:treedict[".a:dirname."]= ".string(w:netrw_treedict[a:dirname]))
+    exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
+ 
+    " if past banner, record word
+@@ -5663,30 +6233,32 @@
+   if w:netrw_liststyle == s:WIDELIST
+ "   call Dfunc("NetrwWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo)
+    " look for longest filename (cpf=characters per filename)
+-   " cpf: characters per file
+-   " fpl: files per line
+-   " fpc: files per column
++   " cpf: characters per filename
++   " fpl: filenames per line
++   " fpc: filenames per column
+    setlocal ma noro
+ "   call Decho("setlocal ma noro")
+    let b:netrw_cpf= 0
+    if line("$") >= w:netrw_bannercnt
+-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
++    exe 'sil keepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
++    call histdel("/",-1)
+    else
+ "    call Dret("NetrwWideListing")
+     return
+    endif
+-"   call Decho("max file strlen+1=".b:netrw_cpf)
+-   let b:netrw_cpf= b:netrw_cpf + 1
++   let b:netrw_cpf= b:netrw_cpf + 2
++"   call Decho("b:netrw_cpf=max_filename_length+2=".b:netrw_cpf)
+ 
+    " determine qty files per line (fpl)
+    let w:netrw_fpl= winwidth(0)/b:netrw_cpf
+    if w:netrw_fpl <= 0
+     let w:netrw_fpl= 1
+    endif
+-"   call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
++"   call Decho("fpl= [winwidth=".winwidth(0)."]/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
+ 
+    " make wide display
+-   exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
++   exe 'sil keepj '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
++   call histdel("/",-1)
+    let fpc         = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
+    let newcolstart = w:netrw_bannercnt + fpc
+    let newcolend   = newcolstart + fpc - 1
+@@ -5697,15 +6269,16 @@
+     let newcolqty= newcolend - newcolstart
+     exe newcolstart
+     if newcolqty == 0
+-     exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
++     exe "sil keepj norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
+     else
+-     exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
++     exe "sil keepj 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 "sil keepj ".newcolstart.','.newcolend.'d'
++    exe 'sil keepj '.w:netrw_bannercnt
+    endwhile
+    silent! let @*= keepregstar
+-   exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
++   exe "sil keepj ".w:netrw_bannercnt.',$s/\s\+$//e'
++   call histdel("/",-1)
+    setlocal noma nomod ro
+ "   call Dret("NetrwWideListing")
+   endif
+@@ -5715,7 +6288,7 @@
+ " ---------------------------------------------------------------------
+ " s:PerformListing: {{{2
+ fun! s:PerformListing(islocal)
+-"  call Dfunc("s:PerformListing(islocal=".a:islocal.") buf(%)=".bufnr("%")."<".bufname("%").">")
++"  call Dfunc("s:PerformListing(islocal=".a:islocal.") bufnr(%)=".bufnr("%")."<".bufname("%").">")
+ 
+   call s:NetrwSafeOptions()
+   setlocal noro ma
+@@ -5729,20 +6302,25 @@
+   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
+    " force a refresh for tree listings
+ "   call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d")
+-   keepjumps %d
++   keepj %d
+   endif
+ 
+   " save current directory on directory history list
+-  call s:NetrwBookmarkDir(3,b:netrw_curdir)
++  call s:NetrwBookHistHandler(3,b:netrw_curdir)
+ 
+   " Set up the banner {{{3
+-"  call Decho("set up banner")
+-  keepjumps put ='\" ============================================================================'
+-  keepjumps put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
+-  keepjumps put ='\"   '.b:netrw_curdir
+-  keepjumps 1d
+-  let w:netrw_bannercnt= 3
+-  exe "keepjumps ".w:netrw_bannercnt
++  if g:netrw_banner
++"   call Decho("set up banner")
++   keepj put ='\" ============================================================================'
++   keepj put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
++   keepj put ='\"   '.b:netrw_curdir
++   keepj 1d
++   let w:netrw_bannercnt= 3
++   exe "keepj ".w:netrw_bannercnt
++  else
++   keepj 1
++   let w:netrw_bannercnt= 1
++  endif
+ 
+   let sortby= g:netrw_sort_by
+   if g:netrw_sort_direction =~ "^r"
+@@ -5750,55 +6328,63 @@
+   endif
+ 
+   " Sorted by... {{{3
+-"  call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">")
+-  if g:netrw_sort_by =~ "^n"
++  if g:netrw_banner
++"   call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">")
++   if g:netrw_sort_by =~ "^n"
+ "   call Decho("directories will be sorted by name")
+-   " sorted by name
+-   keepjumps put ='\"   Sorted by      '.sortby
+-   keepjumps put ='\"   Sort sequence: '.g:netrw_sort_sequence
+-   let w:netrw_bannercnt= w:netrw_bannercnt + 2
+-  else
++    " sorted by name
++    keepj put ='\"   Sorted by      '.sortby
++    keepj put ='\"   Sort sequence: '.g:netrw_sort_sequence
++    let w:netrw_bannercnt= w:netrw_bannercnt + 2
++   else
+ "   call Decho("directories will be sorted by size or time")
+-   " sorted by size or date
+-   keepjumps put ='\"   Sorted by '.sortby
+-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
++    " sorted by size or date
++    keepj put ='\"   Sorted by '.sortby
++    let w:netrw_bannercnt= w:netrw_bannercnt + 1
++   endif
++   exe "keepj ".w:netrw_bannercnt
+   endif
+-  exe "keepjumps ".w:netrw_bannercnt
+ 
+   " show copy/move target, if any
+-  if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
+-"   call Decho("show copy/move target<".s:netrwmftgt.">")
+-   keepjumps put =''
+-   if s:netrwmftgt_islocal
+-    call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (local)')
++  if g:netrw_banner
++   if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal")
++"    call Decho("show copy/move target<".s:netrwmftgt.">")
++    keepj put =''
++    if s:netrwmftgt_islocal
++     keepj call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (local)')
++    else
++     keepj call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
++    endif
++    let w:netrw_bannercnt= w:netrw_bannercnt + 1
+    else
+-    call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
++"    call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
+    endif
+-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
+-  else
+-"   call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
++   exe "keepj ".w:netrw_bannercnt
+   endif
+-  exe "keepjumps ".w:netrw_bannercnt
+ 
+   " Hiding...  -or-  Showing... {{{3
+-"  call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
+-  if g:netrw_list_hide != "" && g:netrw_hide
+-   if g:netrw_hide == 1
+-    keepjumps put ='\"   Hiding:        '.g:netrw_list_hide
+-   else
+-    keepjumps put ='\"   Showing:       '.g:netrw_list_hide
++  if g:netrw_banner
++"   call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)")
++   if g:netrw_list_hide != "" && g:netrw_hide
++    if g:netrw_hide == 1
++     keepj put ='\"   Hiding:        '.g:netrw_list_hide
++    else
++     keepj put ='\"   Showing:       '.g:netrw_list_hide
++    endif
++    let w:netrw_bannercnt= w:netrw_bannercnt + 1
+    endif
+-   let w:netrw_bannercnt= w:netrw_bannercnt + 1
++   exe "keepjumps ".w:netrw_bannercnt
++   keepj put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
++   keepj put ='\" ============================================================================'
++   let w:netrw_bannercnt= w:netrw_bannercnt + 2
+   endif
+-  exe "keepjumps ".w:netrw_bannercnt
+-  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
+-  keepjumps put ='\" ============================================================================'
+-  let w:netrw_bannercnt= w:netrw_bannercnt + 2
+ 
+   " bannercnt should index the line just after the banner
+-  let w:netrw_bannercnt= w:netrw_bannercnt + 1
+-  exe "keepjumps ".w:netrw_bannercnt
+-"  call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
++  if g:netrw_banner
++   let w:netrw_bannercnt= w:netrw_bannercnt + 1
++   exe "keepj ".w:netrw_bannercnt
++"   call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
++  endif
+ 
+   " set up syntax highlighting {{{3
+ "  call Decho("set up syntax highlighting")
+@@ -5816,54 +6402,58 @@
+   else " remote
+    call s:NetrwRemoteListing()
+   endif
+-"  call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)")
++"  call Decho("g:netrw_banner=".g:netrw_banner." w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)")
+ 
+   " manipulate the directory listing (hide, sort) {{{3
+-  if line("$") >= w:netrw_bannercnt
++  if !g:netrw_banner || line("$") >= w:netrw_bannercnt
+ "   call Decho("manipulate directory listing (hide)")
+ "   call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
+    if g:netrw_hide && g:netrw_list_hide != ""
+     call s:NetrwListHide()
+    endif
+-   if line("$") >= w:netrw_bannercnt
++   if !g:netrw_banner || line("$") >= w:netrw_bannercnt
+ "    call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">")
+ 
+     if g:netrw_sort_by =~ "^n"
+      " sort by name
+      call s:NetrwSetSort()
+ 
+-     if w:netrw_bannercnt < line("$")
++     if !g:netrw_banner || w:netrw_bannercnt < line("$")
+ "      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")")
+       if g:netrw_sort_direction =~ 'n'
+        " normal direction sorting
+-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
++       exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
+       else
+        " reverse direction sorting
+-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
++       exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
+       endif
+      endif
+      " remove priority pattern prefix
+ "     call Decho("remove priority pattern prefix")
+-     let sepchr= "\<Char-0xff>"
+-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}'.sepchr.'//e'
++     exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
++     call histdel("/",-1)
+ 
+     elseif a:islocal
+-     if w:netrw_bannercnt < line("$")
++     if !g:netrw_banner || w:netrw_bannercnt < line("$")
+ "      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction)
+       if g:netrw_sort_direction =~ 'n'
+ "       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort')
+-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
++       exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
+       else
+ "       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
+-       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
++       exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
+       endif
++     exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
++     call histdel("/",-1)
+      endif
+-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+     endif
+ 
+    elseif g:netrw_sort_direction =~ 'r'
+ "    call Decho('reverse the sorted listing')
+-    exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt
++    if !g:netrw_banner || w:netrw_bannercnt < line('$')
++     exe 'sil keepj '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
++     call histdel("/",-1)
++    endif
+    endif
+   endif
+ 
+@@ -5872,11 +6462,11 @@
+   call s:NetrwWideListing()
+   call s:NetrwTreeListing(b:netrw_curdir)
+ 
+-  if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
++  if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner)
+    " place cursor on the top-left corner of the file listing
+ "   call Decho("place cursor on top-left corner of file listing")
+-   exe 'silent keepjumps '.w:netrw_bannercnt
+-   norm! 0
++   exe 'sil keepj '.w:netrw_bannercnt
++   keepj norm! 0
+   endif
+ 
+   " record previous current directory
+@@ -5996,40 +6586,46 @@
+    endif
+ "   call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)")
+    call s:NetrwRemoteFtpCmd(s:path,listcmd)
+-"   exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
++"   exe "keepj ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
+ 
+    if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
+     " shorten the listing
+ "    call Decho("generate short listing")
+-    exe "keepjumps ".w:netrw_bannercnt
++    exe "keepj ".w:netrw_bannercnt
+ 
+     " cleanup
+     if g:netrw_ftp_browse_reject != ""
+-     exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
++     exe "sil! keepj g/".g:netrw_ftp_browse_reject."/keepj d"
++     call histdel("/",-1)
+     endif
+-    silent! keepjumps %s/\r$//e
++    sil! keepj %s/\r$//e
++    call histdel("/",-1)
+ 
+     " if there's no ../ listed, then put ./ and ../ in
+     let line1= line(".")
+-    exe "keepjumps ".w:netrw_bannercnt
++    exe "keepj ".w:netrw_bannercnt
+     let line2= search('^\.\.\/\%(\s\|$\)','cnW')
+     if line2 == 0
+ "     call Decho("netrw is putting ./ and ../ into listing")
+-     keepjumps put='../'
+-     keepjumps put='./'
++     keepj put='../'
++     keepj put='./'
+     endif
+-    exe "keepjumps ".line1
++    exe "keepj ".line1
+     keepjumps norm! 0
+ 
+ "    call Decho("line1=".line1." line2=".line2." line(.)=".line("."))
+     if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
+ "     call Decho("M$ ftp cleanup")
+-     exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
++     exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
++     call histdel("/",-1)
+     else " normal ftp cleanup
+ "     call Decho("normal ftp 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 'sil! keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
++     exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
++     exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
++     call histdel("/",-1)
++     call histdel("/",-1)
++     call histdel("/",-1)
+     endif
+    endif
+ 
+@@ -6042,19 +6638,23 @@
+ "    call Decho("1: exe silent r! ".shellescape(listcmd.s:path, 1))
+     exe "silent r! ".listcmd.shellescape(s:path, 1)
+     " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like
+-    g/^Listing directory/d
+-    g/^d[-rwx][-rwx][-rwx]/s+$+/+e
+-    silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e
++    keepj g/^Listing directory/keepj d
++    keepj g/^d[-rwx][-rwx][-rwx]/keepj s+$+/+e
++    sil keepj g/^l[-rwx][-rwx][-rwx]/keepj s+$+@+e
++    call histdel("/",-1)
++    call histdel("/",-1)
++    call histdel("/",-1)
+     if g:netrw_liststyle != s:LONGLIST
+-     g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e
++     keepj g/^[dlsp-][-rwx][-rwx][-rwx]/keepj s/^.*\s\(\S\+\)$/\1/e
++     call histdel("/",-1)
+     endif
+    else
+     if s:path == ""
+ "     call Decho("2: exe silent r! ".listcmd)
+-     exe "silent r! ".listcmd
++     exe "sil r! ".listcmd
+     else
+ "     call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1))
+-     exe "silent r! ".listcmd.' '.shellescape(s:path,1)
++     exe "sil r! ".listcmd.' '.shellescape(s:path,1)
+ "     call Decho("listcmd<".listcmd."> path<".s:path.">")
+     endif
+    endif
+@@ -6062,7 +6662,8 @@
+    " cleanup
+    if g:netrw_ftp_browse_reject != ""
+ "    call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
+-    exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d"
++    exe "sil! g/".g:netrw_ssh_browse_reject."/keepjumps d"
++    call histdel("/",-1)
+    endif
+   endif
+ 
+@@ -6072,38 +6673,41 @@
+ 
+    if s:method == "ftp"
+     " cleanup
+-    exe "keepjumps ".w:netrw_bannercnt
++    exe "keepj ".w:netrw_bannercnt
+     while getline('.') =~ g:netrw_ftp_browse_reject
+-     keepjumps d
++     keepj d
+     endwhile
+     " if there's no ../ listed, then put ./ and ../ in
+     let line1= line(".")
+-    keepjumps 1
+-    silent keepjumps call search('^\.\.\/\%(\s\|$\)','W')
++    keepj 1
++    sil keepj call search('^\.\.\/\%(\s\|$\)','W')
+     let line2= line(".")
+     if line2 == 0
+-     exe 'keepjumps '.w:netrw_bannercnt."put='./'"
++     exe 'keepj '.w:netrw_bannercnt."put='./'"
+      if b:netrw_curdir != '/'
+-      exe 'keepjumps '.w:netrw_bannercnt."put='../'"
++      exe 'keepj '.w:netrw_bannercnt."put='../'"
+      endif
+     endif
+-   exe "keepjumps ".line1
++   exe "keepj ".line1
+    keepjumps norm! 0
+    endif
+ 
+    if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
+ "    call Decho("M$ ftp site listing cleanup")
+-    exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/'
++    exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/'
+    elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$")
+ "    call Decho("normal ftp site listing cleanup: bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
+-    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 'sil keepj '.w:netrw_bannercnt.',$s/ -> .*$//e'
++    exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
++    exe 'sil keepj '.w:netrw_bannercnt
++    call histdel("/",-1)
++    call histdel("/",-1)
++    call histdel("/",-1)
+    endif
+   endif
+ 
+ "  if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho
+-"   exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))'
++"   exe "keepj ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))'
+ "  endif " Decho
+ "  call Dret("s:NetrwRemoteListing")
+ endfun
+@@ -6118,6 +6722,7 @@
+   let all= 0
+   if exists("s:netrwmarkfilelist_{bufnr('%')}")
+    " remove all marked files
++"   call Decho("remove all marked files with bufnr#".bufnr("%"))
+    for fname in s:netrwmarkfilelist_{bufnr("%")}
+     let ok= s:NetrwRemoteRmFile(a:path,fname,all)
+     if ok =~ 'q\%[uit]'
+@@ -6126,12 +6731,11 @@
+      let all= 1
+     endif
+    endfor
+-   unlet s:netrwmarkfilelist_{bufnr("%")}
+-   unlet s:netrwmarkfilemtch_{bufnr("%")}
+-   2match none
++   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
+ 
+   else
+    " remove files specified by range
++"   call Decho("remove files specified by range")
+ 
+    " preparation for removing multiple files/directories
+    let ctr= a:firstline
+@@ -6245,14 +6849,14 @@
+      call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile)
+     else
+      let rmfile          = substitute(a:path.a:rmfile,'/$','','')
+-     let netrw_rmdir_cmd = s:MakeSshCmd(s:WinPath(g:netrw_rmdir_cmd)).' '.shellescape(s:WinPath(rmfile))
++     let netrw_rmdir_cmd = s:MakeSshCmd(netrw#WinPath(g:netrw_rmdir_cmd)).' '.shellescape(netrw#WinPath(rmfile))
+ "      call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")")
+      let ret= system(netrw_rmdir_cmd)
+ "      call Decho("returned=".ret." errcode=".v:shell_error)
+ 
+      if v:shell_error != 0
+ "      call Decho("v:shell_error not 0")
+-      let netrw_rmf_cmd= s:MakeSshCmd(s:WinPath(g:netrw_rmf_cmd)).' '.shellescape(s:WinPath(substitute(rmfile,'[\/]$','','e')))
++      let netrw_rmf_cmd= s:MakeSshCmd(netrw#WinPath(g:netrw_rmf_cmd)).' '.shellescape(netrw#WinPath(substitute(rmfile,'[\/]$','','e')))
+ "      call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")")
+       let ret= system(netrw_rmf_cmd)
+ "      call Decho("returned=".ret." errcode=".v:shell_error)
+@@ -6295,10 +6899,10 @@
+   if w:netrw_method == 2 || w:netrw_method == 5
+    " ftp + <.netrc>:  Method #2
+    if a:path != ""
+-    put ='cd \"'.a:path.'\"'
++    keepj put ='cd \"'.a:path.'\"'
+    endif
+    if exists("g:netrw_ftpextracmd")
+-    put =g:netrw_ftpextracmd
++    keepj put =g:netrw_ftpextracmd
+ "    call Decho("filter input: ".getline('.'))
+    endif
+    call setline(line("$")+1,a:listcmd)
+@@ -6316,26 +6920,26 @@
+    " ftp + machine,id,passwd,filename:  Method #3
+     setlocal ff=unix
+     if exists("g:netrw_port") && g:netrw_port != ""
+-     put ='open '.g:netrw_machine.' '.g:netrw_port
++     keepj put ='open '.g:netrw_machine.' '.g:netrw_port
+     else
+-     put ='open '.g:netrw_machine
++     keepj put ='open '.g:netrw_machine
+     endif
+ 
+     if exists("g:netrw_ftp") && g:netrw_ftp == 1
+-     put =g:netrw_uid
+-     put ='\"'.s:netrw_passwd.'\"'
++     keepj put =g:netrw_uid
++     keepj put ='\"'.s:netrw_passwd.'\"'
+     else
+-     put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
++     keepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"'
+     endif
+ 
+    if a:path != ""
+-    put ='cd \"'.a:path.'\"'
++    keepj put ='cd \"'.a:path.'\"'
+    endif
+    if exists("g:netrw_ftpextracmd")
+-    put =g:netrw_ftpextracmd
++    keepj put =g:netrw_ftpextracmd
+ "    call Decho("filter input: ".getline('.'))
+    endif
+-   call setline(line("$")+1,a:listcmd)
++   keepj call setline(line("$")+1,a:listcmd)
+ 
+     " perform ftp:
+     " -i       : turns off interactive prompting from ftp
+@@ -6352,25 +6956,29 @@
+ 
+   " cleanup for Windows
+   if has("win32") || has("win95") || has("win64") || has("win16")
+-   silent! keepjumps %s/\r$//e
++   sil! keepj %s/\r$//e
++   call histdel("/",-1)
+   endif
+   if a:listcmd == "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/$/@/
++   sil! keepj g/d\%([-r][-w][-x]\)\{3}/keepj s@$@/@
++   sil! keepj g/l\%([-r][-w][-x]\)\{3}/keepj s/$/@/
++   call histdel("/",-1)
++   call histdel("/",-1)
+    if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
+-    exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
++    exe "sil! keepj ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
++    call histdel("/",-1)
+    endif
+   endif
+ 
+   " ftp's listing doesn't seem to include ./ or ../
+   if !search('^\.\/$\|\s\.\/$','wn')
+-   exe 'keepjumps '.w:netrw_bannercnt
+-   put ='./'
++   exe 'keepj '.w:netrw_bannercnt
++   keepj put ='./'
+   endif
+   if !search('^\.\.\/$\|\s\.\.\/$','wn')
+-   exe 'keepjumps '.w:netrw_bannercnt
+-   put ='../'
++   exe 'keepj '.w:netrw_bannercnt
++   keepj put ='../'
+   endif
+ 
+   " restore settings
+@@ -6412,8 +7020,8 @@
+     else
+      let oldname= shellescape(a:path.oldname)
+      let newname= shellescape(a:path.newname)
+-"     call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")")
+-     let ret    = system(s:WinPath(rename_cmd).' '.oldname.' '.newname)
++"     call Decho("system(netrw#WinPath(".rename_cmd.") ".oldname.' '.newname.")")
++     let ret    = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname)
+     endif
+ 
+    endfor
+@@ -6423,7 +7031,7 @@
+ 
+   " attempt to rename files/directories
+    while ctr <= a:lastline
+-    exe "keepjumps ".ctr
++    exe "keepj ".ctr
+ 
+     let oldname= s:NetrwGetWord()
+ "   call Decho("oldname<".oldname.">")
+@@ -6437,8 +7045,8 @@
+     else
+      let oldname= shellescape(a:path.oldname)
+      let newname= shellescape(a:path.newname)
+-"     call Decho("system(s:WinPath(".rename_cmd.") ".oldname.' '.newname.")")
+-     let ret    = system(s:WinPath(rename_cmd).' '.oldname.' '.newname)
++"     call Decho("system(netrw#WinPath(".rename_cmd.") ".oldname.' '.newname.")")
++     let ret    = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname)
+     endif
+ 
+     let ctr= ctr + 1
+@@ -6466,13 +7074,16 @@
+   " The &ft == "netrw" test was installed because the BufEnter event
+   " would hit when re-entering netrw windows, creating unexpected
+   " refreshes (and would do so in the middle of NetrwSaveOptions(), too)
+-"  call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname))
++"  call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname).((exists("s:treeforceredraw")? " treeforceredraw" : "")))
+   if isdirectory(a:dirname)
+ "   call Decho(" ft<".&ft."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : " doesn't exist")."> dirname<".a:dirname.">"." line($)=".line("$"))
+    if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname)
+     silent! call s:NetrwBrowse(1,a:dirname)
+    elseif &ft == "netrw" && line("$") == 1
+     silent! call s:NetrwBrowse(1,a:dirname)
++   elseif exists("s:treeforceredraw")
++    unlet s:treeforceredraw
++    silent! call s:NetrwBrowse(1,a:dirname)
+    endif
+   endif
+   " not a directory, ignore it
+@@ -6492,7 +7103,7 @@
+ 
+   " get the list of files contained in the current directory
+   let dirname    = escape(b:netrw_curdir,g:netrw_glob_escape)
+-  let dirnamelen = strlen(b:netrw_curdir)
++  let dirnamelen = s:Strlen(b:netrw_curdir)
+   let filelist   = glob(s:ComposePath(dirname,"*"))
+ "  call Decho("glob(dirname<".dirname."/*>)=".filelist)
+   if filelist != ""
+@@ -6608,7 +7219,7 @@
+ 
+    if w:netrw_liststyle == s:LONGLIST
+     let sz   = getfsize(filename)
+-    let fsz  = strpart("               ",1,15-s:Strlen(sz)).sz
++    let fsz  = strpart("               ",1,15-strlen(sz)).sz
+     let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
+ "    call Decho("sz=".sz." fsz=".fsz)
+    endif
+@@ -6617,29 +7228,31 @@
+     " sort by time (handles time up to 1 quintillion seconds, US)
+ "    call Decho("getftime(".filename.")=".getftime(filename))
+     let t  = getftime(filename)
+-    let ft = strpart("000000000000000000",1,18-s:Strlen(t)).t
++    let ft = strpart("000000000000000000",1,18-strlen(t)).t
+ "    call Decho("exe keepjumps put ='".ft.'/'.filename."'")
+     let ftpfile= ft.'/'.pfile
+-    keepjumps silent! put=ftpfile
++    sil! keepj put=ftpfile
+ 
+    elseif g:netrw_sort_by =~ "^s"
+     " sort by size (handles file sizes up to 1 quintillion bytes, US)
+ "    call Decho("getfsize(".filename.")=".getfsize(filename))
+     let sz   = getfsize(filename)
+-    let fsz  = strpart("000000000000000000",1,18-s:Strlen(sz)).sz
++    let fsz  = strpart("000000000000000000",1,18-strlen(sz)).sz
+ "    call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
+     let fszpfile= fsz.'/'.pfile
+-    keepjumps silent! put =fszpfile
++    sil! keepj put =fszpfile
+ 
+    else
+     " sort by name
+ "    call Decho("exe keepjumps put ='".pfile."'")
+-    keepjumps silent! put=pfile
++    sil! keepj put=pfile
+    endif
+   endwhile
+ 
+   " cleanup any windows mess at end-of-line
+-  silent! keepjumps %s/\r$//e
++  sil! keepj g/^$/d
++  sil! keepj %s/\r$//e
++  call histdel("/",-1)
+   exe "setlocal ts=".g:netrw_maxfilenamelen
+ "  call Decho("setlocal ts=".g:netrw_maxfilenamelen)
+ 
+@@ -6659,9 +7272,17 @@
+    return
+   endif
+   if !exists("w:netrw_bannercnt")
+-"   call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw windwo")
++"   call Dret("LocalBrowseShellCmdRefresh : don't refresh when focus not on netrw window")
+    return
+   endif
++  if exists("s:locbrowseshellcmd")
++   if s:locbrowseshellcmd
++    let s:locbrowseshellcmd= 0
++"    call Dret("LocalBrowseShellCmdRefresh : NetrwBrowse itself caused the refresh")
++    return
++   endif
++   let s:locbrowseshellcmd= 0
++  endif
+   let itab       = 1
+   let buftablist = []
+   while itab <= tabpagenr("$")
+@@ -6681,7 +7302,7 @@
+    if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1
+     " wipe out any non-displaying netrw buffer
+ "    call Decho("wiping  buf#".ibuf,"<".bufname(ibuf).">")
+-    exe "silent! bd ".fnameescape(ibuf)
++    exe "sil! bd ".fnameescape(ibuf)
+     call remove(s:netrw_browselist,ibl)
+ "    call Decho("browselist=".string(s:netrw_browselist))
+     continue
+@@ -6728,7 +7349,7 @@
+ 
+    let ctr = a:firstline
+    while ctr <= a:lastline
+-    exe "keepjumps ".ctr
++    exe "keepj ".ctr
+ 
+     " sanity checks
+     if line(".") < w:netrw_bannercnt
+@@ -6768,7 +7389,7 @@
+   
+   let all= a:all
+   let ok = ""
+-  norm! 0
++  keepj norm! 0
+   let rmfile= s:ComposePath(a:path,a:fname)
+ "  call Decho("rmfile<".rmfile.">")
+ 
+@@ -6815,8 +7436,8 @@
+    let rmfile= substitute(rmfile,'[\/]$','','e')
+ 
+    if all || ok =~ 'y\%[es]' || ok == ""
+-"    call Decho("1st attempt: system(s:WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')')
+-    call system(s:WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile))
++"    call Decho("1st attempt: system(netrw#WinPath(".g:netrw_local_rmdir.') '.shellescape(rmfile).')')
++    call system(netrw#WinPath(g:netrw_local_rmdir).' '.shellescape(rmfile))
+ "    call Decho("v:shell_error=".v:shell_error)
+ 
+     if v:shell_error != 0
+@@ -6874,15 +7495,13 @@
+     endif
+     call rename(oldname,newname)
+    endfor
+-   2match none
+-   unlet s:netrwmarkfilelist_{bufnr("%")}
+-   unlet s:netrwmarkfilemtch_{bufnr("%")}
++   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
+   
+   else
+ 
+    " attempt to rename files/directories
+    while ctr <= a:lastline
+-    exe "keepjumps ".ctr
++    exe "keepj ".ctr
+ 
+     " sanity checks
+     if line(".") < w:netrw_bannercnt
+@@ -6895,7 +7514,7 @@
+      continue
+     endif
+ 
+-    norm! 0
++    keepj norm! 0
+     let oldname= s:ComposePath(a:path,curword)
+ "   call Decho("oldname<".oldname.">")
+ 
+@@ -6955,9 +7574,11 @@
+    augroup AuNetrwShellCmd
+     au!
+     if (has("win32") || has("win95") || has("win64") || has("win16"))
++"     call Decho("autocmd: ShellCmdPost * call s:LocalBrowseShellCmdRefresh()")
+      au ShellCmdPost			*	call s:LocalBrowseShellCmdRefresh()
+     else
+      au ShellCmdPost,FocusGained	*	call s:LocalBrowseShellCmdRefresh()
++"     call Decho("autocmd: ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh()")
+     endif
+    augroup END
+   endif
+@@ -6984,7 +7605,7 @@
+ "   0=note     = s:NOTE
+ "   1=warning  = s:WARNING
+ "   2=error    = s:ERROR
+-"  Jul 08, 2008 : max errnum currently is 71
++"  Dec 03, 2009 : max errnum currently is 76
+ fun! netrw#ErrorMsg(level,msg,errnum)
+ "  call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
+ 
+@@ -7013,11 +7634,12 @@
+ "    call Decho("setlocal ma noro")
+     setlocal ma noro
+     call setline(line("$")+1,level.a:msg)
+-    $
++    keepj $
+    else
+ "    call Decho("create a NetrwMessage buffer window")
+     bo 1split
+-    enew
++    call s:NetrwEnew()
++    call s:NetrwSafeOptions()
+     setlocal bt=nofile
+     file NetrwMessage
+ "    call Decho("setlocal ma noro")
+@@ -7069,7 +7691,7 @@
+   " restore window
+   if exists("w:netrw_winnr")
+ "   call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w")
+-   exe "silent! ".w:netrw_winnr."wincmd w"
++   exe "sil! ".w:netrw_winnr."wincmd w"
+   endif
+   if v:shell_error == 0
+    " as suggested by Bram M: redraw on no error
+@@ -7080,13 +7702,13 @@
+   " restore top-of-screen line
+   if exists("w:netrw_hline")
+ "   call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z")
+-   exe "norm! ".w:netrw_hline."G0z\<CR>"
++   exe "keepj norm! ".w:netrw_hline."G0z\<CR>"
+   endif
+ 
+   " restore position
+   if exists("w:netrw_line") && exists("w:netrw_col")
+ "   call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|")
+-   exe "norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
++   exe "keepj norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
+   endif
+ 
+   let &ei= eikeep
+@@ -7101,9 +7723,10 @@
+   let w:netrw_winnr= winnr()
+   let w:netrw_line = line(".")
+   let w:netrw_col  = virtcol(".")
++"  call Decho("currently, win#".w:netrw_winnr." line#".w:netrw_line." col#".w:netrw_col)
+ 
+   " Save top-of-screen line
+-  norm! H0
++  keepj norm! H0
+   let w:netrw_hline= line(".")
+ 
+   " set up string holding position parameters
+@@ -7130,7 +7753,7 @@
+ 
+   if(has("amiga"))
+ "   call Decho("amiga")
+-   let ec = a:base[strlen(a:base)-1]
++   let ec = a:base[s:Strlen(a:base)-1]
+    if ec != '/' && ec != ':'
+     let ret = a:base . "/" . a:subdir
+    else
+@@ -7141,6 +7764,14 @@
+ "   call Decho("windows")
+    let ret= a:subdir
+ 
++  elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16"))
++"   call Decho("windows")
++   if a:base =~ '[/\\]$'
++    let ret= a:base.a:subdir
++   else
++    let ret= a:base."/".a:subdir
++   endif
++
+   elseif a:base =~ '^\a\+://'
+ "   call Decho("remote linux/macos")
+    let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','')
+@@ -7212,7 +7843,7 @@
+    endif
+ 
+    " let netrw#NetSource() know about the tmpfile
+-   let s:netrw_tmpfile= tmpfile " used by netrw#NetSource()
++   let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() and netrw#NetrwBrowseX()
+ "   call Decho("tmpfile<".tmpfile."> s:netrw_tmpfile<".s:netrw_tmpfile.">")
+ 
+    " o/s dependencies
+@@ -7286,7 +7917,7 @@
+    if bmshowfuncs != []
+     let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','')
+     if bmshowfunc =~ '^call.*BMShow()'
+-     exe "silent! ".bmshowfunc
++     exe "sil! ".bmshowfunc
+     endif
+    endif
+   endif
+@@ -7294,6 +7925,47 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
++" s:NetrwCursorline: {{{2
++fun! s:NetrwCursorline()
++  if !exists("w:netrw_liststyle")
++   let w:netrw_liststyle= g:netrw_liststyle
++  endif
++"  call Dfunc("s:NetrwCursorline() liststyle=".w:netrw_liststyle." g:netrw_cursorline=".g:netrw_cursorline." s:netrw_usercuc=".s:netrw_usercuc." s:netrw_usercul=".s:netrw_usercul)
++  "
++  if w:netrw_liststyle != s:WIDELIST
++   " thin-long-tree listings
++   if g:netrw_cursorline == 2
++    setlocal cursorline
++    let &l:cursorcolumn= s:netrw_usercuc
++"    call Decho("setlocal cursorline  (cursorcolumn is ".((s:netrw_usercuc)? "on" : "off").")")
++   elseif g:netrw_cursorline
++    setlocal cursorline
++"    call Decho("setlocal cursorline")
++   endif
++
++  else
++   " wide listings
++   if g:netrw_cursorline == 2
++    setlocal cursorline cursorcolumn
++"    call Decho("setlocal cursorline cursorcolumn")
++   elseif g:netrw_cursorline
++    let &l:cursorline= s:netrw_usercul
++"    call Decho("cursorline is ".((s:netrw_usercul)? "on" : "off").")")
++   endif
++  endif
++"  call Dret("s:NetrwCursorline : l:cursorline=".&l:cursorline." l:cursorcolumn=".&l:cursorcolumn)
++endfun
++
++" ---------------------------------------------------------------------
++" s:RestoreCursorline: restores cursorline/cursorcolumn to original user settings {{{2
++fun! s:RestoreCursorline()
++"  call Dfunc("s:RestoreCursorline() currently, cul=".&l:cursorline." cuc=".&l:cursorcolumn." win#".winnr()." buf#".bufnr("%"))
++  let &l:cursorline   = s:netrw_usercul
++  let &l:cursorcolumn = s:netrw_usercuc
++"  call Dret("s:RestoreCursorline : restored cul=".&l:cursorline." cuc=".&l:cursorcolumn)
++endfun
++
++" ---------------------------------------------------------------------
+ " s:NetrwDelete: Deletes a file. {{{2
+ "           Uses Steve Hall's idea to insure that Windows paths stay
+ "           acceptable.  No effect on Unix paths.
+@@ -7301,7 +7973,7 @@
+ fun! s:NetrwDelete(path)
+ "  call Dfunc("s:NetrwDelete(path<".a:path.">)")
+ 
+-  let path = s:WinPath(a:path)
++  let path = netrw#WinPath(a:path)
+   if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
+    if exists("+shellslash")
+     let sskeep= &shellslash
+@@ -7317,7 +7989,7 @@
+    let result= delete(path)
+   endif
+   if result < 0
+-   call Netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
++   call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
+   endif
+ 
+ "  call Dret("s:NetrwDelete ".result)
+@@ -7326,10 +7998,12 @@
+ 
+ " ---------------------------------------------------------------------
+ " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2
+-fun! s:NetrwEnew(curdir)
+-"  call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) buf#".bufnr("%")."<".bufname("%").">")
++fun! s:NetrwEnew(...)
++"  call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$"))
++"  call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">")
+ 
+   " grab a function-local-variable copy of buffer variables
++"  call Decho("make function-local copy of netrw variables")
+   if exists("b:netrw_bannercnt")      |let netrw_bannercnt       = b:netrw_bannercnt      |endif
+   if exists("b:netrw_browser_active") |let netrw_browser_active  = b:netrw_browser_active |endif
+   if exists("b:netrw_cpf")            |let netrw_cpf             = b:netrw_cpf            |endif
+@@ -7349,10 +8023,12 @@
+ 
+   call s:NetrwOptionRestore("w:")
+ "  call Decho("generate a buffer with keepjumps keepalt enew!")
+-  keepjumps keepalt enew!
++  keepj keepalt enew!
++"  call Decho("bufnr($)=".bufnr("$"))
+   call s:NetrwOptionSave("w:")
+ 
+   " copy function-local-variables to buffer variable equivalents
++"  call Decho("copy function-local variables back to buffer netrw variables")
+   if exists("netrw_bannercnt")      |let b:netrw_bannercnt       = netrw_bannercnt      |endif
+   if exists("netrw_browser_active") |let b:netrw_browser_active  = netrw_browser_active |endif
+   if exists("netrw_cpf")            |let b:netrw_cpf             = netrw_cpf            |endif
+@@ -7370,14 +8046,17 @@
+   if exists("netrw_option")         |let b:netrw_option          = netrw_option         |endif
+   if exists("netrw_prvdir")         |let b:netrw_prvdir          = netrw_prvdir         |endif
+ 
+-  let b:netrw_curdir= a:curdir
+-  if b:netrw_curdir =~ '/$'
+-   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
+-    file NetrwTreeListing
+-    nno <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
+-    nno <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
+-   else
+-    exe "silent! keepalt file ".fnameescape(b:netrw_curdir)
++  if a:0 > 0
++   let b:netrw_curdir= a:1
++   if b:netrw_curdir =~ '/$'
++    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
++     file NetrwTreeListing
++     set bt=nowrite noswf
++     nno <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
++     nno <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
++    else
++     exe "sil! keepalt file ".fnameescape(b:netrw_curdir)
++    endif
+    endif
+   endif
+ 
+@@ -7511,13 +8190,16 @@
+    call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
+    unlet s:nbcd_curpos_{bufnr('%')}
+   endif
++  if exists("s:explore_match")
++   exe "2match netrwMarkFile /".s:explore_match."/"
++  endif
+ "  call Dret("s:NetrwRexplore")
+ endfun
+ 
+ " ---------------------------------------------------------------------
+ " s:SaveBufVars: {{{2
+ fun! s:SaveBufVars()
+-"  call Dfunc("s:SaveBufVars()")
++"  call Dfunc("s:SaveBufVars() buf#".bufnr("%"))
+ 
+   if exists("b:netrw_curdir")        |let s:netrw_curdir         = b:netrw_curdir        |endif
+   if exists("b:netrw_lastfile")      |let s:netrw_lastfile       = b:netrw_lastfile      |endif
+@@ -7532,7 +8214,7 @@
+ " ---------------------------------------------------------------------
+ " s:SaveWinVars: (used by Explore() and NetrwSplit()) {{{2
+ fun! s:SaveWinVars()
+-"  call Dfunc("s:SaveWinVars()")
++"  call Dfunc("s:SaveWinVars() win#".winnr())
+   if exists("w:netrw_bannercnt")      |let s:bannercnt       = w:netrw_bannercnt      |endif
+   if exists("w:netrw_col")            |let s:col             = w:netrw_col            |endif
+   if exists("w:netrw_curdir")         |let s:curdir          = w:netrw_curdir         |endif
+@@ -7562,7 +8244,7 @@
+ "   variables are not inherited by the new window.  SetBufWinVars() and
+ "   UseBufWinVars() get around that.
+ fun! s:SetBufWinVars()
+-"  call Dfunc("s:SetBufWinVars()")
++"  call Dfunc("s:SetBufWinVars() win#".winnr())
+   if exists("w:netrw_liststyle")      |let b:netrw_liststyle      = w:netrw_liststyle      |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
+@@ -7584,8 +8266,7 @@
+   if a:islocal
+    exe 'com! Rexplore call s:NetrwRexplore(1,"'.escape(a:dirname,'"\').'")'
+    if g:netrw_retmap
+-    silent! unmap <2-leftmouse>
+-    if !hasmapto("<Plug>NetrwReturn")
++    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
+      nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
+     endif
+     let dir = escape(a:dirname, s:netrw_map_escape)
+@@ -7594,8 +8275,7 @@
+   else
+    exe 'com! Rexplore call s:NetrwRexplore(0,"'.escape(a:dirname,'"\').'")'
+    if g:netrw_retmap
+-    silent! unmap <2-leftmouse>
+-    if !hasmapto("<Plug>NetrwReturn")
++    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
+      nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
+     endif
+     let dir = escape(a:dirname, s:netrw_map_escape)
+@@ -7608,9 +8288,9 @@
+ " ---------------------------------------------------------------------
+ " s:Strlen: this function returns the length of a string, even if its {{{2
+ "           using two-byte etc characters.
+-"           Currently, its only used if g:Align_xstrlen is set to a
+-"           nonzero value.  Solution from Nicolai Weibull, vim docs
+-"           (:help strlen()), Tony Mechelynck, and my own invention.
++"           Solution from Nicolai Weibull, vim docs (:help strlen()), Tony Mechelynck,
++"           and a bit from me.
++"           if g:netrw_xstrlen is zero (default), then the builtin strlen() function is used.
+ fun! s:Strlen(x)
+ "  call Dfunc("s:Strlen(x<".a:x.">")
+   if g:netrw_xstrlen == 1
+@@ -7630,15 +8310,15 @@
+    " preceded by lam, one otherwise, etc.)
+    " (comment from TM, solution from me)
+    let modkeep= &mod
+-   exe "norm! o\<esc>"
++   exe "keepj norm! o\<esc>"
+    call setline(line("."),a:x)
+    let ret= virtcol("$") - 1
+-   d
++   keepj d
+    let &mod= modkeep
+ 
+   else
+    " at least give a decent default
+-   ret= strlen(a:x)
++   let ret= strlen(a:x)
+   endif
+ "  call Dret("s:Strlen ".ret)
+   return ret
+@@ -7662,17 +8342,17 @@
+   if curline !~ '/$'
+ "   call Decho('regfile')
+    if     a:dir == '[' && prvline != ''
+-    norm! 0
++    keepj norm! 0
+     let nl = search('^'.indentm1.'[^|]','bWe')    " search backwards from regular file
+ "    call Decho("regfile srch back: ".nl)
+    elseif a:dir == ']' && nxtline != ''
+-    norm! $
++    keepj norm! $
+     let nl = search('^'.indentm1.'[^|]','We')     " search forwards from regular file
+ "    call Decho("regfile srch fwd: ".nl)
+    endif
+ 
+   elseif a:dir == '[' && prvline != ''
+-   norm! 0
++   keepj norm! 0
+    let curline= line(".")
+    let nl     = search('^'.curindent.'[^|]','bWe') " search backwards From directory, same indentation
+ "   call Decho("dir srch back ind: ".nl)
+@@ -7684,7 +8364,7 @@
+    endif
+ 
+   elseif a:dir == ']' && nxtline != ''
+-   norm! $
++   keepj norm! $
+    let curline = line(".")
+    let nl      = search('^'.curindent.'[^|]','We') " search forwards from directory, same indentation
+ "   call Decho("dir srch fwd ind: ".nl)
+@@ -7707,7 +8387,7 @@
+ "                      Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway.
+ fun! s:UpdateBuffersMenu()
+ "  call Dfunc("s:UpdateBuffersMenu()")
+-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm'
++  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+    try
+     silent emenu Buffers.Refresh\ menu
+    catch /^Vim\%((\a\+)\)\=:E/
+@@ -7737,12 +8417,14 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:WinPath: {{{2
+-fun! s:WinPath(path)
+-"  call Dfunc("s:WinPath(path<".a:path.">)")
+-  if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
++" netrw#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{2
++fun! netrw#WinPath(path)
++"  call Dfunc("netrw#WinPath(path<".a:path.">)")
++  if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && (has("win32") || has("win95") || has("win64") || has("win16"))
++   " remove cygdrive prefix, if present
++   let path = substitute(a:path,'/cygdrive/\(.\)','\1:','')
+    " remove trailing slash (Win95)
+-   let path = substitute(a:path, '\(\\\|/\)$', '', 'g')
++   let path = substitute(path, '\(\\\|/\)$', '', 'g')
+    " remove escaped spaces
+    let path = substitute(path, '\ ', ' ', 'g')
+    " convert slashes to backslashes
+@@ -7750,7 +8432,7 @@
+   else
+    let path= a:path
+   endif
+-"  call Dret("s:WinPath <".path.">")
++"  call Dret("netrw#WinPath <".path.">")
+   return path
+ endfun
+ 
+diff -Nur runtime/autoload/netrwFileHandlers.vim runtime/autoload/netrwFileHandlers.vim
+--- runtime/autoload/netrwFileHandlers.vim	2006-10-12 12:14:46.000000000 -0700
++++ runtime/autoload/netrwFileHandlers.vim	2011-01-18 10:40:55.396215706 -0800
+@@ -1,9 +1,9 @@
+ " netrwFileHandlers: contains various extension-based file handlers for
+ "                    netrw's browsers' x command ("eXecute launcher")
+ " Author:	Charles E. Campbell, Jr.
+-" Date:		May 30, 2006
+-" Version:	9
+-" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
++" Date:		Sep 30, 2008
++" Version:	10
++" Copyright:    Copyright (C) 1999-2008 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,
+@@ -20,9 +20,15 @@
+ if exists("g:loaded_netrwFileHandlers") || &cp
+  finish
+ endif
++let g:loaded_netrwFileHandlers= "v10"
++if v:version < 702
++ echohl WarningMsg
++ echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
++ echohl Normal
++ finish
++endif
+ let s:keepcpo= &cpo
+ set cpo&vim
+-let g:loaded_netrwFileHandlers= "v9"
+ 
+ " ---------------------------------------------------------------------
+ " netrwFileHandlers#Invoke: {{{1
+@@ -73,10 +79,10 @@
+ 
+   if executable("mozilla")
+ "   call Decho("executing !mozilla ".page)
+-   exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
++   exe "!mozilla ".shellescape(page,1)
+   elseif executable("netscape")
+ "   call Decho("executing !netscape ".page)
+-   exe "!netscape ".g:netrw_shq..page.g:netrw_shq
++   exe "!netscape ".shellescape(page,1)
+   else
+ "   call Dret("s:NFH_html 0")
+    return 0
+@@ -96,10 +102,10 @@
+ 
+   if executable("mozilla")
+ "   call Decho("executing !mozilla ".page)
+-   exe "!mozilla ".g:netrw_shq.page.g:netrw_shq
++   exe "!mozilla ".shellescape(page,1)
+   elseif executable("netscape")
+ "   call Decho("executing !netscape ".page)
+-   exe "!netscape ".g:netrw_shq.page.g:netrw_shq
++   exe "!netscape ".shellescape(page,1)
+   else
+ "   call Dret("s:NFH_htm 0")
+    return 0
+@@ -115,10 +121,10 @@
+ "  call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)")
+ 
+   if executable("gimp")
+-   exe "silent! !gimp -s ".g:netrw_shq.a:jpgfile.g:netrw_shq
++   exe "silent! !gimp -s ".shellescape(a:jpgfile,1)
+   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
+ "   call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
+-   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:jpgfile.g:netrw_shq
++   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1)
+   else
+ "   call Dret("s:NFH_jpg 0")
+    return 0
+@@ -134,9 +140,9 @@
+ "  call Dfunc("s:NFH_gif(giffile<".a:giffile.">)")
+ 
+   if executable("gimp")
+-   exe "silent! !gimp -s ".g:netrw_shq.a:giffile.g:netrw_shq
++   exe "silent! !gimp -s ".shellescape(a:giffile,1)
+   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
+-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:giffile.g:netrw_shq
++   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1)
+   else
+ "   call Dret("s:NFH_gif 0")
+    return 0
+@@ -152,9 +158,9 @@
+ "  call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)")
+ 
+   if executable("gimp")
+-   exe "silent! !gimp -s ".g:netrw_shq.a:pngfile.g:netrw_shq
++   exe "silent! !gimp -s ".shellescape(a:pngfile,1)
+   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
+-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pngfile.g:netrw_shq
++   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1)
+   else
+ "   call Dret("s:NFH_png 0")
+    return 0
+@@ -170,9 +176,9 @@
+ "  call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)")
+ 
+   if executable("gimp")
+-   exe "silent! !gimp -s ".g:netrw_shq.a:pnmfile.g:netrw_shq
++   exe "silent! !gimp -s ".shellescape(a:pnmfile,1)
+   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
+-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pnmfile.g:netrw_shq
++   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1)
+   else
+ "   call Dret("s:NFH_pnm 0")
+    return 0
+@@ -190,7 +196,7 @@
+   if executable("gimp")
+    exe "silent! !gimp -s ".a:bmpfile
+   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
+-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:bmpfile.g:netrw_shq
++   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1)
+   else
+ "   call Dret("s:NFH_bmp 0")
+    return 0
+@@ -205,9 +211,9 @@
+ fun! s:NFH_pdf(pdf)
+ "  call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)")
+   if executable("gs")
+-   exe 'silent! !gs '.g:netrw_shq.a:pdf.g:netrw_shq
++   exe 'silent! !gs '.shellescape(a:pdf,1)
+   elseif executable("pdftotext")
+-   exe 'silent! pdftotext -nopgbrk '.g:netrw_shq.a:pdf.g:netrw_shq
++   exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1)
+   else
+ "  call Dret("s:NFH_pdf 0")
+    return 0
+@@ -223,7 +229,7 @@
+ "  call Dfunc("s:NFH_doc(doc<".a:doc.">)")
+ 
+   if executable("oowriter")
+-   exe 'silent! !oowriter '.g:netrw_shq.a:doc.g:netrw_shq
++   exe 'silent! !oowriter '.shellescape(a:doc,1)
+    redraw!
+   else
+ "  call Dret("s:NFH_doc 0")
+@@ -240,7 +246,7 @@
+ "  call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)")
+ 
+   if executable("oowriter")
+-   exe 'silent! !oowriter '.g:netrw_shq.a:sxw.g:netrw_shq
++   exe 'silent! !oowriter '.shellescape(a:sxw,1)
+    redraw!
+   else
+ "   call Dret("s:NFH_sxw 0")
+@@ -257,7 +263,7 @@
+ "  call Dfunc("s:NFH_xls(xls<".a:xls.">)")
+ 
+   if executable("oocalc")
+-   exe 'silent! !oocalc '.g:netrw_shq.a:xls.g:netrw_shq
++   exe 'silent! !oocalc '.shellescape(a:xls,1)
+    redraw!
+   else
+ "  call Dret("s:NFH_xls 0")
+@@ -274,15 +280,15 @@
+ "  call Dfunc("s:NFH_ps(ps<".a:ps.">)")
+   if executable("gs")
+ "   call Decho("exe silent! !gs ".a:ps)
+-   exe "silent! !gs ".g:netrw_shq.a:ps.g:netrw_shq
++   exe "silent! !gs ".shellescape(a:ps,1)
+    redraw!
+   elseif executable("ghostscript")
+ "   call Decho("exe silent! !ghostscript ".a:ps)
+-   exe "silent! !ghostscript ".g:netrw_shq.a:ps.g:netrw_shq
++   exe "silent! !ghostscript ".shellescape(a:ps,1)
+    redraw!
+   elseif executable("gswin32")
+-"   call Decho("exe silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq)
+-   exe "silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq
++"   call Decho("exe silent! !gswin32 ".shellescape(a:ps,1))
++   exe "silent! !gswin32 ".shellescape(a:ps,1)
+    redraw!
+   else
+ "   call Dret("s:NFH_ps 0")
+@@ -298,16 +304,16 @@
+ fun! s:NFH_eps(eps)
+ "  call Dfunc("s:NFH_eps()")
+   if executable("gs")
+-   exe "silent! !gs ".g:netrw_shq.a:eps.g:netrw_shq
++   exe "silent! !gs ".shellescape(a:eps,1)
+    redraw!
+   elseif executable("ghostscript")
+-   exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
++   exe "silent! !ghostscript ".shellescape(a:eps,1)
+    redraw!
+   elseif executable("ghostscript")
+-   exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq
++   exe "silent! !ghostscript ".shellescape(a:eps,1)
+    redraw!
+   elseif executable("gswin32")
+-   exe "silent! !gswin32 ".g:netrw_shq.a:eps.g:netrw_shq
++   exe "silent! !gswin32 ".shellescape(a:eps,1)
+    redraw!
+   else
+ "   call Dret("s:NFH_eps 0")
+diff -Nur runtime/autoload/netrwSettings.vim runtime/autoload/netrwSettings.vim
+--- runtime/autoload/netrwSettings.vim	2008-07-02 13:39:22.000000000 -0700
++++ runtime/autoload/netrwSettings.vim	2011-01-18 10:40:55.396692577 -0800
+@@ -1,7 +1,7 @@
+ " netrwSettings.vim: makes netrw settings simpler
+-" Date:		Jul 02, 2008
++" Date:		Sep 03, 2008
+ " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+-" Version:	12
++" Version:	13
+ " Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
+ "               Permission is hereby granted to use and distribute this code,
+ "               with or without modifications, provided that this copyright
+@@ -19,7 +19,13 @@
+ if exists("g:loaded_netrwSettings") || &cp
+   finish
+ endif
+-let g:loaded_netrwSettings  = "v12"
++let g:loaded_netrwSettings = "v13"
++if v:version < 700
++ echohl WarningMsg
++ echo "***warning*** this version of netrwSettings needs vim 7.0"
++ echohl Normal
++ finish
++endif
+ 
+ " ---------------------------------------------------------------------
+ " NetrwSettings: {{{1
+@@ -100,6 +106,7 @@
+    put = 'let g:netrw_browsex_viewer    = (not defined)'
+   endif
+   put = 'let g:netrw_compress          = '.g:netrw_compress
++  put = 'let g:netrw_cursorline        = '.g:netrw_cursorline
+   let decompressline= line("$")
+   put ='let g:netrw_decompress...'
+   put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
+@@ -138,6 +145,7 @@
+   put = 'let g:netrw_special_syntax    = '.g:netrw_special_syntax
+   put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
+   put = 'let g:netrw_scpport           = '.g:netrw_scpport
++  put = 'let g:netrw_sepchr            = '.g:netrw_sepchr
+   put = 'let g:netrw_sshport           = '.g:netrw_sshport
+   put = 'let g:netrw_timefmt           = '.g:netrw_timefmt
+   let tmpfileescline= line("$")
+diff -Nur runtime/autoload/pythoncomplete.vim runtime/autoload/pythoncomplete.vim
+--- runtime/autoload/pythoncomplete.vim	2007-02-19 12:58:18.000000000 -0800
++++ runtime/autoload/pythoncomplete.vim	2011-01-18 10:40:55.401569142 -0800
+@@ -1,17 +1,28 @@
+ "pythoncomplete.vim - Omni Completion for python
+ " Maintainer: Aaron Griffin <[email protected]>
+-" Version: 0.7
+-" Last Updated: 19 Oct 2006
++" Version: 0.9
++" Last Updated: 18 Jun 2009
+ "
+ " Changes
+ " TODO:
+-" User defined docstrings aren't handled right...
+ " 'info' item output can use some formatting work
+ " Add an "unsafe eval" mode, to allow for return type evaluation
+ " Complete basic syntax along with import statements
+ "   i.e. "import url<c-x,c-o>"
+ " Continue parsing on invalid line??
+ "
++" v 0.9
++"   * Fixed docstring parsing for classes and functions
++"   * Fixed parsing of *args and **kwargs type arguments
++"   * Better function param parsing to handle things like tuples and
++"     lambda defaults args
++"
++" v 0.8
++"   * Fixed an issue where the FIRST assignment was always used instead of
++"   using a subsequent assignment for a variable
++"   * Fixed a scoping issue when working inside a parameterless function
++"
++"
+ " v 0.7
+ "   * Fixed function list sorting (_ and __ at the bottom)
+ "   * Removed newline removal from docs.  It appears vim handles these better in
+@@ -63,7 +74,7 @@
+         while idx > 0
+             let idx -= 1
+             let c = line[idx]
+-            if c =~ '\w' || c =~ '\.' || c == '('
++            if c =~ '\w' || c =~ '\.'
+                 let cword = c . cword
+                 continue
+             elseif strlen(cword) > 0 || idx == 0
+@@ -206,7 +217,7 @@
+             if len(stmt) > 0 and stmt[-1] == '(':
+                 result = eval(_sanitize(stmt[:-1]), self.compldict)
+                 doc = result.__doc__
+-                if doc == None: doc = ''
++                if doc is None: doc = ''
+                 args = self.get_arguments(result)
+                 return [{'word':self._cleanstr(args),'info':self._cleanstr(doc)}]
+             elif ridx == -1:
+@@ -223,18 +234,18 @@
+ 
+             try: maindoc = result.__doc__
+             except: maindoc = ' '
+-            if maindoc == None: maindoc = ' '
++            if maindoc is None: maindoc = ' '
+             for m in all:
+                 if m == "_PyCmplNoType": continue #this is internal
+                 try:
+                     dbg('possible completion: %s' % m)
+                     if m.find(match) == 0:
+-                        if result == None: inst = all[m]
++                        if result is None: inst = all[m]
+                         else: inst = getattr(result,m)
+                         try: doc = inst.__doc__
+                         except: doc = maindoc
+                         typestr = str(inst)
+-                        if doc == None or doc == '': doc = maindoc
++                        if doc is None or doc == '': doc = maindoc
+ 
+                         wrd = m[len(match):]
+                         c = {'word':wrd, 'abbr':m,  'info':self._cleanstr(doc)}
+@@ -260,9 +271,9 @@
+             return []
+ 
+ class Scope(object):
+-    def __init__(self,name,indent):
++    def __init__(self,name,indent,docstr=''):
+         self.subscopes = []
+-        self.docstr = ''
++        self.docstr = docstr
+         self.locals = []
+         self.parent = None
+         self.name = name
+@@ -281,29 +292,28 @@
+         while d.find('  ') > -1: d = d.replace('  ',' ')
+         while d[0] in '"\'\t ': d = d[1:]
+         while d[-1] in '"\'\t ': d = d[:-1]
++        dbg("Scope(%s)::docstr = %s" % (self,d))
+         self.docstr = d
+ 
+     def local(self,loc):
+-        if not self._hasvaralready(loc):
+-            self.locals.append(loc)
++        self._checkexisting(loc)
++        self.locals.append(loc)
+ 
+     def copy_decl(self,indent=0):
+         """ Copy a scope's declaration only, at the specified indent level - not local variables """
+-        return Scope(self.name,indent)
++        return Scope(self.name,indent,self.docstr)
+ 
+-    def _hasvaralready(self,test):
++    def _checkexisting(self,test):
+         "Convienance function... keep out duplicates"
+         if test.find('=') > -1:
+             var = test.split('=')[0].strip()
+             for l in self.locals:
+                 if l.find('=') > -1 and var == l.split('=')[0].strip():
+-                    return True
+-        return False
++                    self.locals.remove(l)
+ 
+     def get_code(self):
+-        # we need to start with this, to fix up broken completions
+-        # hopefully this name is unique enough...
+-        str = '"""'+self.docstr+'"""\n'
++        str = ""
++        if len(self.docstr) > 0: str += '"""'+self.docstr+'"""\n'
+         for l in self.locals:
+             if l.startswith('import'): str += l+'\n'
+         str += 'class _PyCmplNoType:\n    def __getattr__(self,name):\n        return None\n'
+@@ -330,11 +340,11 @@
+         return '    '*(self.indent+1)
+ 
+ class Class(Scope):
+-    def __init__(self, name, supers, indent):
+-        Scope.__init__(self,name,indent)
++    def __init__(self, name, supers, indent, docstr=''):
++        Scope.__init__(self,name,indent, docstr)
+         self.supers = supers
+     def copy_decl(self,indent=0):
+-        c = Class(self.name,self.supers,indent)
++        c = Class(self.name,self.supers,indent, self.docstr)
+         for s in self.subscopes:
+             c.add(s.copy_decl(indent+1))
+         return c
+@@ -351,11 +361,11 @@
+ 
+ 
+ class Function(Scope):
+-    def __init__(self, name, params, indent):
+-        Scope.__init__(self,name,indent)
++    def __init__(self, name, params, indent, docstr=''):
++        Scope.__init__(self,name,indent, docstr)
+         self.params = params
+     def copy_decl(self,indent=0):
+-        return Function(self.name,self.params,indent)
++        return Function(self.name,self.params,indent, self.docstr)
+     def get_code(self):
+         str = "%sdef %s(%s):\n" % \
+             (self.currentindent(),self.name,','.join(self.params))
+@@ -371,7 +381,7 @@
+     def _parsedotname(self,pre=None):
+         #returns (dottedname, nexttoken)
+         name = []
+-        if pre == None:
++        if pre is None:
+             tokentype, token, indent = self.next()
+             if tokentype != NAME and token != '*':
+                 return ('', token)
+@@ -405,17 +415,20 @@
+         while True:
+             tokentype, token, indent = self.next()
+             if token in (')', ',') and level == 1:
+-                names.append(name)
++                if '=' not in name: name = name.replace(' ', '')
++                names.append(name.strip())
+                 name = ''
+             if token == '(':
+                 level += 1
++                name += "("
+             elif token == ')':
+                 level -= 1
+                 if level == 0: break
++                else: name += ")"
+             elif token == ',' and level == 1:
+                 pass
+             else:
+-                name += str(token)
++                name += "%s " % str(token)
+         return names
+ 
+     def _parsefunction(self,indent):
+@@ -495,16 +508,26 @@
+                 #Handle 'self' params
+                 if scp.parent != None and type(scp.parent) == Class:
+                     slice = 1
+-                    p = scp.params[0]
+-                    i = p.find('=')
+-                    if i != -1: p = p[:i]
+                     newscope.local('%s = %s' % (scp.params[0],scp.parent.name))
+                 for p in scp.params[slice:]:
+                     i = p.find('=')
++                    if len(p) == 0: continue
++                    pvar = ''
++                    ptype = ''
+                     if i == -1:
+-                        newscope.local('%s = _PyCmplNoType()' % p)
++                        pvar = p
++                        ptype = '_PyCmplNoType()'
+                     else:
+-                        newscope.local('%s = %s' % (p[:i],_sanitize(p[i+1])))
++                        pvar = p[:i]
++                        ptype = _sanitize(p[i+1:])
++                    if pvar.startswith('**'):
++                        pvar = pvar[2:]
++                        ptype = '{}'
++                    elif pvar.startswith('*'):
++                        pvar = pvar[1:]
++                        ptype = '[]'
++
++                    newscope.local('%s = %s' % (pvar,ptype))
+ 
+             for s in scp.subscopes:
+                 ns = s.copy_decl(0)
+@@ -532,17 +555,19 @@
+                     self.scope = self.scope.pop(indent)
+                 elif token == 'def':
+                     func = self._parsefunction(indent)
+-                    if func == None:
++                    if func is None:
+                         print "function: syntax error..."
+                         continue
++                    dbg("new scope: function")
+                     freshscope = True
+                     self.scope = self.scope.add(func)
+                 elif token == 'class':
+                     cls = self._parseclass(indent)
+-                    if cls == None:
++                    if cls is None:
+                         print "class: syntax error..."
+                         continue
+                     freshscope = True
++                    dbg("new scope: class")
+                     self.scope = self.scope.add(cls)
+                     
+                 elif token == 'import':
+@@ -569,6 +594,7 @@
+                     name,token = self._parsedotname(token) 
+                     if token == '=':
+                         stmt = self._parseassignment()
++                        dbg("parseassignment: %s = %s" % (name, stmt))
+                         if stmt != None:
+                             self.scope.local("%s = %s" % (name,stmt))
+                     freshscope = False
+diff -Nur runtime/autoload/rubycomplete.vim runtime/autoload/rubycomplete.vim
+--- runtime/autoload/rubycomplete.vim	2008-06-30 05:29:51.000000000 -0700
++++ runtime/autoload/rubycomplete.vim	2011-01-18 10:40:55.403120418 -0800
+@@ -1,11 +1,11 @@
+ " Vim completion script
+ " Language:             Ruby
+ " Maintainer:           Mark Guzman <[email protected]>
+-" Info:                 $Id: rubycomplete.vim,v 1.41 2008/06/30 06:50:45 segy Exp $
++" Last Change:          2009 Sep 28
+ " URL:                  http://vim-ruby.rubyforge.org
+ " Anon CVS:             See above site
+ " Release Coordinator:  Doug Kearns <[email protected]>
+-" Maintainer Version:   0.8
++" Maintainer Version:   0.8.1
+ " ----------------------------------------------------------------------------
+ "
+ " Ruby IRB/Complete author: Keiju ISHITSUKA([email protected])
+@@ -325,7 +325,7 @@
+           ln = buf[x]
+           if /^\s*(module|class|def|include)\s+/.match(ln)
+             clscnt += 1 if $1 == "class"
+-            #dprint "\$1: %s" % $1
++            #dprint "\$1$1
+             classdef += "%s\n" % ln
+             classdef += "end\n" if /def\s+/.match(ln)
+             dprint ln
+@@ -632,7 +632,7 @@
+         methods = Object.constants
+         methods.grep(/^#{receiver}/).collect{|e| "::" + e}
+ 
+-      when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ # Constant or class methods
++      when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods
+         receiver = $1
+         message = Regexp.quote($4)
+         dprint "const or cls 2 [recv: \'%s\', msg: \'%s\']" % [ receiver, message ]
+@@ -666,7 +666,7 @@
+         dprint "global"
+         methods = global_variables.grep(Regexp.new(Regexp.quote($1)))
+ 
+-      when /^((\.?[^.]+)+)\.([^.]*)$/ # variable
++      when /^((\.?[^.]+)+?)\.([^.]*)$/ # variable
+         dprint "variable"
+         receiver = $1
+         message = Regexp.quote($3)
+diff -Nur runtime/autoload/spellfile.vim runtime/autoload/spellfile.vim
+--- runtime/autoload/spellfile.vim	2008-06-27 11:14:05.000000000 -0700
++++ runtime/autoload/spellfile.vim	2011-01-18 10:40:55.403576719 -0800
+@@ -1,6 +1,6 @@
+ " Vim script to download a missing spell file
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2008 Jun 27
++" Last Change:	2008 Nov 29
+ 
+ if !exists('g:spellfile_URL')
+   " Prefer using http:// when netrw should be able to use it, since
+@@ -39,19 +39,22 @@
+   let s:donedict[a:lang . &enc] = 1
+ 
+   " Find spell directories we can write in.
+-  let dirlist = []
+-  let dirchoices = '&Cancel'
+-  for dir in split(globpath(&rtp, 'spell'), "\n")
+-    if filewritable(dir) == 2
+-      call add(dirlist, dir)
+-      let dirchoices .= "\n&" . len(dirlist)
+-    endif
+-  endfor
++  let [dirlist, dirchoices] = spellfile#GetDirChoices()
+   if len(dirlist) == 0
+-    if &verbose
++    let dir_to_create = spellfile#WritableSpellDir()
++    if &verbose || dir_to_create != ''
+       echomsg 'spellfile#LoadFile(): There is no writable spell directory.'
+     endif
+-    return
++    if dir_to_create != ''
++      if confirm("Shall I create " . dir_to_create, "&Yes\n&No", 2) == 1
++	" After creating the directory it should show up in the list.
++	call mkdir(dir_to_create, "p")
++	let [dirlist, dirchoices] = spellfile#GetDirChoices()
++      endif
++    endif
++    if len(dirlist) == 0
++      return
++    endif
+   endif
+ 
+   let msg = 'Cannot find spell file for "' . a:lang . '" in ' . &enc
+@@ -177,3 +180,29 @@
+     unlet g:netrw_use_errorwindow
+   endif
+ endfunc
++
++" Get a list of writable spell directories and choices for confirm().
++function! spellfile#GetDirChoices()
++  let dirlist = []
++  let dirchoices = '&Cancel'
++  for dir in split(globpath(&rtp, 'spell'), "\n")
++    if filewritable(dir) == 2
++      call add(dirlist, dir)
++      let dirchoices .= "\n&" . len(dirlist)
++    endif
++  endfor
++  return [dirlist, dirchoices]
++endfunc
++
++function! spellfile#WritableSpellDir()
++  if has("unix")
++    " For Unix always use the $HOME/.vim directory
++    return $HOME . "/.vim/spell"
++  endif
++  for dir in split(&rtp, ',')
++    if filewritable(dir) == 2
++      return dir . "/spell"
++    endif
++  endfor
++  return ''
++endfunction
+diff -Nur runtime/autoload/sqlcomplete.vim runtime/autoload/sqlcomplete.vim
+--- runtime/autoload/sqlcomplete.vim	2008-04-03 13:37:56.000000000 -0700
++++ runtime/autoload/sqlcomplete.vim	2011-04-03 09:27:21.014578452 -0700
+@@ -1,13 +1,28 @@
+ " Vim OMNI completion script for SQL
+ " Language:    SQL
+-" Maintainer:  David Fishburn <[email protected]>
+-" Version:     6.0
+-" Last Change: Thu 03 Apr 2008 10:37:54 PM Eastern Daylight Time
++" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
++" Version:     9.0
++" Last Change: 2010 Apr 20
+ " Usage:       For detailed help
+ "              ":help sql.txt" 
+ "              or ":help ft-sql-omni" 
+ "              or read $VIMRUNTIME/doc/sql.txt
+ 
++" History
++" Version 9.0
++"     This change removes some of the support for tables with spaces in their
++"     names in order to simplify the regexes used to pull out query table 
++"     aliases for more robust table name and column name code completion.
++"     Full support for "table names with spaces" can be added in again
++"     after 7.3.
++" Version 8.0
++"     Incorrectly re-executed the g:ftplugin_sql_omni_key_right and g:ftplugin_sql_omni_key_left 
++"     when drilling in and out of a column list for a table.
++" Version 7.0
++"     Better handling of object names
++" Version 6.0
++"     Supports object names with spaces "my table name"
++"
+ " Set completion with CTRL-X CTRL-O to autoloaded function.
+ " This check is in place in case this script is
+ " sourced directly instead of using the autoload feature. 
+@@ -22,7 +37,7 @@
+ if exists('g:loaded_sql_completion')
+     finish 
+ endif
+-let g:loaded_sql_completion = 50
++let g:loaded_sql_completion = 70
+ 
+ " Maintains filename of dictionary
+ let s:sql_file_table        = ""
+@@ -106,10 +121,23 @@
+             let begindot = 1
+         endif
+         while start > 0
+-            if line[start - 1] =~ '\(\w\|\s\+\)'
++            " Additional code was required to handle objects which 
++            " can contain spaces like "my table name".
++            if line[start - 1] !~ '\(\w\|\.\)'
++                " If the previous character is not a period or word character
++                break
++            " elseif line[start - 1] =~ '\(\w\|\s\+\)'
++            "     let start -= 1
++            elseif line[start - 1] =~ '\w'
++                " If the previous character is word character continue back
+                 let start -= 1
+             elseif line[start - 1] =~ '\.' && 
+                         \ compl_type =~ 'column\|table\|view\|procedure'
++                " If the previous character is a period and we are completing
++                " an object which can be specified with a period like this:
++                "     table_name.column_name
++                "     owner_name.table_name
++
+                 " If lastword has already been set for column completion
+                 " break from the loop, since we do not also want to pickup
+                 " a table name if it was also supplied.
+@@ -184,9 +212,10 @@
+         endif
+ 
+         let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '')
+-        if s:sql_file_{compl_type} == ""
+-            let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
+-        endif
++        " Same call below, no need to do it twice
++        " if s:sql_file_{compl_type} == ""
++        "     let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
++        " endif
+         let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc)
+         if s:sql_file_{compl_type} != ""
+             if filereadable(s:sql_file_{compl_type})
+@@ -230,7 +259,7 @@
+             "    1.  Check if the dbext plugin has the option turned
+             "        on to even allow owners
+             "    2.  Based on 1, if the user is showing a table list
+-            "        and the DrillIntoTable (using <C-Right>) then 
++            "        and the DrillIntoTable (using <Right>) then 
+             "        this will be owner.table.  In this case, we can
+             "        check to see the table.column exists in the 
+             "        cached table list.  If it does, then we have
+@@ -312,9 +341,16 @@
+     endif
+ 
+     if base != ''
+-        " Filter the list based on the first few characters the user
+-        " entered
+-        let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
++        " Filter the list based on the first few characters the user entered.
++        " Check if the text matches at the beginning 
++        " or 
++        " Match to a owner.table or alias.column type match
++        " or
++        " Handle names with spaces "my table name"
++        let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"'
++        " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\)"'
++        " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\(\\.\\)\\?'.base.'\\)"'
++        " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
+         let compl_list = filter(deepcopy(compl_list), expr)
+     endif
+ 
+@@ -363,13 +399,14 @@
+         call sqlcomplete#Map('column')
+         " C-Y, makes the currently highlighted entry active
+         " and trigger the omni popup to be redisplayed
+-        call feedkeys("\<C-Y>\<C-X>\<C-O>")
++        call feedkeys("\<C-Y>\<C-X>\<C-O>", 'n')
+     else
+-        if has('win32')
+-            " If the popup is not visible, simple perform the normal
+-            " <C-Right> behaviour
+-            exec "normal! \<C-Right>"
+-        endif
++	" If the popup is not visible, simple perform the normal
++	" key behaviour.
++	" Must use exec since they key must be preceeded by "\"
++	" or feedkeys will simply push each character of the string 
++	" rather than the "key press".
++        exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_right.'", "n")'
+     endif
+     return ""
+ endfunction
+@@ -381,11 +418,12 @@
+         " Trigger the omni popup to be redisplayed
+         call feedkeys("\<C-X>\<C-O>")
+     else
+-        if has('win32')
+-            " If the popup is not visible, simple perform the normal
+-            " <C-Left> behaviour
+-            exec "normal! \<C-Left>"
+-        endif
++	" If the popup is not visible, simple perform the normal
++	" key behaviour.
++	" Must use exec since they key must be preceeded by "\"
++	" or feedkeys will simply push each character of the string 
++	" rather than the "key press".
++        exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_left.'", "n")'
+     endif
+     return ""
+ endfunction
+@@ -582,7 +620,7 @@
+          " Search backwards to the beginning of the statement
+          " and do NOT wrap
+          " exec 'silent! normal! v?\<\(select\|update\|delete\|;\)\>'."\n".'"yy'
+-         exec 'silent! normal! ?\<\(select\|update\|delete\|;\)\>'."\n"
++         exec 'silent! normal! ?\<\c\(select\|update\|delete\|;\)\>'."\n"
+ 
+          " Start characterwise visual mode
+          " Advance right one character
+@@ -591,27 +629,38 @@
+          "     2.  A ; at the end of a line (the delimiter)
+          "     3.  The end of the file (incase no delimiter)
+          " Yank the visually selected text into the "y register.
+-         exec 'silent! normal! vl/\(\<select\>\|\<update\>\|\<delete\>\|;\s*$\|\%$\)'."\n".'"yy'
++         exec 'silent! normal! vl/\c\(\<select\>\|\<update\>\|\<delete\>\|;\s*$\|\%$\)'."\n".'"yy'
+ 
+          let query = @y
+          let query = substitute(query, "\n", ' ', 'g')
+          let found = 0
+ 
+-         " if query =~? '^\(select\|update\|delete\)'
+-         if query =~? '^\(select\)'
++         " if query =~? '^\c\(select\)'
++         if query =~? '^\(select\|update\|delete\)'
+              let found = 1
+              "  \(\(\<\w\+\>\)\.\)\?   - 
+-             " 'from.\{-}'  - Starting at the from clause
++             " '\c\(from\|join\|,\).\{-}'  - Starting at the from clause (case insensitive)
+              " '\zs\(\(\<\w\+\>\)\.\)\?' - Get the owner name (optional)
+              " '\<\w\+\>\ze' - Get the table name 
+              " '\s\+\<'.table_name.'\>' - Followed by the alias
+              " '\s*\.\@!.*'  - Cannot be followed by a .
+              " '\(\<where\>\|$\)' - Must be followed by a WHERE clause
+              " '.*'  - Exclude the rest of the line in the match
++             " let table_name_new = matchstr(@y, 
++             "             \ '\c\(from\|join\|,\).\{-}'.
++             "             \ '\zs\(\("\|\[\)\?.\{-}\("\|\]\)\.\)\?'.
++             "             \ '\("\|\[\)\?.\{-}\("\|\]\)\?\ze'.
++             "             \ '\s\+\%(as\s\+\)\?\<'.
++             "             \ matchstr(table_name, '.\{-}\ze\.\?$').
++             "             \ '\>'.
++             "             \ '\s*\.\@!.*'.
++             "             \ '\(\<where\>\|$\)'.
++             "             \ '.*'
++             "             \ )
+              let table_name_new = matchstr(@y, 
+-                         \ 'from.\{-}'.
+-                         \ '\zs\(\("\|\[\)\?.\{-}\("\|\]\)\.\)\?'.
+-                         \ '\("\|\[\)\?.\{-}\("\|\]\)\ze'.
++                         \ '\c\(\<from\>\|\<join\>\|,\)\s*'.
++                         \ '\zs\(\("\|\[\)\?\w\+\("\|\]\)\?\.\)\?'.
++                         \ '\("\|\[\)\?\w\+\("\|\]\)\?\ze'.
+                          \ '\s\+\%(as\s\+\)\?\<'.
+                          \ matchstr(table_name, '.\{-}\ze\.\?$').
+                          \ '\>'.
+@@ -622,7 +671,7 @@
+ 
+              if table_name_new != ''
+                  let table_alias = table_name
+-                 let table_name  = table_name_new
++                 let table_name  = matchstr( table_name_new, '^\(.*\.\)\?\zs.*\ze' )
+ 
+                  let list_idx = index(s:tbl_name, table_name, 0, &ignorecase)
+                  if list_idx > -1
+@@ -690,4 +739,3 @@
+ 
+     return table_cols
+ endfunction
+-
+diff -Nur runtime/autoload/syntaxcomplete.vim runtime/autoload/syntaxcomplete.vim
+--- runtime/autoload/syntaxcomplete.vim	2008-06-21 13:33:46.000000000 -0700
++++ runtime/autoload/syntaxcomplete.vim	2011-04-03 09:27:21.020860712 -0700
+@@ -1,10 +1,15 @@
+ " Vim completion script
+ " Language:    All languages, uses existing syntax highlighting rules
+-" Maintainer:  David Fishburn <[email protected]>
+-" Version:     4.0
+-" Last Change: Fri 26 Oct 2007 05:27:03 PM Eastern Daylight Time
++" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
++" Version:     5.0
++" Last Change: 2010 Jan 31
+ " Usage:       For detailed help, ":help ft-syntax-omni" 
+ 
++" History
++" Version 5.0
++"     When processing a list of syntax groups, the final group
++"     was missed in function SyntaxCSyntaxGroupItems.
++"
+ " Set completion with CTRL-X CTRL-O to autoloaded function.
+ " This check is in place in case this script is
+ " sourced directly instead of using the autoload feature. 
+@@ -312,9 +317,13 @@
+     "     \zs          - start the match
+     "     .\{-}        - everything ...
+     "     \ze          - end the match
++    "     \(           - start a group or 2 potential matches
+     "     \n\w         - at the first newline starting with a character
++    "     \|           - 2nd potential match
++    "     \%$          - matches end of the file or string
++    "     \)           - end a group
+     let syntax_group = matchstr(a:syntax_full, 
+-                \ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze'."\n".'\w'
++                \ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze\(\n\w\|\%$\)'
+                 \ )
+ 
+     if syntax_group != ""
+diff -Nur runtime/autoload/tar.vim runtime/autoload/tar.vim
+--- runtime/autoload/tar.vim	2008-08-09 07:14:58.000000000 -0700
++++ runtime/autoload/tar.vim	2011-04-03 09:27:21.030852371 -0700
+@@ -1,13 +1,13 @@
+ " tar.vim: Handles browsing tarfiles
+ "            AUTOLOAD PORTION
+-" Date:			Aug 08, 2008
+-" Version:		23 + modifications by Bram
++" Date:			Dec 28, 2009
++" Version:		24
+ " Maintainer:	Charles E Campbell, Jr <[email protected]>
+ " License:		Vim License  (see vim's :help license)
+ "
+ "	Contains many ideas from Michael Toren's <tar.vim>
+ "
+-" Copyright:    Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1
++" Copyright:    Copyright (C) 2005-2009 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,
+@@ -16,19 +16,22 @@
+ "               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.
+-
++"     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ " ---------------------------------------------------------------------
+ " Load Once: {{{1
+-let s:keepcpo= &cpo
+-set cpo&vim
+-if &cp || exists("g:loaded_tar") || v:version < 700
++if &cp || exists("g:loaded_tar")
+  finish
+ endif
+-let g:loaded_tar= "v23b"
+-"call Decho("loading autoload/tar.vim")
+-if v:version < 701 || (v:version == 701 && !has("patch299"))
+- echoerr "(autoload/tar.vim) need vim v7.1 with patchlevel 299"
++let g:loaded_tar= "v24"
++if v:version < 702
++ echohl WarningMsg
++ echo "***warning*** this version of tar needs vim 7.2"
++ echohl Normal
++ finish
+ endif
++let s:keepcpo= &cpo
++set cpo&vim
++"call Decho("loading autoload/tar.vim")
+ 
+ " ---------------------------------------------------------------------
+ "  Default Settings: {{{1
+@@ -44,7 +47,22 @@
+ if !exists("g:tar_writeoptions")
+  let g:tar_writeoptions= "uf"
+ endif
+-
++if !exists("g:tar_copycmd")
++ if !exists("g:netrw_localcopycmd")
++  if has("win32") || has("win95") || has("win64") || has("win16")
++   if g:netrw_cygwin
++    let g:netrw_localcopycmd= "cp"
++   else
++    let g:netrw_localcopycmd= "copy"
++   endif
++  elseif has("unix") || has("macunix")
++   let g:netrw_localcopycmd= "cp"
++  else
++   let g:netrw_localcopycmd= ""
++  endif
++ endif
++ let g:tar_copycmd= g:netrw_localcopycmd
++endif
+ if !exists("g:netrw_cygwin")
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
+@@ -56,6 +74,9 @@
+   let g:netrw_cygwin= 0
+  endif
+ endif
++if !exists("g:tar_extractcmd")
++ let g:tar_extractcmd= "tar -xf"
++endif
+ 
+ " set up shell quoting character
+ if !exists("g:tar_shq")
+@@ -88,7 +109,6 @@
+   if !executable(g:tar_cmd)
+    redraw!
+    echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
+-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    let &report= repkeep
+ "   call Dret("tar#Browse")
+    return
+@@ -99,7 +119,6 @@
+     " if its an url, don't complain, let url-handlers such as vim do its thing
+     redraw!
+     echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
+-"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    endif
+    let &report= repkeep
+ "   call Dret("tar#Browse : file<".a:tarfile."> not readable")
+@@ -130,37 +149,38 @@
+   let tarfile= a:tarfile
+   if has("win32") && executable("cygpath")
+    " assuming cygwin
+-   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
++   let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
+   endif
+   let curlast= line("$")
+   if tarfile =~# '\.\(gz\|tgz\)$'
+-"   call Decho("1: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
+-   exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
++"   call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
++   exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+   elseif tarfile =~# '\.lrp'
+-"   call Decho("2: exe silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
+-   exe "silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
++"   call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
++   exe "silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
+   elseif tarfile =~# '\.bz2$'
+-"   call Decho("3: exe silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
+-   exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
++"   call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
++   exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
++  elseif tarfile =~# '\.lzma$'
++"   call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
++   exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
+   else
+    if tarfile =~ '^\s*-'
+-    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
++    " A file name starting with a dash is taken as an option.  Prepend ./ to avoid that.
+     let tarfile = substitute(tarfile, '-', './-', '')
+    endif
+-"   call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1))
+-   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1)
++"   call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0))
++   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1)
+   endif
+   if v:shell_error != 0
+    redraw!
+    echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
+-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+ "   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
+    return
+   endif
+   if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
+    redraw!
+    echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
+-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    silent %d
+    let eikeep= &ei
+    set ei=BufReadCmd,FileReadCmd
+@@ -189,7 +209,7 @@
+ 
+   if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
+    redraw!
+-   echohl WarningMsg | echo '***error*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"; See :help tar-options'
++   echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"'
+ "   call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
+    return
+   endif
+@@ -206,7 +226,7 @@
+   let curfile= expand("%")
+   if has("win32") && executable("cygpath")
+    " assuming cygwin
+-   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
++   let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
+   endif
+ 
+   new
+@@ -231,21 +251,24 @@
+   let fname   = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','')
+   if has("win32") && executable("cygpath")
+    " assuming cygwin
+-   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
++   let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e')
+   endif
+ "  call Decho("tarfile<".tarfile.">")
+ "  call Decho("fname<".fname.">")
+ 
+-  if      fname =~ '\.gz$'  && executable("zcat")
++  if  fname =~ '\.bz2$' && executable("bzcat")
++   let decmp= "|bzcat"
++   let doro = 1
++  elseif      fname =~ '\.gz$'  && executable("zcat")
+    let decmp= "|zcat"
+    let doro = 1
+-  elseif  fname =~ '\.bz2$' && executable("bzcat")
+-   let decmp= "|bzcat"
++  elseif  fname =~ '\.lzma$' && executable("lzcat")
++   let decmp= "|lzcat"
+    let doro = 1
+   else
+    let decmp=""
+    let doro = 0
+-   if fname =~ '\.gz$\|\.bz2$\|\.Z$\|\.zip$'
++   if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.zip$\|\.Z$'
+     setlocal bin
+    endif
+   endif
+@@ -255,22 +278,25 @@
+   else
+    let tar_secure= " "
+   endif
+-  if tarfile =~# '\.\(gz\|tgz\)$'
+-"   call Decho("5: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.s:Escape(fname,1))
+-   exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
++  if tarfile =~# '\.bz2$'
++"   call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
++   exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
++  elseif tarfile =~# '\.\(gz\|tgz\)$'
++"   call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1))
++   exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+   elseif tarfile =~# '\.lrp$'
+-"   call Decho("6: exe silent r! cat ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp)
+-   exe "silent r! cat -- ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
+-  elseif tarfile =~# '\.bz2$'
+-"   call Decho("7: exe silent r! bzip2 -d -c ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp)
+-   exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
++"   call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
++   exe "silent r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
++  elseif tarfile =~# '\.lzma$'
++"   call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp)
++   exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp
+   else
+    if tarfile =~ '^\s*-'
+-    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
++    " A file name starting with a dash is taken as an option.  Prepend ./ to avoid that.
+     let tarfile = substitute(tarfile, '-', './-', '')
+    endif
+-"   call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions." "s:Escape(tarfile,1).tar_secure..s:Escape(fname,1).decmp)
+-   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".s:Escape(tarfile,1).tar_secure.s:Escape(fname,1).decmp
++"   call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp)
++   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp
+   endif
+ 
+   if doro
+@@ -298,7 +324,7 @@
+ 
+   if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-'
+    redraw!
+-   echohl WarningMsg | echo '***error*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"; See :help tar-options'
++   echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"'
+ "   call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"')
+    return
+   endif
+@@ -307,7 +333,6 @@
+   if !executable(g:tar_cmd)
+    redraw!
+    echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
+-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    let &report= repkeep
+ "   call Dret("tar#Write")
+    return
+@@ -315,7 +340,6 @@
+   if !exists("*mkdir")
+    redraw!
+    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()
+    let &report= repkeep
+ "   call Dret("tar#Write")
+    return
+@@ -336,7 +360,6 @@
+   catch /^Vim\%((\a\+)\)\=:E344/
+    redraw!
+    echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
+-"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    let &report= repkeep
+ "   call Dret("tar#Write")
+    return
+@@ -355,29 +378,33 @@
+   let fname   = substitute(w:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')
+ 
+   " handle compressed archives
+-  if tarfile =~# '\.gz'
+-   call system("gzip -d -- ".s:Escape(tarfile,0))
++  if tarfile =~# '\.bz2'
++   call system("bzip2 -d -- ".shellescape(tarfile,0))
++   let tarfile = substitute(tarfile,'\.bz2','','e')
++   let compress= "bzip2 -- ".shellescape(tarfile,0)
++"   call Decho("compress<".compress.">")
++  elseif tarfile =~# '\.gz'
++   call system("gzip -d -- ".shellescape(tarfile,0))
+    let tarfile = substitute(tarfile,'\.gz','','e')
+-   let compress= "gzip -- ".s:Escape(tarfile,0)
++   let compress= "gzip -- ".shellescape(tarfile,0)
++"   call Decho("compress<".compress.">")
++  elseif tarfile =~# '\.lzma'
++   call system("lzma -d -- ".shellescape(tarfile,0))
++   let tarfile = substitute(tarfile,'\.lzma','','e')
++   let compress= "lzma -- ".shellescape(tarfile,0)
+ "   call Decho("compress<".compress.">")
+   elseif tarfile =~# '\.tgz'
+-   call system("gzip -d -- ".s:Escape(tarfile,0))
++   call system("gzip -d -- ".shellescape(tarfile,0))
+    let tarfile = substitute(tarfile,'\.tgz','.tar','e')
+-   let compress= "gzip -- ".s:Escape(tarfile,0)
++   let compress= "gzip -- ".shellescape(tarfile,0)
+    let tgz     = 1
+ "   call Decho("compress<".compress.">")
+-  elseif tarfile =~# '\.bz2'
+-   call system("bzip2 -d -- ".s:Escape(tarfile,0))
+-   let tarfile = substitute(tarfile,'\.bz2','','e')
+-   let compress= "bzip2 -- ".s:Escape(tarfile,0)
+-"   call Decho("compress<".compress.">")
+   endif
+ "  call Decho("tarfile<".tarfile.">")
+ 
+   if v:shell_error != 0
+    redraw!
+    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("tarfile<".tarfile."> fname<".fname.">")
+@@ -385,7 +412,7 @@
+    if fname =~ '/'
+     let dirpath = substitute(fname,'/[^/]\+$','','e')
+     if executable("cygpath")
+-     let dirpath = substitute(system("cygpath ".s:Escape(dirpath, 0)),'\n','','e')
++     let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e')
+     endif
+     call mkdir(dirpath,"p")
+    endif
+@@ -405,25 +432,23 @@
+    endif
+    exe "w! ".fnameescape(fname)
+    if executable("cygpath")
+-    let tarfile = substitute(system("cygpath ".s:Escape(tarfile,0)),'\n','','e')
++    let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e')
+    endif
+  
+    " delete old file from tarfile
+-"   call Decho("system(".g:tar_cmd." --delete -f ".s:Escape(tarfile,0)." -- ".s:Escape(fname,0).")")
+-   call system(g:tar_cmd." --delete -f ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
++"   call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")")
++   call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
+    if v:shell_error != 0
+     redraw!
+     echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
+-"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    else
+  
+     " update tarfile with new file 
+-"    call Decho(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
+-    call system(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
++"    call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
++    call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0))
+     if v:shell_error != 0
+      redraw!
+      echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
+-"     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+     elseif exists("compress")
+ "     call Decho("call system(".compress.")")
+      call system(compress)
+@@ -439,13 +464,13 @@
+ "    call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
+     let tblfile= s:tblfile_{winnr()}
+     1split|enew
+-    let binkeep= &binary
++    let binkeep= &l:binary
+     let eikeep = &ei
+     set binary ei=all
+     exe "e! ".fnameescape(tarfile)
+     call netrw#NetWrite(tblfile)
+-    let &ei     = eikeep
+-    let &binary = binkeep
++    let &ei       = eikeep
++    let &l:binary = binkeep
+     q!
+     unlet s:tblfile_{winnr()}
+    endif
+@@ -462,38 +487,98 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" Rmdir: {{{2
++" s:Rmdir: {{{2
+ fun! s:Rmdir(fname)
+ "  call Dfunc("Rmdir(fname<".a:fname.">)")
+   if has("unix")
+-   call system("/bin/rm -rf -- ".s:Escape(a:fname,0))
++   call system("/bin/rm -rf -- ".shellescape(a:fname,0))
+   elseif has("win32") || has("win95") || has("win64") || has("win16")
+    if &shell =~? "sh$"
+-    call system("/bin/rm -rf -- ".s:Escape(a:fname,0))
++    call system("/bin/rm -rf -- ".shellescape(a:fname,0))
+    else
+-    call system("del /S ".s:Escape(a:fname,0))
++    call system("del /S ".shellescape(a:fname,0))
+    endif
+   endif
+ "  call Dret("Rmdir")
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:Escape: {{{2
+-fun s:Escape(name,isfilt)
+-  " shellescape() was added by patch 7.0.111
+-  if exists("*shellescape")
+-   if a:isfilt
+-    let qnameq= shellescape(a:name,1)
++" tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2
++fun! tar#Vimuntar(...)
++"  call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">")
++  let tarball = expand("%")
++"  call Decho("tarball<".tarball.">")
++  let tarbase = substitute(tarball,'\..*$','','')
++"  call Decho("tarbase<".tarbase.">")
++  let tarhome = expand("%:p")
++  if has("win32") || has("win95") || has("win64") || has("win16")
++   let tarhome= substitute(tarhome,'\\','/','g')
++  endif
++  let tarhome= substitute(tarhome,'/[^/]*$','','')
++"  call Decho("tarhome<".tarhome.">")
++  let tartail = expand("%:t")
++"  call Decho("tartail<".tartail.">")
++  let curdir  = getcwd()
++"  call Decho("curdir <".curdir.">")
++  " set up vimhome
++  if a:0 > 0 && a:1 != ""
++   let vimhome= a:1
++  else
++   let vimhome= vimball#VimballHome()
++  endif
++"  call Decho("vimhome<".vimhome.">")
++
++"  call Decho("curdir<".curdir."> vimhome<".vimhome.">")
++  if simplify(curdir) != simplify(vimhome)
++   " copy (possibly compressed) tarball to .vim/vimfiles
++"   call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
++   call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
++"   call Decho("exe cd ".fnameescape(vimhome))
++   exe "cd ".fnameescape(vimhome)
++  endif
++"  call Decho("getcwd<".getcwd().">")
++
++  " if necessary, decompress the tarball; then, extract it
++  if tartail =~ '\.tgz'
++   if executable("gunzip")
++    silent exe "!gunzip ".shellescape(tartail)
++   elseif executable("gzip")
++    silent exe "!gzip -d ".shellescape(tartail)
+    else
+-    let qnameq= shellescape(a:name)
++    echoerr "unable to decompress<".tartail."> on this sytem"
++    if simplify(curdir) != simplify(tarhome)
++     " remove decompressed tarball, restore directory
++"     call Decho("delete(".tartail.".tar)")
++     call delete(tartail.".tar")
++"     call Decho("exe cd ".fnameescape(curdir))
++     exe "cd ".fnameescape(curdir)
++    endif
++"    call Dret("tar#Vimuntar")
++    return
+    endif
+   else
+-   let qnameq= g:tar_shq . a:name . g:tar_shq
++   call vimball#Decompress(tartail,0)
++  endif
++  let extractcmd= netrw#WinPath(g:tar_extractcmd)
++"  call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")")
++  call system(extractcmd." ".shellescape(tarbase.".tar"))
++
++  " set up help
++  if filereadable("doc/".tarbase.".txt")
++"   call Decho("exe helptags ".getcwd()."/doc")
++   exe "helptags ".getcwd()."/doc"
++  endif
++
++  if simplify(tarhome) != simplify(vimhome)
++   " remove decompressed tarball, restore directory
++   call delete(vimhome."/".tarbase.".tar")
++   exe "cd ".fnameescape(curdir)
+   endif
+-  return qnameq
++
++"  call Dret("tar#Vimuntar")
+ endfun
+ 
+-" ---------------------------------------------------------------------
++" =====================================================================
+ " Modelines And Restoration: {{{1
+ let &cpo= s:keepcpo
+ unlet s:keepcpo
+diff -Nur runtime/autoload/tohtml.vim runtime/autoload/tohtml.vim
+--- runtime/autoload/tohtml.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/autoload/tohtml.vim	2011-04-03 09:27:21.039819458 -0700
+@@ -0,0 +1,111 @@
++" Vim autoload file for the tohtml plugin.
++" Maintainer: Bram Moolenaar <[email protected]>
++" Last Change: 2010 Jul 11
++"
++" Diff2HTML() added by Christian Brabandt <[email protected]>
++
++func! tohtml#Convert2HTML(line1, line2)
++  if !&diff || exists("g:diff_one_file")
++    if a:line2 >= a:line1
++      let g:html_start_line = a:line1
++      let g:html_end_line = a:line2
++    else
++      let g:html_start_line = a:line2
++      let g:html_end_line = a:line1
++    endif
++    runtime syntax/2html.vim
++  else
++    let win_list = []
++    let buf_list = []
++    windo | if (&diff) | call add(win_list, winbufnr(0)) | endif
++    let save_hwf = exists("g:html_whole_filler")
++    let g:html_whole_filler = 1
++    for window in win_list
++      exe ":" . bufwinnr(window) . "wincmd w"
++      let g:html_start_line = 1
++      let g:html_end_line = line('$')
++      runtime syntax/2html.vim
++      call add(buf_list, bufnr('%'))
++    endfor
++    if !save_hwf
++      unlet g:html_whole_filler
++    endif
++    call tohtml#Diff2HTML(win_list, buf_list)
++  endif
++
++  unlet g:html_start_line
++  unlet g:html_end_line
++endfunc
++
++func! tohtml#Diff2HTML(win_list, buf_list)
++  let style = []
++  let html = []
++  call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
++  call add(html, '  "http://www.w3.org/TR/html4/loose.dtd">')
++  call add(html, '<html>')
++  call add(html, '<head>')
++  call add(html, '<title>diff</title>')
++  call add(html, '<meta name="Generator" content="Vim/7.3">')
++  "call add(html, '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">')
++  call add(html, '</head>')
++  call add(html, '<body>')
++  call add(html, '<table border="1" width="100%">')
++  "call add(html, '<font face="monospace">')
++  call add(html, '<tr>')
++  for buf in a:win_list
++    call add(html, '<th>'.bufname(buf).'</th>')
++  endfor
++  call add(html, '</tr><tr>')
++
++  for buf in a:buf_list
++    let temp = []
++    exe bufwinnr(buf) . 'wincmd w'
++
++    " Grab the style information.  Some of this will be duplicated...
++    1
++    let style_start = search('^<style type="text/css">')
++    1
++    let style_end = search('^</style>')
++    if style_start > 0 && style_end > 0
++      let style += getline(style_start + 1, style_end - 1)
++    endif
++
++    " Delete those parts that are not needed so
++    " we can include the rest into the resulting table
++    1,/^<body/d_
++    $
++    ?</body>?,$d_
++    let temp = getline(1,'$')
++    " undo deletion of start and end part
++    " so we can later save the file as valid html
++    normal 2u
++    call add(html, '<td nowrap valign="top">')
++    let html += temp
++    call add(html, '</td>')
++
++    " Close this buffer
++    quit!
++  endfor
++
++  call add(html, '</tr>')
++  call add(html, '</table>')
++  call add(html, '</body>')
++  call add(html, '</html>')
++
++  let i = 1
++  let name = "Diff" . ".html"
++  while filereadable(name)
++    let name = substitute(name, '\d*\.html$', '', '') . i . ".html"
++    let i += 1
++  endw
++  exe "new " . name
++  set modifiable
++  call append(0, html)
++  if len(style) > 0
++    1
++    let style_start = search('^</head>')
++    call append(style_start, '</style>')
++    call append(style_start, style)
++    call append(style_start, '<style type="text/css">')
++  endif
++endfunc
+diff -Nur runtime/autoload/vimball.vim runtime/autoload/vimball.vim
+--- runtime/autoload/vimball.vim	2008-07-30 13:24:17.000000000 -0700
++++ runtime/autoload/vimball.vim	2011-01-18 10:40:55.408403644 -0800
+@@ -1,9 +1,9 @@
+ " vimball.vim : construct a file containing both paths and files
+ " Author:	Charles E. Campbell, Jr.
+-" Date:		Jul 30, 2008
+-" Version:	29
++" Date:		Apr 12, 2010
++" Version:	31
+ " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
+-" Copyright: (c) 2004-2008 by Charles E. Campbell, Jr.
++" Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.
+ "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
+ "            (see |copyright|) except use "Vimball" instead of "Vim".
+ "            No warranty, express or implied.
+@@ -11,11 +11,17 @@
+ 
+ " ---------------------------------------------------------------------
+ "  Load Once: {{{1
+-if &cp || exists("g:loaded_vimball") || v:version < 700
++if &cp || exists("g:loaded_vimball")
+  finish
+ endif
+-let s:keepcpo        = &cpo
+-let g:loaded_vimball = "v29"
++let g:loaded_vimball = "v31"
++if v:version < 702
++ echohl WarningMsg
++ echo "***warning*** this version of vimball needs vim 7.2"
++ echohl Normal
++ finish
++endif
++let s:keepcpo= &cpo
+ set cpo&vim
+ "DechoTabOn
+ 
+@@ -52,30 +58,6 @@
+    call vimball#ShowMesg(s:WARNING,"(vimball) g:vimball_mkdir undefined")
+   endif
+  endif
+-
+- " set up shell quoting character
+- if exists("g:vimball_shq") && !exists("g:netrw_shq")
+-  let g:netrw_shq= g:vimball_shq
+- endif
+- if !exists("g:netrw_shq")
+-  if exists("&shq") && &shq != ""
+-   let g:netrw_shq= &shq
+-  elseif has("win32") || has("win95") || has("win64") || has("win16")
+-   if g:netrw_cygwin
+-    let g:netrw_shq= "'"
+-   else
+-    let g:netrw_shq= '"'
+-   endif
+-  else
+-   let g:netrw_shq= "'"
+-  endif
+-" call Decho("g:netrw_shq<".g:netrw_shq.">")
+- endif
+-
+- " set up escape string (used to protect paths)
+- if !exists("g:vimball_path_escape")
+-  let g:vimball_path_escape= ' ;#%'
+- endif
+ endif
+ 
+ " =====================================================================
+@@ -106,8 +88,8 @@
+    let vbname= vbname.'.vba'
+   endif
+ "  call Decho("vbname<".vbname.">")
+-  if a:1 =~ '[\/]'
+-   call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes")
++  if !a:writelevel && a:1 =~ '[\/]'
++   call vimball#ShowMesg(s:ERROR,"(MkVimball) vimball name<".a:1."> should not include slashes; use ! to insist")
+ "   call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
+    return
+   endif
+@@ -125,7 +107,7 @@
+    let home= expand(a:2)
+   else
+    " use first existing directory from rtp
+-   let home= s:VimballHome()
++   let home= vimball#VimballHome()
+   endif
+ 
+   " save current directory
+@@ -218,7 +200,7 @@
+    return
+   endif
+ 
+-  if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$'
++  if getline(1) !~ '^" Vimball Archiver'
+    echoerr "(Vimball) The current file does not appear to be a Vimball!"
+ "   call Dret("vimball#Vimball")
+    return
+@@ -240,7 +222,7 @@
+   if a:0 > 0
+    let home= expand(a:1)
+   else
+-   let home= s:VimballHome()
++   let home= vimball#VimballHome()
+   endif
+ "  call Decho("home<".home.">")
+ 
+@@ -272,7 +254,9 @@
+   while 1 < linenr && linenr < line("$")
+    let fname   = substitute(getline(linenr),'\t\[\[\[1$','','')
+    let fname   = substitute(fname,'\\','/','g')
+-   let fsize   = getline(linenr+1)+0
++"   let fsize   = getline(linenr+1)+0
++   let fsize   = substitute(getline(linenr+1),'^\(\d\+\).\{-}$','\1','')+0
++   let fenc    = substitute(getline(linenr+1),'^\d\+\s*\(\S\+\)$','\1','')
+    let filecnt = filecnt + 1
+ "   call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt)
+ 
+@@ -307,7 +291,7 @@
+      if !isdirectory(dirname)
+ "      call Decho("making <".dirname.">")
+       if exists("g:vimball_mkdir")
+-	   call system(g:vimball_mkdir." ".s:Escape(dirname))
++	   call system(g:vimball_mkdir." ".shellescape(dirname))
+       else
+        call mkdir(dirname)
+       endif
+@@ -337,9 +321,13 @@
+    if a:really
+     let fnamepath= home."/".fname
+ "    call Decho("exe w! ".fnameescape(fnamepath))
+-	exe "silent w! ".fnameescape(fnamepath)
+-    echo "wrote ".fnamepath
+-	call s:RecordInVar(home,"call delete('".fnameescape(fnamepath)."')")
++	if fenc != ""
++	 exe "silent w! ++enc=".fnameescape(fenc)." ".fnameescape(fnamepath)
++	else
++	 exe "silent w! ".fnameescape(fnamepath)
++	endif
++	echo "wrote ".fnameescape(fnamepath)
++	call s:RecordInVar(home,"call delete('".fnamepath."')")
+    endif
+ 
+    " return to tab with vimball
+@@ -418,7 +406,7 @@
+   if a:0 >= 2
+    let home= expand(a:2)
+   else
+-   let home= s:VimballHome()
++   let home= vimball#VimballHome()
+   endif
+   let curdir = getcwd()
+ "  call Decho("home   <".home.">")
+@@ -432,19 +420,20 @@
+    keepalt keepjumps 1split 
+    silent! keepalt keepjumps e .VimballRecord
+    let keepsrch= @/
+-"   call Decho("search for ^".curfile.".vba:")
+-"   call Decho("search for ^".curfile."[-0-9.]*.vba:")
+-   if search('^'.curfile.": ".'cw')
++"   call Decho('search for ^\M'.curfile.'.\m: ')
++"   call Decho('search for ^\M'.curfile.'.\mvba: ')
++"   call Decho('search for ^\M'.curfile.'\m[-0-9.]*\.vba: ')
++   if search('^\M'.curfile."\m: ".'cw')
+ 	let foundit= 1
+-   elseif search('^'.curfile.".vba: ",'cw')
++   elseif search('^\M'.curfile.".\mvba: ",'cw')
+ 	let foundit= 1
+-   elseif search('^'.curfile.'[-0-9.]*.vba: ','cw')
++   elseif search('^\M'.curfile.'\m[-0-9.]*\.vba: ','cw')
+ 	let foundit= 1
+    else
+     let foundit = 0
+    endif
+    if foundit
+-	let exestring  = substitute(getline("."),'^'.curfile.'\S\{-}\.vba: ','','')
++	let exestring  = substitute(getline("."),'^\M'.curfile.'\m\S\{-}\.vba: ','','')
+     let s:VBRstring= substitute(exestring,'call delete(','','g')
+     let s:VBRstring= substitute(s:VBRstring,"[')]",'','g')
+ "	call Decho("exe ".exestring)
+@@ -472,62 +461,62 @@
+ 
+ " ---------------------------------------------------------------------
+ " vimball#Decompress: attempts to automatically decompress vimballs {{{2
+-fun! vimball#Decompress(fname)
+-"  call Dfunc("Decompress(fname<".a:fname.">)")
++fun! vimball#Decompress(fname,...)
++"  call Dfunc("Decompress(fname<".a:fname.">) a:0=".a:0)
+ 
+   " decompression:
+   if     expand("%") =~ '.*\.gz'  && executable("gunzip")
+    " handle *.gz with gunzip
+-   silent exe "!gunzip ".s:Escape(a:fname)
++   silent exe "!gunzip ".shellescape(a:fname)
+    if v:shell_error != 0
+ 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">")
+    endif
+    let fname= substitute(a:fname,'\.gz$','','')
+    exe "e ".escape(fname,' \')
+-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
++   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+ 
+   elseif expand("%") =~ '.*\.gz' && executable("gzip")
+    " handle *.gz with gzip -d
+-   silent exe "!gzip -d ".s:Escape(a:fname)
++   silent exe "!gzip -d ".shellescape(a:fname)
+    if v:shell_error != 0
+ 	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "gzip -d" may have failed with <'.a:fname.">")
+    endif
+    let fname= substitute(a:fname,'\.gz$','','')
+    exe "e ".escape(fname,' \')
+-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
++   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+ 
+   elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
+    " handle *.bz2 with bunzip2
+-   silent exe "!bunzip2 ".s:Escape(a:fname)
++   silent exe "!bunzip2 ".shellescape(a:fname)
+    if v:shell_error != 0
+ 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">")
+    endif
+    let fname= substitute(a:fname,'\.bz2$','','')
+    exe "e ".escape(fname,' \')
+-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
++   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+ 
+   elseif expand("%") =~ '.*\.bz2' && executable("bzip2")
+    " handle *.bz2 with bzip2 -d
+-   silent exe "!bzip2 -d ".s:Escape(a:fname)
++   silent exe "!bzip2 -d ".shellescape(a:fname)
+    if v:shell_error != 0
+ 	call vimball#ShowMesg(s:WARNING,'(vimball#Decompress) "bzip2 -d" may have failed with <'.a:fname.">")
+    endif
+    let fname= substitute(a:fname,'\.bz2$','','')
+    exe "e ".escape(fname,' \')
+-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
++   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+ 
+   elseif expand("%") =~ '.*\.zip' && executable("unzip")
+    " handle *.zip with unzip
+-   silent exe "!unzip ".s:Escape(a:fname)
++   silent exe "!unzip ".shellescape(a:fname)
+    if v:shell_error != 0
+ 	call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">")
+    endif
+    let fname= substitute(a:fname,'\.zip$','','')
+    exe "e ".escape(fname,' \')
+-   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
++   if a:0 == 0| call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") | endif
+   endif
+ 
+-  set noma bt=nofile fmr=[[[,]]] fdm=marker
++  if a:0 == 0| setlocal noma bt=nofile fmr=[[[,]]] fdm=marker | endif
+ 
+ "  call Dret("Decompress")
+ endfun
+@@ -536,20 +525,21 @@
+ " vimball#ShowMesg: {{{2
+ fun! vimball#ShowMesg(level,msg)
+ "  call Dfunc("vimball#ShowMesg(level=".a:level." msg<".a:msg.">)")
++
+   let rulerkeep   = &ruler
+   let showcmdkeep = &showcmd
+   set noruler noshowcmd
+   redraw!
+ 
+   if &fo =~ '[ta]'
+-   echomsg "***vimball*** " a:msg
++   echomsg "***vimball*** ".a:msg
+   else
+    if a:level == s:WARNING || a:level == s:USAGE
+     echohl WarningMsg
+    elseif a:level == s:ERROR
+     echohl Error
+    endif
+-   echomsg "***vimball*** " a:msg
++   echomsg "***vimball*** ".a:msg
+    echohl None
+   endif
+ 
+@@ -646,9 +636,9 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:VimballHome: determine/get home directory path (usually from rtp) {{{2
+-fun! s:VimballHome()
+-"  call Dfunc("VimballHome()")
++" vimball#VimballHome: determine/get home directory path (usually from rtp) {{{2
++fun! vimball#VimballHome()
++"  call Dfunc("vimball#VimballHome()")
+   if exists("g:vimball_home")
+    let home= g:vimball_home
+   else
+@@ -674,14 +664,14 @@
+   if !isdirectory(home)
+    if exists("g:vimball_mkdir")
+ "	call Decho("home<".home."> isn't a directory -- making it now with g:vimball_mkdir<".g:vimball_mkdir.">")
+-"    call Decho("system(".g:vimball_mkdir." ".s:Escape(home).")")
+-    call system(g:vimball_mkdir." ".s:Escape(home))
++"    call Decho("system(".g:vimball_mkdir." ".shellescape(home).")")
++    call system(g:vimball_mkdir." ".shellescape(home))
+    else
+ "	call Decho("home<".home."> isn't a directory -- making it now with mkdir()")
+     call mkdir(home)
+    endif
+   endif
+-"  call Dret("VimballHome <".home.">")
++"  call Dret("vimball#VimballHome <".home.">")
+   return home
+ endfun
+ 
+@@ -743,20 +733,5 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
+-" s:Escape: {{{2
+-fun s:Escape(name)
+-  " shellescape() was added by patch 7.0.111
+-  if exists("*shellescape")
+-    return shellescape(a:name)
+-  endif
+-  return g:netrw_shq . a:name . g:netrw_shq
+-endfun
+-
+-" ---------------------------------------------------------------------
+-"  Restore:
+-let &cpo= s:keepcpo
+-unlet s:keepcpo
+-
+-" ---------------------------------------------------------------------
+ " Modelines: {{{1
+ " vim: fdm=marker
+diff -Nur runtime/autoload/zip.vim runtime/autoload/zip.vim
+--- runtime/autoload/zip.vim	2008-08-03 12:23:03.000000000 -0700
++++ runtime/autoload/zip.vim	2011-01-18 10:40:55.427712793 -0800
+@@ -1,7 +1,7 @@
+ " zip.vim: Handles browsing zipfiles
+ "            AUTOLOAD PORTION
+-" Date:		Jul 30, 2008
+-" Version:	22
++" Date:		Apr 12, 2010
++" Version:	23
+ " Maintainer:	Charles E Campbell, Jr <[email protected]>
+ " License:	Vim License  (see vim's :help license)
+ " Copyright:    Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1
+@@ -16,13 +16,19 @@
+ 
+ " ---------------------------------------------------------------------
+ " Load Once: {{{1
+-let s:keepcpo= &cpo
+-set cpo&vim
+-if &cp || exists("g:loaded_zip") || v:version < 700
++if &cp || exists("g:loaded_zip")
++ finish
++endif
++let g:loaded_zip= "v23"
++if v:version < 702
++ echohl WarningMsg
++ echo "***warning*** this version of zip needs vim 7.2"
++ echohl Normal
+  finish
+ endif
++let s:keepcpo= &cpo
++set cpo&vim
+ 
+-let g:loaded_zip     = "v22"
+ let s:zipfile_escape = ' ?&;\'
+ let s:ERROR          = 2
+ let s:WARNING        = 1
+diff -Nur runtime/compiler/eruby.vim runtime/compiler/eruby.vim
+--- runtime/compiler/eruby.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/compiler/eruby.vim	2011-01-18 10:40:55.494191137 -0800
+@@ -1,7 +1,7 @@
+ " Vim compiler file
+ " Language:		eRuby
+ " Maintainer:		Doug Kearns <[email protected]>
+-" Info:			$Id: eruby.vim,v 1.7 2008/06/29 04:18:42 tpope Exp $
++" Last Change:		2008 Aug 1
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+diff -Nur runtime/compiler/gcc.vim runtime/compiler/gcc.vim
+--- runtime/compiler/gcc.vim	2008-03-12 15:04:38.000000000 -0700
++++ runtime/compiler/gcc.vim	2011-04-03 09:27:21.040663636 -0700
+@@ -1,7 +1,7 @@
+ " Vim compiler file
+ " Compiler:         GNU C Compiler
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-12-20
++" Latest Revision:  2010-05-30
+ 
+ if exists("current_compiler")
+   finish
+@@ -12,10 +12,17 @@
+ set cpo-=C
+ 
+ CompilerSet errorformat=
++      \%*[^\"]\"%f\"%*\\D%l:%c:\ %m,
+       \%*[^\"]\"%f\"%*\\D%l:\ %m,
++      \\"%f\"%*\\D%l:%c:\ %m,
+       \\"%f\"%*\\D%l:\ %m,
+       \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
+       \%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
++      \%f:%l:%c:\ %terror:\ %m,
++      \%f:%l:%c:\ %tarning:\ %m,
++      \%f:%l:%c:\ %m,
++      \%f:%l:\ %terror:\ %m,
++      \%f:%l:\ %tarning:\ %m,
+       \%f:%l:\ %m,
+       \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
+       \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
+diff -Nur runtime/compiler/jikes.vim runtime/compiler/jikes.vim
+--- runtime/compiler/jikes.vim	2004-06-07 07:32:36.000000000 -0700
++++ runtime/compiler/jikes.vim	2011-01-18 10:40:55.506972976 -0800
+@@ -1,8 +1,8 @@
+ " Vim Compiler File
+ " Compiler:	Jikes
+ " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Change:	2004 Mar 27
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/compiler
++" Last Change:	20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/compiler
+ 
+ if exists("current_compiler")
+   finish
+diff -Nur runtime/compiler/perl.vim runtime/compiler/perl.vim
+--- runtime/compiler/perl.vim	2007-06-11 11:57:55.000000000 -0700
++++ runtime/compiler/perl.vim	2011-01-18 10:40:55.509780763 -0800
+@@ -1,6 +1,6 @@
+ " Vim Compiler File
+ " Compiler:     Perl syntax checks (perl -Wc)
+-" Maintainer:   Christian J. Robinson <[email protected]>
++" Maintainer:   Christian J. Robinson <[email protected]>
+ " Last Change:  2006 Aug 13
+ 
+ if exists("current_compiler")
+diff -Nur runtime/compiler/rspec.vim runtime/compiler/rspec.vim
+--- runtime/compiler/rspec.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/compiler/rspec.vim	2011-01-18 10:40:55.510719185 -0800
+@@ -1,7 +1,7 @@
+ " Vim compiler file
+ " Language:		RSpec
+-" Maintainer:		Tim Pope <[email protected]>
+-" Info:			$Id: rspec.vim,v 1.2 2008/06/29 04:18:42 tpope Exp $
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2009 Dec 22
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+diff -Nur runtime/compiler/ruby.vim runtime/compiler/ruby.vim
+--- runtime/compiler/ruby.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/compiler/ruby.vim	2011-01-18 10:40:55.511429970 -0800
+@@ -2,7 +2,7 @@
+ " Language:		Ruby
+ " Function:		Syntax check and/or error reporting
+ " Maintainer:		Tim Hammerquist <timh at rubyforge.org>
+-" Info:			$Id: ruby.vim,v 1.13 2008/06/29 04:18:43 tpope Exp $
++" Last Change:		2008 Aug 1
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+diff -Nur runtime/compiler/rubyunit.vim runtime/compiler/rubyunit.vim
+--- runtime/compiler/rubyunit.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/compiler/rubyunit.vim	2011-01-18 10:40:55.511781418 -0800
+@@ -1,7 +1,7 @@
+ " Vim compiler file
+ " Language:		Test::Unit - Ruby Unit Testing Framework
+ " Maintainer:		Doug Kearns <[email protected]>
+-" Info:			$Id: rubyunit.vim,v 1.12 2008/06/29 04:18:43 tpope Exp $
++" Last Change:		2008 Aug 1
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+diff -Nur runtime/doc/Makefile runtime/doc/Makefile
+--- runtime/doc/Makefile	2008-07-31 13:21:58.000000000 -0700
++++ runtime/doc/Makefile	2011-04-03 09:27:21.044807600 -0700
+@@ -37,6 +37,7 @@
+ 	hangulin.txt \
+ 	hebrew.txt \
+ 	help.txt \
++	helphelp.txt \
+ 	howto.txt \
+ 	if_cscop.txt \
+ 	if_mzsch.txt \
+@@ -167,6 +168,7 @@
+ 	gui_x11.html \
+ 	hangulin.html \
+ 	hebrew.html \
++	helphelp.html \
+ 	howto.html \
+ 	if_cscop.html \
+ 	if_mzsch.html \
+diff -Nur runtime/doc/arabic.txt runtime/doc/arabic.txt
+--- runtime/doc/arabic.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/arabic.txt	2011-04-03 09:27:21.051901157 -0700
+@@ -1,4 +1,4 @@
+-*arabic.txt*	For Vim version 7.2.  Last change: 2005 Mar 29
++*arabic.txt*	For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Nadim Shaikli
+diff -Nur runtime/doc/autocmd.txt runtime/doc/autocmd.txt
+--- runtime/doc/autocmd.txt	2011-04-03 13:03:31.178946145 -0700
++++ runtime/doc/autocmd.txt	2011-04-03 09:27:21.061896044 -0700
+@@ -1,4 +1,4 @@
+-*autocmd.txt*   For Vim version 7.2.  Last change: 2008 Jun 27
++*autocmd.txt*   For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -59,10 +59,10 @@
+ :au[tocmd] [group] {event} {pat} [nested] {cmd}
+ 			Add {cmd} to the list of commands that Vim will
+ 			execute automatically on {event} for a file matching
+-			{pat}.  Vim always adds the {cmd} after existing
+-			autocommands, so that the autocommands execute in the
+-			order in which they were given.  See |autocmd-nested|
+-			for [nested].
++			{pat} |autocmd-patterns|.
++			Vim always adds the {cmd} after existing autocommands,
++			so that the autocommands execute in the order in which
++			they were given.  See |autocmd-nested| for [nested].
+ 
+ The special pattern <buffer> or <buffer=N> defines a buffer-local autocommand.
+ See |autocmd-buflocal|.
+@@ -401,6 +401,8 @@
+ 				buffer being unloaded "<afile>".
+ 				Don't change to another buffer, it will cause
+ 				problems.
++				When exiting and v:dying is 2 or more this
++				event is not triggered.
+ 							*BufWinEnter*
+ BufWinEnter			After a buffer is displayed in a window.  This
+ 				can be when the buffer is loaded (after
+@@ -422,6 +424,8 @@
+ 				NOTE: When this autocommand is executed, the
+ 				current buffer "%" may be different from the
+ 				buffer being unloaded "<afile>".
++				When exiting and v:dying is 2 or more this
++				event is not triggered.
+ 							*BufWipeout*
+ BufWipeout			Before completely deleting a buffer.  The
+ 				BufUnload and BufDelete events may be called
+@@ -551,7 +555,7 @@
+ 				buffer that was changed "<afile>".
+ 				NOTE: The commands must not change the current
+ 				buffer, jump to another buffer or delete a
+-				buffer.  *E246*
++				buffer.  *E246* *E811*
+ 				NOTE: This event never nests, to avoid an
+ 				endless loop.  This means that while executing
+ 				commands for the FileChangedShell event no
+@@ -799,6 +803,8 @@
+ 				.viminfo file.  Executed only once, like
+ 				VimLeavePre.
+ 				To detect an abnormal exit use |v:dying|.
++				When v:dying is 2 or more this event is not
++				triggered.
+ 							*VimLeavePre*
+ VimLeavePre			Before exiting Vim, just before writing the
+ 				.viminfo file.  This is executed only once,
+@@ -807,6 +813,8 @@
+ 				Mostly useful with a "*" pattern. >
+ 	:autocmd VimLeavePre * call CleanupStuff()
+ <				To detect an abnormal exit use |v:dying|.
++				When v:dying is 2 or more this event is not
++				triggered.
+ 							*VimResized*
+ VimResized			After the Vim window was resized, thus 'lines'
+ 				and/or 'columns' changed.  Not when starting
+@@ -835,9 +843,9 @@
+ two ways:
+ 1. When there is no '/' in the pattern, Vim checks for a match against only
+    the tail part of the file name (without its leading directory path).
+-2. When there is a '/' in the pattern,  Vim checks for a match against the
+-   both short file name (as you typed it) and the full file name (after
+-   expanding it to a full path and resolving symbolic links).
++2. When there is a '/' in the pattern, Vim checks for a match against both the
++   short file name (as you typed it) and the full file name (after expanding
++   it to a full path and resolving symbolic links).
+ 
+ The special pattern <buffer> or <buffer=N> is used for buffer-local
+ autocommands |autocmd-buflocal|.  This pattern is not matched against the name
+@@ -1052,7 +1060,7 @@
+ 						*:doautoa* *:doautoall*
+ :doautoa[ll] [group] {event} [fname]
+ 			Like ":doautocmd", but apply the autocommands to each
+-			loaded buffer.  Note that {fname} is used to select
++			loaded buffer.  Note that [fname] is used to select
+ 			the autocommands, not the buffers to which they are
+ 			applied.
+ 			Careful: Don't use this for autocommands that delete a
+diff -Nur runtime/doc/autocmd.txt.~1~ runtime/doc/autocmd.txt.~1~
+diff -Nur runtime/doc/autocmd.txt.~2~ runtime/doc/autocmd.txt.~2~
+diff -Nur runtime/doc/change.txt runtime/doc/change.txt
+--- runtime/doc/change.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/change.txt	2011-04-03 09:27:21.063689451 -0700
+@@ -1,4 +1,4 @@
+-*change.txt*    For Vim version 7.2.  Last change: 2008 Jul 24
++*change.txt*    For Vim version 7.3a.  Last change: 2010 Mar 23
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -506,9 +506,9 @@
+ 			{filter}.  Vim replaces the optional bangs with the
+ 			latest given command and appends the optional [arg].
+ 			Vim saves the output of the filter command in a
+-			temporary file and then reads the file into the
+-			buffer.  Vim uses the 'shellredir' option to redirect
+-			the filter output to the temporary file.
++			temporary file and then reads the file into the buffer
++			|tempfile|.  Vim uses the 'shellredir' option to
++			redirect the filter output to the temporary file.
+ 			However, if the 'shelltemp' option is off then pipes
+ 			are used when possible (on Unix).
+ 			When the 'R' flag is included in 'cpoptions' marks in
+@@ -524,7 +524,9 @@
+ 			option is empty (this is the default), use the
+ 			internal formatting function |C-indenting|.  But when
+ 			'indentexpr' is not empty, it will be used instead
+-			|indent-expression|.
++			|indent-expression|.  When Vim was compiled without
++			internal formatting then the "indent" program is used
++			as a last resort.
+ 
+ 							*==*
+ ==			Filter [count] lines like with ={motion}.
+@@ -534,6 +536,22 @@
+ 			{not in Vi}
+ 
+ 
++						*tempfile* *setuid*
++Vim uses temporary files for filtering, generating diffs and also for
++tempname().  For Unix, the file will be in a private directory (only
++accessible by the current user) to avoid security problems (e.g., a symlink
++attack or other people reading your file).  When Vim exits the directory and
++all files in it are deleted.  When Vim has the setuid bit set this may cause
++problems, the temp file is owned by the setuid user but the filter command
++probably runs as the original user.
++On MS-DOS and OS/2 the first of these directories that works is used: $TMP,
++$TEMP, c:\TMP, c:\TEMP.
++For Unix the list of directories is: $TMPDIR, /tmp, current-dir, $HOME.
++For MS-Windows the GetTempFileName() system function is used.
++For other systems the tmpnam() library function is used.
++
++
++
+ 4.2 Substitute						*:substitute*
+ 							*:s* *:su*
+ :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
+@@ -567,7 +585,7 @@
+ 			":&r".  See |:s_flags| for [flags].
+ 
+ 								*&*
+-&			Synonym for ":s//~/" (repeat last substitute).  Note
++&			Synonym for ":s" (repeat last substitute).  Note
+ 			that the flags are not remembered, thus it might
+ 			actually work differently.  You can use ":&&" to keep
+ 			the flags.
+@@ -861,7 +879,10 @@
+ 
+ 							*:reg* *:registers*
+ :reg[isters]		Display the contents of all numbered and named
+-			registers.  {not in Vi}
++			registers.  If a register is written to for |:redir|
++			it will not be listed.
++			{not in Vi}
++
+ 
+ :reg[isters] {arg}	Display the contents of the numbered and named
+ 			registers that are mentioned in {arg}.  For example: >
+@@ -994,6 +1015,11 @@
+ and whether the corners are on an existing character.  (Implementation detail:
+ it actually works by first putting the register after the selection and then
+ deleting the selection.)
++The previously selected text is put in the unnamed register.  If you want to
++put the same text into a Visual selection several times you need to use
++another register.  E.g., yank the text to copy, Visually select the text to
++replace and use "0p .  You can repeat this as many times as you like, the
++unnamed register will be changed each time.
+ 
+ 							*blockwise-register*
+ If you use a blockwise Visual mode command to get the text into the register,
+@@ -1031,8 +1057,10 @@
+ Vim fills this register with text deleted with the "d", "c", "s", "x" commands
+ or copied with the yank "y" command, regardless of whether or not a specific
+ register was used (e.g.  "xdd).  This is like the unnamed register is pointing
+-to the last used register.  An exception is the '_' register: "_dd does not
+-store the deleted text in any register.
++to the last used register.  Thus when appending using an uppercase register
++name, the unnamed register contains the same text as the named register.
++An exception is the '_' register: "_dd does not store the deleted text in any
++register.
+ Vim uses the contents of the unnamed register for any put command (p or P)
+ which does not specify a register.  Additionally you can access it with the
+ name '"'.  This means you have to type two double quotes.  Writing to the ""
+@@ -1098,15 +1126,20 @@
+ history for expressions.  When you end the command-line by typing <CR>, Vim
+ computes the result of the expression.  If you end it with <Esc>, Vim abandons
+ the expression.  If you do not enter an expression, Vim uses the previous
+-expression (like with the "/" command).  The expression must evaluate to a
+-string.  If the result is a number it's turned into a string.  A List,
+-Dictionary or FuncRef results in an error message (use string() to convert).
+-If the "= register is used for the "p" command, the string is split up at <NL>
+-characters.  If the string ends in a <NL>, it is regarded as a linewise
++expression (like with the "/" command).
++
++The expression must evaluate to a String.  A Number is always automatically
++converted to a String.  For the "p" and ":put" command, if the result is a
++Float it's converted into a String.  If the result is a List each element is
++turned into a String and used as a line.  A Dictionary or FuncRef results in
++an error message (use string() to convert).
++
++If the "= register is used for the "p" command, the String is split up at <NL>
++characters.  If the String ends in a <NL>, it is regarded as a linewise
+ register.  {not in Vi}
+ 
+ 7. Selection and drop registers "*, "+ and "~ 
+-Use these register for storing and retrieving the selected text for the GUI.
++Use these registers for storing and retrieving the selected text for the GUI.
+ See |quotestar| and |quoteplus|.  When the clipboard is not available or not
+ working, the unnamed register is used instead.  For Unix systems the clipboard
+ is only available when the |+xterm_clipboard| feature is present.  {not in Vi}
+diff -Nur runtime/doc/cmdline.txt runtime/doc/cmdline.txt
+--- runtime/doc/cmdline.txt	2011-04-03 13:03:29.822784690 -0700
++++ runtime/doc/cmdline.txt	2011-04-03 09:27:21.064962561 -0700
+@@ -1,4 +1,4 @@
+-*cmdline.txt*   For Vim version 7.2.  Last change: 2008 Sep 18
++*cmdline.txt*   For Vim version 7.3a.  Last change: 2010 May 07
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -118,8 +118,6 @@
+ 		preferred behavior, add the following to your .vimrc: >
+ 			:cnoremap <C-U> <C-E><C-U>
+ <
+-		Note: if the command-line becomes empty with one of the
+-		delete commands, Command-line mode is quit.
+ 							*c_<Insert>*
+ <Insert>	Toggle between insert and overstrike.  {not in Vi}
+ 
+@@ -418,7 +416,10 @@
+ 		than the pattern, no completion is done.
+ 		When 'incsearch' is set, entering a search pattern for "/" or
+ 		"?" and the current match is displayed then CTRL-L will add
+-		one character from the end of the current match.
++		one character from the end of the current match.  If
++		'ignorecase' and 'smartcase' are set and the command line has
++		no uppercase characters, the added character is converted to
++		lowercase.
+ 
+ The 'wildchar' option defaults to <Tab> (CTRL-E when in Vi compatible mode; in
+ a previous version <Esc> was used).  In the pattern standard wildcards '*' and
+@@ -485,14 +486,14 @@
+ 
+ The Ex commands have a few specialties:
+ 
+-							*:quote*
++							*:quote* *:comment*
+ '"' at the start of a line causes the whole line to be ignored.  '"'
+ after a command causes the rest of the line to be ignored.  This can be used
+ to add comments.  Example: >
+ 	:set ai		"set 'autoindent' option
+ It is not possible to add a comment to a shell command ":!cmd" or to the
+-":map" command and friends, because they see the '"' as part of their
+-argument.
++":map" command and a few others, because they see the '"' as part of their
++argument.  This is mentioned where the command is explained.
+ 
+ 							*:bar* *:\bar*
+ '|' can be used to separate commands, so you can give multiple commands in one
+@@ -524,6 +525,7 @@
+     :registers
+     :read !
+     :scscope
++    :sign
+     :tcl
+     :tcldo
+     :tclfile
+@@ -744,8 +746,8 @@
+ function expand() |expand()|.
+ 	%	Is replaced with the current file name.		  *:_%* *c_%*
+ 	#	Is replaced with the alternate file name.	  *:_#* *c_#*
+-	#n	(where n is a number) is replaced with the file name of
+-		buffer n.  "#0" is the same as "#".
++	#n	(where n is a number) is replaced with		  *:_#0* *:_#n*
++		the file name of buffer n.  "#0" is the same as "#".     *c_#n*
+ 	##	Is replaced with all names in the argument list	  *:_##* *c_##*
+ 		concatenated, separated by spaces.  Each space in a name
+ 		is preceded with a backslash.
+@@ -806,6 +808,7 @@
+ 
+ 							 *filename-modifiers*
+ 	 *:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
++	        *%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs*
+ The file name modifiers can be used after "%", "#", "#n", "<cfile>", "<sfile>",
+ "<afile>" or "<abuf>".  They are also used with the |fnamemodify()| function.
+ These are not available when Vim has been compiled without the |+modify_fname|
+@@ -949,7 +952,7 @@
+ 
+ ==============================================================================
+ 6. Command-line window				*cmdline-window* *cmdwin*
+-
++							*command-line-window*
+ In the command-line window the command line can be edited just like editing
+ text in any window.  It is a special kind of window, because you cannot leave
+ it in a normal way.
+@@ -957,12 +960,12 @@
+ feature}
+ 
+ 
+-OPEN
++OPEN						*c_CTRL-F* *q:* *q/* *q?*
+ 
+ There are two ways to open the command-line window:
+ 1. From Command-line mode, use the key specified with the 'cedit' option.
+    The default is CTRL-F when 'compatible' is not set.
+-2. From Normal mode, use the "q:", "q/" or "q?" command.  *q:* *q/* *q?*
++2. From Normal mode, use the "q:", "q/" or "q?" command.
+    This starts editing an Ex command-line ("q:") or search string ("q/" or
+    "q?").  Note that this is not possible while recording is in progress (the
+    "q" stops recording then).
+@@ -992,7 +995,8 @@
+ The command-line window is not a normal window.  It is not possible to move to
+ another window or edit another buffer.  All commands that would do this are
+ disabled in the command-line window.  Of course it _is_ possible to execute
+-any command that you entered in the command-line window.
++any command that you entered in the command-line window.  Other text edits are
++discarded when closing the window.
+ 
+ 
+ CLOSE							*E199*
+@@ -1027,7 +1031,7 @@
+ 
+ The command-line window cannot be used:
+ - when there already is a command-line window (no nesting)
+-- for entering a encryption key or when using inputsecret()
++- for entering an encryption key or when using inputsecret()
+ - when Vim was not compiled with the +vertsplit feature
+ 
+ Some options are set when the command-line window is opened:
+diff -Nur runtime/doc/cmdline.txt.~1~ runtime/doc/cmdline.txt.~1~
+diff -Nur runtime/doc/cmdline.txt.~2~ runtime/doc/cmdline.txt.~2~
+diff -Nur runtime/doc/debug.txt runtime/doc/debug.txt
+--- runtime/doc/debug.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/debug.txt	2011-04-03 09:27:21.065939109 -0700
+@@ -1,4 +1,4 @@
+-*debug.txt*     For Vim version 7.2.  Last change: 2006 May 01
++*debug.txt*     For Vim version 7.3a.  Last change: 2009 Jul 22
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -10,7 +10,8 @@
+ For debugging Vim scripts, functions, etc. see |debug-scripts|
+ 
+ 1. Location of a crash, using gcc and gdb	|debug-gcc|
+-2. Windows Bug Reporting			|debug-win32|
++2. Locating memory leaks			|debug-leaks|
++3. Windows Bug Reporting			|debug-win32|
+ 
+ ==============================================================================
+ 
+@@ -38,7 +39,25 @@
+ 
+ ==============================================================================
+ 
+-2. Windows Bug Reporting				*debug-win32*
++2. Locating memory leaks				*debug-leaks*
++
++If you suspect Vim is leaking memory and you are using Linux, the valgrind
++tool is very useful to pinpoint memory leaks.
++
++First of all, build Vim with EXITFREE defined.  Search for this in MAKEFILE
++and uncomment the line.
++
++Use this command to start Vim:				*valgrind*
++>
++	valgrind --log-file=valgrind.log ./vim
++
++Note: Vim will run much slower.  If your .vimrc is big or you have several
++plugins you need to be patient for startup, or run with the "-u NONE"
++argument.
++
++==============================================================================
++
++3. Windows Bug Reporting				*debug-win32*
+ 
+ If the Windows version of Vim crashes in a reproducible manner, you can take
+ some steps to provide a useful bug report.
+diff -Nur runtime/doc/debugger.txt runtime/doc/debugger.txt
+--- runtime/doc/debugger.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/debugger.txt	2011-04-03 09:27:21.071568805 -0700
+@@ -1,4 +1,4 @@
+-*debugger.txt*  For Vim version 7.2.  Last change: 2005 Mar 29
++*debugger.txt*  For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Gordon Prieur
+diff -Nur runtime/doc/develop.txt runtime/doc/develop.txt
+--- runtime/doc/develop.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/develop.txt	2011-04-03 09:27:21.072869381 -0700
+@@ -1,4 +1,4 @@
+-*develop.txt*   For Vim version 7.2.  Last change: 2007 May 11
++*develop.txt*   For Vim version 7.3a.  Last change: 2008 Dec 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -64,7 +64,7 @@
+   hard time finding and remembering them.  Keep in mind that more commands and
+   options will be added later.
+ - A feature that people do not know about is a useless feature.  Don't add
+-  obscure features, or at least add hints in documentation that they exists.
++  obscure features, or at least add hints in documentation that they exist.
+ - Minimize using CTRL and other modifiers, they are more difficult to type.
+ - There are many first-time and inexperienced Vim users.  Make it easy for
+   them to start using Vim and learn more over time.
+@@ -323,7 +323,7 @@
+ OK:	var = a * 5;
+ 
+ In general: Use empty lines to group lines of code together.  Put a comment
+-just above the group of lines.  This makes it more easy to quickly see what is
++just above the group of lines.  This makes it easier to quickly see what is
+ being done.
+ 
+ OK:	/* Prepare for building the table. */
+diff -Nur runtime/doc/diff.txt runtime/doc/diff.txt
+--- runtime/doc/diff.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/diff.txt	2011-04-03 09:27:21.081633755 -0700
+@@ -1,4 +1,4 @@
+-*diff.txt*      For Vim version 7.2.  Last change: 2008 Jul 21
++*diff.txt*      For Vim version 7.3a.  Last change: 2009 Sep 15
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -64,6 +64,9 @@
+ 
+ These options are set local to the window.  When editing another file they are
+ reset to the global value.
++The options can still be overruled from a modeline when re-editing the file.
++However, 'foldmethod' and 'wrap' won't be set from a modeline when 'diff' is
++set.
+ 
+ The differences shown are actually the differences in the buffer.  Thus if you
+ make changes after loading a file, these will be included in the displayed
+@@ -91,7 +94,7 @@
+ :diffthis	Make the current window part of the diff windows.  This sets
+ 		the options like for "vimdiff".
+ 
+-:diffpatch {patchfile}					*:diffp* *:diffpatch*
++:diffpatch {patchfile}				 *E816* *:diffp* *:diffpatch*
+ 		Use the current buffer, patch it with the diff found in
+ 		{patchfile} and open a buffer on the result.  The options are
+ 		set as for "vimdiff".
+@@ -121,7 +124,8 @@
+ 							*:diffo* *:diffoff*
+ :diffoff	Switch off diff mode for the current window.
+ 
+-:diffoff!	Switch off diff mode for all windows in the current tab page.
++:diffoff!	Switch off diff mode for the current window and in all windows
++		in the current tab page where 'diff' is set.
+ 
+ The ":diffoff" command resets the relevant options to their default value.
+ This may be different from what the values were before diff mode was started,
+@@ -237,7 +241,8 @@
+ 							*:diffg* *:diffget*
+ :[range]diffg[et] [bufspec]
+ 		Modify the current buffer to undo difference with another
+-		buffer.  If [bufspec] is given, that buffer is used.
++		buffer.  If [bufspec] is given, that buffer is used.  If
++		[bufspec] refers to the current buffer then nothing happens.
+ 		Otherwise this only works if there is one other buffer in diff
+ 		mode.
+ 		See below for [range].
+@@ -323,7 +328,7 @@
+ The "4d4" item deletes the line "111".
+ The '7c7" item replaces the line "GGG" with "ggg".
+ 
+-When 'diffexpr' is not empty, Vim evaluates to obtain a diff file in the
++When 'diffexpr' is not empty, Vim evaluates it to obtain a diff file in the
+ format mentioned.  These variables are set to the file names used:
+ 
+ 	v:fname_in		original file
+@@ -353,7 +358,7 @@
+ binaries isn't useful.  The "--binary" argument makes the files read in binary
+ mode, so that a CTRL-Z doesn't end the text on DOS.
+ 
+-						*E97*
++						*E810* *E97*
+ Vim will do a test if the diff output looks alright.  If it doesn't, you will
+ get an error message.  Possible causes:
+ -  The "diff" program cannot be executed.
+diff -Nur runtime/doc/digraph.txt runtime/doc/digraph.txt
+--- runtime/doc/digraph.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/digraph.txt	2011-04-03 09:27:21.082328016 -0700
+@@ -1,4 +1,4 @@
+-*digraph.txt*   For Vim version 7.2.  Last change: 2008 Aug 06
++*digraph.txt*   For Vim version 7.3a.  Last change: 2010 Apr 11
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/editing.txt runtime/doc/editing.txt
+--- runtime/doc/editing.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/editing.txt	2011-04-03 09:27:21.084099812 -0700
+@@ -1,4 +1,4 @@
+-*editing.txt*   For Vim version 7.2.  Last change: 2008 Aug 09
++*editing.txt*   For Vim version 7.3a.  Last change: 2009 Jun 10
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -270,7 +270,7 @@
+ 			Normal mode.  Otherwise same as |:edit|.
+ 
+ 							*:vie* *:view*
+-:vie[w] [++opt] [+cmd] file
++:vie[w][!] [++opt] [+cmd] file
+ 			When used in Ex mode: Leave |Ex mode|, go back to
+ 			Normal mode.  Otherwise same as |:edit|, but set
+ 			'readonly' option for this buffer.  {not in Vi}
+@@ -462,7 +462,10 @@
+     ++bad=drop   Remove the bad characters.
+ 
+ The default is like "++bad=?": Replace each bad character with a question
+-mark.
++mark.  In some places an inverted question mark is used (0xBF).
++
++Note that not all commands use the ++bad argument, even though they do not
++give an error when you add it.  E.g. |:write|.
+ 
+ Note that when reading, the 'fileformat' and 'fileencoding' options will be
+ set to the used format.  When writing this doesn't happen, thus a next write
+@@ -837,7 +840,7 @@
+ Example: >
+ 	:args *.c
+ 	:argdo set ff=unix | update
+-This sets the 'fileformat' option to "unix" and writes the file if is now
++This sets the 'fileformat' option to "unix" and writes the file if it is now
+ changed.  This is done for all *.c files.
+ 
+ Example: >
+@@ -1168,14 +1171,21 @@
+ 			*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
+ :bro[wse] {command}	Open a file selection dialog for an argument to
+ 			{command}.  At present this works for |:e|, |:w|,
+-			|:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc|,
+-			|:mksession|, |:split|, |:vsplit|, and |:tabe|.
++			|:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|,
++			|:view|, |:sview|, |:r|, |:saveas|, |:sp|, |:mkexrc|,
++			|:mkvimrc|, |:mksession|, |:mkview|, |:split|,
++			|:vsplit|, |:tabe|, |:tabnew|, |:cfile|, |:cgetfile|,
++			|:caddfile|, |:lfile|, |:lgetfile|, |:laddfile|,
++			|:diffsplit|, |:diffpatch|, |:open|, |:pedit|,
++			|:redir|, |:source|, |:update|, |:visual|, |:vsplit|,
++			and |:qall| if 'confirm' is set.
+ 			{only in Win32, Athena, Motif, GTK and Mac GUI}
+ 			When ":browse" is not possible you get an error
+ 			message.  If the |+browse| feature is missing or the
+ 			{command} doesn't support browsing, the {command} is
+ 			executed without a dialog.
+ 			":browse set" works like |:options|.
++			See also |:oldfiles| for ":browse oldfiles".
+ 
+ The syntax is best shown via some examples: >
+ 	:browse e $vim/foo
+@@ -1328,11 +1338,14 @@
+ 
+ Vim is able to write files encrypted, and read them back.  The encrypted text
+ cannot be read without the right key.
++{only available when compiled with the |+cryptv| feature}  *E833*
++
++The text in the swap file and the undo file is also encrypted.
+ 
+-Note: The swapfile and text in memory is not encrypted.  A system
+-administrator will be able to see your text while you are editing it.
+-When filtering text with ":!filter" or using ":w !command" the text is not
+-encrypted, this may reveal it to others.
++Note: The text in memory is not encrypted.  A system administrator may be able
++to see your text while you are editing it.  When filtering text with
++":!filter" or using ":w !command" the text is not encrypted, this may reveal
++it to others.  The 'viminfo' file is not encrypted.
+ 
+ WARNING: If you make a typo when entering the key and then write the file and
+ exit, the text will be lost!
+@@ -1358,10 +1371,29 @@
+ To disable the encryption, reset the 'key' option to an empty value: >
+ 	:set key=
+ 
+-When reading a file that has been encrypted and this option is not empty, it
+-will be used for decryption.  If the value is empty, you will be prompted to
+-enter the key.  If you don't enter a key, the file is edited without being
+-decrypted.
++You can use the 'cryptmethod' option to select the type of encryption.  Do
++this before writing the file.  When reading an encrypted file it will be set
++automatically to the method used when that file was written.  You can change
++'cryptmethod' before writing that file to change the method.
++
++When writing an undo file, the same key and method will be used for the text
++in the undo file. |persistent-undo|.
++
++						*E817* *E818* *E819* *E820*
++When encryption does not work properly, you would be able to write your text
++to a file and never be able to read it back.  Therefore a test is performed to
++check if the encryption works as expected.  If you get one of these errors
++don't write the file encrypted!  You need to rebuild the Vim binary to fix
++this.
++
++*E831* This is an internal error, "cannot happen".  If you can reproduce it,
++please report to the developers.
++
++When reading a file that has been encrypted and the 'key' option is not empty,
++it will be used for decryption.  If the value is empty, you will be prompted
++to enter the key.  If you don't enter a key, or you enter the wrong key, the
++file is edited without being decrypted.  There is no warning about using the
++wrong key (this makes brute force methods to find the key more difficult).
+ 
+ If want to start reading a file that uses a different key, set the 'key'
+ option to an empty string, so that Vim will prompt for a new one.  Don't use
+@@ -1456,6 +1488,17 @@
+ 			may be specified by name, number or with a pattern.
+ 
+ 
++							*E813* *E814*
++Vim will reload the buffer if you chose to.  If a window is visible that
++contains this buffer, the reloading will happen in the context of this window.
++Otherwise a special window is used, so that most autocommands will work.  You
++can't close this window.  A few other restrictions apply.  Best is to make
++sure nothing happens outside of the current buffer.  E.g., setting
++window-local options may end up in the wrong window.  Splitting the window,
++doing something there and closing it should be OK (if there are no side
++effects from other autocommands).  Closing unrelated windows and buffers will
++get you into trouble.
++
+ Before writing a file the timestamp is checked.  If it has changed, Vim will
+ ask if you really want to overwrite the file:
+ 
+diff -Nur runtime/doc/eval.txt runtime/doc/eval.txt
+--- runtime/doc/eval.txt	2011-04-03 13:03:30.860688928 -0700
++++ runtime/doc/eval.txt	2011-04-03 09:27:21.091432591 -0700
+@@ -1,4 +1,4 @@
+-*eval.txt*	For Vim version 7.2.  Last change: 2008 Nov 27
++*eval.txt*	For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+@@ -67,7 +67,7 @@
+ 	Number 123	-->	String "123"
+ 	Number 0	-->	String "0"
+ 	Number -1	-->	String "-1"
+-
++							*octal*
+ Conversion from a String to a Number is done by converting the first digits
+ to a number.  Hexadecimal "0xf9" and Octal "017" numbers are recognized.  If
+ the String doesn't start with digits, the result is zero.  Examples: >
+@@ -853,7 +853,8 @@
+ 
+ If expr8 is a Number or String this results in a String that contains the
+ expr1'th single byte from expr8.  expr8 is used as a String, expr1 as a
+-Number.  Note that this doesn't recognize multi-byte encodings.
++Number.  This doesn't recognize multi-byte encodings, see |byteidx()| for
++an alternative.
+ 
+ Index zero gives the first character.  This is like it works in C.  Careful:
+ text column numbers start with one!  Example, to get the character under the
+@@ -878,8 +879,8 @@
+ 
+ If expr8 is a Number or String this results in the substring with the bytes
+ from expr1a to and including expr1b.  expr8 is used as a String, expr1a and
+-expr1b are used as a Number.  Note that this doesn't recognize multi-byte
+-encodings.
++expr1b are used as a Number.  This doesn't recognize multi-byte encodings, see
++|byteidx()| for computing the indexes.
+ 
+ If expr1a is omitted zero is used.  If expr1b is omitted the length of the
+ string minus one is used.
+@@ -895,7 +896,8 @@
+ 	:let c = name[-2:-2]		" last but one byte of a string
+ 	:let s = line(".")[4:]		" from the fifth byte to the end
+ 	:let s = s[:-3]			" remove last two bytes
+-
++<
++							*sublist* *slice*
+ If expr8 is a |List| this results in a new |List| with the items indicated by
+ the indexes expr1a and expr1b.	This works like with a String, as explained
+ just above, except that indexes out of range cause an error.  Examples: >
+@@ -1018,7 +1020,9 @@
+ \t	tab <Tab>
+ \\	backslash
+ \"	double quote
+-\<xxx>	Special key named "xxx".  e.g. "\<C-W>" for CTRL-W.
++\<xxx>	Special key named "xxx".  e.g. "\<C-W>" for CTRL-W.  This is for use
++	in mappings, the 0x80 byte is escaped.  Don't use <Char-xxxx> to get a
++	utf-8 character, use \uxxxx as mentioned above.
+ 
+ Note that "\xff" is stored as the byte 255, which may be invalid in some
+ encodings.  Use "\u00ff" to store character 255 according to the current value
+@@ -1190,6 +1194,7 @@
+ Thus not in:
+ - other scripts sourced from this one
+ - mappings
++- menus
+ - etc.
+ 
+ Script variables can be used to avoid conflicts with global variable names.
+@@ -1280,7 +1285,8 @@
+ 		valid while evaluating the 'balloonexpr' option.
+ 
+ 					*v:char* *char-variable*
+-v:char		Argument for evaluating 'formatexpr'.
++v:char		Argument for evaluating 'formatexpr' and used for the typed
++		character when using <expr> in an abbreviation |:map-<expr>|.
+ 
+ 			*v:charconvert_from* *charconvert_from-variable*
+ v:charconvert_from
+@@ -1317,6 +1323,8 @@
+ 	:map _x :<C-U>echo "the count is " . v:count<CR>
+ <		Note: The <C-U> is required to remove the line range that you
+ 		get when typing ':' after a count.
++		When there are two counts, as in "3d2w", they are multiplied,
++		just like what happens in the command, "d6w" for the example.
+ 		Also used for evaluating the 'formatexpr' option.
+ 		"count" also works, for backwards compatibility.
+ 
+@@ -1340,7 +1348,9 @@
+ 		terminate normally. {only works on Unix}
+ 		Example: >
+ 	:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
+-<
++<		Note: if another deadly signal is caught when v:dying is one,
++		VimLeave autocommands will not be executed.
++
+ 					*v:errmsg* *errmsg-variable*
+ v:errmsg	Last given error message.  It's allowed to set this variable.
+ 		Example: >
+@@ -1652,6 +1662,7 @@
+ USAGE				RESULT	DESCRIPTION	~
+ 
+ abs( {expr})			Float or Number  absolute value of {expr}
++acos( {expr})			Float	arc cosine of {expr}
+ add( {list}, {item})		List	append {item} to |List| {list}
+ append( {lnum}, {string})	Number	append {string} below line {lnum}
+ append( {lnum}, {list})		Number	append lines {list} below line {lnum}
+@@ -1659,7 +1670,9 @@
+ argidx()			Number	current index in the argument list
+ argv( {nr})			String	{nr} entry of the argument list
+ argv( )				List	the argument list
++asin( {expr})			Float	arc sine of {expr}
+ atan( {expr})			Float	arc tangent of {expr}
++atan2( {expr}, {expr})		Float   arc tangent of {expr1} / {expr2}
+ browse( {save}, {title}, {initdir}, {default})
+ 				String	put up a file requester
+ browsedir( {title}, {initdir})	String	put up a directory requester
+@@ -1677,15 +1690,16 @@
+ changenr()			Number	current change number
+ char2nr( {expr})		Number	ASCII value of first char in {expr}
+ cindent( {lnum})		Number	C indent for line {lnum}
+-clearmatches()			None	clear all matches
++clearmatches()			none	clear all matches
+ col( {expr})			Number	column nr of cursor or mark
+-complete({startcol}, {matches})	String	set Insert mode completion
++complete( {startcol}, {matches}) none	set Insert mode completion
+ complete_add( {expr})		Number	add completion match
+ complete_check()		Number	check for key typed during completion
+ confirm( {msg} [, {choices} [, {default} [, {type}]]])
+ 				Number	number of choice picked by user
+ copy( {expr})			any	make a shallow copy of {expr}
+ cos( {expr})			Float	cosine of {expr}
++cosh( {expr})			Float	hyperbolic cosine of {expr}
+ count( {list}, {expr} [, {start} [, {ic}]])
+ 				Number	 count how many {expr} are in {list}
+ cscope_connection( [{num} , {dbpath} [, {prepend}]])
+@@ -1704,8 +1718,9 @@
+ eventhandler( )			Number	TRUE if inside an event handler
+ executable( {expr})		Number	1 if executable {expr} exists
+ exists( {expr})			Number	TRUE if {expr} exists
+-extend({expr1}, {expr2} [, {expr3}])
++extend( {expr1}, {expr2} [, {expr3}])
+ 				List/Dict insert items of {expr2} into {expr1}
++exp( {expr})			Float	exponential of {expr}
+ expand( {expr} [, {flag}])	String	expand special keywords in {expr}
+ feedkeys( {string} [, {mode}])	Number	add key sequence to typeahead buffer
+ filereadable( {file})		Number	TRUE if {file} is a readable file
+@@ -1718,6 +1733,7 @@
+ 				String	find file {name} in {path}
+ float2nr( {expr})		Number	convert Float {expr} to a Number
+ floor( {expr})			Float	round {expr} down
++fmod( {expr1}, {expr2})		Float	remainder of {expr1} / {expr2}
+ fnameescape( {fname})		String	escape special characters in {fname}
+ fnamemodify( {fname}, {mods})	String	modify file name
+ foldclosed( {lnum})		Number	first line of fold at {lnum} if closed
+@@ -1746,13 +1762,14 @@
+ getftype( {fname})		String	description of type of file {fname}
+ getline( {lnum})		String	line {lnum} of current buffer
+ getline( {lnum}, {end})		List	lines {lnum} to {end} of current buffer
+-getloclist({nr})		List	list of location list items
++getloclist( {nr})		List	list of location list items
+ getmatches()			List	list of current matches
+ getpid()			Number	process ID of Vim
+ getpos( {expr})			List	position of cursor, mark, etc.
+ getqflist()			List	list of quickfix items
+ getreg( [{regname} [, 1]])	String	contents of register
+ getregtype( [{regname}])	String	type of register
++gettabvar( {nr}, {varname})	any	variable {varname} in tab {nr}
+ gettabwinvar( {tabnr}, {winnr}, {name})
+ 				any	{name} in {winnr} in tab page {tabnr}
+ getwinposx()			Number	X coord in pixels of GUI Vim window
+@@ -1797,6 +1814,7 @@
+ line2byte( {lnum})		Number	byte count of line {lnum}
+ lispindent( {lnum})		Number	Lisp indent for line {lnum}
+ localtime()			Number	current time
++log( {expr})			Float	natural logarithm (base e) of {expr}
+ log10( {expr})			Float	logarithm of Float {expr} to base 10
+ map( {expr}, {string})		List/Dict  change each item in {expr} to {expr}
+ maparg( {name}[, {mode} [, {abbr}]])
+@@ -1830,7 +1848,7 @@
+ pumvisible()			Number	whether popup menu is visible
+ range( {expr} [, {max} [, {stride}]])
+ 				List	items from {expr} to {max}
+-readfile({fname} [, {binary} [, {max}]])
++readfile( {fname} [, {binary} [, {max}]])
+ 				List	get list of lines from file {fname}
+ reltime( [{start} [, {end}]])	List	get time value
+ reltimestr( {time})		String	turn time value into a String
+@@ -1851,7 +1869,7 @@
+ round( {expr})			Float	round off {expr}
+ search( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
+ 				Number	search for {pattern}
+-searchdecl({name} [, {global} [, {thisblock}]])
++searchdecl( {name} [, {global} [, {thisblock}]])
+ 				Number	search for variable declaration
+ searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
+ 				Number	search for other end of start/end pair
+@@ -1868,9 +1886,10 @@
+ setloclist( {nr}, {list}[, {action}])
+ 				Number	modify location list using {list}
+ setmatches( {list})		Number	restore a list of matches
+-setpos( {expr}, {list})		none	set the {expr} position to {list}
++setpos( {expr}, {list})		Number	set the {expr} position to {list}
+ setqflist( {list}[, {action}])	Number	modify quickfix list using {list}
+ setreg( {n}, {v}[, {opt}])	Number	set register to value and type
++settabvar( {nr}, {varname}, {val})	set {varname} in tab page {nr} to {val}
+ settabwinvar( {tabnr}, {winnr}, {varname}, {val})    set {varname} in window
+ 					{winnr} in tab page {tabnr} to {val}
+ setwinvar( {nr}, {varname}, {val})	set {varname} in window {nr} to {val}
+@@ -1879,6 +1898,7 @@
+ 					command argument
+ simplify( {filename})		String	simplify filename as much as possible
+ sin( {expr})			Float	sine of {expr}
++sinh( {expr})			Float	hyperbolic sine of {expr}
+ sort( {list} [, {func}])	List	sort {list}, using {func} to compare
+ soundfold( {word})		String	sound-fold {word}
+ spellbadword()			String	badly spelled word at cursor
+@@ -1906,7 +1926,7 @@
+ synIDattr( {synID}, {what} [, {mode}])
+ 				String	attribute {what} of syntax ID {synID}
+ synIDtrans( {synID})		Number	translated syntax ID of {synID}
+-synstack({lnum}, {col})		List	stack of syntax IDs at {lnum} and {col}
++synstack( {lnum}, {col})	List	stack of syntax IDs at {lnum} and {col}
+ system( {expr} [, {input}])	String	output of shell command/filter {expr}
+ tabpagebuflist( [{arg}])	List	list of buffer numbers in tab page
+ tabpagenr( [{arg}])		Number	number of current or last tab page
+@@ -1915,12 +1935,16 @@
+ taglist( {expr})		List	list of tags matching {expr}
+ tagfiles()			List	tags files used
+ tempname()			String	name for a temporary file
++tan( {expr})			Float	tangent of {expr}
++tanh( {expr})			Float	hyperbolic tangent of {expr}
+ tolower( {expr})		String	the String {expr} switched to lowercase
+ toupper( {expr})		String	the String {expr} switched to uppercase
+ tr( {src}, {fromstr}, {tostr})	String	translate chars of {src} in {fromstr}
+ 					to chars in {tostr}
+ trunc( {expr}			Float	truncate Float {expr}
+ type( {name})			Number	type of variable {name}
++undofile( {name})		String	undo file name for {name}
++undotree()			List	undo file tree
+ values( {dict})			List	values in {dict}
+ virtcol( {expr})		Number	screen column of cursor or mark
+ visualmode( [expr])		String	last visual mode used
+@@ -1930,10 +1954,10 @@
+ winline()			Number	window line of the cursor
+ winnr( [{expr}])		Number	number of current window
+ winrestcmd()			String	returns command to restore window sizes
+-winrestview({dict})		None	restore view of current window
++winrestview( {dict})		none	restore view of current window
+ winsaveview()			Dict	save view of current window
+ winwidth( {nr})			Number	width of window {nr}
+-writefile({list}, {fname} [, {binary}])
++writefile( {list}, {fname} [, {binary}])
+ 				Number	write list of lines to file {fname}
+ 
+ abs({expr})							*abs()*
+@@ -1950,6 +1974,20 @@
+ <			4
+ 		{only available when compiled with the |+float| feature}
+ 
++
++acos({expr})							*acos()*
++		Return the arc cosine of {expr} measured in radians, as a
++		|Float|in the range of [0, pi].
++		{expr} must evaluate to a|Float|or a|Number|in the range
++		[-1, 1].
++		Examples: >
++			:echo acos(0)
++<			1.570796 >
++			:echo acos(-0.5)
++<			2.094395
++		{only available when compiled with|+float|}
++
++
+ add({list}, {expr})					*add()*
+ 		Append the item {expr} to |List| {list}.  Returns the
+ 		resulting |List|.  Examples: >
+@@ -1992,6 +2030,19 @@
+ <		Without the {nr} argument a |List| with the whole |arglist| is
+ 		returned.
+ 
++asin({expr})						*asin()*
++		Return the arc sine of {expr} measured in radians, as a|Float|
++		in the range of [-pi/2, pi/2].
++		{expr} must evaluate to a|Float|or a|Number|in the range
++		[-1, 1].
++		Examples: >
++			:echo asin(0.8)
++<			0.927295 >
++			:echo asin(-0.5)
++<			-0.523599
++		{only available when compiled with|+float|}
++
++
+ atan({expr})						*atan()*
+ 		Return the principal value of the arc tangent of {expr}, in
+ 		the range [-pi/2, +pi/2] radians, as a |Float|.
+@@ -2003,6 +2054,19 @@
+ <			-1.326405
+ 		{only available when compiled with the |+float| feature}
+ 
++
++atan2({expr1}, {expr2})					*atan2()*
++		Return the arc tangent of {expr1} / {expr2}, measured in
++		radians, as a|Float|in the range [-pi, pi].
++		{expr1} and {expr2} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo atan2(-1, 1)
++<			-0.785398 >
++			:echo atan2(1, -1)
++<			2.356194
++		{only available when compiled with|+float|}
++
++
+ 							*browse()*
+ browse({save}, {title}, {initdir}, {default})
+ 		Put up a file requester.  This only works when "has("browse")"
+@@ -2246,7 +2310,7 @@
+ 		{matches} must be a |List|.  Each |List| item is one match.
+ 		See |complete-items| for the kind of items that are possible.
+ 		Note that the after calling this function you need to avoid
+-		inserting anything that would completion to stop.
++		inserting anything that would cause completion to stop.
+ 		The match can be selected with CTRL-N and CTRL-P as usual with
+ 		Insert mode completion.  The popup menu will appear if
+ 		specified, see |ins-completion-menu|.
+@@ -2286,11 +2350,13 @@
+ 		choice this is 1.
+ 		Note: confirm() is only supported when compiled with dialog
+ 		support, see |+dialog_con| and |+dialog_gui|.
++
+ 		{msg} is displayed in a |dialog| with {choices} as the
+ 		alternatives.  When {choices} is missing or empty, "&OK" is
+ 		used (and translated).
+ 		{msg} is a String, use '\n' to include a newline.  Only on
+ 		some systems the string is wrapped when it doesn't fit.
++
+ 		{choices} is a String, with the individual choices separated
+ 		by '\n', e.g. >
+ 			confirm("Save changes?", "&Yes\n&No\n&Cancel")
+@@ -2300,15 +2366,18 @@
+ 			confirm("file has been modified", "&Save\nSave &All")
+ <		For the console, the first letter of each choice is used as
+ 		the default shortcut key.
++
+ 		The optional {default} argument is the number of the choice
+ 		that is made if the user hits <CR>.  Use 1 to make the first
+ 		choice the default one.  Use 0 to not set a default.  If
+ 		{default} is omitted, 1 is used.
+-		The optional {type} argument gives the type of dialog.	This
+-		is only used for the icon of the Win32 GUI.  It can be one of
+-		these values: "Error", "Question", "Info", "Warning" or
+-		"Generic".  Only the first character is relevant.  When {type}
+-		is omitted, "Generic" is used.
++
++		The optional {type} argument gives the type of dialog.  This
++		is only used for the icon of the GTK, Mac, Motif and Win32
++		GUI.  It can be one of these values: "Error", "Question",
++		"Info", "Warning" or "Generic".  Only the first character is
++		relevant.  When {type} is omitted, "Generic" is used.
++
+ 		If the user aborts the dialog by pressing <Esc>, CTRL-C,
+ 		or another valid interrupt key, confirm() returns 0.
+ 
+@@ -2347,6 +2416,18 @@
+ <			-0.646043
+ 		{only available when compiled with the |+float| feature}
+ 
++
++cosh({expr})						*cosh()*
++		Return the hyperbolic cosine of {expr} as a|Float|in the range
++		[1, inf].
++		{expr} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo cosh(0.5)
++<			1.127626 >
++			:echo cosh(-0.5)
++<			-1.127626
++		{only available when compiled with|+float|}
++
+ 		
+ count({comp}, {expr} [, {ic} [, {start}]])			*count()*
+ 		Return the number of times an item with value {expr} appears
+@@ -2478,7 +2559,7 @@
+ 		Return the Number 1 if {expr} is empty, zero otherwise.
+ 		A |List| or |Dictionary| is empty when it does not have any
+ 		items.	A Number is empty when its value is zero.
+-		For a long |List| this is much faster then comparing the
++		For a long |List| this is much faster than comparing the
+ 		length with zero.
+ 
+ escape({string}, {chars})				*escape()*
+@@ -2607,6 +2688,18 @@
+ <		This doesn't check for existence of the "bufcount" variable,
+ 		but gets the value of "bufcount", and checks if that exists.
+ 
++exp({expr})						*exp()*
++		Return the exponential of {expr} as a|Float|in the range
++		[0, inf].
++		{expr} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo exp(2)
++<			7.389056 >
++			:echo exp(-1)
++<			0.367879
++		{only available when compiled with|+float|}
++
++
+ expand({expr} [, {flag}])				*expand()*
+ 		Expand wildcards and the following special keywords in {expr}.
+ 		The result is a String.
+@@ -2839,6 +2932,23 @@
+ <			4.0
+ 		{only available when compiled with the |+float| feature}
+ 		
++
++fmod({expr1}, {expr2})					*fmod()*
++		Return the remainder of {expr1} / {expr2}, even if the
++		division is not representable.  Returns {expr1} - i * {expr2}
++		for some integer i such that if {expr2} is non-zero, the
++		result has the same sign as {expr1} and magnitude less than
++		the magnitude of {expr2}.  If {expr2} is zero, the value
++		returned is zero.  The value returned is a|Float|.
++		{expr1} and {expr2} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo fmod(12.33, 1.22)
++<			0.13 >
++			:echo fmod(-12.33, 1.22)
++<			-0.13
++		{only available when compiled with|+float|}
++
++
+ fnameescape({string})					*fnameescape()*
+ 		Escape {string} for use as file name command argument.	All
+ 		characters that have a special meaning, such as '%' and '|'
+@@ -3054,7 +3164,7 @@
+ 			128	Macintosh only: command
+ 		Only the modifiers that have not been included in the
+ 		character itself are obtained.	Thus Shift-a results in "A"
+-		with no modifier.
++		without a modifier.
+ 
+ getcmdline()						*getcmdline()*
+ 		Return the current command-line.  Only works when the command
+@@ -3182,7 +3292,7 @@
+ 		window {nr}. When {nr} is zero the current window is used.
+ 		For a location list window, the displayed location list is
+ 		returned.  For an invalid window number {nr}, an empty list is
+-		returned. Otherwise, same as getqflist().
++		returned. Otherwise, same as |getqflist()|.
+ 
+ getmatches()						*getmatches()*
+ 		Returns a |List| with all matches previously defined by
+@@ -3255,6 +3365,12 @@
+ 		<CTRL-V> is one character with value 0x16.
+ 		If {regname} is not specified, |v:register| is used.
+ 
++gettabvar({tabnr}, {varname})				*gettabvar()*
++		Get the value of a tab-local variable {varname} in tab page
++		{tabnr}. |t:var|
++		Tabs are numbered starting with one.
++		Note that the name without "t:" must be used.
++
+ gettabwinvar({tabnr}, {winnr}, {varname})		*gettabwinvar()*
+ 		Get the value of window-local variable {varname} in window
+ 		{winnr} in tab page {tabnr}.
+@@ -3479,7 +3595,9 @@
+ iconv({expr}, {from}, {to})				*iconv()*
+ 		The result is a String, which is the text {expr} converted
+ 		from encoding {from} to encoding {to}.
+-		When the conversion fails an empty string is returned.
++		When the conversion completely fails an empty string is
++		returned.  When some characters could not be converted they
++		are replaced with "?".
+ 		The encoding names are whatever the iconv() library function
+ 		can accept, see ":!man 3 iconv".
+ 		Most conversions require Vim to be compiled with the |+iconv|
+@@ -3504,7 +3622,10 @@
+ 
+ index({list}, {expr} [, {start} [, {ic}]])			*index()*
+ 		Return the lowest index in |List| {list} where the item has a
+-		value equal to {expr}.
++		value equal to {expr}.  There is no automatic conversion, so
++		the String "4" is different from the Number 4.  And the number
++		4 is different from the Float 4.0.  The value of 'ignorecase'
++		is not used here, case always matters.
+ 		If {start} is given then start looking at the item with index
+ 		{start} (may be negative for an item relative to the end).
+ 		When {ic} is given and it is non-zero, ignore case.  Otherwise
+@@ -3517,9 +3638,9 @@
+ 
+ input({prompt} [, {text} [, {completion}]])		*input()*
+ 		The result is a String, which is whatever the user typed on
+-		the command-line.  The parameter is either a prompt string, or
+-		a blank string (for no prompt).  A '\n' can be used in the
+-		prompt to start a new line.
++		the command-line.  The {prompt} argument is either a prompt
++		string, or a blank string (for no prompt).  A '\n' can be used
++		in the prompt to start a new line.
+ 		The highlighting set with |:echohl| is used for the prompt.
+ 		The input is entered just like a command-line, with the same
+ 		editing commands and mappings.	There is a separate history
+@@ -3529,8 +3650,9 @@
+ 			:  echo "Cheers!"
+ 			:endif
+ <
+-		If the optional {text} is present and not empty, this is used
+-		for the default reply, as if the user typed this.  Example: >
++		If the optional {text} argument is present and not empty, this
++		is used for the default reply, as if the user typed this.
++		Example: >
+ 			:let color = input("Color? ", "white")
+ 
+ <		The optional {completion} argument specifies the type of
+@@ -3560,8 +3682,8 @@
+ 			:endfunction
+ 
+ inputdialog({prompt} [, {text} [, {cancelreturn}]])		*inputdialog()*
+-		Like input(), but when the GUI is running and text dialogs are
+-		supported, a dialog window pops up to input the text.
++		Like |input()|, but when the GUI is running and text dialogs
++		are supported, a dialog window pops up to input the text.
+ 		Example: >
+ 			:let n = inputdialog("value for shiftwidth", &sw)
+ 			:if n != ""
+@@ -3582,7 +3704,7 @@
+ 		above the first item a negative number is returned.  When
+ 		clicking on the prompt one more than the length of {textlist}
+ 		is returned.
+-		Make sure {textlist} has less then 'lines' entries, otherwise
++		Make sure {textlist} has less than 'lines' entries, otherwise
+ 		it won't work.	It's a good idea to put the entry number at
+ 		the start of the string.  And put a prompt in the first item.
+ 		Example: >
+@@ -3590,7 +3712,7 @@
+ 				\ '2. green', '3. blue'])
+ 
+ inputrestore()						*inputrestore()*
+-		Restore typeahead that was saved with a previous inputsave().
++		Restore typeahead that was saved with a previous |inputsave()|.
+ 		Should be called the same number of times inputsave() is
+ 		called.  Calling it more often is harmless though.
+ 		Returns 1 when there is nothing to restore, 0 otherwise.
+@@ -3720,14 +3842,14 @@
+ 		the DLL is not in the usual places.
+ 		For Unix: When compiling your own plugins, remember that the
+ 		object code must be compiled as position-independent ('PIC').
+-		{only in Win32 on some Unix versions, when the |+libcall|
++		{only in Win32 and some Unix versions, when the |+libcall|
+ 		feature is present}
+ 		Examples: >
+ 			:echo libcall("libc.so", "getenv", "HOME")
+ <
+ 							*libcallnr()*
+ libcallnr({libname}, {funcname}, {argument})
+-		Just like libcall(), but used for a function that returns an
++		Just like |libcall()|, but used for a function that returns an
+ 		int instead of a string.
+ 		{only in Win32 on some Unix versions, when the |+libcall|
+ 		feature is present}
+@@ -3760,7 +3882,7 @@
+ <							*last-position-jump*
+ 		This autocommand jumps to the last known position in a file
+ 		just after opening it, if the '" mark is set: >
+-	:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
++	:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
+ 
+ line2byte({lnum})					*line2byte()*
+ 		Return the byte count from the start of the buffer for line
+@@ -3788,6 +3910,18 @@
+ 		1970.  See also |strftime()| and |getftime()|.
+ 
+ 
++log({expr})						*log()*
++		Return the natural logarithm (base e) of {expr} as a|Float|.
++		{expr} must evaluate to a|Float|or a|Number|in the range
++		(0, inf].
++		Examples: >
++			:echo log(10)
++<			2.302585 >
++			:echo log(exp(5))
++<			5.0
++		{only available when compiled with|+float|}
++
++
+ log10({expr})						*log10()*
+ 		Return the logarithm of Float {expr} to base 10 as a |Float|.
+ 		{expr} must evaluate to a |Float| or a |Number|.
+@@ -3991,8 +4125,8 @@
+ 		be deleted in one operation by |clearmatches()|.
+ 
+ matchend({expr}, {pat}[, {start}[, {count}]])			*matchend()*
+-		Same as match(), but return the index of first character after
+-		the match.  Example: >
++		Same as |match()|, but return the index of first character
++		after the match.  Example: >
+ 			:echo matchend("testing", "ing")
+ <		results in "7".
+ 							*strspn()* *strcspn()*
+@@ -4002,15 +4136,15 @@
+ 			:let span = matchend(line, '[^a-zA-Z]')
+ <		Except that -1 is returned when there are no matches.
+ 
+-		The {start}, if given, has the same meaning as for match(). >
++		The {start}, if given, has the same meaning as for |match()|. >
+ 			:echo matchend("testing", "ing", 2)
+ <		results in "7". >
+ 			:echo matchend("testing", "ing", 5)
+ <		result is "-1".
+-		When {expr} is a |List| the result is equal to match().
++		When {expr} is a |List| the result is equal to |match()|.
+ 
+ matchlist({expr}, {pat}[, {start}[, {count}]])			*matchlist()*
+-		Same as match(), but return a |List|.  The first item in the
++		Same as |match()|, but return a |List|.  The first item in the
+ 		list is the matched string, same as what matchstr() would
+ 		return.  Following items are submatches, like "\1", "\2", etc.
+ 		in |:substitute|.  When an optional submatch didn't match an
+@@ -4024,7 +4158,7 @@
+ 			:echo matchstr("testing", "ing")
+ <		results in "ing".
+ 		When there is no match "" is returned.
+-		The {start}, if given, has the same meaning as for match(). >
++		The {start}, if given, has the same meaning as for |match()|. >
+ 			:echo matchstr("testing", "ing", 2)
+ <		results in "ing". >
+ 			:echo matchstr("testing", "ing", 5)
+@@ -4515,9 +4649,9 @@
+ <
+ remove({list}, {idx} [, {end}])				*remove()*
+ 		Without {end}: Remove the item at {idx} from |List| {list} and
+-		return it.
++		return the item.
+ 		With {end}: Remove items from {idx} to {end} (inclusive) and
+-		return a list with these items.  When {idx} points to the same
++		return a List with these items.  When {idx} points to the same
+ 		item as {end} a list with one item is returned.  When {end}
+ 		points to an item before {idx} this is an error.
+ 		See |list-index| for possible values of {idx} and {end}.
+@@ -4768,7 +4902,7 @@
+ 							*searchpairpos()*
+ searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
+ 				[, {stopline} [, {timeout}]]]])
+-		Same as searchpair(), but returns a |List| with the line and
++		Same as |searchpair()|, but returns a |List| with the line and
+ 		column position of the match. The first element of the |List|
+ 		is the line number and the second element is the byte index of
+ 		the column position of the match.  If no match is found,
+@@ -4888,7 +5022,8 @@
+ 		Does not change the jumplist.
+ 
+ 		"lnum" and "col" are the position in the buffer.  The first
+-		column is 1.  Use a zero "lnum" to delete a mark.
++		column is 1.  Use a zero "lnum" to delete a mark.  If "col" is
++		smaller than 1 then 1 is used.
+ 
+ 		The "off" number is only used when 'virtualedit' is set. Then
+ 		it is the offset in screen columns from the start of the
+@@ -4931,6 +5066,8 @@
+ 		item will not be handled as an error line.
+ 		If both "pattern" and "lnum" are present then "pattern" will
+ 		be used.
++		If you supply an empty {list}, the quickfix list will be
++		cleared.
+ 		Note that the list is not exactly the same as what
+ 		|getqflist()| returns.
+ 
+@@ -4983,6 +5120,15 @@
+ 		nothing: >
+ 			:call setreg('a', '', 'al')
+ 
++settabvar({tabnr}, {varname}, {val})			*settabvar()*
++		Set tab-local variable {varname} to {val} in tab page {tabnr}.
++		|t:var|
++		Note that the variable name without "t:" must be used.
++		Tabs are numbered starting with one.
++		Vim briefly goes to the tab page {tabnr}, this may trigger
++		TabLeave and TabEnter autocommands.
++		This function is not available in the |sandbox|.
++
+ settabwinvar({tabnr}, {winnr}, {varname}, {val})	*settabwinvar()*
+ 		Set option or local variable {varname} in window {winnr} to
+ 		{val}.
+@@ -5007,7 +5153,7 @@
+ 			:call setwinvar(2, "myvar", "foobar")
+ 
+ shellescape({string} [, {special}])			*shellescape()*
+-		Escape {string} for use as shell command argument.
++		Escape {string} for use as a shell command argument.
+ 		On MS-Windows and MS-DOS, when 'shellslash' is not set, it
+ 		will enclose {string} in double quotes and double all double
+ 		quotes within {string}.
+@@ -5059,6 +5205,18 @@
+ 		{only available when compiled with the |+float| feature}
+ 		
+ 
++sinh({expr})						*sinh()*
++		Return the hyperbolic sine of {expr} as a|Float|in the range
++		[-inf, inf].
++		{expr} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo sinh(0.5)
++<			0.521095 >
++			:echo sinh(-0.9)
++<			-1.026517
++		{only available when compiled with|+float|}
++
++
+ sort({list} [, {func}])					*sort()* *E702*
+ 		Sort the items in {list} in-place.  Returns {list}.  If you
+ 		want a list to remain unmodified make a copy first: >
+@@ -5069,15 +5227,20 @@
+ 		When {func} is given and it is one then case is ignored.
+ 		When {func} is a |Funcref| or a function name, this function
+ 		is called to compare items.  The function is invoked with two
+-		items as argument and must return zero if they are equal, 1 if
+-		the first one sorts after the second one, -1 if the first one
+-		sorts before the second one.  Example: >
++		items as argument and must return zero if they are equal, 1 or
++		bigger if the first one sorts after the second one, -1 or
++		smaller if the first one sorts before the second one.
++		Example: >
+ 			func MyCompare(i1, i2)
+ 			   return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
+ 			endfunc
+ 			let sortedlist = sort(mylist, "MyCompare")
++<		A shorter compare version for this specific simple case, which
++		ignores overflow: >
++			func MyCompare(i1, i2)
++			   return a:i1 - a:i2
++			endfunc
+ <
+-
+ 							*soundfold()*
+ soundfold({word})
+ 		Return the sound-folded equivalent of {word}.  Uses the first
+@@ -5408,6 +5571,10 @@
+ 			for id in synstack(line("."), col("."))
+ 			   echo synIDattr(id, "name")
+ 			endfor
++<		When the position specified with {lnum} and {col} is invalid
++		nothing is returned.  The position just after the last
++		character in a line and the first column in an empty line are
++		valid positions.
+ 
+ system({expr} [, {input}])				*system()* *E677*
+ 		Get the output of the shell command {expr}.
+@@ -5529,13 +5696,35 @@
+ 		is different for at least 26 consecutive calls.  Example: >
+ 			:let tmpfile = tempname()
+ 			:exe "redir > " . tmpfile
+-<		For Unix, the file will be in a private directory (only
+-		accessible by the current user) to avoid security problems
+-		(e.g., a symlink attack or other people reading your file).
+-		When Vim exits the directory and all files in it are deleted.
++<		For Unix, the file will be in a private directory |tempfile|.
+ 		For MS-Windows forward slashes are used when the 'shellslash'
+ 		option is set or when 'shellcmdflag' starts with '-'.
+ 
++
++tan({expr})						*tan()*
++		Return the tangent of {expr}, measured in radians, as a|Float|
++		in the range [-inf, inf].
++		{expr} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo tan(10)
++<			0.648361 >
++			:echo tan(-4.01)
++<			-1.181502
++		{only available when compiled with|+float|}
++
++
++tanh({expr})						*tanh()*
++		Return the hyperbolic tangent of {expr} as a|Float|in the
++		range [-1, 1].
++		{expr} must evaluate to a|Float|or a|Number|.
++		Examples: >
++			:echo tanh(0.5)
++<			0.462117 >
++			:echo tanh(-1)
++<			-0.761594
++		{only available when compiled with|+float|}
++
++
+ tolower({expr})						*tolower()*
+ 		The result is a copy of the String given, with all uppercase
+ 		characters turned into lowercase (just like applying |gu| to
+@@ -5589,6 +5778,60 @@
+ 			:if type(myvar) == type({})
+ 			:if type(myvar) == type(0.0)
+ 
++undofile({name})					*undofile()*
++		Return the name of the undo file that would be used for a file
++		with name {name} when writing.  This uses the 'undodir'
++		option, finding directories that exist.  It does not check if
++		the undo file exists.
++		{name} is always expanded to the full path, since that is what
++		is used internally.
++		Useful in combination with |:wundo| and |:rundo|.
++		When compiled without the +persistent_undo option this always
++		returns an empty string.
++
++undotree()						*undotree()*
++		Return the current state of the undo tree in a dictionary with
++		the following items:
++		  "seq_last"	The highest undo sequence number used.
++		  "seq_cur"	The sequence number of the current position in
++				the undo tree.  This differs from "seq_last"
++				when some changes were undone.
++		  "time_cur"	Time last used for |:earlier| and related
++				commands.  Use |strftime()| to convert to
++				something readable.
++		  "save_last"	Number of the last file write.  Zero when no
++				write yet.
++		  "save_cur"	Number of the current position in the undo
++				tree.  
++		  "synced"	Non-zero when the last undo block was synced.
++				This happens when waiting from input from the
++				user.  See |undo-blocks|.
++		  "entries"	A list of dictionaries with information about
++				undo blocks.
++
++		The first item in the "entries" list is the oldest undo item.
++		Each List item is a Dictionary with these items:
++		  "seq"		Undo sequence number.  Same as what appears in
++				|:undolist|.
++		  "time"	Timestamp when the change happened.  Use
++				|strftime()| to convert to something readable.
++		  "newhead"	Only appears in the item that is the last one
++				that was added.  This marks the last change
++				and where further changes will be added.
++		  "curhead"	Only appears in the item that is the last one
++				that was undone.  This marks the current
++				position in the undo tree, the block that will
++				be used by a redo command.  When nothing was
++				undone after the last change this item will
++				not appear anywhere.
++		  "save"	Only appears on the last block before a file
++				write.  The number is the write count.  The
++				first write has number 1, the last one the
++				"save_last" mentioned above.
++		  "alt"		Alternate entry.  This is again a List of undo
++				blocks.  Each item may again have an "alt"
++				item.
++
+ values({dict})						*values()*
+ 		Return a |List| with all the values of {dict}.	The |List| is
+ 		in arbitrary order.
+@@ -5871,12 +6114,13 @@
+ multi_lang		Compiled with support for multiple languages.
+ mzscheme		Compiled with MzScheme interface |mzscheme|.
+ netbeans_intg		Compiled with support for |netbeans|.
+-netbeans_enabled	Compiled with support for |netbeans| and it's used.
++netbeans_enabled	Compiled with support for |netbeans| and connected.
+ ole			Compiled with OLE automation support for Win32.
+ os2			OS/2 version of Vim.
+ osfiletype		Compiled with support for osfiletypes |+osfiletype|
+ path_extra		Compiled with up/downwards search in 'path' and 'tags'
+ perl			Compiled with Perl interface.
++persistent_undo		Compiled with support for persistent undo history.
+ postscript		Compiled with PostScript file printing.
+ printer			Compiled with |:hardcopy| support.
+ profile			Compiled with |:profile| support.
+@@ -6596,15 +6840,19 @@
+ 			removed without effect.  Removing any later item means
+ 			it will not be found.  Thus the following example
+ 			works (an inefficient way to make a list empty): >
+-				:for item in mylist
+-				   :call remove(mylist, 0)
+-				:endfor
++				for item in mylist
++				   call remove(mylist, 0)
++				endfor
+ <			Note that reordering the list (e.g., with sort() or
+ 			reverse()) may have unexpected effects.
+ 			Note that the type of each list item should be
+ 			identical to avoid errors for the type of {var}
+ 			changing.  Unlet the variable at the end of the loop
+-			to allow multiple item types.
++			to allow multiple item types: >
++				for item in ["foo", ["bar"]]
++				   echo item
++				   unlet item  " E706 without this
++				endfor
+ 
+ :for [{var1}, {var2}, ...] in {listlist}
+ :endfo[r]
+@@ -6673,7 +6921,7 @@
+ 		:try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
+ <
+ 					*:cat* *:catch* *E603* *E604* *E605*
+-:cat[ch] /{pattern}/	The following commands until the next ":catch",
++:cat[ch] /{pattern}/	The following commands until the next |:catch|,
+ 			|:finally|, or |:endtry| that belongs to the same
+ 			|:try| as the ":catch" are executed when an exception
+ 			matching {pattern} is being thrown and has not yet
+@@ -6809,14 +7057,16 @@
+ <
+ 							*:exe* *:execute*
+ :exe[cute] {expr1} ..	Executes the string that results from the evaluation
+-			of {expr1} as an Ex command.  Multiple arguments are
+-			concatenated, with a space in between.	{expr1} is
+-			used as the processed command, command line editing
+-			keys are not recognized.
++			of {expr1} as an Ex command.
++			Multiple arguments are concatenated, with a space in
++			between.  To avoid the extra space use the "."
++			operator to concatenate strings into one argument.
++			{expr1} is used as the processed command, command line
++			editing keys are not recognized.
+ 			Cannot be followed by a comment.
+ 			Examples: >
+-		:execute "buffer " nextbuf
+-		:execute "normal " count . "w"
++		:execute "buffer" nextbuf
++		:execute "normal" count . "w"
+ <
+ 			":execute" can be used to append a command to commands
+ 			that don't accept a '|'.  Example: >
+@@ -6846,7 +7096,7 @@
+ 		:execute 'while i < 5 | echo i | let i = i + 1 | endwhile'
+ <
+ 
+-							*:comment*
++							*:exe-comment*
+ 			":execute", ":echo" and ":echon" cannot be followed by
+ 			a comment directly, because they see the '"' as the
+ 			start of a string.  But, you can use '|' followed by a
+@@ -7852,7 +8102,7 @@
+ 
+ Printing in Binary ~
+ >
+-  :" The function Nr2Bin() returns the Hex string of a number.
++  :" The function Nr2Bin() returns the binary string representation of a number.
+   :func Nr2Bin(nr)
+   :  let n = a:nr
+   :  let r = ""
+diff -Nur runtime/doc/eval.txt.~1~ runtime/doc/eval.txt.~1~
+diff -Nur runtime/doc/eval.txt.~2~ runtime/doc/eval.txt.~2~
+diff -Nur runtime/doc/eval.txt.~3~ runtime/doc/eval.txt.~3~
+diff -Nur runtime/doc/eval.txt.~4~ runtime/doc/eval.txt.~4~
+diff -Nur runtime/doc/eval.txt.~5~ runtime/doc/eval.txt.~5~
+diff -Nur runtime/doc/eval.txt.~6~ runtime/doc/eval.txt.~6~
+diff -Nur runtime/doc/eval.txt.~7~ runtime/doc/eval.txt.~7~
+diff -Nur runtime/doc/eval.txt.~8~ runtime/doc/eval.txt.~8~
+diff -Nur runtime/doc/eval.txt.~9~ runtime/doc/eval.txt.~9~
+diff -Nur runtime/doc/evim-pl.1 runtime/doc/evim-pl.1
+--- runtime/doc/evim-pl.1	2006-03-26 04:20:16.000000000 -0800
++++ runtime/doc/evim-pl.1	2011-01-18 10:40:55.552699252 -0800
+@@ -14,11 +14,11 @@
+ .B Vima
+ i ustawia opcje tak by zachowywa� si� jak edytor bez tryb�w.
+ To jest ca�y czas Vim ale u�ywany jako edytor wska�-i-kliknij.
+-Zachowanie w stlu Notepada dla MS-Windows.
++Zachowanie w stylu Notepada dla MS-Windows.
+ .B eVim
+ b�dzie zawsze uruchomiony w GUI by w��czy� menu i pasek narz�dzi.
+ .PP
+-Przeznaczony tylko dla ludzi, kt�rzy naprawd� nie potrafi� pracowa�
++Przeznaczony tylko dla ludzi, kt�rzy naprawd� nie mog� pracowa�
+ z Vimem w normalny spos�b. Edycja b�dzie o wiele mniej efektywna.
+ .PP
+ .B eview
+@@ -31,8 +31,8 @@
+ tekst.
+ .br
+ Mapowania s� ustawione tak by Kopiowanie i Wklejanie dzia�a�o
+-z klawiszami MS-Windows. CTRL-X wycina tekst, CTRL-C kopiuje
+-a CTRL-V wkleja. U�yj CTRL-Q by uzyska� oryginalne znaczenie
++z klawiszami MS-Windows. CTRL-X wycina, CTRL-C kopiuje a CTRL-V 
++wkleja tekst. U�yj CTRL-Q by uzyska� oryginalne przeznaczenie
+ CTRL-V.
+ .SH OPCJE
+ Zobacz vim(1).
+@@ -42,7 +42,7 @@
+ Skrypt uruchamiania dla eVima.
+ .SH ZNANY JAKO
+ Znany jako "Vim dla frajer�w".
+-Je�li u�ywasz evima oczekuje si�, �e wyjmiesz chusteczk� do nosa,
++Je�li u�ywasz eVima oczekuje si�, �e wyjmiesz chusteczk� do nosa,
+ zrobisz w�z� w ka�dym rogu i b�dziesz to nosi� na g�owie.
+ .SH ZOBACZ TAK�E
+ vim(1)
+diff -Nur runtime/doc/evim-pl.UTF-8.1 runtime/doc/evim-pl.UTF-8.1
+--- runtime/doc/evim-pl.UTF-8.1	2006-03-26 09:01:17.000000000 -0800
++++ runtime/doc/evim-pl.UTF-8.1	2011-01-18 10:40:55.560893799 -0800
+@@ -14,11 +14,11 @@
+ .B Vima
+ i ustawia opcje tak by zachowywał się jak edytor bez trybów.
+ To jest cały czas Vim ale używany jako edytor wskaż-i-kliknij.
+-Zachowanie w stlu Notepada dla MS-Windows.
++Zachowanie w stylu Notepada dla MS-Windows.
+ .B eVim
+ będzie zawsze uruchomiony w GUI by włączyć menu i pasek narzędzi.
+ .PP
+-Przeznaczony tylko dla ludzi, którzy naprawdę nie potrafią pracować
++Przeznaczony tylko dla ludzi, którzy naprawdę nie mogą pracować
+ z Vimem w normalny sposób. Edycja będzie o wiele mniej efektywna.
+ .PP
+ .B eview
+@@ -31,8 +31,8 @@
+ tekst.
+ .br
+ Mapowania są ustawione tak by Kopiowanie i Wklejanie działało
+-z klawiszami MS-Windows. CTRL-X wycina tekst, CTRL-C kopiuje
+-a CTRL-V wkleja. Użyj CTRL-Q by uzyskać oryginalne znaczenie
++z klawiszami MS-Windows. CTRL-X wycina, CTRL-C kopiuje a CTRL-V 
++wkleja tekst. Użyj CTRL-Q by uzyskać oryginalne przeznaczenie
+ CTRL-V.
+ .SH OPCJE
+ Zobacz vim(1).
+@@ -42,7 +42,7 @@
+ Skrypt uruchamiania dla eVima.
+ .SH ZNANY JAKO
+ Znany jako "Vim dla frajerów".
+-Jeśli używasz evima oczekuje się, że wyjmiesz chusteczkę do nosa,
++Jeśli używasz eVima oczekuje się, że wyjmiesz chusteczkę do nosa,
+ zrobisz węzęł w każdym rogu i będziesz to nosił na głowie.
+ .SH ZOBACZ TAKŻE
+ vim(1)
+diff -Nur runtime/doc/farsi.txt runtime/doc/farsi.txt
+--- runtime/doc/farsi.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/farsi.txt	2011-04-03 09:27:21.114312829 -0700
+@@ -1,4 +1,4 @@
+-*farsi.txt*     For Vim version 7.2.  Last change: 2005 Mar 29
++*farsi.txt*     For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Mortaza Ghassab Shiran
+diff -Nur runtime/doc/filetype.txt runtime/doc/filetype.txt
+--- runtime/doc/filetype.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/filetype.txt	2011-04-03 09:27:21.118841626 -0700
+@@ -1,4 +1,4 @@
+-*filetype.txt*  For Vim version 7.2.  Last change: 2008 Jul 15
++*filetype.txt*  For Vim version 7.3a.  Last change: 2008 Jul 15
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/fold.txt runtime/doc/fold.txt
+--- runtime/doc/fold.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/fold.txt	2011-04-03 09:27:21.128560775 -0700
+@@ -1,10 +1,10 @@
+-*fold.txt*      For Vim version 7.2.  Last change: 2007 May 11
++*fold.txt*      For Vim version 7.3a.  Last change: 2010 May 13
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+ 
+ 
+-Folding						*Folding* *folding*
++Folding						*Folding* *folding* *folds*
+ 
+ You can find an introduction on folding in chapter 28 of the user manual.
+ |usr_28.txt|
+@@ -127,6 +127,9 @@
+ yet.  And it returns the level at the start of the line, while a fold might
+ end in that line.
+ 
++It may happened that folds are not updated properly.  You can use |zx| or |zX|
++to force updating folds.
++
+ 
+ SYNTAX						*fold-syntax*
+ 
+@@ -274,7 +277,7 @@
+ 		Also see |fold-create-marker|.
+ 
+ 							*zF*
+-zF		Create a fold for N lines.  Works like "zf".
++zF		Create a fold for [count] lines.  Works like "zf".
+ 
+ :{range}fo[ld]						*:fold* *:fo*
+ 		Create a fold for the lines in {range}.  Works like "zf".
+@@ -352,9 +355,13 @@
+ 							*zx*
+ zx		Update folds: Undo manually opened and closed folds: re-apply
+ 		'foldlevel', then do "zv": View cursor line.
++		Also forces recomputing folds.  This is useful when using
++		'foldexpr' and the buffer is changed in a way that results in
++		folds not to be updated properly.
+ 
+ 							*zX*
+ zX		Undo manually opened and closed folds: re-apply 'foldlevel'.
++		Also forces recomputing folds, like |zx|.
+ 
+ 							*zm*
+ zm		Fold more: Subtract one from 'foldlevel'.  If 'foldlevel' was
+@@ -399,24 +406,24 @@
+ [z		Move to the start of the current open fold.  If already at the
+ 		start, move to the start of the fold that contains it.  If
+ 		there is no containing fold, the command fails.
+-		When a count is used, repeats the command N times.
++		When a count is used, repeats the command [count] times.
+ 
+ 							*]z*
+ ]z		Move to the end of the current open fold.  If already at the
+ 		end, move to the end of the fold that contains it.  If there
+ 		is no containing fold, the command fails.
+-		When a count is used, repeats the command N times.
++		When a count is used, repeats the command [count] times.
+ 
+ 							*zj*
+ zj		Move downwards to the start of the next fold.  A closed fold
+ 		is counted as one fold.
+-		When a count is used, repeats the command N times.
++		When a count is used, repeats the command [count] times.
+ 		This command can be used after an |operator|.
+ 
+ 							*zk*
+ zk		Move upwards to the end of the previous fold.  A closed fold
+ 		is counted as one fold.
+-		When a count is used, repeats the command N times.
++		When a count is used, repeats the command [count] times.
+ 		This command can be used after an |operator|.
+ 
+ 
+diff -Nur runtime/doc/ft_ada.txt runtime/doc/ft_ada.txt
+--- runtime/doc/ft_ada.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/ft_ada.txt	2011-04-03 09:27:21.135072514 -0700
+@@ -1,4 +1,4 @@
+-*ft_ada.txt*	For Vim version 7.2.  Last change: 2008 Jun 21
++*ft_ada.txt*	For Vim version 7.3a.  Last change: 2008 Jun 21
+ 
+ 
+ 		    ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
+@@ -82,7 +82,7 @@
+  - comment handling	(|'comments'|, |'commentstring'|)
+ 
+ The plug-in only activates the features of the Ada mode whenever an Ada
+-files is opened and add adds Ada related entries to the main and pop-up menu.
++file is opened and adds Ada related entries to the main and pop-up menu.
+ 
+ ==============================================================================
+ 3. Omni Completion ~
+@@ -142,7 +142,7 @@
+ 4.  Compiler Support ~
+ 								*ada-compiler*
+ 
+-The Ada mode supports more then one Ada compiler and will automatically load the
++The Ada mode supports more than one Ada compiler and will automatically load the
+ compiler set in|g:ada_default_compiler|whenever an Ada source is opened. The
+ provided compiler plug-ins are split into the actual compiler plug-in and a
+ collection of support functions and variables. This allows the easy
+@@ -154,7 +154,7 @@
+ 							       *compiler-gnat*
+ 
+ GNAT is the only free (beer and speech) Ada compiler available. There are
+-several version available which differentiate in the licence terms used.
++several versions available which differ in the licence terms used.
+ 
+ The GNAT compiler plug-in will perform a compile on pressing <F7> and then
+ immediately shows the result. You can set the project file to be used by
+@@ -163,7 +163,7 @@
+  > call g:gnat.Set_Project_File ('my_project.gpr')
+ 
+ Setting a project file will also create a Vim session (|views-sessions|) so -
+-like with the GPS - opened files, window positions etc. will remembered
++like with the GPS - opened files, window positions etc. will be remembered
+ separately for all projects.
+ 
+ 								*gnat_members*
+@@ -228,9 +228,9 @@
+ compile the current unit.
+ 
+ The Dec Ada compiler expects the package name and not the file name to be
+-passed a parameter. The compiler plug-in supports the usual file name
+-convention to convert the file into a unit name. For separates both '-' and
+-'__' are allowed.
++passed as a parameter. The compiler plug-in supports the usual file name
++convention to convert the file into a unit name. Both '-' and '__' are allowed
++as separators.
+ 
+ 							      *decada_members*
+ DEC ADA OBJECT ~
+@@ -262,7 +262,7 @@
+ 
+ 							*g:ada_standard_types*
+ g:ada_standard_types	bool (true when exists)
+-		Highlight types in package Standard (e.g., "Float")
++		Highlight types in package Standard (e.g., "Float").
+ 
+ 							  *g:ada_space_errors*
+ 						  *g:ada_no_trail_space_error*
+@@ -279,13 +279,13 @@
+ 
+ 							   *g:ada_line_errors*
+ g:ada_line_errors	  bool (true when exists)
+-		Highlight lines which are to long. Note: This highlighting
++		Highlight lines which are too long. Note: This highlighting
+ 		option is quite CPU intensive.
+ 
+ 							 *g:ada_rainbow_color*
+ g:ada_rainbow_color	  bool (true when exists)
+ 		Use rainbow colours for '(' and ')'. You need the
+-		rainbow_parenthesis for this to work
++		rainbow_parenthesis for this to work.
+ 
+ 							       *g:ada_folding*
+ g:ada_folding		  set ('sigpft')
+@@ -313,7 +313,7 @@
+ 
+ 								*g:ada_abbrev*
+ g:ada_abbrev		  bool (true when exists)
+-		Add some abbreviations. This feature more or less superseded
++		Add some abbreviations. This feature is more or less superseded
+ 		by the various completion methods.
+ 
+ 						      *g:ada_withuse_ordinary*
+@@ -359,12 +359,12 @@
+ 
+ 						      *g:ada_default_compiler*
+ g:ada_default_compiler	  string
+-		set default compiler. Currently supported is 'gnat' and
++		set default compiler. Currently supported are 'gnat' and
+ 		'decada'.
+ 
+-An "exists" type is a boolean is considered true when the variable is defined
+-and false when the variable is undefined. The value which the variable is
+-set makes no difference.
++An "exists" type is a boolean considered true when the variable is defined and
++false when the variable is undefined. The value to which the variable is set
++makes no difference.
+ 
+ ------------------------------------------------------------------------------
+ 5.3 Commands ~
+@@ -372,10 +372,10 @@
+ 
+ :AdaRainbow							 *:AdaRainbow*
+ 		Toggles rainbow colour (|g:ada_rainbow_color|) mode for
+-		'(' and ')'
++		'(' and ')'.
+ 
+ :AdaLines							   *:AdaLines*
+-		Toggles line error (|g:ada_line_errors|) display
++		Toggles line error (|g:ada_line_errors|) display.
+ 
+ :AdaSpaces							  *:AdaSpaces*
+ 		Toggles space error (|g:ada_space_errors|) display.
+@@ -424,7 +424,7 @@
+ 
+ 							     *g:ada#WordRegex*
+ g:ada#WordRegex		string
+-		Regular expression to search for Ada words
++		Regular expression to search for Ada words.
+ 
+ 							  *g:ada#DotWordRegex*
+ g:ada#DotWordRegex	string
+@@ -432,7 +432,7 @@
+ 
+ 							       *g:ada#Comment*
+ g:ada#Comment		string
+-		Regular expression to search for Ada comments
++		Regular expression to search for Ada comments.
+ 
+ 							      *g:ada#Keywords*
+ g:ada#Keywords		list of dictionaries
+@@ -454,7 +454,7 @@
+ 
+ ada#List_Tag([{line}, {col}])				      *ada#Listtags()*
+ 		List all occurrences of the Ada entity under the cursor (or at
+-		given line/column) inside the quick-fix window
++		given line/column) inside the quick-fix window.
+ 
+ ada#Jump_Tag ({ident}, {mode})				      *ada#Jump_Tag()*
+ 		List all occurrences of the Ada entity under the cursor (or at
+@@ -482,8 +482,8 @@
+ 8. Extra Plugins ~
+ 							   *ada-extra-plugins*
+ 
+-You can optionally install the following extra plug-in. They work well with Ada
+-and enhance the ability of the Ada mode.:
++You can optionally install the following extra plug-ins. They work well with
++Ada and enhance the ability of the Ada mode:
+ 
+ backup.vim
+ 	http://www.vim.org/scripts/script.php?script_id=1537
+@@ -501,7 +501,7 @@
+ matchit.vim
+ 	http://www.vim.org/scripts/script.php?script_id=39
+ 	'%' jumping for any language. The normal '%' jump only works for '{}'
+-	style languages. The Ada mode will set the needed search patters.
++	style languages. The Ada mode will set the needed search patterns.
+ 
+ taglist.vim
+ 	http://www.vim.org/scripts/script.php?script_id=273
+diff -Nur runtime/doc/ft_sql.txt runtime/doc/ft_sql.txt
+--- runtime/doc/ft_sql.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/ft_sql.txt	2011-04-03 09:27:21.141870371 -0700
+@@ -1,4 +1,4 @@
+-*ft_sql.txt*	For Vim version 7.2.  Last change: Wed Apr 26 2006 3:05:33 PM
++*sql.txt*	For Vim version 7.3a.  Last change: 2009 Nov 03
+ 
+ by David Fishburn
+ 
+@@ -15,7 +15,8 @@
+     1.4 Macros					|sql-macros|
+ 2. SQL Dialects					|sql-dialects|
+     2.1 SQLSetType				|SQLSetType|
+-    2.2 SQL Dialect Default			|sql-type-default|
++    2.2 SQLGetType				|SQLGetType|
++    2.3 SQL Dialect Default			|sql-type-default|
+ 3. Adding new SQL Dialects			|sql-adding-dialects|
+ 4. OMNI SQL Completion				|sql-completion|
+     4.1 Static mode				|sql-completion-static|
+@@ -204,7 +205,7 @@
+ 						*sqlanywhere*
+ 						*oracle* *plsql* *sqlj*
+ 						*sqlserver*
+-						*mysql* *postgres* *psql*
++						*mysql* *postgress* *psql*
+ 						*informix*
+ 
+ All relational databases support SQL.  There is a portion of SQL that is
+@@ -231,7 +232,7 @@
+ 
+ 2.1 SQLSetType					*sqlsettype* *SQLSetType*
+ --------------
+-For the people that work with many different databases, it would be nice to be
++For the people that work with many different databases, it is nice to be
+ able to flip between the various vendors rules (indent, syntax) on a per
+ buffer basis, at any time.  The ftplugin/sql.vim file defines this function: >
+     SQLSetType
+@@ -259,7 +260,17 @@
+     :SQL<Tab><space><Tab>
+ 
+ 
+-2.2 SQL Dialect Default				*sql-type-default*
++2.2 SQLGetType					*sqlgettype* *SQLGetType*
++--------------
++At anytime you can determine which SQL dialect you are using by calling the
++SQLGetType command.  The ftplugin/sql.vim file defines this function: >
++    SQLGetType
++
++This will echo: >
++    Current SQL dialect in use:sqlanywhere
++
++
++2.3 SQL Dialect Default				*sql-type-default*
+ -----------------------
+ As mentioned earlier, the default syntax rules for Vim is based on Oracle
+ (PL/SQL).  You can override this default by placing one of the following in
+@@ -331,6 +342,10 @@
+     imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
+     imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
+ 
++The use of "<C-C>" can be user chosen by using the following in your |.vimrc| as it 
++may not work properly on all platforms: >
++    let g:ftplugin_sql_omni_key = '<C-C>'
++>
+ The static maps (which are based on the syntax highlight groups) follow this
+ format: >
+     imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
+@@ -406,21 +421,25 @@
+ To enable the popup, while in INSERT mode, use the following key combinations
+ for each group (where <C-C> means hold the CTRL key down while pressing
+ the space bar):
+-     Table List		    - <C-C>t
+-			    - <C-X><C-O> (the default map assumes tables)
+-     Stored Procedure List  - <C-C>p
+-     View List		    - <C-C>v
+-     Column List	    - <C-C>c
+-
+-     Windows platform only  - When viewing a popup window displaying the list
+-			      of tables, you can press <C-Right>, this will
+-			      replace the table currently highlighted with
+-			      the column list for that table.
+-			    - When viewing a popup window displaying the list
+-			      of columns, you can press <C-Left>, this will
+-			      replace the column list with the list of tables.
+-			    - This allows you to quickly drill down into a
+-			      table to view it's columns and back again.
++     Table List		   - <C-C>t
++			   - <C-X><C-O> (the default map assumes tables)
++     Stored Procedure List - <C-C>p
++     View List		   - <C-C>v
++     Column List	   - <C-C>c
++
++     Drilling In / Out     - When viewing a popup window displaying the list
++			     of tables, you can press <Right>, this will
++			     replace the table currently highlighted with
++			     the column list for that table.
++			   - When viewing a popup window displaying the list
++			     of columns, you can press <Left>, this will
++			     replace the column list with the list of tables.
++			   - This allows you to quickly drill down into a
++			     table to view it's columns and back again.
++			   - <Right> and <Left> can be also be chosen via
++			     your |.vimrc| >
++                                let g:ftplugin_sql_omni_key_right = '<Right>'
++                                let g:ftplugin_sql_omni_key_left  = '<Left>'
+ 
+ The SQL completion plugin caches various lists that are displayed in
+ the popup window.  This makes the re-displaying of these lists very
+@@ -498,38 +517,32 @@
+ The SQL completion plugin can also display a list of columns for particular
+ tables.  The column completion is trigger via <C-C>c.
+ 
+-NOTE: The following example uses <C-Right> to trigger a column list while
+-the popup window is active.  This map is only available on the Windows
+-platforms since *nix does not recognize CTRL and the right arrow held down
+-together.  If you wish to enable this functionality on a *nix platform choose
+-a key and create one of these mappings (see |sql-completion-maps| for further
+-details on where to create this imap): >
+-    imap <buffer> <your_keystroke> <C-R>=sqlcomplete#DrillIntoTable()<CR>
+-    imap <buffer> <your_keystroke> <C-Y><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
++NOTE: The following example uses <Right> to trigger a column list while
++      the popup window is active.  
+ 
+ Example of using column completion:
+      - Press <C-C>t again to display the list of tables.
+-     - When the list is displayed in the completion window, press <C-Right>,
++     - When the list is displayed in the completion window, press <Right>,
+        this will replace the list of tables, with a list of columns for the
+        table highlighted (after the same short delay).
+-     - If you press <C-Left>, this will again replace the column list with the
++     - If you press <Left>, this will again replace the column list with the
+        list of tables.  This allows you to drill into tables and column lists
+        very quickly.
+-     - Press <C-Right> again while the same table is highlighted.  You will
++     - Press <Right> again while the same table is highlighted.  You will
+        notice there is no delay since the column list has been cached.  If you
+        change the schema of a cached table you can press <C-C>R, which
+        clears the SQL completion cache.
+-     - NOTE: <C-Right> and <C-Left> have been designed to work while the
++     - NOTE: <Right> and <Left> have been designed to work while the
+        completion window is active.  If the completion popup window is
+-       not active, a normal <C-Right> or <C-Left> will be executed.
++       not active, a normal <Right> or <Left> will be executed.
+ 
+-Lets look how we can build a SQL statement dynamically.  A select statement
++Let's look at how we can build a SQL statement dynamically.  A select statement
+ requires a list of columns.  There are two ways to build a column list using
+ the SQL completion plugin. >
+     One column at a time:
+ <       1. After typing SELECT press <C-C>t to display a list of tables.
+ 	2. Choose a table from the list.
+-	3. Press <C-Right> to display a list of columns.
++	3. Press <Right> to display a list of columns.
+ 	4. Choose the column from the list and press enter.
+ 	5. Enter a "," and press <C-C>c.  Generating a column list
+ 	   generally requires having the cursor on a table name.  The plugin
+@@ -632,7 +645,7 @@
+ 	- When completing tables, procedure or views and using dbext.vim 3.00
+ 	  or higher the list of objects will also include the owner name.
+ 	  When completing these objects and omni_sql_include_owner is enabled
+-	  the owner name will be replaced. >
++	  the owner name will be be replaced. >
+ 
+     omni_sql_precache_syntax_groups
+ <	- Default:
+@@ -684,15 +697,15 @@
+     <C-C>L
+ <       - Displays a comma separated list of columns for a specific table.
+ 	  This should only be used when the completion window is active. >
+-    <C-Right>
++    <Right>
+ <	- Displays a list of columns for the table currently highlighted in
+-	  the completion window.  <C-Right> is not recognized on most Unix
++	  the completion window.  <Right> is not recognized on most Unix
+ 	  systems, so this maps is only created on the Windows platform.
+ 	  If you would like the same feature on Unix, choose a different key
+ 	  and make the same map in your vimrc. >
+-    <C-Left>
++    <Left>
+ <	- Displays the list of tables.
+-	  <C-Left> is not recognized on most Unix systems, so this maps is
++	  <Left> is not recognized on most Unix systems, so this maps is
+ 	  only created on the Windows platform.  If you would like the same
+ 	  feature on Unix, choose a different key and make the same map in
+ 	  your vimrc. >
+@@ -725,8 +738,8 @@
+ 
+ Many times SQL can be used with different filetypes.  For example Perl, Java,
+ PHP, Javascript can all interact with a database.  Often you need both the SQL
+-completion as well as the completion capabilities for the current language you
+-are editing.
++completion and the completion capabilities for the current language you are
++editing.
+ 
+ This can be enabled easily with the following steps (assuming a Perl file): >
+     1.  :e test.pl
+diff -Nur runtime/doc/gui.txt runtime/doc/gui.txt
+--- runtime/doc/gui.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/gui.txt	2011-04-03 09:27:21.152795571 -0700
+@@ -1,4 +1,4 @@
+-*gui.txt*       For Vim version 7.2.  Last change: 2008 Jun 14
++*gui.txt*       For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -35,13 +35,13 @@
+ The X11 version of Vim can run both in GUI and in non-GUI mode.  See
+ |gui-x11-start|.
+ 
+-					*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
++			*gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC*
+ The gvimrc file is where GUI-specific startup commands should be placed.  It
+ is always sourced after the |vimrc| file.  If you have one then the $MYGVIMRC
+ environment variable has its name.
+ 
+ When the GUI starts up initializations are carried out, in this order:
+-- The 'term' option is set to "builgin_gui" and terminal options are reset to
++- The 'term' option is set to "builtin_gui" and terminal options are reset to
+   their default value for the GUI |terminal-options|.
+ - If the system menu file exists, it is sourced.  The name of this file is
+   normally "$VIMRUNTIME/menu.vim".  You can check this with ":version".  Also
+@@ -473,9 +473,11 @@
+ 	:let did_install_default_menus = 1
+ If you also want to avoid the Syntax menu: >
+ 	:let did_install_syntax_menu = 1
+-If you do want the Syntax menu but not all the entries for each available
+-syntax file (which take quite a bit of time to load): >
+-	:let skip_syntax_sel_menu = 1
++The first item in the Syntax menu can be used to show all available filetypes
++in the menu (which can take a bit of time to load).  If you want to have all
++filetypes already present at startup, add: >
++	:let do_syntax_sel_menu = 1
++
+ <
+ 							*console-menus*
+ Although this documentation is in the GUI section, you can actually use menus
+@@ -554,7 +556,7 @@
+ 	mode		inserted	appended	~
+ 	Normal		nothing		nothing
+ 	Visual		<C-C>		<C-\><C-G>
+-	Insert		<C-O>
++	Insert		<C-\><C-O>
+ 	Cmdline		<C-C>		<C-\><C-G>
+ 	Op-pending	<C-C>		<C-\><C-G>
+ 
+@@ -569,7 +571,7 @@
+ 
+    :nmenu File.Next	:next^M
+    :vmenu File.Next	^C:next^M^\^G
+-   :imenu File.Next	^O:next^M
++   :imenu File.Next	^\^O:next^M
+    :cmenu File.Next	^C:next^M^\^G
+    :omenu File.Next	^C:next^M^\^G
+ 
+@@ -676,7 +678,7 @@
+ default toolbar is setup in menu.vim.
+ The display of the toolbar is controlled by the 'guioptions' letter 'T'.  You
+ can thus have menu & toolbar together, or either on its own, or neither.
+-The appearance is controlled by the 'toolbar' option.  You can chose between
++The appearance is controlled by the 'toolbar' option.  You can choose between
+ an image, text or both.
+ 
+ 							*toolbar-icon*
+diff -Nur runtime/doc/gui_w16.txt runtime/doc/gui_w16.txt
+--- runtime/doc/gui_w16.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/gui_w16.txt	2011-04-03 09:27:21.156681277 -0700
+@@ -1,4 +1,4 @@
+-*gui_w16.txt*   For Vim version 7.2.  Last change: 2005 Mar 29
++*gui_w16.txt*   For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/gui_w32.txt runtime/doc/gui_w32.txt
+--- runtime/doc/gui_w32.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/gui_w32.txt	2011-04-03 09:27:21.164905691 -0700
+@@ -1,4 +1,4 @@
+-*gui_w32.txt*   For Vim version 7.2.  Last change: 2007 Aug 30
++*gui_w32.txt*   For Vim version 7.3a.  Last change: 2007 Aug 30
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/gui_x11.txt runtime/doc/gui_x11.txt
+--- runtime/doc/gui_x11.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/gui_x11.txt	2011-04-03 09:27:21.169694696 -0700
+@@ -1,4 +1,4 @@
+-*gui_x11.txt*   For Vim version 7.2.  Last change: 2007 Dec 09
++*gui_x11.txt*   For Vim version 7.3a.  Last change: 2009 Oct 28
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -453,14 +453,12 @@
+ For GTK+, Vim's configuration process requires that GTK+ be properly
+ installed.  That is, the shell script 'gtk-config' must be in your PATH, and
+ you can already successful compile, build, and execute a GTK+ program.  The
+-reason for this is because the compiler flags (CFLAGS) and link flags
+-(LDFLAGS) are obtained through the 'gtk-config' shell script.
++reason for this is that the compiler flags (CFLAGS) and link flags (LDFLAGS)
++are obtained through the 'gtk-config' shell script.
+ 
+ If you want to build with GTK+ 2 support pass the --enable-gtk2-check argument
+ to ./configure.  Optionally, support for GNOME 2 will be compiled if the
+---enable-gnome-check option is also given.  Note that the support for GTK+ 2
+-is still experimental.  However, many people have reported that it works just
+-fine for them.
++--enable-gnome-check option is also given.
+ 
+ Otherwise, if you are using Motif or Athena, when you have the Motif or Athena
+ files in a directory where configure doesn't look, edit the Makefile to enter
+@@ -468,15 +466,12 @@
+ the Motif directories, "CONF_OPT_X" for Athena.
+ 
+ 							*gui-x11-gtk*
+-At the time of this writing, you may use either GTK+ version 1.0.6 or 1.2.  It
+-is suggested that you use v1.2 since not all of Vim's GUI features are present
+-if using v1.0.6.  For instance, there are no tearoff menus present in v1.0.6.
+-Using a version from GTK+'s CVS tree may or may not work, and is therefore not
+-supported and not recommended.
+-
+-For the experimental GTK+ 2 GUI, using the latest release of the GTK+ 2.0 or
+-GTK+ 2.2 series is recommended.  CVS HEAD seems to work fine most of time as
+-well.
++At the time of this writing, GTK+ version 1.0.6 and 1.2 are outdated.  It
++is suggested that you use GTK 2.  The GTK 1 support will most likely be
++dropped soon.
++
++For the GTK+ 2 GUI, using the latest release of the GTK+ 2.0 or GTK+ 2.2
++series is recommended.
+ 
+ Lastly, although GTK+ has supposedly been ported to the Win32 platform, this
+ has not been tested with Vim and is also unsupported.  Also, it's unlikely to
+@@ -540,13 +535,16 @@
+ register.  Vim does not access the SECONDARY selection.
+ 
+ Examples: (assuming the default option values)
+-- Select an URL in Visual mode in Vim.  Go to a text field in Netscape and
+-  click the middle mouse button.  The selected text will be inserted
+-  (hopefully!).
+-- Select some text in Netscape by dragging with the mouse.  Go to Vim and
++- Select an URL in Visual mode in Vim.  Go to your browser and click the
++  middle mouse button in the URL text field.  The selected text will be
++  inserted (hopefully!).  Note: in Firefox you can set the
++  middlemouse.contentLoadURL preference to true in about:config, then the
++  selected URL will be used when pressing middle mouse button in most places
++  in the window.
++- Select some text in your browser by dragging with the mouse.  Go to Vim and
+   press the middle mouse button: The selected text is inserted.
+-- Select some text in Vim and do "+y.  Go to Netscape, select some text in a
+-  textfield by dragging with the mouse.  Now use the right mouse button and
++- Select some text in Vim and do "+y.  Go to your browser, select some text in
++  a textfield by dragging with the mouse.  Now use the right mouse button and
+   select "Paste" from the popup menu.  The selected text is overwritten by the
+   text from Vim.
+ Note that the text in the "+ register remains available when making a Visual
+diff -Nur runtime/doc/hangulin.txt runtime/doc/hangulin.txt
+--- runtime/doc/hangulin.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/hangulin.txt	2011-04-03 09:27:21.170539755 -0700
+@@ -1,8 +1,12 @@
+-*hangulin.txt*  For Vim version 7.2.  Last change: 2006 Apr 02
++*hangulin.txt*  For Vim version 7.3a.  Last change: 2009 Jun 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Chi-Deok Hwang and Sung-Hyun Nam
+ 
++NOTE: The |+hangul_input| feature is scheduled to be removed.  If you want to
++keep it, please send a message to the Vim user maillist.
++
++
+ Introduction					*hangul*
+ ------------
+ It is to input hangul, the Korean language, with VIM GUI version.
+@@ -96,6 +100,6 @@
+ Send comments, patches and suggestions to:
+ 
+ 				    Chi-Deok Hwang <[email protected]>
+-				    Nam SungHyun <[email protected]>
++				    SungHyun Nam <[email protected]>
+ 
+  vim:tw=78:ts=8:ft=help:norl:
+diff -Nur runtime/doc/hebrew.txt runtime/doc/hebrew.txt
+--- runtime/doc/hebrew.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/hebrew.txt	2011-04-03 09:27:21.171243963 -0700
+@@ -1,4 +1,4 @@
+-*hebrew.txt*    For Vim version 7.2.  Last change: 2007 Jun 14
++*hebrew.txt*    For Vim version 7.3a.  Last change: 2007 Jun 14
+ 
+ 
+ 	   VIM REFERENCE MANUAL    by Ron Aaron (and Avner Lottem)
+diff -Nur runtime/doc/help.txt runtime/doc/help.txt
+--- runtime/doc/help.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/help.txt	2011-04-03 09:27:21.172236602 -0700
+@@ -1,4 +1,4 @@
+-*help.txt*	For Vim version 7.2.  Last change: 2008 Jul 21
++*help.txt*	For Vim version 7.3a.  Last change: 2008 Jul 21
+ 
+ 			VIM - main help file
+ 									 k
+@@ -26,6 +26,7 @@
+ 		      Option			  '	   :help 'textwidth'
+   Search for help:  Type ":help word", then hit CTRL-D to see matching
+ 		    help entries for "word".
++		    Or use ":helpgrep word". |:helpgrep|
+ 
+ VIM stands for Vi IMproved.  Most of VIM was made by Bram Moolenaar, but only
+ through the help of many others.  See |credits|.
+@@ -90,6 +91,7 @@
+ General subjects ~
+ |intro.txt|	general introduction to Vim; notation used in help files
+ |help.txt|	overview and quick reference (this file)
++|helphelp.txt|	about using the help files
+ |index.txt|	alphabetical index of all commands
+ |help-tags|	all the tags you can jump to (index of tags)
+ |howto.txt|	how to do the most common editing tasks
+@@ -144,6 +146,7 @@
+ |hebrew.txt|	Hebrew language support and editing
+ |russian.txt|	Russian language support and editing
+ |ft_ada.txt|	Ada (the programming language) support
++|ft_sql.txt|	about the SQL filetype plugin
+ |hangulin.txt|	Hangul (Korean) input mode
+ |rileft.txt|	right-to-left editing mode
+ 
+@@ -207,10 +210,11 @@
+ CTRL-T, CTRL-O, g<RightMouse>, or <C-RightMouse> to go back to where you were.
+ 
+ Note that tags are within | characters, but when highlighting is enabled these
+-are hidden.  That makes it easier to read a command.
++characters are hidden.  That makes it easier to read a command.
+ 
+ Anyway, you can use CTRL-] on any word, also when it is not within |, and Vim
+-will try to find help for it.
++will try to find help for it.  Especially for options in single quotes, e.g.
++'compatible'.
+ 
+ ------------------------------------------------------------------------------
+  vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:
+Files vim72/runtime/doc/help.txt.info and ../../../vim-hg/runtime/doc/help.txt.info differ
+diff -Nur runtime/doc/helphelp.txt runtime/doc/helphelp.txt
+--- runtime/doc/helphelp.txt	1969-12-31 16:00:00.000000000 -0800
++++ runtime/doc/helphelp.txt	2011-04-03 09:27:21.178000245 -0700
+@@ -0,0 +1,340 @@
++*helphelp.txt*	For Vim version 7.3a.  Last change: 2008 Jul 21
++
++
++		  VIM REFERENCE MANUAL    by Bram Moolenaar
++
++
++Help on help files					*helphelp*
++
++1. Help commands		|online-help|
++2. Translating help files	|help-translated|
++3. Writing help files		|help-writing|
++
++==============================================================================
++1. Help commands					*online-help*
++
++			*help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>*
++<Help>		or
++:h[elp]			Open a window and display the help file in read-only
++			mode.  If there is a help window open already, use
++			that one.  Otherwise, if the current window uses the
++			full width of the screen or is at least 80 characters
++			wide, the help window will appear just above the
++			current window.  Otherwise the new window is put at
++			the very top.
++			The 'helplang' option is used to select a language, if
++			the main help file is available in several languages.
++			{not in Vi}
++
++						*{subject}* *E149* *E661*
++:h[elp] {subject}	Like ":help", additionally jump to the tag {subject}.
++			{subject} can include wildcards like "*", "?" and
++			"[a-z]":
++			   :help z?	jump to help for any "z" command
++			   :help z.	jump to the help for "z."
++			If there is no full match for the pattern, or there
++			are several matches, the "best" match will be used.
++			A sophisticated algorithm is used to decide which
++			match is better than another one.  These items are
++			considered in the computation:
++			- A match with same case is much better than a match
++			  with different case.
++			- A match that starts after a non-alphanumeric
++			  character is better than a match in the middle of a
++			  word.
++			- A match at or near the beginning of the tag is
++			  better than a match further on.
++			- The more alphanumeric characters match, the better.
++			- The shorter the length of the match, the better.
++
++			The 'helplang' option is used to select a language, if
++			the {subject} is available in several languages.
++			To find a tag in a specific language, append "@ab",
++			where "ab" is the two-letter language code.  See
++			|help-translated|.
++
++			Note that the longer the {subject} you give, the less
++			matches will be found.  You can get an idea how this
++			all works by using commandline completion (type CTRL-D
++			after ":help subject" |c_CTRL-D|).
++			If there are several matches, you can have them listed
++			by hitting CTRL-D.  Example: >
++				:help cont<Ctrl-D>
++<			To use a regexp |pattern|, first do ":help" and then
++			use ":tag {pattern}" in the help window.  The
++			":tnext" command can then be used to jump to other
++			matches, "tselect" to list matches and choose one. >
++				:help index| :tse z.
++<			When there is no argument you will see matches for
++			"help", to avoid listing all possible matches (that
++			would be very slow).
++			The number of matches displayed is limited to 300.
++
++			This command can be followed by '|' and another
++			command, but you don't need to escape the '|' inside a
++			help command.  So these both work: >
++				:help |
++				:help k| only
++<			Note that a space before the '|' is seen as part of
++			the ":help" argument.
++			You can also use <LF> or <CR> to separate the help
++			command from a following command.  You need to type
++			CTRL-V first to insert the <LF> or <CR>.  Example: >
++				:help so<C-V><CR>only
++<			{not in Vi}
++
++:h[elp]! [subject]	Like ":help", but in non-English help files prefer to
++			find a tag in a file with the same language as the
++			current file.  See |help-translated|.
++
++							*:helpg* *:helpgrep*
++:helpg[rep] {pattern}[@xx]
++			Search all help text files and make a list of lines
++			in which {pattern} matches.  Jumps to the first match.
++			The optional [@xx] specifies that only matches in the
++			"xx" language are to be found.
++			You can navigate through the matches with the
++			|quickfix| commands, e.g., |:cnext| to jump to the
++			next one.  Or use |:cwindow| to get the list of
++			matches in the quickfix window.
++			{pattern} is used as a Vim regexp |pattern|.
++			'ignorecase' is not used, add "\c" to ignore case.
++			Example for case sensitive search: >
++				:helpgrep Uganda
++<			Example for case ignoring search: >
++				:helpgrep uganda\c
++<			Example for searching in French help: >
++				:helpgrep backspace@fr
++<			The pattern does not support line breaks, it must
++			match within one line.  You can use |:grep| instead,
++			but then you need to get the list of help files in a
++			complicated way.
++			Cannot be followed by another command, everything is
++			used as part of the pattern.  But you can use
++			|:execute| when needed.
++			Compressed help files will not be searched (Fedora
++			compresses the help files).
++			{not in Vi}
++
++							*:lh* *:lhelpgrep*
++:lh[elpgrep] {pattern}[@xx]
++			Same as ":helpgrep", except the location list is used
++			instead of the quickfix list.  If the help window is
++			already opened, then the location list for that window
++			is used.  Otherwise, a new help window is opened and
++			the location list for that window is set.  The
++			location list for the current window is not changed.
++
++							*:exu* *:exusage*
++:exu[sage]		Show help on Ex commands.  Added to simulate the Nvi
++			command. {not in Vi}
++
++							*:viu* *:viusage*
++:viu[sage]		Show help on Normal mode commands.  Added to simulate
++			the Nvi command. {not in Vi}
++
++When no argument is given to |:help| the file given with the 'helpfile' option
++will be opened.  Otherwise the specified tag is searched for in all "doc/tags"
++files in the directories specified in the 'runtimepath' option.
++
++The initial height of the help window can be set with the 'helpheight' option
++(default 20).
++
++Jump to specific subjects by using tags.  This can be done in two ways:
++- Use the "CTRL-]" command while standing on the name of a command or option.
++  This only works when the tag is a keyword.  "<C-Leftmouse>" and
++  "g<LeftMouse>" work just like "CTRL-]".
++- use the ":ta {subject}" command.  This also works with non-keyword
++  characters.
++
++Use CTRL-T or CTRL-O to jump back.
++Use ":q" to close the help window.
++
++If there are several matches for an item you are looking for, this is how you
++can jump to each one of them:
++1. Open a help window
++2. Use the ":tag" command with a slash prepended to the tag.  E.g.: >
++	:tag /min
++3. Use ":tnext" to jump to the next matching tag.
++
++It is possible to add help files for plugins and other items.  You don't need
++to change the distributed help files for that.  See |add-local-help|.
++
++To write a local help file, see |write-local-help|.
++
++Note that the title lines from the local help files are automagically added to
++the "LOCAL ADDITIONS" section in the "help.txt" help file |local-additions|.
++This is done when viewing the file in Vim, the file itself is not changed.  It
++is done by going through all help files and obtaining the first line of each
++file.  The files in $VIMRUNTIME/doc are skipped.
++
++							*help-xterm-window*
++If you want to have the help in another xterm window, you could use this
++command: >
++	:!xterm -e vim +help &
++<
++
++			*:helpfind* *:helpf*
++:helpf[ind]		Like |:help|, but use a dialog to enter the argument.
++			Only for backwards compatibility.  It now executes the
++			ToolBar.FindHelp menu entry instead of using a builtin
++			dialog.  {only when compiled with |+GUI_GTK|}
++<			{not in Vi}
++
++					*:helpt* *:helptags*
++				*E154* *E150* *E151* *E152* *E153* *E670*
++:helpt[ags] [++t] {dir}
++			Generate the help tags file(s) for directory {dir}.
++			All "*.txt" and "*.??x" files in the directory are
++			scanned for a help tag definition in between stars.
++			The "*.??x" files are for translated docs, they
++			generate the "tags-??" file, see |help-translated|.
++			The generated tags files are sorted.
++			When there are duplicates an error message is given.
++			An existing tags file is silently overwritten.
++			The optional "++t" argument forces adding the
++			"help-tags" tag.  This is also done when the {dir} is
++			equal to $VIMRUNTIME/doc.
++			To rebuild the help tags in the runtime directory
++			(requires write permission there): >
++				:helptags $VIMRUNTIME/doc
++<			{not in Vi}
++
++
++==============================================================================
++2. Translated help files				*help-translated*
++
++It is possible to add translated help files, next to the original English help
++files.  Vim will search for all help in "doc" directories in 'runtimepath'.
++This is only available when compiled with the |+multi_lang| feature.
++
++At this moment translations are available for:
++	Chinese - multiple authors
++	French  - translated by David Blanchet
++	Italian - translated by Antonio Colombo
++	Polish  - translated by Mikolaj Machowski
++	Russian - translated by Vassily Ragosin
++See the Vim website to find them: http://www.vim.org/translations.php
++
++A set of translated help files consists of these files:
++
++	help.abx
++	howto.abx
++	...
++	tags-ab
++
++"ab" is the two-letter language code.  Thus for Italian the names are:
++
++	help.itx
++	howto.itx
++	...
++	tags-it
++
++The 'helplang' option can be set to the preferred language(s).  The default is
++set according to the environment.  Vim will first try to find a matching tag
++in the preferred language(s).  English is used when it cannot be found.
++
++To find a tag in a specific language, append "@ab" to a tag, where "ab" is the
++two-letter language code.  Example: >
++	:he user-manual@it
++	:he user-manual@en
++The first one finds the Italian user manual, even when 'helplang' is empty.
++The second one finds the English user manual, even when 'helplang' is set to
++"it".
++
++When using command-line completion for the ":help" command, the "@en"
++extension is only shown when a tag exists for multiple languages.  When the
++tag only exists for English "@en" is omitted.
++
++When using |CTRL-]| or ":help!" in a non-English help file Vim will try to
++find the tag in the same language.  If not found then 'helplang' will be used
++to select a language.
++
++Help files must use latin1 or utf-8 encoding.  Vim assumes the encoding is
++utf-8 when finding non-ASCII characters in the first line.  Thus you must
++translate the header with "For Vim version".
++
++The same encoding must be used for the help files of one language in one
++directory.  You can use a different encoding for different languages and use
++a different encoding for help files of the same language but in a different
++directory.
++
++Hints for translators:
++- Do not translate the tags.  This makes it possible to use 'helplang' to
++  specify the preferred language.  You may add new tags in your language.
++- When you do not translate a part of a file, add tags to the English version,
++  using the "tag@en" notation.
++- Make a package with all the files and the tags file available for download.
++  Users can drop it in one of the "doc" directories and start use it.
++  Report this to Bram, so that he can add a link on www.vim.org.
++- Use the |:helptags| command to generate the tags files.  It will find all
++  languages in the specified directory.
++
++==============================================================================
++3. Writing help files					*help-writing*
++
++For ease of use, a Vim help file for a plugin should follow the format of the
++standard Vim help files.  If you are writing a new help file it's best to copy
++one of the existing files and use it as a template.
++
++The first line in a help file should have the following format:
++
++*helpfile_name.txt*	For Vim version 7.3	Last change: 2010 June 4
++
++The first field is a link to the help file name.  The second field describes
++the applicable Vim version.  The last field specifies the last modification
++date of the file.  Each field is separated by a tab.
++
++At the bottom of the help file, place a Vim modeline to set the 'textwidth'
++and 'tabstop' options and the 'filetype' to 'help'.  Never set a global option
++in such a modeline, that can have consequences undesired by whoever reads that
++help.
++
++
++TAGS
++
++To define a help tag, place the name between asterisks (*tag-name*).  The
++tag-name should be different from all the Vim help tag names and ideally
++should begin with the name of the Vim plugin.  The tag name is usually right
++aligned on a line.
++
++When referring to an existing help tag and to create a hot-link, place the
++name between two bars (|) eg. |help-writing|.
++
++When referring to a Vim option in the help file, place the option name between
++two single quotes, eg. 'statusline'
++
++
++HIGHLIGHTING
++
++To define a column heading, use a tilde character at the end of the line.
++This will highlight the column heading in a different color.  E.g.
++
++Column heading~
++
++To separate sections in a help file, place a series of '=' characters in a
++line starting from the first column.  The section separator line is highlighted
++differently.
++
++To quote a block of ex-commands verbatim, place a greater than (>) character
++at the end of the line before the block and a less than (<) character as the
++first non-blank on a line following the block.  Any line starting in column 1
++also implicitly stops the block of ex-commands before it.  E.g. >
++    function Example_Func()
++	echo "Example"
++    endfunction
++<
++
++The following are highlighted differently in a Vim help file:
++  - a special key name expressed either in <> notation as in <PageDown>, or
++    as a Ctrl character as in CTRL-X
++  - anything between {braces}, e.g. {lhs} and {rhs}
++
++The word "Note", "Notes" and similar automagically receive distinctive
++highlighting.  So do these:
++	*Todo	something to do
++	*Error	something wrong
++
++You can find the details in $VIMRUNTIME/syntax/help.vim
++
++ vim:tw=78:ts=8:ft=help:norl:
+diff -Nur runtime/doc/howto.txt runtime/doc/howto.txt
+--- runtime/doc/howto.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/howto.txt	2011-04-03 09:27:21.188812877 -0700
+@@ -1,4 +1,4 @@
+-*howto.txt*	For Vim version 7.2.  Last change: 2006 Apr 02
++*howto.txt*	For Vim version 7.3a.  Last change: 2006 Apr 02
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+diff -Nur runtime/doc/if_cscop.txt runtime/doc/if_cscop.txt
+--- runtime/doc/if_cscop.txt	2011-04-03 13:03:29.913132903 -0700
++++ runtime/doc/if_cscop.txt	2011-04-03 09:27:21.200319238 -0700
+@@ -1,4 +1,4 @@
+-*if_cscop.txt*  For Vim version 7.2.  Last change: 2009 Mar 18
++*if_cscop.txt*  For Vim version 7.3a.  Last change: 2009 Mar 18
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Andy Kahn
+diff -Nur runtime/doc/if_cscop.txt.~1~ runtime/doc/if_cscop.txt.~1~
+diff -Nur runtime/doc/if_cscop.txt.~2~ runtime/doc/if_cscop.txt.~2~
+diff -Nur runtime/doc/if_cscop.txt.~3~ runtime/doc/if_cscop.txt.~3~
+diff -Nur runtime/doc/if_mzsch.txt runtime/doc/if_mzsch.txt
+--- runtime/doc/if_mzsch.txt	2011-04-03 13:03:30.532322456 -0700
++++ runtime/doc/if_mzsch.txt	2011-04-03 09:27:21.201350889 -0700
+@@ -1,4 +1,4 @@
+-*if_mzsch.txt*  For Vim version 7.2.  Last change: 2010 Jan 19
++*if_mzsch.txt*  For Vim version 7.3a.  Last change: 2010 Feb 11
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Sergey Khorev
+@@ -185,8 +185,7 @@
+ 				    current buffer will be used.
+     (get-buff-line-list {start} {end} [buffer])
+ 				    Get a list of lines in a buffer. {Start}
+-				    and {end} are 1-based. {Start} is
+-				    inclusive, {end} - exclusive.
++				    and {end} are 1-based and inclusive.
+     (set-buff-line-list {start} {end} {string-list} [buffer])
+ 				    Set a list of lines in a buffer. If
+ 				    string-list is #f or null, the lines get
+@@ -200,8 +199,8 @@
+ 				    Insert a list of lines into a buffer after
+ 				    {linenr}. If {linenr} is 0, lines will be
+ 				    inserted at start.
+-    (curr-buff)			    Get the current buffer. Use procedures
+-				    from "vimcmd" module to change it.
++    (curr-buff)			    Get the current buffer. Use other MzScheme
++				    interface procedures to change it.
+     (buff-count)		    Get count of total buffers in the editor.
+     (get-next-buff [buffer])	    Get next buffer.
+     (get-prev-buff [buffer])	    Get previous buffer. Return #f when there
+@@ -234,7 +233,7 @@
+ ==============================================================================
+ 5. mzeval() Vim function				    *mzscheme-mzeval*
+ 
+-To facilitate bi-directional interface, you can use |mzeval| function to
++To facilitate bi-directional interface, you can use |mzeval()| function to
+ evaluate MzScheme expressions and pass their values to VimL.
+ 
+ ==============================================================================
+diff -Nur runtime/doc/if_mzsch.txt.~1~ runtime/doc/if_mzsch.txt.~1~
+diff -Nur runtime/doc/if_mzsch.txt.~2~ runtime/doc/if_mzsch.txt.~2~
+diff -Nur runtime/doc/if_mzsch.txt.~3~ runtime/doc/if_mzsch.txt.~3~
+diff -Nur runtime/doc/if_ole.txt runtime/doc/if_ole.txt
+--- runtime/doc/if_ole.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/if_ole.txt	2011-04-03 09:27:21.202208584 -0700
+@@ -1,4 +1,4 @@
+-*if_ole.txt*    For Vim version 7.2.  Last change: 2007 May 10
++*if_ole.txt*    For Vim version 7.3a.  Last change: 2008 Aug 16
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Paul Moore
+@@ -115,7 +115,7 @@
+ 3. The "normal" command					*ole-normal*
+ 
+ Due to the way Vim processes OLE Automation commands, combined with the method
+-of implementation of the ex command :normal, it is not possible to execute the
++of implementation of the Ex command :normal, it is not possible to execute the
+ :normal command via OLE automation.  Any attempt to do so will fail, probably
+ harmlessly, although possibly in unpredictable ways.
+ 
+diff -Nur runtime/doc/if_perl.txt runtime/doc/if_perl.txt
+--- runtime/doc/if_perl.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/if_perl.txt	2011-04-03 09:27:21.203030031 -0700
+@@ -1,4 +1,4 @@
+-*if_perl.txt*   For Vim version 7.2.  Last change: 2006 Mar 06
++*if_perl.txt*   For Vim version 7.3a.  Last change: 2006 Mar 06
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Sven Verdoolaege
+diff -Nur runtime/doc/if_pyth.txt runtime/doc/if_pyth.txt
+--- runtime/doc/if_pyth.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/if_pyth.txt	2011-04-03 09:27:21.204257293 -0700
+@@ -1,4 +1,4 @@
+-*if_pyth.txt*   For Vim version 7.2.  Last change: 2006 Apr 30
++*if_pyth.txt*   For Vim version 7.3a.  Last change: 2008 Aug 16
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Paul Moore
+@@ -93,7 +93,7 @@
+ 
+ Overview >
+ 	:py print "Hello"		# displays a message
+-	:py vim.command(cmd)		# execute an ex command
++	:py vim.command(cmd)		# execute an Ex command
+ 	:py w = vim.windows[n]		# gets window "n"
+ 	:py cw = vim.current.window	# gets the current window
+ 	:py b = vim.buffers[n]		# gets buffer "n"
+diff -Nur runtime/doc/if_ruby.txt runtime/doc/if_ruby.txt
+--- runtime/doc/if_ruby.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/if_ruby.txt	2011-04-03 09:27:21.215638758 -0700
+@@ -1,4 +1,4 @@
+-*if_ruby.txt*   For Vim version 7.2.  Last change: 2006 Apr 30
++*if_ruby.txt*   For Vim version 7.3a.  Last change: 2008 Aug 16
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Shugo Maeda
+@@ -79,7 +79,7 @@
+ 
+ Overview >
+ 	print "Hello"			      # displays a message
+-	VIM.command(cmd)		      # execute an ex command
++	VIM.command(cmd)		      # execute an Ex command
+ 	num = VIM::Window.count		      # gets the number of windows
+ 	w = VIM::Window[n]		      # gets window "n"
+ 	cw = VIM::Window.current	      # gets the current window
+diff -Nur runtime/doc/if_sniff.txt runtime/doc/if_sniff.txt
+--- runtime/doc/if_sniff.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/if_sniff.txt	2011-04-03 09:27:21.216378865 -0700
+@@ -1,4 +1,4 @@
+-*if_sniff.txt*	For Vim version 7.2.  Last change: 2005 Mar 29
++*if_sniff.txt*	For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL
+diff -Nur runtime/doc/if_tcl.txt runtime/doc/if_tcl.txt
+--- runtime/doc/if_tcl.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/if_tcl.txt	2011-04-03 09:27:21.217321829 -0700
+@@ -1,4 +1,4 @@
+-*if_tcl.txt*    For Vim version 7.2.  Last change: 2008 Jun 26
++*if_tcl.txt*    For Vim version 7.3a.  Last change: 2008 Aug 16
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Ingo Wilken
+@@ -83,7 +83,7 @@
+ 	::vim::beep			# Guess.
+ 	::vim::buffer {n}		# Create Tcl command for one buffer.
+ 	::vim::buffer list		# Create Tcl commands for all buffers.
+-	::vim::command [-quiet] {cmd}	# Execute an ex command.
++	::vim::command [-quiet] {cmd}	# Execute an Ex command.
+ 	::vim::expr {expr}		# Use Vim's expression evaluator.
+ 	::vim::option {opt}		# Get vim option.
+ 	::vim::option {opt} {val}	# Set vim option.
+@@ -116,7 +116,7 @@
+ 
+ 	::vim::command {cmd}				*tcl-command*
+ 	::vim::command -quiet {cmd}
+-	Execute the vim (ex-mode) command {cmd}.  Any ex command that affects
++	Execute the vim (ex-mode) command {cmd}.  Any Ex command that affects
+ 	a buffer or window uses the current buffer/current window.  Does not
+ 	return a result other than a standard Tcl error code.  After this
+ 	command is completed, the "::vim::current" variable is updated.
+@@ -210,7 +210,7 @@
+ 
+ 	line						*tcl-var-line*
+ 	lnum						*tcl-var-lnum*
+-	These global variables are only available if the ":tcldo" ex command
++	These global variables are only available if the ":tcldo" Ex command
+ 	is being executed.  They contain the text and line number of the
+ 	current line.  When the Tcl command invoked by ":tcldo" is completed,
+ 	the current line is set to the contents of the "line" variable, unless
+@@ -233,7 +233,7 @@
+ i.e. "$win" calls the command.  The following options are available: >
+ 
+ 	$win buffer		# Create Tcl command for window's buffer.
+-	$win command {cmd}	# Execute ex command in windows context.
++	$win command {cmd}	# Execute Ex command in windows context.
+ 	$win cursor		# Get current cursor position.
+ 	$win cursor {var}	# Set cursor position from array variable.
+ 	$win cursor {row} {col}	# Set cursor position.
+@@ -312,7 +312,7 @@
+ i.e. "$buf" calls the command.  The following options are available: >
+ 
+ 	$buf append {n} {str}	# Append a line to buffer, after line {n}.
+-	$buf command {cmd}	# Execute ex command in buffers context.
++	$buf command {cmd}	# Execute Ex command in buffers context.
+ 	$buf count		# Report number of lines in buffer.
+ 	$buf delcmd {cmd}	# Call Tcl command when buffer is deleted.
+ 	$buf delete {n}		# Delete a single line.
+@@ -438,7 +438,7 @@
+ ==============================================================================
+ 7. Known bugs & problems				*tcl-bugs*
+ 
+-Calling one of the Tcl ex commands from inside Tcl (via "::vim::command") may
++Calling one of the Tcl Ex commands from inside Tcl (via "::vim::command") may
+ have unexpected side effects.  The command creates a new interpreter, which
+ has the same abilities as the standard interpreter - making "::vim::command"
+ available in a safe child interpreter therefore makes the child unsafe.  (It
+@@ -487,11 +487,11 @@
+ 		incr i ; incr n
+ 	}
+ 
+-The same can also be done quickly with two ex commands, using ":tcldo":
++The same can also be done quickly with two Ex commands, using ":tcldo":
+ 	:tcl set n 1
+ 	:[range]tcldo set line "$n\t$line" ; incr n
+ 
+-This procedure runs an ex command on each buffer (idea stolen from Ron Aaron):
++This procedure runs an Ex command on each buffer (idea stolen from Ron Aaron):
+ 	proc eachbuf { cmd } {
+ 		foreach b [::vim::buffer list] {
+ 			$b command $cmd
+@@ -500,7 +500,7 @@
+ Use it like this:
+ 	:tcl eachbuf %s/foo/bar/g
+ Be careful with Tcl's string and backslash substitution, tough.  If in doubt,
+-surround the ex command with curly braces.
++surround the Ex command with curly braces.
+ 
+ 
+ If you want to add some Tcl procedures permanently to vim, just place them in
+diff -Nur runtime/doc/indent.txt runtime/doc/indent.txt
+--- runtime/doc/indent.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/indent.txt	2011-04-03 09:27:21.218297641 -0700
+@@ -1,4 +1,4 @@
+-*indent.txt*    For Vim version 7.2.  Last change: 2008 Jul 30
++*indent.txt*    For Vim version 7.3a.  Last change: 2010 Mar 27
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -431,13 +431,31 @@
+ 		    }
+ 		});
+ <
++				*javascript-cinoptions* *javascript-indenting*
++	JN    Indent JavaScript object declarations correctly by not confusing
++	      them with labels.  The value 'N' is currently unused but must be 
++	      non-zero (e.g. 'J1'). >
++
++		var bar = {
++		    foo: {
++			that: this,
++			some: ok,
++		    },
++		    "bar":{ 
++			a : 2,
++			b: "123abc",
++			x: 4,
++			"y": 5
++		    }
++		}
++<
+ 	)N    Vim searches for unclosed parentheses at most N lines away.
+ 	      This limits the time needed to search for parentheses.  (default
+ 	      20 lines).
+ 
+ 	*N    Vim searches for unclosed comments at most N lines away.  This
+ 	      limits the time needed to search for the start of a comment.
+-	      (default 30 lines).
++	      (default 70 lines).
+ 
+ 	#N    When N is non-zero recognize shell/Perl comments, starting with
+ 	      '#'.  Default N is zero: don't recognizes '#' comments.  Note
+@@ -447,7 +465,7 @@
+ 
+ The defaults, spelled out in full, are:
+ 	cinoptions=>s,e0,n0,f0,{0,}0,^0,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,c3,C0,
+-		   /0,(2s,us,U0,w0,W0,m0,j0,)20,*30,#0
++		   /0,(2s,us,U0,w0,W0,m0,j0,)20,*70,#0
+ 
+ Vim puts a line in column 1 if:
+ - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
+@@ -525,7 +543,7 @@
+ variables:
+ 
+ 								*php-comment*
+-To not enable auto-formating of comments by default (if you want to use your
++To not enable auto-formatting of comments by default (if you want to use your
+ own 'formatoptions'): >
+     :let g:PHP_autoformatcomment = 0
+ 
+@@ -609,8 +627,9 @@
+ 
+ b:sh_indent_options['case-labels']
+ 				Amount of indent to add for case labels.
++				(not actually implemented)
+ 
+-b:sh_indent_options['case-statement']
++b:sh_indent_options['case-statements']
+ 				Amount of indent to add for case statements.
+ 
+ b:sh_indent_options['case-breaks']
+diff -Nur runtime/doc/index.txt runtime/doc/index.txt
+--- runtime/doc/index.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/index.txt	2011-04-03 09:27:21.223961350 -0700
+@@ -1,4 +1,4 @@
+-*index.txt*     For Vim version 7.2.  Last change: 2008 May 04
++*index.txt*     For Vim version 7.3a.  Last change: 2009 Jul 01
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -522,7 +522,7 @@
+ |CTRL-W_+|	CTRL-W +	   increase current window height N lines
+ |CTRL-W_-|	CTRL-W -	   decrease current window height N lines
+ |CTRL-W_<|	CTRL-W <	   decrease current window width N columns
+-|CTRL-W_=|	CTRL-W =	   make all windows the same height
++|CTRL-W_=|	CTRL-W =	   make all windows the same height & width
+ |CTRL-W_>|	CTRL-W >	   increase current window width N columns
+ |CTRL-W_H|	CTRL-W H	   move current window to the far left
+ |CTRL-W_J|	CTRL-W J	   move current window to the very bottom
+@@ -572,7 +572,7 @@
+ 				   window N lines high
+ |CTRL-W_t|	CTRL-W t	   go to top window
+ |CTRL-W_v|	CTRL-W v	   split current window vertically, new window
+-				   N lines wide
++				   N columns wide
+ |CTRL-W_w|	CTRL-W w	   go to N next window (wrap around)
+ |CTRL-W_x|	CTRL-W x	   exchange current window with window N
+ 				   (default: next window)
+@@ -1321,7 +1321,9 @@
+ |:mode|		:mod[e]		show or change the screen mode
+ |:mzscheme|	:mz[scheme]	execute MzScheme command
+ |:mzfile|	:mzf[ile]	execute MzScheme script file
++|:nbclose|	:nbc[lose]	close the current Netbeans session
+ |:nbkey|	:nb[key]	pass a key to Netbeans
++|:nbstart|	:nbs[art]	start a new Netbeans session
+ |:next|		:n[ext]		go to next file in the argument list
+ |:new|		:new		create a new empty window
+ |:nmap|		:nm[ap]		like ":map" but for Normal mode
+@@ -1339,6 +1341,7 @@
+ |:number|	:nu[mber]	print lines with line number
+ |:nunmap|	:nun[map]	like ":unmap" but for Normal mode
+ |:nunmenu|	:nunme[nu]	remove menu for Normal mode
++|:oldfiles|	:ol[dfiles]	list files that have marks in the viminfo file
+ |:open|		:o[pen]		start open mode (not implemented)
+ |:omap|		:om[ap]		like ":map" but for Operator-pending mode
+ |:omapclear|	:omapc[lear]	remove all mappings for Operator-pending mode
+@@ -1349,6 +1352,7 @@
+ |:options|	:opt[ions]	open the options-window
+ |:ounmap|	:ou[nmap]	like ":unmap" but for Operator-pending mode
+ |:ounmenu|	:ounme[nu]	remove menu for Operator-pending mode
++|:ownsyntax|	:ow[nsyntax]	set new local syntax highlight for this window
+ |:pclose|	:pc[lose]	close preview window
+ |:pedit|	:ped[it]	edit file in the preview window
+ |:perl|		:pe[rl]		execute Perl command
+@@ -1396,6 +1400,7 @@
+ |:ruby|		:rub[y]		execute Ruby command
+ |:rubydo|	:rubyd[o]	execute Ruby command for each line
+ |:rubyfile|	:rubyf[ile]	execute Ruby script file
++|:rundo|	:rund[o]	read undo information from a file
+ |:runtime|	:ru[ntime]	source vim scripts in 'runtimepath'
+ |:rviminfo|	:rv[iminfo]	read from viminfo file
+ |:substitute|	:s[ubstitute]	find and replace text
+@@ -1436,7 +1441,7 @@
+ |:shell|	:sh[ell]	escape to a shell
+ |:simalt|	:sim[alt]	Win32 GUI: simulate Windows ALT key
+ |:sign|		:sig[n]		manipulate signs
+-|:silent|	:sil[ent]	Run a command silently
++|:silent|	:sil[ent]	run a command silently
+ |:sleep|	:sl[eep]	do nothing for a few seconds
+ |:slast|	:sla[st]	split window and go to last file in the
+ 				argument list
+@@ -1525,6 +1530,7 @@
+ |:unlockvar|	:unlo[ckvar]	unlock variables
+ |:unmap|	:unm[ap]	remove mapping
+ |:unmenu|	:unme[nu]	remove menu
++|:unsilent|	:uns[ilent]	run a command not silently
+ |:update|	:up[date]	write buffer if modified
+ |:vglobal|	:v[global]	execute commands for not matching lines
+ |:version|	:ve[rsion]	print version number and other info
+@@ -1560,6 +1566,7 @@
+ |:wq|		:wq		write to a file and quit window or Vim
+ |:wqall|	:wqa[ll]	write all changed buffers and quit Vim
+ |:wsverb|	:ws[verb]	pass the verb to workshop over IPC
++|:wundo|	:wu[ndo]	write undo information to a file
+ |:wviminfo|	:wv[iminfo]	write to viminfo file
+ |:xit|		:x[it]		write if buffer changed and quit window or Vim
+ |:xall|		:xa[ll]		same as ":wqall"
+diff -Nur runtime/doc/insert.txt runtime/doc/insert.txt
+--- runtime/doc/insert.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/insert.txt	2011-04-03 09:27:21.234249451 -0700
+@@ -1,4 +1,4 @@
+-*insert.txt*    For Vim version 7.2.  Last change: 2008 Jun 21
++*insert.txt*    For Vim version 7.3a.  Last change: 2010 Mar 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -123,6 +123,7 @@
+ 			':'	the last command-line
+ 			'.'	the last inserted text
+ 			'-'	the last small (less than a line) delete
++							*i_CTRL-R_=*
+ 			'='	the expression register: you are prompted to
+ 				enter an expression (see |expression|)
+ 				Note that 0x80 (128 decimal) is used for
+@@ -133,6 +134,8 @@
+ 				When the result is a |List| the items are used
+ 				as lines.  They can have line breaks inside
+ 				too.
++				When the result is a Float it's automatically
++				converted to a String.
+ 		See |registers| about registers.  {not in Vi}
+ 
+ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=}			*i_CTRL-R_CTRL-R*
+@@ -636,6 +639,7 @@
+ 	      return "\<Tab>"
+ 	   else
+ 	      return "\<C-N>"
++	   endif
+ 	endfunction
+ 	inoremap <Tab> <C-R>=CleverTab()<CR>
+ 
+@@ -660,7 +664,8 @@
+ 
+ 	CTRL-X CTRL-L	After expanding a line you can additionally get the
+ 			line next to it by typing CTRL-X CTRL-L again, unless
+-			a double CTRL-X is used.
++			a double CTRL-X is used.  Only works for loaded
++			buffers.
+ 
+ Completing keywords in current file			*compl-current*
+ 
+@@ -1353,7 +1358,7 @@
+ - function names with additional info:
+   - in case of built-in functions list of possible arguments and after | type
+     data returned by function
+-  - in case of user function arguments and name of file were function was
++  - in case of user function arguments and name of file where function was
+     defined (if it is not current file)
+ 
+ - constants names
+@@ -1441,8 +1446,8 @@
+ If you edit a file called, index.php, run the following command: >
+ 	:syntax list
+ 
+-First thing you will notice is there are many different syntax groups.  The
+-PHP language can include elements from different languages like HTML,
++The first thing you will notice is that there are many different syntax groups.
++The PHP language can include elements from different languages like HTML,
+ JavaScript and many more.  The syntax plugin will only include syntax groups
+ that begin with the filetype, "php", in this case.  For example these syntax
+ groups are included by default with the PHP: phpEnvVar, phpIntVar,
+@@ -1488,7 +1493,7 @@
+ and a tutorial see |omni-sql-completion|.
+ 
+ The SQL completion plugin can be used in conjunction with other completion
+-plugins.  For example, the PHP filetype has it's own completion plugin.
++plugins.  For example, the PHP filetype has its own completion plugin.
+ Since PHP is often used to generate dynamic website by accessing a database,
+ the SQL completion plugin can also be enabled.  This allows you to complete
+ PHP code and SQL code at the same time.
+@@ -1725,14 +1730,9 @@
+ These two commands will keep on asking for lines, until you type a line
+ containing only a ".".  Watch out for lines starting with a backslash, see
+ |line-continuation|.
+-When these commands are used with |:global| or |:vglobal| then the lines are
+-obtained from the text following the command.  Separate lines with a NL
+-escaped with a backslash: >
+-	:global/abc/insert\
+-	one line\
+-	another line
+-The final "." is not needed then.
+-NOTE: ":append" and ":insert" don't work properly in between ":if" and
++
++NOTE: These commands cannot be used with |:global| or |:vglobal|.
++":append" and ":insert" don't work properly in between ":if" and
+ ":endif", ":for" and ":endfor", ":while" and ":endwhile".
+ 
+ 							*:start* *:startinsert*
+diff -Nur runtime/doc/intro.txt runtime/doc/intro.txt
+--- runtime/doc/intro.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/intro.txt	2011-04-03 09:27:21.238910719 -0700
+@@ -1,4 +1,4 @@
+-*intro.txt*     For Vim version 7.2.  Last change: 2008 Jun 24
++*intro.txt*     For Vim version 7.3a.  Last change: 2009 Apr 21
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -43,6 +43,10 @@
+ document, there is a separate document for each supported system, see
+ |sys-file-list|.
+ 
++							*pronounce*
++Vim is pronounced as one word, like Jim, not vi-ai-em.  It's written with a
++capital, since it's a name, again like Jim.
++
+ This manual is a reference for all the Vim commands and options.  This is not
+ an introduction to the use of Vi or Vim, it gets a bit complicated here and
+ there.  For beginners, there is a hands-on |tutor|.  To learn using Vim, read
+@@ -190,6 +194,7 @@
+ Vim would never have become what it is now, without the help of these people!
+ 
+ 	Ron Aaron		Win32 GUI changes
++	Mohsin Ahmed		encryption
+ 	Zoltan Arpadffy		work on VMS port
+ 	Tony Andrews		Stevie
+ 	Gert van Antwerpen	changes for DJGPP on MS-DOS
+@@ -222,13 +227,13 @@
+ 	David Leonard		Port of Python extensions to Unix
+ 	Avner Lottem		Edit in right-to-left windows
+ 	Flemming Madsen		X11 client-server, various features and patches
+-	Microsoft		Gave me a copy of DevStudio to compile Vim with
++	Tony Mechelynck		answers many user questions
+ 	Paul Moore		Python interface extensions, many patches
+ 	Katsuhito Nagano	Work on multi-byte versions
+ 	Sung-Hyun Nam		Work on multi-byte versions
+ 	Vince Negri		Win32 GUI and generic console enhancements
+ 	Steve Oualline		Author of the first Vim book |frombook|
+-	Dominique Pelle		figuring out valgrind reports and fixes
++	Dominique Pelle		valgrind reports and many fixes
+ 	A.Politz		Many bug reports and some fixes
+ 	George V. Reilly	Win32 port, Win32 GUI start-off
+ 	Stephen Riehm		bug collector
+diff -Nur runtime/doc/map.txt runtime/doc/map.txt
+--- runtime/doc/map.txt	2011-04-03 13:03:30.018805394 -0700
++++ runtime/doc/map.txt	2011-04-03 09:27:21.240893142 -0700
+@@ -1,4 +1,4 @@
+-*map.txt*       For Vim version 7.2.  Last change: 2008 Aug 09
++*map.txt*       For Vim version 7.3a.  Last change: 2009 Nov 04
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -272,9 +272,10 @@
+ 1.3 MAPPING AND MODES					*:map-modes*
+ 			*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
+ 
+-There are five sets of mappings
++There are six sets of mappings
+ - For Normal mode: When typing commands.
+ - For Visual mode: When typing commands while the Visual area is highlighted.
++- For Select mode: like Visual mode but typing text replaces the selection.
+ - For Operator-pending mode: When an operator is pending (after "d", "y", "c",
+   etc.).  See below: |omap-info|.
+ - For Insert mode.  These are also used in Replace mode.
+@@ -299,6 +300,9 @@
+ Some commands work both in Visual and Select mode, some in only one.  Note
+ that quite often "Visual" is mentioned where both Visual and Select mode
+ apply. |Select-mode-mapping|
++NOTE: Mapping a printable character in Select mode may confuse the user.  It's
++better to explicitly use :xmap and :smap for printable characters.  Or use
++:sunmap after defining the mapping.
+ 
+     commands:				      modes: ~
+ 					  Visual    Select ~
+@@ -590,11 +594,14 @@
+ suggestions:
+ - Function keys <F2>, <F3>, etc..  Also the shifted function keys <S-F1>,
+   <S-F2>, etc.  Note that <F1> is already used for the help command.
+-- Meta-keys (with the ALT key pressed). |:map-alt-keys|
++- Meta-keys (with the ALT key pressed).  Depending on your keybord accented
++  characters may be used as well. |:map-alt-keys|
+ - Use the '_' or ',' character and then any other character.  The "_" and ","
+   commands do exist in Vim (see |_| and |,|), but you probably never use them.
+ - Use a key that is a synonym for another command.  For example: CTRL-P and
+   CTRL-N.  Use an extra character to allow more mappings.
++- The key defined by <Leader> and one or more other keys.  This is especially
++  useful in scripts. |mapleader|
+ 
+ See the file "index" for keys that are not used and thus can be mapped without
+ losing any builtin function.  You can also use ":help {key}^D" to find out if
+@@ -1082,7 +1089,7 @@
+ It is possible to define your own Ex commands.  A user-defined command can act
+ just like a built-in command (it can have a range or arguments, arguments can
+ be completed as filenames or buffer names, etc), except that when the command
+-is executed, it is transformed into a normal ex command and then executed.
++is executed, it is transformed into a normal Ex command and then executed.
+ 
+ For starters: See section |40.2| in the user manual.
+ 
+@@ -1150,7 +1157,7 @@
+ 
+ Command attributes
+ 
+-User-defined commands are treated by Vim just like any other ex commands.  They
++User-defined commands are treated by Vim just like any other Ex commands.  They
+ can have arguments, or have a range specified.  Arguments are subject to
+ completion as filenames, buffers, etc.  Exactly how this works depends upon the
+ command's attributes, which are specified when the command is defined.
+@@ -1240,7 +1247,7 @@
+ 	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
++pattern in) ArgLead.  Vim will filter the candidates with its regexp engine
+ after function return, and this is probably more efficient in most cases. For
+ the "customlist" argument, Vim will not filter the returned completion
+ candidates and the user supplied function should filter the candidates.
+@@ -1256,7 +1263,7 @@
+     :com -nargs=1 -bang -complete=customlist,EditFileComplete
+ 			\ EditFile edit<bang> <args>
+     :fun EditFileComplete(A,L,P)
+-    :    return split(globpath(&path, a:ArgLead), "\n")
++    :    return split(globpath(&path, a:A), "\n")
+     :endfun
+ <
+ 
+@@ -1405,7 +1412,7 @@
+ This will invoke: >
+ 	:call Allargs("%s/foo/bar/ge|update")
+ <
+-When defining an user command in a script, it will be able to call functions
++When defining a user command in a script, it will be able to call functions
+ local to the script and use mappings local to the script.  When the user
+ invokes the user command, it will run in the context of the script it was
+ defined in.  This matters if |<SID>| is used in a command.
+diff -Nur runtime/doc/map.txt.~1~ runtime/doc/map.txt.~1~
+diff -Nur runtime/doc/mbyte.txt runtime/doc/mbyte.txt
+--- runtime/doc/mbyte.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/mbyte.txt	2011-04-03 09:27:21.242152298 -0700
+@@ -1,4 +1,4 @@
+-*mbyte.txt*     For Vim version 7.2.  Last change: 2008 Jun 21
++*mbyte.txt*     For Vim version 7.3a.  Last change: 2009 Nov 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
+@@ -555,7 +555,7 @@
+ font is a long string.  For multi-byte fonts we need several of these...
+ 
+ Note: Most of this is no longer relevant for GTK+ 2.  Selecting a font via
+-its XLFD is not supported anymore; see 'guifont' for an example of how to
++its XLFD is not supported; see 'guifont' for an example of how to
+ set the font.  Do yourself a favor and ignore the |XLFD| and |xfontset|
+ sections below.
+ 
+@@ -753,7 +753,7 @@
+ 
+ X INPUT METHOD (XIM) BACKGROUND			*XIM* *xim* *x-input-method*
+ 
+-XIM is an international input module for X.  There are two kind of structures,
++XIM is an international input module for X.  There are two kinds of structures,
+ Xlib unit type and |IM-server| (Input-Method server) type.  |IM-server| type
+ is suitable for complex input, such as CJK.
+ 
+@@ -775,7 +775,7 @@
+   For Chinese, there's a great XIM server named "xcin", you can input both
+   Traditional and Simplified Chinese characters.  And it can accept other
+   locale if you make a correct input table.  Xcin can be found at:
+-  http://xcin.linux.org.tw/
++  http://cle.linux.org.tw/xcin/
+   Others are scim: http://scim.freedesktop.org/ and fcitx:
+   http://www.fcitx.org/
+ 
+@@ -826,7 +826,7 @@
+   of Preedit Area and Status Area: |OnTheSpot|, |OffTheSpot|, |OverTheSpot|
+   and |Root|.
+ 
+-  Currently, GUI Vim support three style, |OverTheSpot|, |OffTheSpot| and
++  Currently, GUI Vim supports three styles, |OverTheSpot|, |OffTheSpot| and
+   |Root|.
+ 
+ *.  on-the-spot						*OnTheSpot*
+@@ -963,10 +963,10 @@
+     language version of Global IME at same place.
+ 
+     - Global IME detailed information.
+-	http://www.microsoft.com/windows/ie/features/ime.asp
++	http://search.microsoft.com/results.aspx?q=global+ime
+ 
+     - Active Input Method Manager (Global IME)
+-	http://msdn.microsoft.com/workshop/misc/AIMM/aimm.asp
++	http://msdn.microsoft.com/en-us/library/aa741221(v=VS.85).aspx
+ 
+     Support for Global IME is an experimental feature.
+ 
+@@ -1030,7 +1030,7 @@
+ Ex command first, which is ASCII.
+ For typing search patterns the 'imsearch' option is used.  It can be set to
+ use the same value as for 'iminsert'.
+-
++								*lCursor*
+ It is possible to give the GUI cursor another color when the language mappings
+ are being used.  This is disabled by default, to avoid that the cursor becomes
+ invisible when you use a non-standard background color.  Here is an example to
+@@ -1246,21 +1246,37 @@
+ Unicode (with a few rarely used languages excluded).  And it's mostly possible
+ to mix these languages in one file, which is impossible with other encodings.
+ 
+-Unicode can be encoded in several ways.  The two most popular ones are UCS-2,
+-which uses 16-bit words and UTF-8, which uses one or more bytes for each
+-character.  Vim can support all of these encodings, but always uses UTF-8
++Unicode can be encoded in several ways.  The most popular one is UTF-8, which
++uses one or more bytes for each character and is backwards compatible with
++ASCII.   On MS-Windows UTF-16 is also used (previously UCS-2), which uses
++16-bit words.  Vim can support all of these encodings, but always uses UTF-8
+ internally.
+ 
+-Vim has comprehensive UTF-8 support.  It appears to work in:
++Vim has comprehensive UTF-8 support.  It works well in:
+ - xterm with utf-8 support enabled
+ - Athena, Motif and GTK GUI
+ - MS-Windows GUI
++- several other platforms
+ 
+ Double-width characters are supported.  This works best with 'guifontwide' or
+ 'guifontset'.  When using only 'guifont' the wide characters are drawn in the
+ normal width and a space to fill the gap.  Note that the 'guifontset' option
+ is no longer relevant in the GTK+ 2 GUI.
+ 
++							*bom-bytes*
++When reading a file a BOM (Byte Order Mark) can be used to recognize the
++Unicode encoding:
++	EF BB BF     utf-8
++	FE FF        utf-16 big endian
++	FF FE        utf-16 little endian
++	00 00 FE FF  utf-32 big endian
++	FF FE 00 00  utf-32 little endian
++
++Utf-8 is the recommended encoding.  Note that it's difficult to tell utf-16
++and utf-32 apart.  Utf-16 is often used on MS-Windows, utf-32 is not
++widespread as file format.
++
++
+ 					*mbyte-combining* *mbyte-composing*
+ A composing or combining character is used to change the meaning of the
+ character before it.  The combining characters are drawn on top of the
+@@ -1402,7 +1418,7 @@
+ 
+ Contributions specifically for the multi-byte features by:
+ 	Chi-Deok Hwang <[email protected]>
+-	Nam SungHyun <[email protected]>
++	SungHyun Nam <[email protected]>
+ 	K.Nagano <[email protected]>
+ 	Taro Muraoka  <[email protected]>
+ 	Yasuhiro Matsumoto <[email protected]>
+diff -Nur runtime/doc/message.txt runtime/doc/message.txt
+--- runtime/doc/message.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/message.txt	2011-04-03 09:27:21.243156109 -0700
+@@ -1,4 +1,4 @@
+-*message.txt*   For Vim version 7.2.  Last change: 2007 Aug 19
++*message.txt*   For Vim version 7.3a.  Last change: 2010 Feb 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -19,7 +19,7 @@
+ is especially useful when messages have been overwritten or truncated.  This
+ depends on the 'shortmess' option.
+ 
+-The number of remembered messages is fixed at 20 for the tiny version and 100
++The number of remembered messages is fixed at 20 for the tiny version and 200
+ for other versions.
+ 
+ 								*g<*
+@@ -72,7 +72,7 @@
+   Hangul automata ERROR
+   block was not locked
+   Didn't get block nr {N}?
+-  ml_timestamp: Didn't get block 0??
++  ml_upd_block0(): Didn't get block 0??
+   pointer block id wrong {N}
+   Updated too many blocks?
+   get_varp ERROR
+@@ -128,15 +128,14 @@
+ are available on most systems.
+ 
+ 							*E458*  >
+-  Cannot allocate colormap entry for "xxxx"
+   Cannot allocate colormap entry, some colors may be incorrect
+ 
+ This means that there are not enough colors available for Vim.  It will still
+ run, but some of the colors will not appear in the specified color.  Try
+ stopping other applications that use many colors, or start them after starting
+ gvim.
+-Netscape is known to consume a lot of colors.  You can avoid this by telling
+-it to use its own colormap: >
++Browsers are known to consume a lot of colors.  You can avoid this with
++netscape by telling it to use its own colormap: >
+ 	netscape -install
+ Or tell it to limit to a certain number of colors (64 should work well): >
+ 	netscape -ncols 64
+@@ -180,7 +179,7 @@
+ can overwrite.
+ 
+ 							*E46*  >
+-  Cannot set read-only variable "{name}"
++  Cannot change read-only variable "{name}"
+ 
+ You are trying to assign a value to an argument of a function |a:var| or a Vim
+ internal variable |v:var| which is read-only.
+@@ -279,8 +278,8 @@
+ incomplete.
+ 
+ 							*E13* *E189*  >
+-  File exists (use ! to override)
+-  "{filename}" exists (use ! to override)
++  File exists (add ! to override)
++  "{filename}" exists (add ! to override)
+ 
+ You are protected from accidentally overwriting a file.  When you want to
+ write anyway, use the same command, but add a "!" just after the command.
+@@ -349,7 +348,7 @@
+ "foo" and "bar".
+ 
+ 							*E315*  >
+-  ml_get: invalid lnum:
++  ml_get: invalid lnum: {number}
+ 
+ This is an internal Vim error.  Please try to find out how it can be
+ reproduced, and submit a bug report |bugreport.vim|.
+@@ -420,8 +419,8 @@
+   |:map-<buffer>|
+ 
+ 							*E37* *E89*  >
+-  No write since last change (use ! to override)
+-  No write since last change for buffer {N} (use ! to override)
++  No write since last change (add ! to override)
++  No write since last change for buffer {N} (add ! to override)
+ 
+ You are trying to |abandon| a file that has changes.  Vim protects you from
+ losing your work.  You can either write the changed file with ":w", or, if you
+@@ -477,7 +476,7 @@
+ longer than about 65000 characters.  Try using a shorter pattern.
+ 
+ 							*E45*  >
+-  'readonly' option is set (use ! to override)
++  'readonly' option is set (add ! to override)
+ 
+ You are trying to write a file that was marked as read-only.  To write the
+ file anyway, either reset the 'readonly' option, or add a '!' character just
+@@ -567,7 +566,7 @@
+   Unable to open swap file for "{filename}", recovery impossible
+ 
+ Vim was not able to create a swap file.  You can still edit the file, but if
+-Vim unexpected exits the changes will be lost.  And Vim may consume a lot of
++Vim unexpectedly exits the changes will be lost.  And Vim may consume a lot of
+ memory when editing a big file.  You may want to change the 'directory' option
+ to avoid this error.  See |swap-file|.
+ 
+@@ -586,6 +585,7 @@
+ Messages like this appear when starting up.  This is not a Vim problem, your
+ X11 configuration is wrong.  You can find a hint on how to solve this here:
+ http://groups.yahoo.com/group/solarisonintel/message/12179.
++[this URL is no longer valid]
+ 
+ 							*W10*  >
+   Warning: Changing a readonly file
+@@ -641,7 +641,7 @@
+ automatically reload the file.
+ 
+ 							*E211*  >
+-  Warning: File "{filename}" no longer available
++  File "{filename}" no longer available
+ 
+ The file which you have started editing has disappeared, or is no longer
+ accessible.  Make sure you write the buffer somewhere to avoid losing
+@@ -688,6 +688,7 @@
+ 
+ 							*E474* *E475*  >
+   Invalid argument
++  Invalid argument: {arg}
+ 
+ An Ex command has been executed, but an invalid argument has been specified.
+ 
+@@ -715,8 +716,8 @@
+ Vim cannot create a temporary file.
+ 
+ 							*E484* *E485*  >
+-  Can't open file %s"
+-  Can't read file %s"
++  Can't open file {filename}
++  Can't read file {filename}
+ 
+ Vim cannot read a temporary file.
+ 
+@@ -758,9 +759,9 @@
+ -> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages.  This
+    works the same way as at the |more-prompt|.  Only works when 'compatible'
+    is off and 'more' is on.
+--> Pressing 'j', 'd' or <Down> is ignored when messages scrolled off the top
+-   of the screen, 'compatible' is off and 'more' is on, to avoid that typing
+-   one 'j' too many causes the messages to disappear.
++-> Pressing 'j', 'f', 'd' or <Down> is ignored when messages scrolled off the
++   top of the screen, 'compatible' is off and 'more' is on, to avoid that
++   typing one 'j' or 'f' too many causes the messages to disappear.
+ -> Press <C-Y> to copy (yank) a modeless selection to the clipboard register.
+ -> Use a menu.  The characters defined for Cmdline-mode are used.
+ -> When 'mouse' contains the 'r' flag, clicking the left mouse button works
+@@ -795,7 +796,7 @@
+ Type					effect ~
+      <CR> or <NL> or j or <Down>	one more line
+      d					down a page (half a screen)
+-     <Space> or <PageDown>		down a screen
++     <Space> or f or <PageDown>		down a screen
+      G					down all the way, until the hit-enter
+ 					prompt
+ 
+diff -Nur runtime/doc/mlang.txt runtime/doc/mlang.txt
+--- runtime/doc/mlang.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/mlang.txt	2011-04-03 09:27:21.243916148 -0700
+@@ -1,4 +1,4 @@
+-*mlang.txt*     For Vim version 7.2.  Last change: 2008 Jun 08
++*mlang.txt*     For Vim version 7.3a.  Last change: 2008 Jun 08
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/motion.txt runtime/doc/motion.txt
+--- runtime/doc/motion.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/motion.txt	2011-04-03 09:27:21.254848339 -0700
+@@ -1,4 +1,4 @@
+-*motion.txt*    For Vim version 7.2.  Last change: 2008 Aug 03
++*motion.txt*    For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -151,6 +151,11 @@
+ ==============================================================================
+ 2. Left-right motions					*left-right-motions*
+ 
++These commands move the cursor to the specified column in the current line.
++They stop at the first column and at the end of the line, except "$", which
++may move to one of the next lines.  See 'whichwrap' option to make some of the
++commands move across line boundaries.
++
+ h		or					*h*
+ <Left>		or					*<Left>*
+ CTRL-H		or					*CTRL-H* *<BS>*
+@@ -234,7 +239,7 @@
+ 
+ 							*bar*
+ |			To screen column [count] in the current line.
+-			|exclusive| motion.
++			|exclusive| motion.  Ceci n'est pas une pipe.
+ 
+ 							*f*
+ f{char}			To [count]'th occurrence of {char} to the right.  The
+@@ -270,11 +275,6 @@
+ ,			Repeat latest f, t, F or T in opposite direction
+ 			[count] times.
+ 
+-These commands move the cursor to the specified column in the current line.
+-They stop at the first column and at the end of the line, except "$", which
+-may move to one of the next lines.  See 'whichwrap' option to make some of the
+-commands move across line boundaries.
+-
+ ==============================================================================
+ 3. Up-down motions					*up-down-motions*
+ 
+@@ -315,6 +315,7 @@
+ G			Goto line [count], default last line, on the first
+ 			non-blank character |linewise|.  If 'startofline' not
+ 			set, keep the same column.
++			G is a one of |jump-motions|.
+ 
+ 							*<C-End>*
+ <C-End>			Goto line [count], default last line, on the last
+@@ -325,9 +326,11 @@
+ 			non-blank character |linewise|.  If 'startofline' not
+ 			set, keep the same column.
+ 
+-:[range]		Set the cursor on the specified line number.  If
+-			there are several numbers, the last one is used.
+-
++:[range]		Set the cursor on the last line number in [range].
++			[range] can also be just one line number, e.g., ":1"
++			or ":'m".
++			In contrast with |G| this command does not modify the
++			|jumplist|.
+ 							*N%*
+ {count}%		Go to {count} percentage in the file, on the first
+ 			non-blank in the line |linewise|.  To compute the new
+@@ -637,7 +640,8 @@
+ 			When the cursor starts on a quote, Vim will figure out
+ 			which quote pairs form a string by searching from the
+ 			start of the line.
+-			Any trailing or leading white space is included.
++			Any trailing white space is included, unless there is
++			none, then leading white space is included.
+ 			When used in Visual mode it is made characterwise.
+ 			Repeating this object in Visual mode another string is
+ 			included.  A count is currently not used.
+diff -Nur runtime/doc/netbeans.txt runtime/doc/netbeans.txt
+--- runtime/doc/netbeans.txt	2011-04-03 13:03:28.644215371 -0700
++++ runtime/doc/netbeans.txt	2011-04-03 09:27:21.266242818 -0700
+@@ -1,4 +1,4 @@
+-*netbeans.txt*  For Vim version 7.2.  Last change: 2009 Jan 06
++*netbeans.txt*  For Vim version 7.3a.  Last change: 2009 Jan 06
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Gordon Prieur et al.
+@@ -14,7 +14,7 @@
+ 4.  Error Messages				|netbeans-messages|
+ 5.  Running Vim in NetBeans mode		|netbeans-run|
+ 6.  NetBeans protocol				|netbeans-protocol|
+-7.  NetBeans key				|netbeans-key|
++7.  NetBeans commands				|netbeans-commands|
+ 8.  Known problems				|netbeans-problems|
+ 9.  Debugging NetBeans protocol			|netbeans-debugging|
+ 10. NetBeans External Editor
+@@ -48,6 +48,8 @@
+ 	http://www.a-a-p.org
+ - Clewn, a gdb integration into Vim, written in C:
+ 	http://clewn.sourceforge.net/
++- Pyclewn, a gdb integration into Vim, written in Python:
++	http://pyclewn.sourceforge.net/
+ - VimPlugin, integration of Vim inside Eclipse:
+ 	http://vimplugin.sourceforge.net/wiki/pmwiki.php
+ - PIDA, IDE written in Python integrating Vim:
+@@ -101,7 +103,8 @@
+ ==============================================================================
+ 3. Configuring Vim for NetBeans			*netbeans-configure*
+ 
+-For more help installing Vim, please read |usr_90.txt| in the Vim User Manual.
++For more help about installing Vim, please read |usr_90.txt| in the Vim User
++Manual.
+ 
+ 
+ On Unix:
+@@ -114,9 +117,8 @@
+ In case you do not want the NetBeans interface you can disable it by
+ uncommenting a line with "--disable-netbeans" in the Makefile.
+ 
+-Currently, only GVim is supported in this integration as NetBeans does not
+-have means to supply a terminal emulator for the Vim command.  Furthermore,
+-there is only GUI support for GTK, GNOME, and Motif.
++Currently the NetBeans interface is supported by Vim running in a terminal and
++by GVim when it is run with one of the following GUIs: GTK, GNOME, and Motif.
+ 
+ If Motif support is required the user must supply XPM libraries.  See
+ |workshop-xpm| for details on obtaining the latest version of XPM.
+@@ -150,6 +152,12 @@
+ 		which you cannot change.  Also sets the current buffer, if
+ 		necessary.
+ 
++							*E532*
++The defineAnnoType highlighting color name is too long
++		The maximum length of the "fg" or "bg" color argument in the
++		defineAnnoType command is 32 characters.
++		New in version 2.5.
++
+ 							*E656*
+ Writes of unmodified buffers forbidden
+ 		Writes of unmodified buffers that were opened from the
+@@ -180,25 +188,37 @@
+ ==============================================================================
+ 5. Running Vim in NetBeans mode				*netbeans-run*
+ 
+-Vim must be started with the |-nb| argument.  Three forms can be used, that
+-differ in the way the information for the connection is specified:
++There are two different ways to run Vim in NetBeans mode:
++
++	+ an IDE may start Vim with the|-nb|command line argument
++	+ NetBeans can be started from within Vim with the|:nbstart|command
++
++							*netbeans-parameters*
++Three forms can be used to setup the NetBeans connection parameters.
++When started from the command line, the|-nb|command line argument may be:
+ 
+ 	-nb={fname}				from a file
+ 	-nb:{hostname}:{addr}:{password}	directly
+ 	-nb					from a file or environment
+ 
++When started from within Vim, the|:nbstart|optional argument may be:
++
++	={fname}				from a file
++	:{hostname}:{addr}:{password}	        directly
++	<MISSING ARGUMENT>			from a file or environment
++
+ 							*E660* *E668*
+-For security reasons, the best method is to write the information in a file
+-readable only by the user.  The name of the file can be passed with the
+-"-nb={fname}" argument or, when "-nb" is used without a parameter, the
+-environment variable "__NETBEANS_CONINFO".  The file must contain these three
+-lines, in any order:
++When NetBeans is started from the command line, for security reasons, the best
++method is to write the information in a file readable only by the user.  The
++name of the file can be passed with the "-nb={fname}" argument or, when "-nb"
++is used without a parameter, the environment variable "__NETBEANS_CONINFO".
++The file must contain these three lines, in any order:
+ 
+ 	host={hostname}
+ 	port={addr}
+ 	auth={password}
+ 
+-Other lines are ignored.  The caller of Vim is responsible for deleting the
++Other lines are ignored.  The Vim Controller is responsible for deleting the
+ file afterwards.
+ 
+ {hostname} is the name of the machine where Vim Controller is running.  When
+@@ -235,8 +255,8 @@
+ confusion happening again, netbeans_saved() has been renamed to
+ netbeans_save_buffer().
+ 
+-We are now at version 2.4.  For the differences between 2.3 and 2.4 search for
+-"2.4" below.
++We are now at version 2.5.  For the differences between 2.4 and 2.5 search for
++"2.5" below.
+ 
+ The messages are currently sent over a socket.  Since the messages are in
+ plain UTF-8 text this protocol could also be used with any other communication
+@@ -303,8 +323,11 @@
+ 
+ number		Argument with a decimal number.
+ 
+-optnum		Argument with either a decimal number or "none" (without the
+-		quotes).
++color		Argument with either a decimal number, "none" (without the
++		quotes) or the name of a color (without the quotes) defined
++		both in the color list in|highlight-ctermfg| and in the color
++		list in|gui-colors|.
++		New in version 2.5.
+ 
+ offset		A number argument that indicates a byte position in a buffer.
+ 		The first byte has offset zero.  Line breaks are counted for
+@@ -365,9 +388,14 @@
+ 		   typeName	string	name that identifies this annotation
+ 		   tooltip	string	not used
+ 		   glyphFile	string	name of icon file
+-		   fg		optnum	foreground color for line highlighting
+-		   bg		optnum	background color for line highlighting
++		   fg		color	foreground color for line highlighting
++		   bg		color	background color for line highlighting
+ 		Vim will define a sign for the annotation.
++		When color is a number, this is the "#rrggbb" Red, Green and
++		Blue values of the color (see |gui-colors|) and the
++		highlighting is only defined for GVim.
++		When color is a name, this color is defined both for Vim
++		running in a color terminal and for GVim.
+ 		When both "fg" and "bg" are "none" no line highlighting is
+ 		used (new in version 2.1).
+ 		When "glyphFile" is empty, no text sign is used (new in
+@@ -431,6 +459,7 @@
+ 		New in version 2.1.
+ 
+ raise		Bring the editor to the foreground.
++		Only when Vim is run with a GUI.
+ 		New in version 2.1.
+ 
+ removeAnno serNum
+@@ -520,6 +549,7 @@
+ 		Show a balloon (popup window) at the mouse pointer position,
+ 		containing "text", a string argument.  The balloon should
+ 		disappear when the mouse is moved more than a few pixels.
++		Only when Vim is run with a GUI.
+ 		New in version 2.1.
+ 
+ specialKeys
+@@ -653,6 +683,7 @@
+ 		Used when 'ballooneval' is set and the mouse pointer rests on
+ 		some text for a moment.  "text" is a string, the text under
+ 		the mouse pointer.
++		Only when Vim is run with a GUI.
+ 		New in version 2.1.
+ 
+ buttonRelease button lnum col
+@@ -786,10 +817,22 @@
+ 
+ 
+ ==============================================================================
+-7. NetBeans key						*netbeans-key*
++7. NetBeans commands					*netbeans-commands*
++
++							*:nbstart* *E511*
++:nbs[tart] {connection}	Start a new Netbeans session with {connection} as the
++			socket connection parameters.  The format of
++			{connection} is described in|netbeans-parameters|.
++			At any time, one may check if the netbeans socket is
++			connected by running the command:
++			':echo has("netbeans_enabled")'
++
++							*:nbclose*
++:nbc[lose]		Close the current NetBeans session. Remove all placed
++			signs.
+ 
+ 							*:nbkey*
+-:nbkey key		Pass the key to the Vim Controller for processing
++:nb[key] {key}		Pass the {key} to the Vim Controller for processing
+ 
+ When a hot-key has been installed with the specialKeys command, this command
+ can be used to generate a hotkey messages to the Vim Controller. The events
+@@ -802,6 +845,13 @@
+ NUL bytes are not possible.  For editor -> IDE they will appear as NL
+ characters.  For IDE -> editor they cannot be inserted.
+ 
++A NetBeans session may be initiated with Vim running in a terminal, and
++continued later in a GUI environment after running the |:gui|command. In this
++case, the highlighting defined for the NetBeans annotations may be cleared
++when the ":gui" command sources .gvimrc and this file loads a colorscheme
++that runs the command ":highlight clear".
++New in version 2.5.
++
+ 
+ ==============================================================================
+ 9. Debugging NetBeans protocol				*netbeans-debugging*
+diff -Nur runtime/doc/netbeans.txt.~1~ runtime/doc/netbeans.txt.~1~
+diff -Nur runtime/doc/options.txt runtime/doc/options.txt
+--- runtime/doc/options.txt	2011-04-03 13:03:29.610947520 -0700
++++ runtime/doc/options.txt	2011-04-03 09:27:21.272776983 -0700
+@@ -1,4 +1,4 @@
+-*options.txt*	For Vim version 7.2.  Last change: 2008 Nov 25
++*options.txt*	For Vim version 7.3a.  Last change: 2010 May 13
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+@@ -40,6 +40,7 @@
+ 
+ :se[t] no{option}	Toggle option: Reset, switch it off.
+ 
++							   *:set-!* *:set-inv*
+ :se[t] {option}!   or
+ :se[t] inv{option}	Toggle option: Invert value. {not in Vi}
+ 
+@@ -696,8 +697,8 @@
+ 'autochdir' 'acd'	boolean (default off)
+ 			global
+ 			{not in Vi}
+-			{only available when compiled with the
+-			|+netbeans_intg| or |+sun_workshop| feature}
++			{only available when compiled with it, use
++			exists("+autochdir") to check}
+ 	When on, Vim will change the current working directory whenever you
+ 	open a file, switch buffers, delete a buffer or open/close a window.
+ 	It will change to the directory containing the file which was opened
+@@ -743,8 +744,8 @@
+ 	     within a word (initial, medial, final and stand-alone).
+ 	  b) the enabling of the ability to compose characters
+ 	  c) the enabling of the required combining of some characters
+-	When disabled the character display reverts back to each character's
+-	true stand-alone form.
++	When disabled the display shows each character's true stand-alone
++	form.
+ 	Arabic is a complex language which requires other settings, for
+ 	further details see |arabic.txt|.
+ 
+@@ -813,11 +814,11 @@
+ 	When 'background' is set Vim will adjust the default color groups for
+ 	the new value.  But the colors used for syntax highlighting will not
+ 	change.					*g:colors_name*
+-	When a color scheme is loaded (the "colors_name" variable is set)
++	When a color scheme is loaded (the "g:colors_name" variable is set)
+ 	setting 'background' will cause the color scheme to be reloaded.  If
+ 	the color scheme adjusts to the value of 'background' this will work.
+ 	However, if the color scheme sets 'background' itself the effect may
+-	be undone.  First delete the "colors_name" variable when needed.
++	be undone.  First delete the "g:colors_name" variable when needed.
+ 
+ 	When setting 'background' to the default value with: >
+ 		:set background&
+@@ -959,7 +960,8 @@
+ 			{not in Vi}
+ 	List of directories for the backup file, separated with commas.
+ 	- The backup file will be created in the first directory in the list
+-	  where this is possible.
++	  where this is possible.  The directory must exist, Vim will not
++	  create it for you.
+ 	- Empty means that no backup file will be created ('patchmode' is
+ 	  impossible!).  Writing may fail because of this.
+ 	- A directory "." means to put the backup file in the same directory
+@@ -1143,7 +1145,7 @@
+ 	Some applications use the BOM to recognize the encoding of the file.
+ 	Often used for UCS-2 files on MS-Windows.  For other applications it
+ 	causes trouble, for example: "cat file1 file2" makes the BOM of file2
+-	appear halfway the resulting file.
++	appear halfway the resulting file.  Gcc doesn't accept a BOM.
+ 	When Vim reads a file and 'fileencodings' starts with "ucs-bom", a
+ 	check for the presence of the BOM is done and 'bomb' set accordingly.
+ 	Unless 'binary' is set, it is removed from the first line, so that you
+@@ -1167,7 +1169,7 @@
+ 			Win32 GUI}
+ 	Which directory to use for the file browser:
+ 	   last		Use same directory as with last file browser, where a
+-	   		file was opened or saved.
++			file was opened or saved.
+ 	   buffer	Use the directory of the related buffer.
+ 	   current	Use the current directory.
+ 	   {path}	Use the specified directory
+@@ -1448,6 +1450,8 @@
+ 			as HTML.  This works to copy rendered HTML from
+ 			Firefox, paste it as raw HTML in Vim, select the HTML
+ 			in Vim and paste it in a rich edit box in Firefox.
++			You probably want to add this only temporarily,
++			possibly use BufEnter autocommands.
+ 			Only supported for GTK version 2 and later.
+ 			Only available with the |+multi_byte| feature.
+ 
+@@ -1703,6 +1707,25 @@
+ 		    combination with "menu" or "menuone".
+ 
+ 
++'conceallevel' 'conc'		*'conceallevel'* *'conc'*
++			number (default 0)
++			local to window
++			{not in Vi}
++			{not available when compiled without the |+conceal|
++			feature}
++	Determine how text with the "conceal" syntax attribute is shown:
++
++	'conceallevel'	Effect
++	0		Text is shown normally
++	1		Each block of concealed text is replaced with the
++			character defined in 'listchars' (default is a dash)
++			and highlighted with the "Conceal" highlight group.
++	2		Concealed text is completely hidden unless it has a
++			custom replacement character defined (see
++			|:syn-cchar|.
++	3		Concealed text is completely hidden.
++
++
+ 				*'confirm'* *'cf'* *'noconfirm'* *'nocf'*
+ 'confirm' 'cf'		boolean (default off)
+ 			global
+@@ -1759,8 +1782,8 @@
+ 	set and to the Vim default value when 'compatible' is reset.
+ 	NOTE: This option is set to the POSIX default value at startup when
+ 	the Vi default value would be used and the $VIM_POSIX environment
+-	variable exists |posix|.  This means tries to behave like the POSIX
+-	specification.
++	variable exists |posix|.  This means Vim tries to behave like the
++	POSIX specification.
+ 
+ 	    contains	behavior	~
+ 								*cpo-a*
+@@ -1882,8 +1905,9 @@
+ 			parenthesis match.  When included "%" ignores
+ 			backslashes, which is Vi compatible.
+ 								*cpo-n*
+-		n	When included, the column used for 'number' will also
+-			be used for text of wrapped lines.
++		n	When included, the column used for 'number' and
++			'relativenumber' will also be used for text of wrapped
++			lines.
+ 								*cpo-o*
+ 		o	Line offset to search command is not remembered for
+ 			next search.
+@@ -2046,6 +2070,30 @@
+ 			with system specific functions.
+ 
+ 
++						*'cryptmethod'* *'cm'*
++'cryptmethod'		number	(default 0)
++			local to buffer
++			{not in Vi}
++	Method used for encryption when the buffer is written to a file:
++							*pkzip*
++		0	PkZip compatible method.  A weak kind of encryption.
++			Backwards compatible with Vim 7.2 and older.
++							*blowfish*
++		1	Blowfish method.  Strong encryption.  Requires Vim 7.3
++			or later, files can NOT be read by Vim 7.2 and older.
++			This adds a "seed" to the file, every time you write
++			the file the encrypted bytes will be different.
++
++	When reading an encrypted file 'cryptmethod' will be set automatically
++	to the detected method of the file being read.  Thus if you write it
++	without changing 'cryptmethod' the same method will be used.
++	Changing 'cryptmethod' does not mark the file as modified, you have to
++	explicitly write it when not making modifications.
++	Also see |:X|.
++	When a new encryption method is added in a later version of Vim, and
++	the current version does not recognize it, you will get	*E821* .
++
++
+ 						*'cscopepathcomp'* *'cspc'*
+ 'cscopepathcomp' 'cspc'	number	(default 0)
+ 			global
+@@ -2103,6 +2151,20 @@
+ 	Give messages when adding a cscope database.  See |cscopeverbose|.
+ 	NOTE: This option is reset when 'compatible' is set.
+ 
++			*'cursorbind'* *'crb'* *'nocursorbind'* *'nocrb'*
++'cursorbind' 'crb'	boolean  (default off)
++			local to window
++			{not in Vi}
++			{not available when compiled without the |+cursorbind|
++			feature}
++	When this option is set, as the cursor in the current
++	window moves other cursorbound windows (windows that also have
++	this option set) move their cursors to the corresponding line and
++	column.  This option is useful for viewing the
++	differences between two versions of a file (see 'diff'); in diff mode,
++	inserted and deleted lines (though not characters within a line) are
++	taken into account. 
++
+ 
+ 			*'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'*
+ 'cursorcolumn' 'cuc'	boolean	(default off)
+@@ -2386,6 +2448,10 @@
+ 	This is specified with 'fileencoding'.  The conversion is done with
+ 	iconv() or as specified with 'charconvert'.
+ 
++	If you need to know whether 'encoding' is a multi-byte encoding, you
++	can use: >
++		if has("multi_byte_encoding")
++<
+ 	Normally 'encoding' will be equal to your current locale.  This will
+ 	be the default if Vim recognizes your environment settings.  If
+ 	'encoding' is not set to the current locale, 'termencoding' must be
+@@ -2446,6 +2512,9 @@
+ 	'eadirection' option tells in which direction the size is affected.
+ 	Changing the height and width of a window can be avoided by setting
+ 	'winfixheight' and 'winfixwidth', respectively.
++	If a window size is specified when creating a new window sizes are
++	currently not equalized (it's complicated, but may be implemented in
++	the future).
+ 
+ 						*'equalprg'* *'ep'*
+ 'equalprg' 'ep'		string	(default "")
+@@ -2453,7 +2522,8 @@
+ 			{not in Vi}
+ 	External program to use for "=" command.  When this option is empty
+ 	the internal formatting functions are used; either 'lisp', 'cindent'
+-	or 'indentexpr'.
++	or 'indentexpr'.  When Vim was compiled without internal formatting,
++	the "indent" program is used.
+ 	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
+@@ -2550,13 +2620,17 @@
+ 			{not in Vi}
+ 	Sets the character encoding for the file of this buffer.
+ 	When 'fileencoding' is different from 'encoding', conversion will be
+-	done when reading and writing the file.
++	done when writing the file.  For reading see below.
+ 	When 'fileencoding' is empty, the same value as 'encoding' will be
+ 	used (no conversion when reading or writing a file).
++	Conversion will also be done when 'encoding' and 'fileencoding' are
++	both a Unicode encoding and 'fileencoding' is not utf-8.  That's
++	because internally Unicode is always stored as utf-8.
+ 		WARNING: Conversion can cause loss of information!  When
+-		'encoding' is "utf-8" conversion is most likely done in a way
+-		that the reverse conversion results in the same text.  When
+-		'encoding' is not "utf-8" some characters may be lost!
++		'encoding' is "utf-8" or another Unicode encoding, conversion
++		is most likely done in a way that the reverse conversion
++		results in the same text.  When 'encoding' is not "utf-8" some
++		characters may be lost!
+ 	See 'encoding' for the possible values.  Additionally, values may be
+ 	specified that can be handled by the converter, see
+ 	|mbyte-conversion|.
+@@ -2843,6 +2917,8 @@
+ 
+ 	The expression may be evaluated in the |sandbox|, see
+ 	|sandbox-option|.
++	This option can't be set from a |modeline| when the 'diff' option is
++	on.
+ 
+ 	It is not allowed to change text or jump to another window while
+ 	evaluating 'foldexpr' |textlock|.
+@@ -3050,8 +3126,10 @@
+ 	text beyond that limit.  This happens under the same conditions as
+ 	when internal formatting is used.  Make sure the cursor is kept in the
+ 	same spot relative to the text then!  The |mode()| function will
+-	return "i" or "R" in this situation.  When the function returns
+-	non-zero Vim will fall back to using the internal format mechanism.
++	return "i" or "R" in this situation.
++	
++	When the expression evaluates to non-zero Vim will fall back to using
++	the internal format mechanism.
+ 
+ 	The expression may be evaluated in the |sandbox|, see
+ 	|sandbox-option|.
+@@ -3235,7 +3313,7 @@
+ 	the case of X).  The font names given should be "normal" fonts.  Vim
+ 	will try to find the related bold and italic fonts.
+ 
+-	For Win32, GTK, Mac OS and Photon: >
++	For Win32, GTK, Motif, Mac OS and Photon: >
+ 	    :set guifont=*
+ <	will bring up a font requester, where you can pick the font you want.
+ 
+@@ -3244,8 +3322,13 @@
+ 
+ 	For the GTK+ 2 GUI the font name looks like this: >
+ 	    :set guifont=Andale\ Mono\ 11
+-<	That's all.  XLFDs are no longer accepted.
+-
++<	That's all.  XLFDs are not used.  For Chinese this is reported to work
++	well: >
++	    if has("gui_gtk2")
++	      set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12
++	      set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12
++	    endif
++<
+ 	For Mac OSX you can use something like this: >
+ 	    :set guifont=Monaco:h10
+ <	Also see 'macatsui', it can help fix display problems.
+@@ -3404,15 +3487,15 @@
+ 	  'i'	Use a Vim icon.  For GTK with KDE it is used in the left-upper
+ 		corner of the window.  It's black&white on non-GTK, because of
+ 		limitations of X11.  For a color icon, see |X11-icon|.
+-	  							*'go-m'*
++								*'go-m'*
+ 	  'm'	Menu bar is present.
+-	  							*'go-M'*
++								*'go-M'*
+ 	  'M'	The system menu "$VIMRUNTIME/menu.vim" is not sourced.  Note
+ 		that this flag must be added in the .vimrc file, before
+ 		switching on syntax or filetype recognition (when the |gvimrc|
+ 		file is sourced the system menu has already been loaded; the
+ 		":syntax on" and ":filetype on" commands load the menu too).
+-	  							*'go-g'*
++								*'go-g'*
+ 	  'g'	Grey menu items: Make menu items that are not active grey.  If
+ 		'g' is not included inactive menu items are not shown at all.
+ 		Exception: Athena will always use grey menu items.
+@@ -3424,36 +3507,36 @@
+ 		and Athena GUIs.
+ 								*'go-r'*
+ 	  'r'	Right-hand scrollbar is always present.
+-	  							*'go-R'*
++								*'go-R'*
+ 	  'R'	Right-hand scrollbar is present when there is a vertically
+ 		split window.
+-	  							*'go-l'*
++								*'go-l'*
+ 	  'l'	Left-hand scrollbar is always present.
+-	  							*'go-L'*
++								*'go-L'*
+ 	  'L'	Left-hand scrollbar is present when there is a vertically
+ 		split window.
+ 								*'go-b'*
+ 	  'b'	Bottom (horizontal) scrollbar is present.  Its size depends on
+ 		the longest visible line, or on the cursor line if the 'h'
+ 		flag is included. |gui-horiz-scroll|
+-	  							*'go-h'*
++								*'go-h'*
+ 	  'h'	Limit horizontal scrollbar size to the length of the cursor
+ 		line.  Reduces computations. |gui-horiz-scroll|
+ 
+ 	And yes, you may even have scrollbars on the left AND the right if
+ 	you really want to :-).  See |gui-scrollbars| for more information.
+ 
+-	  							*'go-v'*
++								*'go-v'*
+ 	  'v'	Use a vertical button layout for dialogs.  When not included,
+ 		a horizontal layout is preferred, but when it doesn't fit a
+ 		vertical layout is used anyway.
+-	  							*'go-p'*
++								*'go-p'*
+ 	  'p'	Use Pointer callbacks for X11 GUI.  This is required for some
+ 		window managers.  If the cursor is not blinking or hollow at
+ 		the right moment, try adding this flag.  This must be done
+ 		before starting the GUI.  Set it in your |gvimrc|.  Adding or
+ 		removing it after the GUI has started has no effect.
+-	  							*'go-F'*
++								*'go-F'*
+ 	  'F'	Add a footer.  Only for Motif.  See |gui-footer|.
+ 
+ 
+@@ -3491,7 +3574,9 @@
+ 	When nonempty describes the text to use in a tooltip for the GUI tab
+ 	pages line.  When empty Vim will use a default tooltip.
+ 	This option is otherwise just like 'guitablabel' above.
+-
++	You can include a line break.  Simplest method is to use |:let|: >
++		:let &guitabtooltip = "line one\nline two"
++<
+ 
+ 						*'helpfile'* *'hf'*
+ 'helpfile' 'hf'		string	(default (MSDOS)  "$VIMRUNTIME\doc\help.txt"
+@@ -3565,7 +3650,7 @@
+ 				     f:Folded,F:FoldColumn,A:DiffAdd,
+ 				     C:DiffChange,D:DiffDelete,T:DiffText,
+ 				     >:SignColumn,B:SpellBad,P:SpellCap,
+-				     R:SpellRare,L:SpellLocal,
++				     R:SpellRare,L:SpellLocal,-:Conceal,
+ 				     +:Pmenu,=:PmenuSel,
+ 				     x:PmenuSbar,X:PmenuThumb")
+ 			global
+@@ -3585,7 +3670,8 @@
+ 	|hl-Search|	 l  last search pattern highlighting (see 'hlsearch')
+ 	|hl-MoreMsg|	 m  |more-prompt|
+ 	|hl-ModeMsg|	 M  Mode (e.g., "-- INSERT --")
+-	|hl-LineNr|	 n  line number for ":number" and ":#" commands
++	|hl-LineNr|	 n  line number for ":number" and ":#" commands, and
++			    when 'number' or 'relativenumber' option is set.
+ 	|hl-Question|	 r  |hit-enter| prompt and yes/no questions
+ 	|hl-StatusLine|	 s  status line of current window |status-line|
+ 	|hl-StatusLineNC| S  status lines of not-current windows
+@@ -3608,6 +3694,8 @@
+ 	|hl-SpellCap|	 P  word that should start with capital|spell|
+ 	|hl-SpellRare|	 R  rare word |spell|
+ 	|hl-SpellLocal|	 L  word from other region |spell|
++	|hl-Conceal|	 -  the placeholders used for concealed characters
++			    (see 'conceallevel')
+ 	|hl-Pmenu|       +  popup menu normal line
+ 	|hl-PmenuSel|    =  popup menu normal line
+ 	|hl-PmenuSbar|   x  popup menu scrollbar
+@@ -3737,7 +3825,7 @@
+ 			global
+ 			{not in Vi}
+ 			{only available when compiled with |+xim| and
+-			|+GUI_GTK|}
++			|+GUI_GTK|}				*E599*
+ 	Specifies the key that your Input Method in X-Windows uses for
+ 	activation.  When this is specified correctly, vim can fully control
+ 	IM with 'imcmdline', 'iminsert' and 'imsearch'.
+@@ -3776,7 +3864,7 @@
+ 	English characters directly, e.g., when it's used to type accented
+ 	characters with dead keys.
+ 
+-				*'imdisable'* *'imd'* *'nodisable'* *'noimd'*
++				*'imdisable'* *'imd'* *'noimdisable'* *'noimd'*
+ 'imdisable' 'imd'	boolean (default off, on for some systems (SGI))
+ 			global
+ 			{not in Vi}
+@@ -3888,7 +3976,9 @@
+ 	The highlighting can be set with the 'i' flag in 'highlight'.
+ 	See also: 'hlsearch'.
+ 	CTRL-L can be used to add one character from after the current match
+-	to the command line.
++	to the command line.  If 'ignorecase' and 'smartcase' are set and the
++	command line has no uppercase characters, the added character is
++	converted to lowercase.
+ 	CTRL-R CTRL-W can be used to add the word at the end of the current
+ 	match, excluding the characters that were already typed.
+ 	NOTE: This option is reset when 'compatible' is set.
+@@ -4092,8 +4182,8 @@
+ 	displayed as <xx>, with the hexadecimal value of the byte.
+ 	When 'display' contains "uhex" all unprintable characters are
+ 	displayed as <xx>.
+-	The NonText highlighting will be used for unprintable characters.
+-	|hl-NonText|
++	The SpecialKey highlighting will be used for unprintable characters.
++	|hl-SpecialKey|
+ 
+ 	Multi-byte characters 256 and above are always included, only the
+ 	characters up to 255 are specified with this option.  When a character
+@@ -4115,8 +4205,10 @@
+ 'key'			string	(default "")
+ 			local to buffer
+ 			{not in Vi}
++			{only available when compiled with the |+cryptv|
++			feature}
+ 	The key that is used for encrypting and decrypting the current buffer.
+-	See |encryption|.
++	See |encryption| and 'cryptmethod'.
+ 	Careful: Do not set the key value by hand, someone might see the typed
+ 	key.  Use the |:X| command.  But you can make 'key' empty: >
+ 		:set key=
+@@ -4330,10 +4422,17 @@
+ 						*'list'* *'nolist'*
+ 'list'			boolean	(default off)
+ 			local to window
+-	List mode: Show tabs as CTRL-I, show end of line with $.  Useful to
+-	see the difference between tabs and spaces and for trailing blanks.
+-	Note that this will also affect formatting (set with 'textwidth' or
+-	'wrapmargin') when 'cpoptions' includes 'L'.  See 'listchars' for
++	List mode: Show tabs as CTRL-I is displayed, display $ after end of
++	line.  Useful to see the difference between tabs and spaces and for
++	trailing blanks.  Further changed by the 'listchars' option.
++
++	The cursor is displayed at the start of the space a Tab character
++	occupies, not at the end as usual in Normal mode.  To get this cursor
++	position while displaying Tabs with spaces, use: >
++		:set list lcs=tab\ \ 
++<
++	Note that list mode will also affect formatting (set with 'textwidth'
++	or 'wrapmargin') when 'cpoptions' includes 'L'.  See 'listchars' for
+ 	changing the way tabs are displayed.
+ 
+ 						*'listchars'* *'lcs'*
+@@ -4358,6 +4457,8 @@
+ 	  precedes:c	Character to show in the first column, when 'wrap'
+ 			is off and there is text preceding the character
+ 			visible in the first column.
++	  conceal:c	Character to show in place of concealed text, when
++			'conceallevel' is set to 1.
+ 	  nbsp:c	Character to show for a non-breakable space (character
+ 			0xA0, 160).  Left blank when omitted.
+ 
+@@ -4516,15 +4617,15 @@
+ 			{not in Vi}
+ 	Maximum amount of memory (in Kbyte) to use for one buffer.  When this
+ 	limit is reached allocating extra memory for a buffer will cause
+-	other memory to be freed.  Maximum value 2000000.  Use this to work
+-	without a limit.  Also see 'maxmemtot'.
++	other memory to be freed.  The maximum usable value is about 2000000.
++	Use this to work without a limit.  Also see 'maxmemtot'.
+ 
+ 						*'maxmempattern'* *'mmp'*
+ 'maxmempattern' 'mmp'	number	(default 1000)
+ 			global
+ 			{not in Vi}
+ 	Maximum amount of memory (in Kbyte) to use for pattern matching.
+-	Maximum value 2000000.  Use this to work without a limit.
++	The maximum value is about 2000000.  Use this to work without a limit.
+ 							*E363*
+ 	When Vim runs into the limit it gives an error message and mostly
+ 	behaves like CTRL-C was typed.
+@@ -4539,9 +4640,11 @@
+ 				 available)
+ 			global
+ 			{not in Vi}
+-	Maximum amount of memory (in Kbyte) to use for all buffers together.
+-	Maximum value 2000000.  Use this to work without a limit.  Also see
+-	'maxmem'.
++	Maximum amount of memory in Kbyte to use for all buffers together.
++	The maximum usable value is about 2000000 (2 Gbyte).  Use this to work
++	without a limit.  On 64 bit machines higher values might work.  But
++	hey, do you really need more than 2 Gbyte for text editing?
++	Also see 'maxmem'.
+ 
+ 						*'menuitems'* *'mis'*
+ 'menuitems' 'mis'	number	(default 25)
+@@ -4818,7 +4921,7 @@
+ 	respectively; see |CTRL-A| for more info on these commands.
+ 	alpha	If included, single alphabetical characters will be
+ 		incremented or decremented.  This is useful for a list with a
+-		letter index a), b), etc.
++		letter index a), b), etc.			*octal-number*
+ 	octal	If included, numbers that start with a zero will be considered
+ 		to be octal.  Example: Using CTRL-A on "007" results in "010".
+ 	hex	If included, numbers starting with "0x" or "0X" will be
+@@ -4839,6 +4942,7 @@
+ 	When a long, wrapped line doesn't start with the first character, '-'
+ 	characters are put before the number.
+ 	See |hl-LineNr| for the highlighting used for the number.
++	When setting this option, 'relativenumber' is reset.
+ 
+ 						*'numberwidth'* *'nuw'*
+ 'numberwidth' 'nuw'	number	(Vim default: 4  Vi default: 8)
+@@ -4847,13 +4951,14 @@
+ 			{only available when compiled with the |+linebreak|
+ 			feature}
+ 	Minimal number of columns to use for the line number.  Only relevant
+-	when the 'number' option is set or printing lines with a line number.
+-	Since one space is always between the number and the text, there is
+-	one less character for the number itself.
++	when the 'number' or 'relativenumber' option is set or printing lines
++	with a line number. Since one space is always between the number and
++	the text, there is one less character for the number itself.
+ 	The value is the minimum width.  A bigger width is used when needed to
+-	fit the highest line number in the buffer.  Thus with the Vim default
+-	of 4 there is room for a line number up to 999.  When the buffer has
+-	1000 lines five columns will be used.
++	fit the highest line number in the buffer respectively the number of
++	rows in the window, depending on whether 'number' or 'relativenumber'
++	is set. Thus with the Vim default of 4 there is room for a line number
++	up to 999. When the buffer has 1000 lines five columns will be used.
+ 	The minimum value is 1, the maximum value is 10.
+ 	NOTE: 'numberwidth' is reset to 8 when 'compatible' is set.
+ 
+@@ -5227,6 +5332,25 @@
+ 	matches will be highlighted.  This is used to avoid that Vim hangs
+ 	when using a very complicated pattern.
+ 
++		*'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'*
++'relativenumber' 'rnu'	boolean	(default off)
++			local to window
++			{not in Vi}
++	Show the line number relative to the line with the cursor in front of
++	each line. Relative line numbers help you use the |count| you can
++	precede some vertical motion commands (e.g. j k + -) with, without
++	having to calculate it yourself. Especially useful in combination with
++	other commands (e.g. y d c < > gq gw =).
++	When the 'n' option is excluded from 'cpoptions' a wrapped
++	line will not use the column of line numbers (this is the default when
++	'compatible' isn't set).
++	The 'numberwidth' option can be used to set the room used for the line
++	number.
++	When a long, wrapped line doesn't start with the first character, '-'
++	characters are put before the number.
++	See |hl-LineNr| for the highlighting used for the number.
++	When setting this option, 'number' is reset.
++
+ 						*'remap'* *'noremap'*
+ 'remap'			boolean	(default on)
+ 			global
+@@ -5607,8 +5731,8 @@
+ 	   winsize	window sizes
+ 
+ 	Don't include both "curdir" and "sesdir".
+-	When "curdir" nor "sesdir" is included, file names are stored with
+-	absolute paths.
++	When neither "curdir" nor "sesdir" is included, file names are stored
++	with absolute paths.
+ 	"slash" and "unix" are useful on Windows when sharing session files
+ 	with Unix.  The Unix version of Vim cannot source dos format scripts,
+ 	but the Windows version of Vim can source unix format scripts.
+@@ -5677,7 +5801,8 @@
+ 	in a file and echoed to the screen.  If the 'shell' option is "csh" or
+ 	"tcsh" after initializations, the default becomes "|& tee".  If the
+ 	'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes
+-	"2>&1| tee".  This means that stderr is also included.
++	"2>&1| tee".  This means that stderr is also included.  Before using
++	the 'shell' option a path is removed, thus "/bin/sh" uses "sh".
+ 	The initialization of this option is done after reading the ".vimrc"
+ 	and the other initializations, so that when the 'shell' option is set
+ 	there, the 'shellpipe' option changes automatically, unless it was
+@@ -5884,8 +6009,12 @@
+ 			{not available when compiled without the  |+linebreak|
+ 			feature}
+ 	String to put at the start of lines that have been wrapped.  Useful
+-	values are "> " or "+++ ".
+-	Only printable single-cell characters are allowed, excluding <Tab> and
++	values are "> " or "+++ ": >
++		:set showbreak=>\ 
++<	Note the backslash to escape the trailing space.  It's easier like
++	this: >
++		:let &showbreak = '+++ ' 
++<	Only printable single-cell characters are allowed, excluding <Tab> and
+ 	comma (in a future version the comma might be used to separate the
+ 	part that is shown at the end and at the start of a line).
+ 	The characters are highlighted according to the '@' flag in
+@@ -5906,7 +6035,8 @@
+ 	In Visual mode the size of the selected area is shown:
+ 	- When selecting characters within a line, the number of characters.
+ 	- When selecting more than one line, the number of lines.
+-	- When selecting a block, the size in screen characters: linesxcolumns.
++	- When selecting a block, the size in screen characters:
++	  {lines}x{columns}.
+ 	NOTE: This option is set to the Vi default value when 'compatible' is
+ 	set and to the Vim default value when 'compatible' is reset.
+ 
+@@ -6502,7 +6632,7 @@
+ 			a buffer.  Otherwise: do not split, use current window.
+ 			Supported in |quickfix| commands that display errors.
+ 	   newtab	Like "split", but open a new tab page.  Overrules
+-	   		"split" when both are present.
++			"split" when both are present.
+ 
+ 						*'synmaxcol'* *'smc'*
+ 'synmaxcol' 'smc'	number	(default 3000)
+@@ -6641,8 +6771,9 @@
+ 	of '2' in the "!_TAG_FILE_SORTED" line for this.  A tag file can be
+ 	case-fold sorted with the -f switch to "sort" in most unices, as in
+ 	the command: "sort -f -o tags tags".  For "Exuberant ctags" version
+-	5.3 or higher the -f or --fold-case-sort switch can be used for this
+-	as well.  Note that case must be folded to uppercase for this to work.
++	5.x or higher (at least 5.5) the --sort=foldcase switch can be used
++	for this as well.  Note that case must be folded to uppercase for this
++	to work.
+ 
+ 	When 'tagbsearch' is off, tags searching is slower when a full match
+ 	exists, but faster when no full match exists.  Tags in unsorted tags
+@@ -7134,6 +7265,36 @@
+ 			global
+ 	Alias for 'term', see above.
+ 
++						*'undodir'* *'udir'*
++'undodir' 'udir'	string	(default ".")
++			global
++			{not in Vi}
++			{only when compiled with the +persistent_undo feature}
++	List of directory names for undo files, separated with commas.
++	See |'backupdir'| for details of the format.
++	"." means using the directory of the file.  The undo file name for
++	"file.txt" is ".file.txt.un~".
++	For other directories the file name is the full path of the edited
++	file, with path separators replaced with "%".
++	When writing: The first directory that exists is used. "." always
++	works, no directories after "." will be used for writing.
++	When reading all entries are tried to find an undo file.  The first
++	undo file that exists is used.  When it cannot be read an error is
++	given, no further entry is used.
++	See |undo-persistence|.
++
++						*'undofile'* *'udf'*
++'undofile' 'udf'	boolean	(default off)
++			local to buffer
++			{not in Vi}
++			{only when compiled with the +persistent_undo feature}
++	When on, Vim automatically saves undo history to an undo file when
++	writing a buffer to a file, and restores undo history from the same
++	file on buffer read.
++	The directory where the undo file is stored is specified by 'undodir'.
++	For more information about this feature see |undo-persistence|.
++	WARNING: this is a very new feature.  Use at your own risk!
++
+ 						*'undolevels'* *'ul'*
+ 'undolevels' 'ul'	number	(default 100, 1000 for Unix, VMS,
+ 						Win32 and OS/2)
+@@ -7147,10 +7308,11 @@
+ 		set ul=0
+ <	But you can also get Vi compatibility by including the 'u' flag in
+ 	'cpoptions', and still be able to use CTRL-R to repeat undo.
++	Also see |undo-two-ways|.
+ 	Set to a negative number for no undo at all: >
+ 		set ul=-1
+ <	This helps when you run out of memory for a single change.
+-	Also see |undo-two-ways|.
++	Also see |clear-undo|.
+ 
+ 						*'updatecount'* *'uc'*
+ 'updatecount' 'uc'	number	(default: 200)
+@@ -7207,7 +7369,7 @@
+ 	When not empty all messages are written in a file with this name.
+ 	When the file exists messages are appended.
+ 	Writing to the file ends when Vim exits or when 'verbosefile' is made
+-	empty.
++	empty.  Writes are buffered, thus may not show up for some time.
+ 	Setting 'verbosefile' to a new value is like making it empty first.
+ 	The difference with |:redir| is that verbose messages are not
+ 	displayed when 'verbosefile' is set.
+@@ -7252,9 +7414,9 @@
+ 
+ 				*'viminfo'* *'vi'* *E526* *E527* *E528*
+ 'viminfo' 'vi'		string	(Vi default: "", Vim default for MS-DOS,
+-				   Windows and OS/2: '20,<50,s10,h,rA:,rB:,
+-				   for Amiga: '20,<50,s10,h,rdf0:,rdf1:,rdf2:
+-				   for others: '20,<50,s10,h)
++				   Windows and OS/2: '100,<50,s10,h,rA:,rB:,
++				   for Amiga: '100,<50,s10,h,rdf0:,rdf1:,rdf2:
++				   for others: '100,<50,s10,h)
+ 			global
+ 			{not in Vi}
+ 			{not available when compiled without the  |+viminfo|
+@@ -7727,6 +7889,8 @@
+ 		:set sidescroll=5
+ 		:set listchars+=precedes:<,extends:>
+ <	See 'sidescroll', 'listchars' and |wrap-off|.
++	This option can't be set from a |modeline| when the 'diff' option is
++	on.
+ 
+ 						*'wrapmargin'* *'wm'*
+ 'wrapmargin' 'wm'	number	(default 0)
+diff -Nur runtime/doc/options.txt.~1~ runtime/doc/options.txt.~1~
+diff -Nur runtime/doc/options.txt.~2~ runtime/doc/options.txt.~2~
+diff -Nur runtime/doc/options.txt.~3~ runtime/doc/options.txt.~3~
+diff -Nur runtime/doc/os_390.txt runtime/doc/os_390.txt
+--- runtime/doc/os_390.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/os_390.txt	2011-04-03 09:27:21.273402786 -0700
+@@ -1,4 +1,4 @@
+-*os_390.txt*    For Vim version 7.2.  Last change: 2005 Mar 29
++*os_390.txt*    For Vim version 7.3a.  Last change: 2010 May 30
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Ralf Schandl
+@@ -6,24 +6,12 @@
+ 					*zOS* *z/OS* *OS390* *os390* *MVS*
+ This file contains the particulars for the z/OS UNIX version of Vim.
+ 
+-1. Open source on z/OS UNIX		|zOS-open-source|
+-2. Your feedback is needed		|zOS-feedback|
+-3. Building VIM for z/OS UNIX		|zOS-building|
+-4. ASCII/EBCDIC dependent scripts	|zOS-has-ebcdic|
+-5. XTerm Problems			|zOS-xterm|
+-6. Motif Problems			|zOS-Motif|
+-7. Bugs					|zOS-Bugs|
+-8. Known weaknesses			|zOS-weaknesses|
+-9. Changes				|zOS-changes|
+-
+-DISCLAIMER: ~
+-We are IBM employees, but IBM is not responsible for this port.  This is our
+-private fun, and is provided in the hopes that it may be useful to others.
+-
+-Please note that this software has NOT been submitted to any formal IBM
+-testing and is published AS IS.  Please do not contact IBM for support for this
+-software, as it is not an official component of any IBM product.  IT IS NOT
+-SUPPORTED, GUARANTEED, OR RELATED WHATSOEVER TO IBM.
++1. ASCII/EBCDIC dependent scripts	|zOS-has-ebcdic|
++2. Putty and Colors                     |zOS-PuTTY|
++3. Motif Problems			|zOS-Motif|
++4. Bugs					|zOS-Bugs|
++5. Limitations     			|zOS-limitations|
++6. Open source on z/OS UNIX		|zOS-open-source|
+ 
+ Contributors: ~
+ The port to z/OS UNIX was done by Ralf Schandl for the Redbook mentioned
+@@ -32,128 +20,11 @@
+ Changes, bug-reports, or both by:
+ 
+ 	David Moore
+-	Anthony Giorgio <[email protected]>
++	Anthony Giorgio
+ 	and others
+ 
+-This document was written by Ralf Schandl and revised by Anthony Giorgio.
+-
+ ==============================================================================
+-1. Open source on z/OS UNIX		*OS390-open-source* *zOS-open-source*
+-
+-If you are interested in other Open Source Software on z/OS UNIX, have a
+-look at the following Redbook:
+-
+-    Mike MacIsaac et al
+-    "Open Source Software for z/OS and OS/390 UNIX"
+-    IBM Form Number: SG24-5944-01
+-    ISBN: 0738424633
+-
+-You can find out more information, order a hard copy, or download a PDF
+-version of these Redbooks at:
+-
+-	    http://www.redbooks.ibm.com
+-
+-==============================================================================
+-2. Your feedback is needed		*OS390-feedback* *zOS-feedback*
+-
+-Vim should compile, link, and run right out of the box on a standard IBM z/OS
+-UNIX mainframe.  I've personally run it on z/OS V1R2 and V1R3 machines without
+-problems.
+-
+-Many changes had to be done to the code to port Vim to z/OS UNIX.  As like
+-most UNIX programs, Vim contained heavy ASCII dependencies.  I might have
+-missed an ASCII dependency, or it is possible that a new one has been added
+-with a feature or bug fix.  Most programmers are simply not aware of possible
+-ASCII/EBCDIC conversion issues.  If you hit a problem that seems related to
+-this, feel free to contact us at the email addresses above.
+-
+-One indication of ASCII/EBCDIC conversion problems is screen corruption with
+-"unprintable" characters.  For example, at one point the errorbell was broken
+-in Vim.  Any time Vim tried to ring the terminal bell an ASCII character 0x07
+-would be printed.  This works fine on most terminals, but is broken on an
+-EBCDIC one.  The correct solution was to define a different value for the bell
+-character on EBCDIC systems.
+-
+-Remember, it's only possible to fix a bug if the community knows about it.
+-Don't rely on someone else to report it!  See the section |bug-reports|.
+-
+-==============================================================================
+-3. Building VIM for z/OS UNIX		*OS390-building* *zOS-building*
+-
+-A word on debugging code first: ~
+-
+-The normal run of configure adds the flag '-g' to the compiler options,
+-to include debugging information into the executable.  This information
+-are normally removed from the executable with the strip command during
+-installation.  On z/OS UNIX, it is not possible to remove this from
+-the executable.  The strip command exists on z/OS UNIX and is called
+-during the installation, but it does nothing.  It is equivalent to the
+-'touch' command.  This is due to the way debug symbols are stored in the
+-objects generated by the compiler.
+-
+-If you want to build Vim without debugging code, export the environment
+-variable CFLAGS set to an empty string before you call the configure script.
+->
+-	export CFLAGS=""
+-
+-
+-Building without X11: ~
+-
+-Note: Use cc to build Vim.  The c89 compiler has stricter syntax checking
+-and will not compile Vim cleanly.
+-
+-If you build VIM without X11 support, compiling and building is
+-straightforward.  Don't forget to export _CC_CCMODE=1 before calling
+-configure and make.
+->
+-    $ export _CC_CCMODE=1
+-    $./configure --with-features=big --without-x --enable-gui=no
+-    $ make
+-    $ make test
+-<
+-	Test notes:
+-	Test 11 will fail if you do not have gzip installed.
+-	Test 42 will fail, as VIM on z/OS UNIX doesn't support the multibyte
+-	feature.  (David Moore: "Doesn't work _yet_!  :-)  I'll see what I
+-	can do.")
+->
+-
+-    $ make install
+-
+-
+-Building with X11: ~
+-
+-There are two ways for building Vim with X11 support.  You can link it
+-statically with the X11 libraries or can bind it with the X11 DLLs.  The
+-statically linked version results in a huge executable (~13MB), while the
+-dynamically linked executable is much smaller (~4.5MB).
+-
+-Here is what you do, if you want Motif:
+-
+-  a) Static link >
+-	$ configure --with-features=big --enable-gui=motif
+-	$ make
+-<
+-     VIM is now linked statically with the X11 libraries.
+-
+-  b) Dynamic link:
+-     Make VIM as described for the static link.  Then change the contents of
+-     the 'auto/link.sed' file by appending: >
+-	s%-lXm  *%/usr/lib/Xm.x %g
+-	s%-lX11  *%/usr/lib/X11.x %g
+-	s%-lSM  *%/usr/lib/SM.x %g
+-	s%-lICE  *%/usr/lib/ICE.x %g
+-<
+-     Then do: >
+-	$ rm vim
+-	$ make
+-<
+-     Now Vim is linked with the X11-DLLs.
+-
+-See the Makefile and the file link.sh on how link.sed is used.
+-
+-==============================================================================
+-4. ASCII/EBCDIC dependent scripts	*OS390-has-ebcdic* *zOS-has-ebcdic*
++1. ASCII/EBCDIC dependent scripts	*OS390-has-ebcdic* *zOS-has-ebcdic*
+ 
+ For the internal script language the feature "ebcdic" was added.  With this
+ you can fix ASCII dependent scripts like this:
+@@ -164,24 +35,28 @@
+ 	let space = 32
+     endif
+ <
++
+ ==============================================================================
+-5. XTerm problems			*OS390-xterm* *zOS-xterm*
++2. PuTTY and Colors			*OS390-PuTTY* *zOS-PuTTY*
++
++If you see problems with syntax highlighting or screen corruptions when you
++connect to z/OS using Putty, try the following:
+ 
+-Note: This problem was resolved in version 6.1b. ~
++- Configure Putty as "vt220" terminal (Connection->Data)
++- Add the following 3 lines to your vimrc:
+ 
+-I saw one problem with XTerm on z/OS UNIX.  The terminal code for moving the
+-cursor to the left is wrong in the termlib database.  Perhaps not wrong, but
+-it didn't work with VIM syntax highlighting and command line cursor movement.
+-
+-If the highlighting is messed up while you type, but is okay after you refreshed
+-the screen with <C-L> or if you can't move to the left with the cursor key on
+-the command line, try adding >
+-	:set t_le=^H
++>
++    set t_AB=[4%p1%dm
++    set t_AF=[3%p1%dm
++    set t_CO=8
+ <
+-to your .vimrc.  Note: '^H' is one character, hit <C-V><C-H> to get it.
++
++Note:  is one character use <C-V><Esc> to enter it.
+ 
+ ==============================================================================
+-6. Motif Problems			*OS390-Motif* *zOS-Motif*
++3. Motif Problems			*OS390-Motif* *zOS-Motif*
++
++Note: Seen with Vim 6.*, never tested since.
+ 
+ It seems that in porting the Motif library to z/OS, a translation from EBCDIC
+ to ASCII for the accelerator characters of the pull-down menus was forgotten.
+@@ -190,17 +65,17 @@
+ They still do not work for the menu items themselves (like <Alt-F>O to open
+ the file browser).
+ 
+-There is no solution for this as of yet.
++There is no solution for this yet.
+ 
+ ==============================================================================
+-7. Bugs					*OS390-bugs* *zOS-Bugs*
++4. Bugs					*OS390-bugs* *zOS-Bugs*
+ 
+ - Vim will consistently hang when a large amount of text is selected in
+   visual block mode.  This may be due to a memory corruption issue.  Note that
+   this occurs in both the terminal and gui versions.
+ 
+ ==============================================================================
+-8. Known weaknesses			*OS390-weaknesses* *zOS-weaknesses*
++5. Limitations     			*OS390-limitations* *zOS-limitations*
+ 
+ - No binary search in tag files.
+   The program /bin/sort sorts by ASCII value by default.  This program is
+@@ -208,9 +83,6 @@
+   ctags out there, that does it right, but we can't be sure.  So this seems to
+   be a permanent restriction.
+ 
+-- Multibyte support (utf-8) doesn't work, it's disabled at compile time.
+-  (|multibyte|)
+-
+ - The cscope interface (|cscope|) doesn't work for the version of cscope
+   that we use on our mainframe.  We have a copy of version 15.0b12, and it
+   causes Vim to hang when using the "cscope add" command.  I'm guessing that
+@@ -221,6 +93,13 @@
+ 
+ - No glib/gtk support.  I have not been able to successfully compile glib on
+   z/OS UNIX.  This means you'll have to live without the pretty gtk toolbar.
++ 
++Disabled at compile time:
++    - Multibyte support         (|multibyte|)
++    - Right-to-left mode        (|rileft|)
++    - Farsi key map             (|Farsi|)
++    - Arabic language support   (|Arabic|)
++    - Spell checking            (|spell|)
+ 
+ Never tested:
+     - Perl interface		(|perl|)
+@@ -233,108 +112,24 @@
+     - TCL interface		(|tcl|)
+     ...
+ 
+-If you try any of these features and they work, drop us a note!
+-
+ ==============================================================================
+-9. Changes				*OS390-changes*	*zOS-changes*
++6. Open source on z/OS UNIX		*OS390-open-source* *zOS-open-source*
++
++If you are interested in other Open Source Software on z/OS UNIX, have a
++look at the following Redbook:
++
++    Mike MacIsaac et al
++    "Open Source Software for z/OS and OS/390 UNIX"
++    IBM Form Number: SG24-5944-01
++    ISBN: 0738424633
++    http://www-03.ibm.com/systems/resources/servers_eserver_zseries_zos_unix_redbook_sg245944.pdf
++
++Also look at:
++    http://www.redbooks.ibm.com
++    http://www-03.ibm.com/systems/z/os/zos/features/unix/
++    http://www-03.ibm.com/systems/z/os/zos/features/unix/library/IBM+Redbooks/index.html
+ 
+-This is a small reference of the changes made to the z/OS port of Vim.  It is
+-not an exhaustive summary of all the modifications made to the code base.
+ 
+-6.1b (beta):
+-  Changed KS_LE in term.c to be "\b" instead of "\010"  This fixed the
+-  screen corruption problems in gVim reported by Anthony Giorgio.
+-
+-  Anthony Giorgio updated this document:
+-	- Changed OS/390 to z/OS where appropriate.  IBM decided to rename
+-		all of its servers and operating systems.  z/OS and OS/390
+-		are the same product, but the version numbering system was
+-		reset for the name change (e.g. OS/390 V2R11 == z/OS V1R1).
+-	- Added information about second edition of the Open Source Redbook.
+-	- Moved Redbook information to a separate section.
+-	- Various tweaks and changes.
+-	- Updated testing section.
+-
+-6.0au:
+-  Changed configure.in
+-  Changed documentation.
+-  Anthony Giorgio fixed the errorbell.
+-
+-  David Moore found some problems, which were fixed by Bram and/or David for
+-  6.0au.
+-
+-6.0q (alpha):
+-  Minor changes for nrformats=alpha (see |'nrformats'|).
+-  Problem with hard-coded keycode for the English pound sign.  Added a define in
+-  ascii.h
+-  Disabled multibyte for EBCDIC in feature.h
+-
+-6.0f (alpha):
+-  First compile of Vim 6 on z/OS UNIX.  Some minor changes were needed.
+-
+-  Finally found the reason why make from the top level didn't work (I must have
+-  been blind before!).  The Makefile contained a list of targets in one target
+-  line.  On all other UNIX's the macro $@ evaluates to the first target in this
+-  list, only on z/OS UNIX it evaluates to the last one :-(.
+-
+-5.6-390d:
+-  Cleaned up some hacks.
+-
+-5.6-390c:
+-  I grepped through the source and examined every spot with a character
+-  involved in a operation (+-).  I hope I now found all EBCDIC/ASCII
+-  stuff, but ....
+-
+-  Fixed:
+-    - fixed warning message in do_fixdel()
+-    - fixed translation from Ctrl-Char to symbolic name (like ^h to CTRL-H)
+-	    for :help
+-    - fixed yank/delete/... into register
+-    - fixed :register command
+-    - fixed viminfo register storing
+-    - fixed quick-access table in findoptions()
+-    - fixed 'g^H' select mode
+-    - fixed tgetstr() 'get terminal capability string', ESC and
+-	    Ctrl chars where wrong.  (Not used on OS/390 UNIX)
+-
+-
+-  ctags:
+-    - added trigraphs support (used in prolog of system header files)
+-	    (get.c)
+-    - fixed sorting order with LC_COLLATE=S390 to force EBCDIC sorting.
+-	    (sort.c)
+-
+-5.6-390b:
+-  Changed:
+-    - configure.in:
+-	- added test for OS/390 UNIX
+-	- added special compiler and linker options if building with X11
+-    - configure:
+-	- after created via autoconf hand-edited it to make the test for
+-	  ICEConnectionNumber work.  This is a autoconf problem.  OS/390 UNIX
+-	  needs -lX11 for this.
+-    - Makefile
+-	- Don't include the lib directories ('-L...') into the variable
+-	  ALL_LIBS.  Use own variable ALL_LIB_DIRS instead.  A fully POSIX
+-	  compliant compiler must not accept objects/libraries and options
+-	  mixed.  Now we can call the linker like this:
+-
+-	    $(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS)
+-
+-  Fixed:
+-    - Double quote couldn't be entered
+-      Missed ASCII dependencies while setting up terminal
+-      In ASCII 127 is the delete char, in EBCDIC codepage 1047 the value 127
+-      is the double quote.
+-    - fixed ':fixdel'
+-
+-5.6-390a:
+-  first alpha release for OS/390 UNIX.
+-
+-  Addition:
+-    - For the internal script language I added the feature "ebcdic".
+-      This can be queried with the has()-function of the internal
+-      script language.
+ 
+ ------------------------------------------------------------------------------
+  vim:tw=78:fo=tcq2:ts=8:ft=help:norl:
+diff -Nur runtime/doc/os_amiga.txt runtime/doc/os_amiga.txt
+--- runtime/doc/os_amiga.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/os_amiga.txt	2011-04-03 09:27:21.280646885 -0700
+@@ -1,4 +1,4 @@
+-*os_amiga.txt*  For Vim version 7.2.  Last change: 2005 Mar 29
++*os_amiga.txt*  For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/os_beos.txt runtime/doc/os_beos.txt
+--- runtime/doc/os_beos.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/os_beos.txt	2011-04-03 09:27:21.281452247 -0700
+@@ -1,4 +1,4 @@
+-*os_beos.txt*	For Vim version 7.2.  Last change: 2005 Mar 29
++*os_beos.txt*	For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/os_dos.txt runtime/doc/os_dos.txt
+--- runtime/doc/os_dos.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/os_dos.txt	2011-04-03 09:27:21.282195920 -0700
+@@ -1,4 +1,4 @@
+-*os_dos.txt*    For Vim version 7.2.  Last change: 2006 Mar 30
++*os_dos.txt*    For Vim version 7.3a.  Last change: 2006 Mar 30
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/os_mac.txt runtime/doc/os_mac.txt
+--- runtime/doc/os_mac.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/os_mac.txt	2011-04-03 09:27:21.291201114 -0700
+@@ -1,4 +1,4 @@
+-*os_mac.txt*    For Vim version 7.2.  Last change: 2006 Apr 30
++*os_mac.txt*    For Vim version 7.3a.  Last change: 2006 Apr 30
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
+diff -Nur runtime/doc/os_mint.txt runtime/doc/os_mint.txt
+--- runtime/doc/os_mint.txt	2008-08-09 07:22:59.000000000 -0700
++++ runtime/doc/os_mint.txt	2011-04-03 09:27:21.296240159 -0700
+@@ -1,4 +1,4 @@
+-*os_mint.txt*   For Vim version 7.2.  Last change: 2005 Mar 29
++*os_mint.txt*   For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Jens M. Felderhoff
+diff -Nur runtime/doc/os_msdos.txt runtime/doc/os_msdos.txt
+--- runtime/doc/os_msdos.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_msdos.txt	2011-04-03 09:27:21.297084327 -0700
+@@ -1,4 +1,4 @@
+-*os_msdos.txt*  For Vim version 7.2.  Last change: 2005 Mar 29
++*os_msdos.txt*  For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/os_os2.txt runtime/doc/os_os2.txt
+--- runtime/doc/os_os2.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_os2.txt	2011-04-03 09:27:21.300151148 -0700
+@@ -1,4 +1,4 @@
+-*os_os2.txt*    For Vim version 7.2.  Last change: 2007 Apr 22
++*os_os2.txt*    For Vim version 7.3a.  Last change: 2007 Apr 22
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Paul Slootman
+@@ -183,7 +183,8 @@
+ from within a vio application.  The freeware package clipbrd.zip by Stefan
+ Gruendel can be used for this purpose.  You might download the package
+ including precompiled binaries and all sources from:
+-	http://www.stellarcom.org/vim/index.html
++	http://www.os2site.com/sw/util/clipboard/index.html
++	http://download.uni-hd.de/ftp/pub/os2/pmtools/
+ 
+ Installation of this package is straight forward: just put the two executables
+ that come with this package into a directory within your PATH for Vim should
+@@ -201,7 +202,7 @@
+ 
+ which will write your selection right into OS/2's clipboard.
+ 
+-For ease of use you might want to add some maps for this commands.  E.g. to
++For ease of use you might want to add some maps for these commands.  E.g. to
+ use F11 to paste the clipboard into Vim and F12 to copy selected text to the
+ clipboard you would use: >
+ 
+diff -Nur runtime/doc/os_qnx.txt runtime/doc/os_qnx.txt
+--- runtime/doc/os_qnx.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_qnx.txt	2011-04-03 09:27:21.300816036 -0700
+@@ -1,4 +1,4 @@
+-*os_qnx.txt*    For Vim version 7.2.  Last change: 2005 Mar 29
++*os_qnx.txt*    For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Julian Kinraid
+diff -Nur runtime/doc/os_risc.txt runtime/doc/os_risc.txt
+--- runtime/doc/os_risc.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_risc.txt	2011-04-03 09:27:21.301659674 -0700
+@@ -1,4 +1,4 @@
+-*os_risc.txt*   For Vim version 7.2.  Last change: 2008 Jun 28
++*os_risc.txt*   For Vim version 7.3a.  Last change: 2008 Jun 28
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Thomas Leonard
+diff -Nur runtime/doc/os_unix.txt runtime/doc/os_unix.txt
+--- runtime/doc/os_unix.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_unix.txt	2011-04-03 09:27:21.302322683 -0700
+@@ -1,4 +1,4 @@
+-*os_unix.txt*   For Vim version 7.2.  Last change: 2005 Mar 29
++*os_unix.txt*   For Vim version 7.3a.  Last change: 2005 Mar 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/os_vms.txt runtime/doc/os_vms.txt
+--- runtime/doc/os_vms.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_vms.txt	2011-04-03 09:27:21.307226030 -0700
+@@ -1,4 +1,4 @@
+-*os_vms.txt*    For Vim version 7.2.  Last change: 2006 Nov 18
++*os_vms.txt*    For Vim version 7.3a.  Last change: 2009 Oct 28
+ 
+ 
+ 		  VIM REFERENCE MANUAL
+@@ -99,7 +99,7 @@
+ You can find more information about CTAGS on VMS at
+ http://www.polarhome.com/ctags/
+ 
+-Advanced users may try some acrobatics in FEATURE.H file also.
++Advanced users may try some acrobatics in FEATURE.H file as well.
+ 
+ It is possible to compile with +xfontset +xim options too, but then you have
+ to set up GUI fonts etc. correctly.  See :help xim from Vim command prompt.
+@@ -139,9 +139,9 @@
+ 	define/nolog VIMRUNTIME device:[path.vim.vim60]
+ 	define/nolog TMP	device:[path.tmp]
+ 
+-to get vim.exe to find its document, filetype, and syntax files, and to
++To get vim.exe to find its document, filetype, and syntax files, and to
+ specify a directory where temporary files will be located.  Copy the "runtime"
+-subdirectory of the vim distribution to vimruntime.
++subdirectory of the Vim distribution to vimruntime.
+ 
+ Logicals $VIMRUNTIME and $TMP are optional.
+ 
+@@ -217,7 +217,7 @@
+ 	$ define VIM "<server_name>[""user password""]::device:<path>"
+ 	$ vi*m :== "mcr VIM:VIM.EXE"
+ 
+-as for example: >
++As for example: >
+ 
+ 	$ define VIM "PLUTO::RF10:[UTIL.VIM]"
+ 	$ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required
+@@ -234,7 +234,7 @@
+ 	$ define/nolog/sys VIM device:<path>
+ 	$ define/nolog/sys TMP SYS$SCRATCH
+ 
+-and to the SYS$STARTUP:SYLOGIN.COM >
++And to the SYS$STARTUP:SYLOGIN.COM >
+ 
+ 	$ vi*m :== mcr VIM:VIM.EXE
+ 	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
+@@ -312,7 +312,7 @@
+ 
+ 8. Useful notes						*vms-notes*
+ 
+-8.1 backspace/delete
++8.1 Backspace/delete
+ 8.2 Filters
+ 8.3 VMS file version numbers
+ 8.4 Directory conversion
+@@ -326,8 +326,10 @@
+ 8.12 diff-mode
+ 8.13 Allow '$' in C keywords
+ 8.14 VIMTUTOR for beginners
++8.15 Slow start in console mode issue 
++8.16 Common VIM directory - different architectures 
+ 
+-8.1 backspace/delete
++8.1 Backspace/delete
+ 
+ There are backspace/delete key inconsistencies with VMS.
+ :fixdel doesn't do the trick, but the solution is: >
+@@ -394,7 +396,7 @@
+ 
+ 	vi "<server>""username passwd""::<device>:<path><filename>;<version>"
+ 
+-example: >
++Example: >
+ 	vi "pluto""zay passwd""::RF10:<USER.ZAY.WORK>TEST.C;1"
+ 
+ Note: syntax is very important, otherwise VMS will recognize more parameters
+@@ -416,7 +418,7 @@
+ 	$ end:
+ 
+ Note: Never use it in a clustered environment (you do not need it), loading
+-could be very-very slow, but even faster then a local Emacs. :-)
++could be very-very slow, but even faster than a local Emacs. :-)
+ 
+ (Zoltan Arpadffy, Vim 5.6)
+ 
+@@ -573,12 +575,12 @@
+ 
+ 8.12 diff-mode
+ 
+-Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode|
++Vim 6.0 and higher supports Vim diff-mode (See |new-diff-mode|, |diff-mode|
+ and |08.7|).  This uses the external program 'diff' and expects a Unix-like
+ output format from diff.  The standard VMS diff has a different output
+-format.  To use vim on VMS in diff-mode, you need to:
++format.  To use Vim on VMS in diff-mode, you need to:
+     1 Install a Unix-like diff program, e.g. GNU diff
+-    2 Tell vim to use the Unix-like diff for diff-mode.
++    2 Tell Vim to use the Unix-like diff for diff-mode.
+ 
+ You can download GNU diff from the VIM-VMS website, it is one of the GNU
+ tools in http://www.polarhome.com/vim/files/gnu_tools.zip.  I suggest to
+@@ -592,7 +594,7 @@
+ 
+    GDIFF :==     $GNU:DIFF.EXE
+ 
+-Now you need to tell vim to use the new diff program.  Take the example
++Now you need to tell Vim to use the new diff program.  Take the example
+ settings from |diff-diffexpr| and change the call to the external diff
+ program to the new diff on VMS.  Add this to your .vimrc file: >
+ 
+@@ -613,7 +615,7 @@
+ 	endfunction
+       endif
+ 
+-You can now use vim in diff-mode, e.g. to compare two files in read-only
++You can now use Vim in diff-mode, e.g. to compare two files in read-only
+ mode: >
+ 
+     $ VIM -D/R <FILE1> <FILE2>
+@@ -636,7 +638,7 @@
+ 8.13 Allow '$' in C keywords
+ 
+ DEC C uses many identifiers with '$' in them.  This is not allowed in ANSI C,
+-and vim recognises the '$' as the end of the identifier.  You can change this
++and Vim recognises the '$' as the end of the identifier.  You can change this
+ with the |iskeyword|command.
+ Add this command to your .vimrc file: >
+ 
+@@ -663,12 +665,130 @@
+ 
+ (Thomas.R.Wyant III, Vim 6.1)
+ 
++8.14 Slow start in console mode issue
++
++As GUI/GTK Vim works equally well in console mode, many administrators
++deploy those executables system wide.
++Unfortunately, on a remote slow connections GUI/GTK executables behave rather
++slow when user wants to run Vim just in the console mode - because of X environment detection timeout.
++
++Luckily, there is a simple solution for that. Administrators need to deploy
++both GUI/GTK build and just console build executables, like below: >
++
++    |- vim72
++    |----- doc
++    |----- syntax        
++       vimrc    (system rc files)
++       gvimrc
++       gvim.exe (the renamed GUI or GTK built vim.exe)      
++       vim.exe  (the console only executable) 
++
++Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
++
++	$ define/nolog VIM RF10:[UTIL.VIM72] ! where you VIM directory is
++	$ vi*m  :== mcr VIM:VIM.EXE
++	$ gvi*m :== mcr VIM:GVIM.EXE
++	$ ! or you can try to spawn with
++	$ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40
++
++
++Like this, users that do not have X environment and want to use Vim just in 
++console mode can avoid performance problems.
++
++(Zoltan Arpadffy, Vim 7.2)
++
++8.15 Common VIM directory - different architectures
++
++In a cluster that contains nodes with different architectures like below:
++
++$show cluster
++View of Cluster from system ID 11655  node: TOR                                                                     18-AUG-2008 11:58:31
+++---------------------------------+
++�        SYSTEMS        � MEMBERS �
+++-----------------------+---------�
++�  NODE  �   SOFTWARE   �  STATUS �
+++--------+--------------+---------�
++� TOR    � VMS V7.3-2   � MEMBER  �
++� TITAN2 � VMS V8.3     � MEMBER  �
++� ODIN   � VMS V7.3-2   � MEMBER  �
+++---------------------------------+
++
++It is convenient to have a common VIM directory but execute different
++executables. 
++There are more solutions for this problem:
++
++Solution 1.  All executables in the same directory with different names
++This is easily done with the following script that can be added
++to the login.com or sylogin.com: >
++
++	$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
++	$ then
++	$       say "VAX platform"
++	$       vi*m:== mcr vim:VIM.EXE_VAX
++	$ endif
++	$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
++	$ then
++	$       say "ALPHA platform"
++	$       vi*m :== mcr vim:VIM.EXE_AXP
++	$ endif
++	$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
++	$ then
++	$      say "IA64 platform"
++	$      vi*m :== mcr vim:VIM.EXE_IA64
++	$ endif
++
++Solution 2.  Different directories: >
++
++	$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
++	$ then
++	$       say "VAX platform"
++	$       define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables
++	$ endif
++	$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
++	$ then
++	$       say "ALPHA platform"
++	$       define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables
++	$ endif
++	$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
++	$ then
++	$      say "IA64 platform"
++	$      define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables
++	$ endif
++        $! VIMRUNTIME must be defined in order to find runtime files
++	$ define/nolog VIMRUNTIME RF10:[UTIL.VIM72]
++
++A good example for this approach is the [GNU]gnu_tools.com script from
++GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
++
++(Zoltan Arpadffy, Vim 7.2)
++
+ ==============================================================================
+ 
+ 9. VMS related changes					*vms-changes*
+ 
+-Version 7
++Recent changes
++- The following plugins are included into VMS runtime: 
++  genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
++  bufexplorer 7.1.7, taglist 4.5
++- minor changes in vimrc (just in VMS runtime) 
++- make_vms.mms - HUGE model is the default
++- [TESTDIR]make_vms.mms include as many tests possible
++- modify test30 and test54 for VMS
++- enable FLOAT feature in VMS port
++- os_vms.txt updated  
++
++Version 7.2 (2008 Aug 9)
++- VCF files write corrected
++- CTAGS 5.7 included
++- corrected make_vms.mms (on VAX gave syntax error) 
++
++Version 7.1 (2007 Jun 15)
++- create TAGS file from menu 
++
++Version 7 (2006 May 8)
+ - Improved low level char input (affects just console mode)
++- Fixed plugin bug
++- CTAGS 5.6 included
+ 
+ Version 6.4 (2005 Oct 15)
+ - GTKLIB and Vim build on IA64
+@@ -806,6 +926,7 @@
+ 
+ OpenVMS documentation and executables are maintained by:
+ Zoltan Arpadffy <[email protected]>
++OpenVMS Vim page: http://www.polarhome.com/vim/
+ 
+ This document uses parts and remarks from earlier authors and contributors
+ of OS_VMS.TXT:
+diff -Nur runtime/doc/os_win32.txt runtime/doc/os_win32.txt
+--- runtime/doc/os_win32.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/os_win32.txt	2011-04-03 09:27:21.308106112 -0700
+@@ -1,4 +1,4 @@
+-*os_win32.txt*  For Vim version 7.2.  Last change: 2008 May 02
++*os_win32.txt*  For Vim version 7.3a.  Last change: 2008 May 02
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by George Reilly
+@@ -37,7 +37,7 @@
+ The original Windows NT port was done by Roger Knobbe <[email protected]>.
+ The GUI version was made by George V. Reilly and Robert Webb.
+ 
+-For compiling see "src/INSTALL.pc".			*win32-compiling*
++For compiling see "src/INSTALLpc.txt".			*win32-compiling*
+ 
+ ==============================================================================
+ 1. Known problems				*windows95* *win32-problems*
+diff -Nur runtime/doc/pattern.txt runtime/doc/pattern.txt
+--- runtime/doc/pattern.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pattern.txt	2011-04-03 09:27:21.309510614 -0700
+@@ -1,4 +1,4 @@
+-*pattern.txt*   For Vim version 7.2.  Last change: 2008 Jul 16
++*pattern.txt*   For Vim version 7.3a.  Last change: 2008 Nov 18
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -32,12 +32,13 @@
+ 			|linewise|.
+ 
+ 							*/<CR>*
+-/<CR>			Search forward for the [count]'th latest used
+-			pattern |last-pattern| with latest used |{offset}|.
+-
+-//{offset}<CR>		Search forward for the [count]'th latest used
+-			pattern |last-pattern| with new |{offset}|.  If
+-			{offset} is empty no offset is used.
++/<CR>			Search forward for the [count]'th occurrence of the
++			latest used pattern |last-pattern| with latest used
++			|{offset}|.
++
++//{offset}<CR>		Search forward for the [count]'th occurrence of the
++			latest used pattern |last-pattern| with new
++			|{offset}|.  If {offset} is empty no offset is used.
+ 
+ 							*?*
+ ?{pattern}[?]<CR>	Search backward for the [count]'th previous
+@@ -48,12 +49,13 @@
+ 			down |linewise|.
+ 
+ 							*?<CR>*
+-?<CR>			Search backward for the [count]'th latest used
+-			pattern |last-pattern| with latest used |{offset}|.
+-
+-??{offset}<CR>		Search backward for the [count]'th latest used
+-			pattern |last-pattern| with new |{offset}|.  If
+-			{offset} is empty no offset is used.
++?<CR>			Search backward for the [count]'th occurrence of the
++			latest used pattern |last-pattern| with latest used
++			|{offset}|.
++
++??{offset}<CR>		Search backward for the [count]'th occurrence of the
++			latest used pattern |last-pattern| with new
++			|{offset}|.  If {offset} is empty no offset is used.
+ 
+ 							*n*
+ n			Repeat the latest "/" or "?" [count] times.
+@@ -507,7 +509,7 @@
+ |/\Z|	\Z	\Z	ignore differences in Unicode "combining characters".
+ 			Useful when searching voweled Hebrew or Arabic text.
+ 
+-|/\%d|	\%d	\%d	match specified decimal character (eg \%d123
++|/\%d|	\%d	\%d	match specified decimal character (eg \%d123)
+ |/\%x|	\%x	\%x	match specified hex character (eg \%x2a)
+ |/\%o|	\%o	\%o	match specified octal character (eg \%o040)
+ |/\%u|	\%u	\%u	match specified multibyte character (eg \%u20ac)
+@@ -794,7 +796,11 @@
+ 						*/\%V*
+ \%V	Match inside the Visual area.  When Visual mode has already been
+ 	stopped match in the area that |gv| would reselect.
+-	Only works for the current buffer.
++	This is a |/zero-width| match.  To make sure the whole pattern is
++	inside the Visual area put it at the start and end of the pattern,
++	e.g.: >
++		/\%Vfoo.*bar\%V
++<	Only works for the current buffer.
+ 
+ 						*/\%#* *cursor-position*
+ \%#	Matches with the cursor position.  Only works when matching in a
+@@ -877,10 +883,13 @@
+ 	this will clearly show when the match is updated or not.
+ 	To match the text up to column 17: >
+ 		/.*\%17v
+-<	Column 17 is not included, because that's where the "\%17v" matches,
+-	and since this is a |/zero-width| match, column 17 isn't included in
+-	the match.  This does the same: >
+-		/.*\%<18v
++<	Column 17 is included, because that's where the "\%17v" matches,
++	even though this is a |/zero-width| match.  Adding a dot to match the
++	next character has the same result: >
++		/.*\%17v.
++<	This command does the same thing, but also matches when there is no
++	character in column 17: >
++		/.*\%<18v.
+ <
+ 
+ Character classes: {not in Vi}
+@@ -986,7 +995,8 @@
+ 	in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
+ 	- If two characters in the sequence are separated by '-', this is
+ 	  shorthand for the full list of ASCII characters between them.  E.g.,
+-	  "[0-9]" matches any decimal digit.
++	  "[0-9]" matches any decimal digit.  Non-ASCII characters can be
++	  used, but the character values must not be more than 256 apart.
+ 	- A character class expression is evaluated to the set of characters
+ 	  belonging to that character class.  The following character classes
+ 	  are supported:
+@@ -1034,9 +1044,9 @@
+ 	  "^"):  "[]xyz]" or "[^]xyz]" {not in Vi}.
+ 	  For '-' you can also make it the first or last character: "[-xyz]",
+ 	  "[^-xyz]" or "[xyz-]".  For '\' you can also let it be followed by
+-	  any character that's not in "^]-\bertn".  "[\xyz]" matches '\', 'x',
+-	  'y' and 'z'.  It's better to use "\\" though, future expansions may
+-	  use other characters after '\'.
++	  any character that's not in "^]-\bdertnoUux".  "[\xyz]" matches '\',
++	  'x', 'y' and 'z'.  It's better to use "\\" though, future expansions
++	  may use other characters after '\'.
+ 	- The following translations are accepted when the 'l' flag is not
+ 	  included in 'cpoptions' {not in Vi}:
+ 		\e	<Esc>
+diff -Nur runtime/doc/pi_getscript.txt runtime/doc/pi_getscript.txt
+--- runtime/doc/pi_getscript.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_getscript.txt	2011-04-03 09:27:21.310284489 -0700
+@@ -1,11 +1,11 @@
+-*pi_getscript.txt*  For Vim version 7.2.  Last change: 2008 Jun 29
++*pi_getscript.txt*  For Vim version 7.3a.  Last change: 2009 Oct 14
+ >
+ 		GETSCRIPT REFERENCE MANUAL  by Charles E. Campbell, Jr.
+ <
+ Authors:  Charles E. Campbell, Jr.  <[email protected]>
+ 	  (remove NOSPAM from the email address)
+ 						*GetLatestVimScripts-copyright*
+-Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.	*glvs-copyright*
++Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.	*glvs-copyright*
+            The VIM LICENSE applies to getscript.vim and
+            pi_getscript.txt (see |copyright|) except use
+            "getscript" instead of "Vim".  No warranty, express or implied.
+@@ -51,7 +51,7 @@
+ own personal list.  Feel free to remove all the scripts mentioned within it;
+ the "important" part of it is the first two lines.
+ 
+-Your computer needs to have wget for GetLatestVimScripts to do its work.
++Your computer needs to have wget or curl for GetLatestVimScripts to do its work.
+ 
+ 	1. if compressed:  gunzip getscript.vba.gz
+ 	2. Unix:
+@@ -76,7 +76,7 @@
+ ==============================================================================
+ 3. GetLatestVimScripts Usage				*glvs-usage* *:GLVS*
+ 
+-Unless its been defined elsewhere, >
++Unless it has been defined elsewhere, >
+ 	:GLVS
+ will invoke GetLatestVimScripts().  If some other plugin has defined that
+ command, then you may type
+@@ -136,7 +136,7 @@
+ out-of-date.
+ 
+ The SourceID is extracted by GetLatestVimScripts from the script's page on
+-vim.sf.net; whenever its greater than the one stored in the
++vim.sf.net; whenever it is greater than the one stored in the
+ GetLatestVimScripts.dat file, the script will be downloaded
+ (see |GetLatestVimScripts_dat|).
+ 
+@@ -176,6 +176,8 @@
+ ==============================================================================
+ 5. GetLatestVimScripts Friendly Plugins	*getscript-plugins* *glvs-plugins*
+ 
++		(this section is for plugin authors)~
++
+ If a plugin author includes the following comment anywhere in their plugin,
+ GetLatestVimScripts will find it and use it to automatically build the user's
+ GetLatestVimScripts.dat files:
+@@ -191,11 +193,20 @@
+ Same format, of course!
+ 
+ If your command is auto-installable (see |glvs-autoinstall|), and most scripts
+-are, then you may include :AutoInstall: at the start of "yourscriptname".
++are, then you may include :AutoInstall: just before "yourscriptname":
++>
++	                         src_id
++	                            v
++	" GetLatestVimScripts: ### ### :AutoInstall: yourscriptname
++	                        ^
++	                    scriptid
++<
++NOTE: :AutoInstall: is a plugin-author option, not a GetLatestVimScripts.dat~
++      entry!~
+ 
+ GetLatestVimScripts commands for those scripts are then appended, if not
+-already present, to the user's GetLatest/GetLatestVimScripts.dat file.  Its a
+-relatively painless way to automate the acquisition of any scripts your
++already present, to the user's GetLatest/GetLatestVimScripts.dat file.  It is
++a relatively painless way to automate the acquisition of any scripts your
+ plugins depend upon.
+ 
+ Now, as an author, you probably don't want GetLatestVimScripts to download
+@@ -290,14 +301,19 @@
+ 		This variable holds the options to be used with the
+ 		g:GetLatestVimScripts_wget command.
+ >
+- 	g:getLatestVimScripts_allowautoinstall
++ 	g:GetLatestVimScripts_allowautoinstall
+ <	default= 1
+ 		This variable indicates whether GetLatestVimScripts is allowed
+-		to attempt to automatically install scripts.  Note that it
+-		doesn't understand vimballs (yet).  Furthermore, the plugin
+-		author has to have explicitly indicated that his/her plugin
+-		is automatically installable.
+-
++		to attempt to automatically install scripts.  Furthermore, the
++		plugin author has to have explicitly indicated that his/her
++		plugin is automatically installable (via the :AutoInstall:
++		keyword in the GetLatestVimScripts comment line).
++>
++	g:GetLatestVimScripts_autoinstalldir
++<	default= $HOME/.vim     (linux)
++	default= $HOME/vimfiles (windows)
++		Override where :AutoInstall: scripts will be installed.
++		Doesn't override vimball installation.
+ 
+ ==============================================================================
+ 8. GetLatestVimScripts Algorithm		*glvs-algorithm* *glvs-alg*
+@@ -336,8 +352,10 @@
+ 9. GetLatestVimScripts History		*getscript-history* *glvs-hist* {{{1
+ 
+ v31 Jun 29, 2008 : * (Bill McCarthy) fixed having hls enabled with getscript
++		   * (David Schaefer) the acd option interferes with vimballs
++		     Solution: bypass the acd option
+ v30 Jun 13, 2008 : * GLVS now checks for existence of fnameescape() and will
+-		     issue an error message if its not supported
++		     issue an error message if it is not supported
+ v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that
+                      getscriptPlugin.vim was setting it but not restoring it.
+ v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin
+diff -Nur runtime/doc/pi_gzip.txt runtime/doc/pi_gzip.txt
+--- runtime/doc/pi_gzip.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_gzip.txt	2011-04-03 09:27:21.315333011 -0700
+@@ -1,4 +1,4 @@
+-*pi_gzip.txt*   For Vim version 7.2.  Last change: 2002 Oct 29
++*pi_gzip.txt*   For Vim version 7.3a.  Last change: 2002 Oct 29
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/pi_netrw.txt runtime/doc/pi_netrw.txt
+--- runtime/doc/pi_netrw.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_netrw.txt	2011-04-03 09:27:21.319537137 -0700
+@@ -1,13 +1,27 @@
+-*pi_netrw.txt*  For Vim version 7.2.  Last change: 2008 Aug 08
++*pi_netrw.txt*  For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 	    -----------------------------------------------------
+ 	    NETRW REFERENCE MANUAL    by Charles E. Campbell, Jr.
+ 	    -----------------------------------------------------
++Author:  Charles E. Campbell, Jr.  <[email protected]>
++	  (remove NOSPAM from Campbell's email first)
+ 
+-
+-*dav*    *ftp*    *netrw-file*  *Nread*    *rcp*    *scp*
+-*davs*   *http*   *netrw.vim*   *Nsource*  *rsync*  *sftp*
+-*fetch*  *netrw*  *network*     *Nwrite*
++Copyright: Copyright (C) 1999-2010 Charles E Campbell, Jr    *netrw-copyright*
++	   Permission is hereby granted to use and distribute this code, with
++	   or without modifications, provided that this copyright notice is
++	   copied with it. Like anything else that's free, netrw.vim,
++	   netrwPlugin.vim, netrwFileHandlers.vim, netrwSettings.vim,
++	   syntax/netrw.vim, and pi_netrw.txt are provided *as is* and comes
++	   with no warranty of any kind, either expressed or implied.  No
++	   guarantees of merchantability.  No guarantees of suitability for
++	   any purpose.  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.
++
++
++		*dav*    *ftp*    *netrw-file*  *rcp*    *scp*
++		*davs*   *http*   *netrw.vim*   *rsync*  *sftp*
++		*fetch*  *netrw*  *network*
+ 
+ ==============================================================================
+ 1. Contents						*netrw-contents* {{{1
+@@ -18,6 +32,7 @@
+       EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp|
+       READING............................................|netrw-read|
+       WRITING............................................|netrw-write|
++      SOURCING...........................................|netrw-source|
+       DIRECTORY LISTING..................................|netrw-dirlist|
+       CHANGING THE USERID AND PASSWORD...................|netrw-chgup|
+       VARIABLES AND SETTINGS.............................|netrw-variables|
+@@ -38,11 +53,12 @@
+       Browsing With A Horizontally Split Window..........|netrw-o|
+       Browsing With A New Tab............................|netrw-t|
+       Browsing With A Vertically Split Window............|netrw-v|
+-      Change Listing Style...............................|netrw-i|
++      Change Listing Style.(thin wide long tree).........|netrw-i|
+       Changing To A Bookmarked Directory.................|netrw-gb|
+       Changing To A Predecessor Directory................|netrw-u|
+       Changing To A Successor Directory..................|netrw-U|
+       Customizing Browsing With A User Function..........|netrw-x|
++      Deleting Bookmarks.................................|netrw-mB|
+       Deleting Files Or Directories......................|netrw-D|
+       Directory Exploring Commands.......................|netrw-explore|
+       Exploring With Stars and Patterns..................|netrw-star|
+@@ -80,10 +96,12 @@
+       Renaming Files Or Directories......................|netrw-move|
+       Reversing Sorting Order............................|netrw-r|
+       Selecting Sorting Style............................|netrw-s|
++      Setting Editing Window.............................|netrw-C|
+ 10. Problems and Fixes...................................|netrw-problems|
+ 11. Debugging Netrw Itself...............................|netrw-debug|
+ 12. History..............................................|netrw-history|
+-13. Credits..............................................|netrw-credits|
++13. Todo.................................................|netrw-todo|
++14. Credits..............................................|netrw-credits|
+ 
+ {Vi does not have any of this}
+ 
+@@ -91,7 +109,7 @@
+ 2. Starting With Netrw					*netrw-start* {{{1
+ 
+ Netrw makes reading files, writing files, browsing over a network, and
+-browsing locally easy!  First, make sure that you have plugins enabled, so
++local browsing easy!  First, make sure that you have plugins enabled, so
+ you'll need to have at least the following in your <.vimrc>:
+ (or see |netrw-activate|) >
+ 
+@@ -136,8 +154,11 @@
+ <
+ See |netrw-browse| for more!
+ 
+-There are more protocols supported by netrw just than scp and ftp, too: see the
+-next section, |netrw-externapp|, for how to use these external applications.
++There are more protocols supported by netrw than just scp and ftp, too: see the
++next section, |netrw-externapp|, on how to use these external applications with
++netrw and vim.
++
++PREVENTING LOADING						*netrw-noload*
+ 
+ If you want to use plugins, but for some reason don't wish to use netrw, then
+ you need to avoid loading both the plugin and the autoload portions of netrw.
+@@ -148,9 +169,9 @@
+ <
+ 
+ ==============================================================================
+-3. Netrw Reference					*netrw-ref* {{{1
++3. Netrw Reference						*netrw-ref* {{{1
+ 
+-   Netrw supports several protocols in addition to scp and ftp mentioned
++   Netrw supports several protocols in addition to scp and ftp as mentioned
+    in |netrw-start|.  These include dav, fetch, http,... well, just look
+    at the list in |netrw-externapp|.  Each protocol is associated with a
+    variable which holds the default command supporting that protocol.
+@@ -159,16 +180,35 @@
+ 
+ 	Protocol  Variable	    Default Value
+ 	--------  ----------------  -------------
+-	   dav:    *g:netrw_dav_cmd*  = "cadaver"
+-	 fetch:  *g:netrw_fetch_cmd*  = "fetch -o"    if fetch is available
+-	   ftp:    *g:netrw_ftp_cmd*  = "ftp"
+-	  http:   *g:netrw_http_cmd*  = "curl -o"     if     curl  is available
+-	  http:    g:netrw_http_cmd   = "wget -q -O"  elseif wget  is available
+-          http:    g:netrw_http_cmd   = "fetch -o"    elseif fetch is available
+-	   rcp:    *g:netrw_rcp_cmd*  = "rcp"
+-	 rsync:  *g:netrw_rsync_cmd*  = "rsync -a"
+-	   scp:    *g:netrw_scp_cmd*  = "scp -q"
+-	  sftp:   *g:netrw_sftp_cmd*  = "sftp"
++	   dav:  *g:netrw_dav_cmd*   = "cadaver"     if cadaver is executable
++	   dav:   g:netrw_dav_cmd    = "curl -o"     elseif curl is available
++	 fetch:  *g:netrw_fetch_cmd* = "fetch -o"    if fetch is available
++	   ftp:  *g:netrw_ftp_cmd*   = "ftp"
++	  http:  *g:netrw_http_cmd*  = "elinks"     if   elinks  is available
++	  http:   g:netrw_http_cmd   = "links"      elseif links is available
++	  http:   g:netrw_http_cmd   = "curl"       elseif curl  is available
++	  http:   g:netrw_http_cmd   = "wget"       elseif wget  is available
++          http:   g:netrw_http_cmd   = "fetch"      elseif fetch is available
++	   rcp:  *g:netrw_rcp_cmd*   = "rcp"
++	 rsync:  *g:netrw_rsync_cmd* = "rsync -a"
++	   scp:  *g:netrw_scp_cmd*   = "scp -q"
++	  sftp:  *g:netrw_sftp_cmd*  = "sftp"
++
++	*g:netrw_http_xcmd* : the option string for http://... protocols are
++	specified via this variable and may be independently overridden.  By
++	default, the option arguments for the http-handling commands are: >
++
++		    elinks : "-source >"
++		    links  : "-source >"
++		    curl   : "-o"
++		    wget   : "-q -O"
++		    fetch  : "-o"
++<
++	For example, if your system has elinks, and you'd rather see the
++	page using an attempt at rendering the text, you may wish to have >
++		let g:netrw_http_xcmd= "-dump >"
++<	in your .vimrc.
++
+ 
+ READING						*netrw-read* *netrw-nread* {{{2
+ 
+@@ -241,8 +281,8 @@
+ 		:e ftp://[user]@hostname/path/
+ <
+ 	For remote directories (ie. those using scp or ftp), that trailing
+-	"/" is necessary (it tells netrw that its to treat it as a directory
+-	to browse instead of a file to download).
++	"/" is necessary (the slash tells netrw to treat the argument as a
++	directory to browse instead of a file to download).
+ 
+ 	However, the Nread command can also be used to accomplish this:
+ 
+@@ -275,8 +315,17 @@
+ settings are described below, in |netrw-browser-options|, and in
+ |netrw-externapp|:
+ 
+- *b:netrw_lastfile*	last file Network-read/written retained on a per-buffer
+-			basis		(supports plain :Nw )
++ *b:netrw_lastfile*	last file Network-read/written retained on a
++			per-buffer basis (supports plain :Nw )
++
++ *g:netrw_chgwin*	specifies a window number where file edits will take
++			place.  (also see |netrw-C|)
++			(default) not defined
++
++ *g:Netrw_funcref*	specifies a function to be called when netrw edits
++			a file.  The file is first edited, and then the
++			function reference (|Funcref|) is called.
++			(default) not defined
+ 
+  *g:netrw_ftp*		if it doesn't exist, use default ftp
+ 			=0 use default ftp		       (uid password)
+@@ -285,7 +334,7 @@
+ 			value of this variable to see if the alternate ftp
+ 			method works for your setup.
+ 
+- *g:netrw_extracmd*	default: doesn't exist
++ *g:netrw_ftpextracmd*	default: doesn't exist
+                         If this variable exists, then any string it contains
+ 			will be placed into the commands set to your ftp
+ 			client.  As an example:
+@@ -305,8 +354,8 @@
+  *g:netrw_nogx*		if this variable exists, then the "gx" map will not
+ 			be available (see |netrw-gx|)
+ 
+- *g:netrw_uid*		(ftp) user-id,      retained on a per-session basis
+- *s:netrw_passwd*	(ftp) password,     retained on a per-session basis
++ *g:netrw_uid*		(ftp) user-id,      retained on a per-vim-session basis
++ *s:netrw_passwd*	(ftp) password,     retained on a per-vim-session basis
+ 
+  *g:netrw_preview*	=0 (default) preview window shown in a horizontally
+                            split window
+@@ -317,6 +366,13 @@
+  *g:netrw_scpport*      = "-P" : option to use to set port for scp
+  *g:netrw_sshport*      = "-p" : option to use to set port for ssh
+ 
++ *g:netrw_sepchr*	=\0xff
++			=\0x01 for enc == euc-jp (and perhaps it should be for
++			                          others, too, please let me
++						  know)
++			Separates priority codes from filenames internally.
++			See |netrw-p12|.
++
+   *g:netrw_silent*	=0 : transfers done normally
+ 			=1 : transfers done silently
+ 
+@@ -380,6 +436,30 @@
+ from/written to a temporary file (under Unix/Linux, /tmp/...) which the
+ <netrw.vim> script will clean up.
+ 
++Now, a word about Jan Minář's "FTP User Name and Password Disclosure"; first,
++ftp is not a secure protocol.  User names and passwords are transmitted "in
++the clear" over the internet; any snooper tool can pick these up; this is not
++a netrw thing, this is a ftp thing.  If you're concerned about this, please
++try to use scp or sftp instead.
++
++Netrw re-uses the user id and password during the same vim session and so long
++as the remote hostname remains the same.
++
++Jan seems to be a bit confused about how netrw handles ftp; normally multiple
++commands are performed in a "ftp session", and he seems to feel that the
++uid/password should only be retained over one ftp session.  However, netrw
++does every ftp operation in a separate "ftp session"; so remembering the
++uid/password for just one "ftp session" would be the same as not remembering
++the uid/password at all.  IMHO this would rapidly grow tiresome as one
++browsed remote directories, for example.
++
++On the other hand, thanks go to Jan M. for pointing out the many
++vulnerabilities that netrw (and vim itself) had had in handling "crafted"
++filenames.  The |shellescape()| and |fnameescape()| functions were written in
++response by Bram Moolenaar to handle this sort of problems, and netrw has
++been modified to use them.  Still, my advice is, if the "filename" looks like
++a vim command that you aren't comfortable with having executed, don't open it.
++
+ 				*netrw-putty* *netrw-pscp* *netrw-psftp*
+ 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
+@@ -396,8 +476,8 @@
+ 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.
++Consequently, if "fetch" is available (ie. executable), it may be preferable
++to use it for ftp://... based transfers.
+ 
+ For rcp, scp, sftp, and http, one may use network-oriented file transfers
+ transparently; ie.
+@@ -405,7 +485,7 @@
+ 	vim rcp://[user@]machine/path
+ 	vim scp://[user@]machine/path
+ <
+-If your ftp supports <.netrc>, then it too can be just as transparently used
++If your ftp supports <.netrc>, then it too can be transparently used
+ if the needed triad of machine name, user id, and password are present in
+ that file.  Your ftp must be able to use the <.netrc> file on its own, however.
+ >
+@@ -509,7 +589,7 @@
+ PASSWORD						*netrw-passwd*
+ 
+ The script attempts to get passwords for ftp invisibly using |inputsecret()|,
+-a built-in Vim function.  See |netrw-uidpass| for how to change the password
++a built-in Vim function.  See |NetUserPass()| 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
+@@ -562,19 +642,22 @@
+ instead, as appropriate) -- see |netrw-urls|.  In the explanations
+ below, a {netfile} is an url to a remote file.
+ 
++						*:Nwrite*  *:Nw*
+ :[range]Nw[rite]	Write the specified lines to the current
+ 		file as specified in b:netrw_lastfile.
++		(related: |netrw-nwrite|)
+ 
+ :[range]Nw[rite] {netfile} [{netfile}]...
+ 		Write the specified lines to the {netfile}.
+ 
+-:Nr[ead]		Read the specified lines into the current
+-		buffer from the file specified in
+-		b:netrw_lastfile.
++						*:Nread*   *:Nr*
++:Nr[ead]	Read the lines from the file specified in b:netrw_lastfile
++		into the current buffer.  (related: |netrw-nread|)
+ 
+ :Nr[ead] {netfile} {netfile}...
+ 		Read the {netfile} after the current line.
+ 
++						*:Nsource* *:Ns*
+ :Ns[ource] {netfile}
+ 		Source the {netfile}.
+ 		To start up vim using a remote .vimrc, one may use
+@@ -582,20 +665,24 @@
+ 		vim -u NORC -N
+ 		 --cmd "runtime plugin/netrwPlugin.vim"
+ 		 --cmd "source scp://HOSTNAME/.vimrc"
+-<								*netrw-uidpass*
+-:call NetUserPass()
++<		 (related: |netrw-source|)
++
++:call NetUserPass()				*NetUserPass()*
+ 		If g:netrw_uid and s:netrw_passwd don't exist,
+ 		this function will query the user for them.
++		(related: |netrw-userpass|)
+ 
+ :call NetUserPass("userid")
+ 		This call will set the g:netrw_uid and, if
+ 		the password doesn't exist, will query the user for it.
++		(related: |netrw-userpass|)
+ 
+ :call NetUserPass("userid","passwd")
+ 		This call will set both the g:netrw_uid and s:netrw_passwd.
+ 		The user-id and password are used by ftp transfers.  One may
+ 		effectively remove the user-id and password by using empty
+ 		strings (ie. "").
++		(related: |netrw-userpass|)
+ 
+ :NetrwSettings  This command is described in |netrw-settings| -- used to
+                 display netrw settings and change netrw behavior.
+@@ -609,9 +696,7 @@
+ The <netrw.vim> script provides several variables which act as options to
+ affect <netrw.vim>'s file transfer behavior.  These variables typically may be
+ set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|)
+-
+ >
+-
+                         -------------
+                         Netrw Options
+                         -------------
+@@ -633,12 +718,9 @@
+ 				   to be ignored.
+         b:netrw_lastfile        Holds latest method/machine/path.
+         b:netrw_line            Holds current line number     (during NetWrite)
+-        g:netrw_passwd          Holds current password for ftp.
+ 	g:netrw_silent          =0 transfers done normally
+ 	                        =1 transfers done silently
+         g:netrw_uid             Holds current user-id for ftp.
+-                                =1 use alternate ftp         (user uid password)
+-                                (see |netrw-options|)
+         g:netrw_use_nt_rcp      =0 don't use WinNT/2K/XP's rcp (default)
+                                 =1 use WinNT/2K/XP's rcp, binary mode
+         g:netrw_win95ftp        =0 use unix-style ftp even if win95/98/ME/etc
+@@ -654,9 +736,10 @@
+ 	Variable		Meaning
+ 	--------		------------------------------------
+ <
+-	g:netrw_method		Index indicating rcp/ftp+.netrc/ftp
++	b:netrw_method		Index indicating rcp/ftp+.netrc/ftp
++	w:netrw_method		(same as b:netrw_method)
+ 	g:netrw_machine		Holds machine name parsed from input
+-	g:netrw_fname		Holds filename being accessed >
++	b:netrw_fname		Holds filename being accessed >
+ 	------------------------------------------------------------
+ <
+ 							*netrw-protocol*
+@@ -678,7 +761,8 @@
+                                                   read via ftp automatically
+                                                   transformed however they wish
+                                                   by NetReadFixup()
+-    g:netrw_dav_cmd    variable   ="cadaver"
++    g:netrw_dav_cmd    variable   ="cadaver"      if cadaver  is executable
++    g:netrw_dav_cmd    variable   ="curl -o"      elseif curl is executable
+     g:netrw_fetch_cmd  variable   ="fetch -o"     if fetch is available
+     g:netrw_ftp_cmd    variable   ="ftp"
+     g:netrw_http_cmd   variable   ="fetch -o"     if      fetch is available
+@@ -719,7 +803,7 @@
+                                               get filename tempfile >
+   ---------------------------------------------------------------------
+ <
+-The |g:netrw_ftpmode| and |g:netrw_extracmd| are optional.
++The |g:netrw_ftpmode| and g:netrw_extracmd are optional.
+ 
+ Netrw then executes the lines above by use of a filter:
+ >
+@@ -745,7 +829,7 @@
+ 
+ 						*netrw-fixup* *netreadfixup*
+ If your ftp for whatever reason generates unwanted lines (such as AUTH
+-messages) you may write a NetReadFixup(tmpfile) function:
++messages) you may write a NetReadFixup() function:
+ >
+     function! NetReadFixup(method,line1,line2)
+       " a:line1: first new line in current file
+@@ -782,7 +866,7 @@
+ 
+ ==============================================================================
+ 9. Browsing		*netrw-browsing* *netrw-browse* *netrw-help* {{{1
+-   			*netrw-browser*  *netrw-dir*    *netrw-list*
++			*netrw-browser*  *netrw-dir*    *netrw-list*
+ 
+ INTRODUCTION TO BROWSING			*netrw-intro-browse* {{{2
+ 	(Quick References: |netrw-quickmaps| |netrw-quickcoms|)
+@@ -818,7 +902,7 @@
+ 
+ 	vim ftp://ftp.home.vim.org/pub/vim/
+ <
+-For local directories, the trailing slash is not required.  Again, because its
++For local directories, the trailing slash is not required.  Again, because it's
+ easy to miss: to browse remote directories, the url must terminate with a
+ slash!
+ 
+@@ -830,6 +914,7 @@
+ 
+ 	* To change the listing style, press the "i" key (|netrw-i|).
+ 	  Currently there are four styles: thin, long, wide, and tree.
++	  To make that change "permanent", see |g:netrw_liststyle|.
+ 
+ 	* To hide files (don't want to see those xyz~ files anymore?) see
+ 	  |netrw-ctrl-h|.
+@@ -838,6 +923,18 @@
+ 
+ See |netrw-browse-cmds| for all the things you can do with netrw!
+ 
++			*netrw-getftype* *netrw-filigree* *netrw-ftype*
++The |getftype()| function is used to append a bit of filigree to indicate
++filetype to locally listed files:
++
++	directory  : /
++	executable : *
++	fifo       : |
++	links      : @
++	sockets    : =
++
++The filigree also affects the |g:netrw_sort_sequence|.
++
+ 
+ QUICK HELP						*netrw-quickhelp* {{{2
+                        (Use ctrl-] to select a topic)~
+@@ -876,11 +973,11 @@
+ 		hiding (suppress display of files matching g:netrw_list_hide)
+ 		showing (display only files which match g:netrw_list_hide)
+ 	   c	Make browsing directory the current directory        |netrw-c|
++	   C	Setting the editing window                           |netrw-C|
+ 	   d	Make a directory                                     |netrw-d|
+ 	   D	Attempt to remove the file(s)/directory(ies)         |netrw-D|
+ 	   gb	Go to previous bookmarked directory                  |netrw-gb|
+ 	   gh	Quick hide/unhide of dot-files                       |netrw-gh|
+-	   gi	Display information on file                          |netrw-qf|
+ 	 <c-h>	Edit file hiding list                             |netrw-ctrl-h|
+ 	   i	Cycle between thin, long, wide, and tree listings    |netrw-i|
+ 	 <c-l>	Causes Netrw to refresh the directory listing     |netrw-ctrl-l|
+@@ -892,18 +989,19 @@
+ 	   mh	Toggle marked file suffices' presence on hiding list |netrw-mh|
+ 	   mm	Move marked files to marked-file target directory    |netrw-mm|
+ 	   mp	Print marked files                                   |netrw-mp|
+-	   mr	Mark files satisfying a |regexp|                     |netrw-mr|
++	   mr	Mark files satisfying a shell-style |regexp|         |netrw-mr|
+ 	   mt	Current browsing directory becomes markfile target   |netrw-mt|
+ 	   mT	Apply ctags to marked files                          |netrw-mT|
+ 	   mu	Unmark all marked files                              |netrw-mu|
+ 	   mx	Apply arbitrary shell command to marked files        |netrw-mx|
+ 	   mz	Compress/decompress marked files                     |netrw-mz|
+ 	   o	Enter the file/directory under the cursor in a new   |netrw-o|
+-	   	browser window.  A horizontal split is used.
++		browser window.  A horizontal split is used.
+ 	   O	Obtain a file specified by cursor                    |netrw-O|
+ 	   p	Preview the file                                     |netrw-p|
+ 	   P	Browse in the previously used window                 |netrw-P|
+-	   q	List bookmarked directories and history              |netrw-qb|
++	   qb	List bookmarked directories and history              |netrw-qb|
++	   qf	Display information on file                          |netrw-qf|
+ 	   r	Reverse sorting order                                |netrw-r|
+ 	   R	Rename the designed file(s)/directory(ies)           |netrw-R|
+ 	   s	Select sorting style: by name, time, or file size    |netrw-s|
+@@ -912,11 +1010,12 @@
+ 	   u	Change to recently-visited directory                 |netrw-u|
+ 	   U	Change to subsequently-visited directory             |netrw-U|
+ 	   v	Enter the file/directory under the cursor in a new   |netrw-v|
+-	   	browser window.  A vertical split is used.
++		browser window.  A vertical split is used.
+ 	   x	View file with an associated program                 |netrw-x|
+ 
+ 	   %	Open a new file in netrw's current directory         |netrw-%|
+ 
++	*netrw-mouse* *netrw-leftmouse* *netrw-middlemouse* *netrw-rightmouse*
+ 	<leftmouse>	(gvim only) selects word under mouse as if a <cr>
+ 			had been pressed (ie. edit file, change directory)
+ 	<middlemouse>	(gvim only) same as P selecting word under mouse;
+@@ -929,9 +1028,11 @@
+ 		         * the user doesn't already have a <2-leftmouse> mapping
+ 			   defined before netrw is autoloaded,
+ 			then a double clicked leftmouse button will return
+-			to the netrw browser window.
++			to the netrw browser window.  See |g:netrw_retmap|.
+ 	<s-leftmouse>	(gvim only) like mf, will mark files
+ 
++	(to disable mouse buttons while browsing: |g:netrw_mousemaps|)
++
+ 				*netrw-quickcom* *netrw-quickcoms*
+ QUICK REFERENCE: COMMANDS	*netrw-explore-cmds* *netrw-browse-cmds* {{{2
+      :NetrwClean[!] ...........................................|netrw-clean|
+@@ -946,13 +1047,18 @@
+      :Vexplore[!] [dir] Vertical Split & Explore...............|netrw-explore|
+ 
+ BOOKMARKING A DIRECTORY	*netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2
++
+ One may easily "bookmark" a directory by using >
+ 
+-	{cnt}mb
++	mb
+ <
+-Any count may be used.  One may use viminfo's "!" option (|'viminfo'|) to
+-retain bookmarks between vim sessions.  See |netrw-gb| for how to return
+-to a bookmark and |netrw-qb| for how to list them.
++Bookmarks are retained in between sessions in a $HOME/.netrwbook file, and are
++kept in sorted order.
++
++Related Topics:
++	|netrw-gb| how to return (go) to a bookmark
++	|netrw-mB| how to delete bookmarks
++	|netrw-qb| how to list bookmarks
+ 
+ 
+ BROWSING						*netrw-cr* {{{2
+@@ -960,7 +1066,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.  
++protocol given in the original read request.
+ 
+   CAVEAT: There are four forms of listing (see |netrw-i|).  Netrw assumes that
+   two or more spaces delimit filenames and directory names for the long and
+@@ -975,8 +1081,8 @@
+ <cr> will cause the file to appear in a new tab.
+ 
+ 
+-When using the gui (gvim) one may select a file by pressing the <leftmouse>
+-button.  In addtion, if
++When using the gui (gvim), one may select a file by pressing the <leftmouse>
++button.  In addition, if
+ 
+  *|g:netrw_retmap| == 1      AND   (its default value is 0)
+  * in a netrw-selected file, AND
+@@ -1017,19 +1123,19 @@
+ 
+ 	let g:netrw_alto = 1
+ 
+-in your <.vimrc>.  (also see |netrw-t| |netrw-v|)
+-
+-There is only one tree listing buffer; using "o" on a displayed subdirectory 
+-will split the screen, but the same buffer will be shown twice.
++in your <.vimrc>.  (also see |netrw-t| |netrw-T| |netrw-v|)
+ 
+ Associated setting variables: |g:netrw_alto| |g:netrw_winsize|
+ 
+ 
+-BROWSING WITH A NEW TAB				*netrw-t* {{{2
++BROWSING WITH A NEW TAB				*netrw-t* *netrw-T* {{{2
+ 
+ Normally one enters a file or directory using the <cr>.  The "t" map
+-allows one to open a new window hold the new directory listing or file in a
+-new tab. (also see: |netrw-o| |netrw-v|)
++allows one to open a new window holding the new directory listing or file in
++a new tab.  The "T" version puts the file or directory into a background tab
++(see |gT|)
++
++Related actions:  |netrw-o| |netrw-v|
+ 
+ 
+ BROWSING WITH A VERTICALLY SPLIT WINDOW			*netrw-v* {{{2
+@@ -1044,18 +1150,19 @@
+ 
+ 	let g:netrw_altv = 1
+ 
+-in your <.vimrc>.  (also see: |netrw-o| |netrw-t|)
++in your <.vimrc>.  (also see: |netrw-o| |netrw-t| |netrw-T|)
+ 
+-There is only one tree listing buffer; using "v" on a displayed subdirectory 
++There is only one tree listing buffer; using "v" on a displayed subdirectory
+ will split the screen, but the same buffer will be shown twice.
+ 
+ Associated setting variable: |g:netrw_altv| |g:netrw_winsize|
+ 
+-CHANGE LISTING STYLE					*netrw-i* {{{2
++
++CHANGE LISTING STYLE  (THIN LONG WIDE TREE)   			*netrw-i* {{{2
+ 
+ The "i" map cycles between the thin, long, wide, and tree listing formats.
+ 
+-The short listing format gives just the files' and directories' names.
++The thin 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
+@@ -1071,13 +1178,23 @@
+ 
+ The tree listing format has a top directory followed by files and directories
+ preceded by a "|".  One may open and close directories by pressing the <cr>
+-key while atop the directory name.  There is only one tree listing buffer;
+-hence, using "v" or "o" on a subdirectory will only show the same buffer,
+-twice.
++key while atop the directory name.
++
++One may make a preferred listing style your default; see |g:netrw_liststyle|.
++As an example, by putting the following line in your .vimrc, >
++	let g:netrw_liststyle= 4
++the tree style will become your default listing style.
+ 
+ Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen|
+                               |g:netrw_timefmt|   |g:netrw_list_cmd|
+ 
++CHANGE FILE PERMISSION						*netrw-gp* {{{2
++
++"gp" will ask you for a new permission for the file named under the cursor.
++Currently, this only works for local files.
++
++Associated setting variables: |g:netrw_chgperm|
++
+ 
+ CHANGING TO A BOOKMARKED DIRECTORY			*netrw-gb*  {{{2
+ 
+@@ -1085,11 +1202,15 @@
+ 
+ 	{cnt}gb
+ 
+-Any count may be used to reference any of the bookmarks.  See |netrw-mb| on
+-how to bookmark a directory and |netrw-qb| on how to list bookmarks.
++Any count may be used to reference any of the bookmarks.
++
++Related Topics:
++	|netrw-mB| how to delete bookmarks
++	|netrw-mb| how to make a bookmark
++	|netrw-qb| how to list bookmarks
+ 
+ 
+-CHANGING TO A PREDECESSOR DIRECTORY	*netrw-u* *netrw-updir* {{{2
++CHANGING TO A PREDECESSOR DIRECTORY		*netrw-u* *netrw-updir* {{{2
+ 
+ Every time you change to a new directory (new for the current session),
+ netrw will save the directory in a recently-visited directory history
+@@ -1141,7 +1262,7 @@
+     If g:netrw_browsex_viewer == '-', then netrwFileHandler() will be
+     invoked first (see |netrw_filehandler|).
+ 
+-  * for Windows 32 or 64, the url and FileProtocolHandler dlls are used.  
++  * for Windows 32 or 64, the url and FileProtocolHandler dlls are used.
+   * for Gnome (with gnome-open): gnome-open is used.
+   * for KDE (with kfmclient)   : kfmclient is used.
+   * for Mac OS X               : open is used.
+@@ -1161,7 +1282,7 @@
+                   NFH_html("scp://user@host/some/path/mypgm.html")
+ <
+ Users may write their own netrw File Handler functions to support more
+-suffixes with special handling.  See <plugin/netrwFileHandlers.vim> for
++suffixes with special handling.  See <autoload/netrwFileHandlers.vim> for
+ examples on how to make file handler functions.   As an example: >
+ 
+ 	" NFH_suffix(filename)
+@@ -1175,11 +1296,11 @@
+ contain such characters, netrw will first convert the suffix using the
+ following table: >
+ 
+-    @ -> AT       ! -> EXCLAMATION    % -> PERCENT  
+-    : -> COLON    = -> EQUAL          ? -> QUESTION 
++    @ -> AT       ! -> EXCLAMATION    % -> PERCENT
++    : -> COLON    = -> EQUAL          ? -> QUESTION
+     , -> COMMA    - -> MINUS          ; -> SEMICOLON
+-    $ -> DOLLAR   + -> PLUS           ~ -> TILDE    
+-<    
++    $ -> DOLLAR   + -> PLUS           ~ -> TILDE
++<
+ So, for example: >
+ 
+ 	file.rcs,v  ->  NFH_rcsCOMMAv()
+@@ -1191,6 +1312,18 @@
+ Associated setting variable: |g:netrw_browsex_viewer|
+ 
+ 							*netrw-curdir*
++DELETING BOOKMARKS					*netrw-mB* {{{2
++
++To delete a bookmark, use >
++
++	{cnt}mB
++<
++Related Topics:
++	|netrw-gb| how to return (go) to a bookmark
++	|netrw-mb| how to make a bookmark
++	|netrw-qb| how to list bookmarks
++
++
+ DELETING FILES OR DIRECTORIES	*netrw-delete* *netrw-D* *netrw-del* {{{2
+ 
+ If files have not been marked with |netrw-mf|:   (local marked file list)
+@@ -1232,12 +1365,12 @@
+ *netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore*
+ DIRECTORY EXPLORATION COMMANDS  {{{2
+ 
+-     :Explore[!]   [dir]... Explore directory of current file       *:Explore*
+-     :Hexplore[!]  [dir]... Horizontal Split & Explore              *:Hexplore*
+-     :Rexplore          ... Return to Explorer                      *:Rexplore*
+-     :Sexplore[!]  [dir]... Split&Explore directory of current file *:Sexplore*
+-     :Texplore     [dir]... Tab              & Explore              *:Texplore*
+-     :Vexplore[!]  [dir]... Vertical   Split & Explore              *:Vexplore*
++     :[N]Explore[!]  [dir]... Explore directory of current file      *:Explore*
++     :[N]Hexplore[!] [dir]... Horizontal Split & Explore             *:Hexplore*
++     :Rexplore            ... Return to Explorer                     *:Rexplore*
++     :[N]Sexplore[!] [dir]... Split&Explore current file's directory *:Sexplore*
++     :Texplore       [dir]... Tab              & Explore             *:Texplore*
++     :[N]Vexplore[!] [dir]... Vertical   Split & Explore             *:Vexplore*
+ 
+      Used with :Explore **/pattern : (also see |netrw-starstar|)
+      :Nexplore............. go to next matching file                *:Nexplore*
+@@ -1259,17 +1392,21 @@
+ :Vexplore! [dir] does an :Explore with |:rightbelow| vertical splitting.
+ :Texplore  [dir] does a tabnew before generating the browser window
+ 
+-By default, these commands use the current file's directory.  However, one
+-may explicitly provide a directory (path) to use.
++By default, these commands use the current file's directory.  However, one may
++explicitly provide a directory (path) to use.
++
++The [N] will override |g:netrw_winsize| to specify the quantity of rows and/or
++columns the new explorer window should have.
+ 
+-The |g:netrw_winsize| variable also is used, if specified by the user, to
+-size Hexplore and Vexplore windows.
++Otherwise, the |g:netrw_winsize| variable, if it has been specified by the
++user, is used to control the quantity of rows and/or columns new explorer
++windows should have.
+ 
+ :Rexplore  This command is a little different from the others.  When one
+            edits a file, for example by pressing <cr> when atop a file in
+ 	   a netrw browser window, :Rexplore will return the display to
+-	   that of the last netrw browser window.  Its a command version
+-	   of <2-leftmouse> (which is only available under gvim and
++	   that of the last netrw browser window.  It is a command version
++	   of the <2-leftmouse> map (which is only available under gvim and
+ 	   cooperative terms).
+ 
+ 
+@@ -1282,11 +1419,11 @@
+ 
+     */filepat	files in current directory which satisfy filepat
+     **/filepat	files in current directory or below which satisfy the
+-    		file pattern
++		file pattern
+     *//pattern	files in the current directory which contain the
+-    		pattern (vimgrep is used)
++		pattern (vimgrep is used)
+     **//pattern	files in the current directory or below which contain
+-    		the pattern (vimgrep is used)
++		the pattern (vimgrep is used)
+ <
+ The cursor will be placed on the first file in the list.  One may then
+ continue to go to subsequent files on that list via |:Nexplore| or to
+@@ -1339,6 +1476,18 @@
+ The "gh" mapping (see |netrw-gh|) quickly alternates between the usual
+ hiding list and the hiding of files or directories that begin with ".".
+ 
++As an example, >
++	let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
++Effectively, this makes the effect of a |netrw-gh| command the initial setting.
++What it means:
++
++	\(^\|\s\s\)   : if the line begins with the following, -or-
++	                two consecutive spaces are encountered
++	\zs           : start the hiding match now
++	\.            : if it now begins with a dot
++	\S\+          : and is followed by one or more non-whitespace
++	                characters
++
+ Associated setting variables: |g:netrw_hide| |g:netrw_list_hide|
+ Associated topics: |netrw-a| |netrw-gh| |netrw-mh|
+ 
+@@ -1349,7 +1498,12 @@
+ (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 (all one line):
+->
++
++For Unix: >
++	'[\/]$,\<core\%(\.\d\+\)\=,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,
++	\.info$,\.swp$,\.bak$,\~$'
++<
++Otherwise: >
+ 	'[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,
+ 	\.swp$,\.bak$,\~$'
+ <
+@@ -1508,11 +1662,15 @@
+ 
+ LISTING BOOKMARKS AND HISTORY		*netrw-qb* *netrw-listbookmark* {{{2
+ 
+-Pressing "qb" (query bookmarks) will list the bookmarked directories and
+-directory traversal history (query).
+-
+-(see |netrw-mb|, |netrw-gb|, |netrw-u|, and |netrw-U|)
++Pressing "qb" (query bookmarks) will list both the bookmarked directories and
++directory traversal history.
+ 
++Related Topics:
++	|netrw-gb| how to return (go) to a bookmark
++	|netrw-mb| how to make a bookmark
++	|netrw-mB| how to delete bookmarks
++	|netrw-u|  change to a predecessor directory via the history stack
++	|netrw-U|  change to a successor   directory via the history stack
+ 
+ MAKING A NEW DIRECTORY					*netrw-d* {{{2
+ 
+@@ -1584,10 +1742,11 @@
+ 	(also see |netrw-mf|)
+ 
+ One may also mark files by pressing "mr"; netrw will then issue a prompt,
+-"Enter regexp: ".  You may then enter a regular expression such as \.c$ .
+-All files in the current directory will then be marked.  Note that the
+-regular expressions are vim-style |regexp| ones, not shell ones.  So
+-entering *.c probably isn't what you want!
++"Enter regexp: ".  You may then enter a shell-style regular expression such
++as *.c$ (see |glob()|).  For remote systems, glob() doesn't work -- so netrw
++converts "*" into ".*" (see |regexp|) and marks files based on that.  In the
++future I may make it possible to use |regexp|s instead of glob()-style
++expressions (yet-another-option).
+ 
+ 
+ MARKED FILES: ARBITRARY COMMAND				*netrw-mx* {{{2
+@@ -1670,7 +1829,7 @@
+ 	first or do the copy and then delete yourself using mc and D.
+ 	Use at your own risk!
+ 
+-Select a target directory with mT (|netrw-mt|).  Then change directory,
++Select a target directory with mt (|netrw-mt|).  Then change directory,
+ select file(s) (see |netrw-mf|), and press "mm".
+ 
+ Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd|
+@@ -1695,7 +1854,7 @@
+ 	    (See |netrw-mf| and |netrw-mr| for how to mark files)
+ 		      (uses the global marked file list)
+ 
+-The "mt" mapping will apply the command in |g:netrw_ctags| (by default, its
++The "mT" mapping will apply the command in |g:netrw_ctags| (by default, it is
+ "ctags") to marked files.  For remote browsing, in order to create a tags file
+ netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for
+ this to work on remote systems.  For your local system, see |ctags| on how to
+@@ -1743,7 +1902,7 @@
+ 
+ NETRW BROWSER VARIABLES		*netrw-browser-options* *netrw-browser-var* {{{2
+ 
+-(if you're interestd in the netrw file transfer settings, see |netrw-options|)
++(if you're interested in the netrw file transfer settings, see |netrw-options|)
+ 
+ The <netrw.vim> browser provides settings in the form of variables which
+ you may modify; by placing these settings in your <.vimrc>, you may customize
+@@ -1760,12 +1919,21 @@
+ 				by setting this variable (see |netrw-v|)
+ 				 default: =&spr          (see |'spr'|)
+ 
++  *g:netrw_banner*		enable/suppress the banner
++				=0: suppress the banner
++				=1: banner is enabled (default)
++				NOTE: suppressing the banner is a new feature
++				which may cause problems.
++
+   *g:netrw_browse_split*	when browsing, <cr> will open the file by:
+ 				=0: re-using the same window
+-				=1: horizontally splitting the window first  
+-				=2: vertically   splitting the window first  
++				=1: horizontally splitting the window first
++				=2: vertically   splitting the window first
+ 				=3: open file in new tab
+ 				=4: act like "P" (ie. open previous window)
++				    Note that |g:netrw_preview| may be used
++				    to get vertical splitting instead of
++				    horizontal splitting.
+ 
+   *g:netrw_browsex_viewer*	specify user's preference for a viewer: >
+ 					"kfmclient exec"
+@@ -1776,6 +1944,10 @@
+ 				a script/function to handle the given
+ 				extension.  (see |netrw_filehandler|).
+ 
++  *g:netrw_chgperm*		Unix/Linux: "chmod PERM FILENAME"
++				Windows:    "cacls FILENAME /e /p PERM"
++				Used to change access permission for a file.
++
+   *g:netrw_compress*		="gzip"
+ 				    Will compress marked files with this
+ 				    command
+@@ -1783,6 +1955,16 @@
+   *g:netrw_ctags*		="ctags"
+ 				The default external program used to create tags
+ 
++  *g:netrw_cursorline*		= 1 (default)
++				will use the |'cursorline'| local setting when
++				|g:netrw_liststyle| ==0 (thin listing) or
++				|g:netrw_liststyle| ==1 (long listing) or
++				|g:netrw_liststyle| ==3 (tree listing)
++				(ie. doesn't affect the wide listing)
++				=0: off
++				=2: like ==1, but the wide listing gets both
++				cursorline and |'cursorcolumn'|locally set
++
+   *g:netrw_decompress*		= { ".gz" : "gunzip" ,
+ 				    ".bz2" : "bunzip2" ,
+ 				    ".zip" : "unzip" ,
+@@ -1815,7 +1997,7 @@
+ 				versus speed.
+ 
+   *g:netrw_fname_escape*	=' ?&;%'
+-  				Used on filenames before remote reading/writing
++				Used on filenames before remote reading/writing
+ 
+   *g:netrw_ftp_browse_reject*	ftp can produce a number of errors and warnings
+ 				that can show up as "directories" and "files"
+@@ -1848,13 +2030,20 @@
+ 				 unix or g:netrw_cygwin set: : "ls -tlF"
+ 				 otherwise                     "dir"
+ 
+-  *g:netrw_glob_escape*		='[]*?`{~$'
+-  				These characters in directory names are
++  *g:netrw_glob_escape*		='[]*?`{~$'  (unix)
++				='[]*?`{$'  (windows
++				These characters in directory names are
+ 				escaped before applying glob()
+ 
+   *g:netrw_hide*		if true, the hiding list is used
+ 				 default: =0
+ 
++  *g:netrw_home*		The home directory for where bookmarks and
++				history are saved (as .netrwbook and
++				.netrwhist).
++				 default: the first directory on the
++				         |'runtimepath'|
++
+   *g:netrw_keepdir*		=1 (default) keep current directory immune from
+ 				   the browsing directory.
+ 				=0 keep the current directory the same as the
+@@ -1878,12 +2067,12 @@
+ 				 default: ""
+ 
+   *g:netrw_localcopycmd*	="cp" Linux/Unix/MacOS/Cygwin
+-  				="copy" Windows
++				="copy" Windows
+ 				Copies marked files (|netrw-mf|) to target
+ 				directory (|netrw-mt|, |netrw-mc|)
+ 
+   *g:netrw_localmovecmd*	="mv" Linux/Unix/MacOS/Cygwin
+-  				="move" Windows
++				="move" Windows
+ 				Moves marked files (|netrw-mf|) to target
+ 				directory (|netrw-mt|, |netrw-mm|)
+ 
+@@ -1903,11 +2092,31 @@
+   *g:netrw_mkdir_cmd*		command for making a remote directory
+ 				 default: "ssh USEPORT HOSTNAME mkdir"
+ 
+-  *g:netrw_retmap*		if it exists and is set to one, then
+-				<2-leftmouse> will be mapped for easy
++  *g:netrw_mousemaps*		=1 (default) enables the mouse buttons
++				   while browsing:
++				     leftmouse       : open file/directory
++				     shift-leftmouse : mark file
++				     middlemouse     : same as P
++				     rightmouse      : remove file/directory
++				=0: disables mouse maps
++
++  *g:netrw_retmap*		if it exists and is set to one, then:
++				 * if in a netrw-selected file, AND
++				 * no normal-mode <2-leftmouse> mapping exists,
++				then the <2-leftmouse> will be mapped for easy
+ 				return to the netrw browser window.
+-				(example: click once to select and open
+-				a file, double-click to return)
++				 example: click once to select and open a file,
++				          double-click to return.
++
++				Note that one may instead choose to:
++				 * let g:netrw_retmap= 1, AND
++				 * nmap <silent> YourChoice <Plug>NetrwReturn
++				and have another mapping instead of
++				<2-leftmouse> to invoke the return.
++
++				You may also use the |:Rexplore| command to do
++				the same thing.
++
+ 				  default: =0
+ 
+   *g:netrw_rm_cmd*		command for removing files
+@@ -1934,12 +2143,14 @@
+ <				 default: ""
+ 
+   *g:netrw_sort_sequence*	when sorting by name, first sort by the
+-				comma-separated pattern sequence
++				comma-separated pattern sequence.  Note that
++				the filigree added to indicate filetypes
++				should be accounted for in your pattern.
+ 				 default: '[\/]$,*,\.bak$,\.o$,\.h$,
+ 				           \.info$,\.swp$,\.obj$'
+ 
+   *g:netrw_special_syntax*	If true, then certain files will be shown
+-  				in special syntax in the browser:
++				in special syntax in the browser:
+ 
+ 					netrwBak     : *.bak
+ 					netrwCompress: *.gz *.bz2 *.Z *.zip
+@@ -1974,7 +2185,7 @@
+ 
+ 
+   *g:netrw_tmpfile_escape*	=' &;'
+-  				escape() is applied to all temporary files
++				escape() is applied to all temporary files
+ 				to escape these characters.
+ 
+   *g:netrw_timefmt*		specify format string to vim's strftime().
+@@ -1988,7 +2199,7 @@
+ 				 default: "%c"
+ 
+   *g:netrw_use_noswf*		netrw normally avoids writing swapfiles
+-  				for browser buffers.  However, under some
++				for browser buffers.  However, under some
+ 				systems this apparently is causing nasty
+ 				ml_get errors to appear; if you're getting
+ 				ml_get errors, try putting
+@@ -2000,18 +2211,18 @@
+ 				|:Hexplore| or |:Vexplore|.
+ 				 default: ""
+ 
+-  *g:netrw_xstrlen*		Controls how netrw computes a string
+-  				including multi-byte characters' string
++  *g:netrw_xstrlen*		Controls how netrw computes string lengths,
++				including multi-byte characters' string
+ 				length. (thanks to N Weibull, T Mechelynck)
+ 				=0: uses Vim's built-in strlen()
+-				=1: number of codepoints (Latin + a combining
++				=1: number of codepoints (Latin a + combining
+ 				    circumflex is two codepoints)  (DEFAULT)
+ 				=2: number of spacing codepoints (Latin a +
+-				    combining circumflex is one spacing 
++				    combining circumflex is one spacing
+ 				    codepoint; a hard tab is one; wide and
+ 				    narrow CJK are one each; etc.)
+ 				=3: virtual length (counting tabs as anything
+-				    between 1 and |'tabstop'|, wide CJJK as 2
++				    between 1 and |'tabstop'|, wide CJK as 2
+ 				    rather than 1, Arabic alif as zero when
+ 				    immediately preceded by lam, one
+ 				    otherwise, etc)
+@@ -2091,6 +2302,18 @@
+ By default, the split will be taken horizontally; one may use vertical
+ splitting if one has set |g:netrw_preview| first.
+ 
++An interesting set of netrw settings is: >
++
++	let g:netrw_preview   = 1
++	let g:netrw_liststyle = 3
++	let g:netrw_winsize   = 30
++
++These will:
++	1. Make vertical splitting the default for previewing files
++	2. Make the default listing style "tree"
++	3. When a vertical preview window is opened, the directory listing
++	   will use only 30 columns; the rest of the window is used for the
++	   preview window.
+ 
+ PREVIOUS WINDOW				*netrw-P* *netrw-prvwin* {{{2
+ 
+@@ -2162,6 +2385,16 @@
+ Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence|
+ 
+ 
++SETTING EDITING WINDOW					*netrw-C* {{{2
++
++One may select a netrw window for editing with the "C" mapping, or by setting
++g:netrw_chgwin to the selected window number.  Subsequent selection of a file
++to edit (|netrw-cr|) will use that window.
++
++Related topics:			|netrw-cr|
++Associated setting variables:	|g:netrw_chgwin|
++
++
+ 10. Problems and Fixes					*netrw-problems* {{{1
+ 
+ 	(This section is likely to grow as I get feedback)
+@@ -2183,7 +2416,7 @@
+ 		Windows' ftp has a minimal support for ls (ie. it doesn't
+ 		accept sorting options).  It doesn't support the -F which
+ 		gives an explanatory character (ABC/ for "ABC is a directory").
+-		Netrw then uses "dir" to get both its short and long listings.
++		Netrw then uses "dir" to get both its thin and long listings.
+ 		If you think your ftp does support a full-up ls, put the
+ 		following into your <.vimrc>: >
+ 
+@@ -2238,7 +2471,7 @@
+ 	    Put the following line in your |.vimrc|:
+ >
+ 		let g:netrw_keepdir= 0
+-<	
++<
+ 								*netrw-p7*
+ 	P7. I use Chinese (or other non-ascii) characters in my filenames, and
+ 	    netrw (Explore, Sexplore, Hexplore, etc) doesn't display them!
+@@ -2266,7 +2499,7 @@
+ 
+ 		(Marlin Unruh) This program also works for me. It's a single
+ 		executable, so he/she can copy it into the Windows\System32
+-		folder and create a shortcut to it. 
++		folder and create a shortcut to it.
+ 
+ 		(Dudley Fox) You might also wish to consider plink, as it
+ 		sounds most similar to what you are looking for. plink is an
+@@ -2274,12 +2507,12 @@
+ 
+            http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html#plink
+ 
+-	   	(Vissale Neang) Maybe you can try OpenSSH for windows, which
++		(Vissale Neang) Maybe you can try OpenSSH for windows, which
+ 		can be obtained from:
+ 
+ 		http://sshwindows.sourceforge.net/
+ 
+-		It doesn't need the full Cygwin package. 
++		It doesn't need the full Cygwin package.
+ 
+ 		(Antoine Mechelynck) For individual Unix-like programs needed
+ 		for work in a native-Windows environment, I recommend getting
+@@ -2290,7 +2523,7 @@
+ 		Unlike Cygwin, which sets up a Unix-like virtual machine on
+ 		top of Windows, GnuWin32 is a rewrite of Unix utilities with
+ 		Windows system calls, and its programs works quite well in the
+-		cmd.exe "Dos box". 
++		cmd.exe "Dos box".
+ 
+ 		(dave) Download WinSCP and use that to connect to the server.
+ 		In Preferences > Editors, set gvim as your editor:
+@@ -2317,7 +2550,7 @@
+ 		How to use a private key with 'pscp': >
+ 
+ 			http://www.tartarus.org/~simon/puttydoc/Chapter5.html
+-			5.2.4 Using public key authentication with PSCP 
++			5.2.4 Using public key authentication with PSCP
+ <
+ 		(Ben Schmidt) I find the ssh included with cwRsync is
+ 		brilliant, and install cwRsync or cwRsyncServer on most
+@@ -2375,6 +2608,39 @@
+ 		  <leftmouse> in the browser window and then press the
+ 		  <middlemouse> to select the file.
+ 
++								*netrw-p12*
++	P12. My directory isn't sorting correctly, or unwanted letters are
++	     appearing in the listed filenames, or things aren't lining
++	     up properly in the wide listing, ...
++
++	     This may be due to an encoding problem.  I myself usually use
++	     utf-8, but really only use ascii (ie. bytes from 32-126).
++	     Multibyte encodings use two (or more) bytes per character.
++	     You may need to change |g:netrw_sepchr| and/or |g:netrw_xstrlen|.
++
++								*netrw-p13*
++	P13. I'm a Windows + putty + ssh user, and when I attempt to browse,
++	     the directories are missing trailing "/"s so netrw treats them
++	     as file transfers instead of as attempts to browse
++	     subdirectories.  How may I fix this?
++
++	     (mikeyao) If you want to use vim via ssh and putty under Windows,
++	     try combining the use of pscp/psftp with plink.  pscp/psftp will
++	     be used to connect and plink will be used to execute commands on
++	     the server, for example: list files and directory using 'ls'.
++
++	     These are the settings I use to do this:
++>
++	    " list files, it's the key setting, if you haven't set,
++	    " you will get a blank buffer
++	    let g:netrw_list_cmd = "plink HOSTNAME ls -Fa"
++	    " if you haven't add putty directory in system path, you should
++	    " specify scp/sftp command.  For examples:
++	    "let g:netrw_sftp_cmd = "d:\\dev\\putty\\PSFTP.exe"
++	    "let g:netrw_scp_cmd = "d:\\dev\\putty\\PSCP.exe"
++<
++
++
+ ==============================================================================
+ 11. Debugging Netrw Itself				*netrw-debug* {{{1
+ 
+@@ -2420,7 +2686,7 @@
+ 	   read/write your file over the network in a separate tab.
+ 
+ 	   To save the file, use >
+-		:wincmd j
++		:tabnext
+ 		:set bt=
+ 		:w! DBG
+ <	   Please send that information to <netrw.vim>'s maintainer, >
+@@ -2429,6 +2695,123 @@
+ ==============================================================================
+ 12. History						*netrw-history* {{{1
+ 
++	v138: May 01, 2010 * added the bomb setting to the Save-Set-Restore
++			     option handling (for Tony M)
++			   * (Bram Moolenaar) netrw optionally sets cursorline
++			     (and sometimes cursorcolumn) for its display.
++			     This option setting was leaking through with
++			     remote file handling.
++	v137: Dec 28, 2009 * modified the preview window handling for
++			     vertically split windows.  The preview
++			     window will take up all but g:netrw_winsize
++			     columns of the original window; those 
++			     g:netrw_winsize columns will be used for
++			     the netrw listing.
++			   * (Simon Dambe) removed "~" from
++			     |g:netrw_glob_escape| under Windows
++			   * (Bram Moolenaar) modified test for status bar
++			     click with leftmouse.  Moved code to
++			     s:NetrwLeftmouse().
++	      Feb 24, 2010 * (for Jean Johner) added insert-mode maps; one
++			     can get into insert mode with netrw via
++			     ctrl-o :e .
++	      Mar 15, 2010 * (Dominique Pellé) Directory with backslashes such
++			     as foo\bar were not being entered/left properly
++	      Mar 15, 2010 * Using :Explore .. and causing two FocusGained
++			     events caused the directory to change.  Fixed.
++	      Mar 22, 2010 * Last fix caused problems for *//pat and */filepat
++			     searches.
++	      Mar 30, 2010 * With :set hidden and changing listing styles 8
++			     times, the tree listing buffer was being marked
++			     as modified upon exit.  Fixed.
++	v136: Jan 14, 2009 * extended |g:Netrw_funcref| to also handle lists
++			     of function references
++	      Jan 14, 2009 * (reported by Marvin Renich) with spell check
++			     enabled, some filenamess will still being
++			     displayed as spelling errors.
++	      Apr 13, 2009 * (Björn Winckler) writing a file using
++	                     remote scp caused syntax highlighting problem.
++			     Solution: avoid syntax/syntax.vim's
++			     au Filetype * syntax setting autocommand by
++			     checking that the current buffer has the
++			     netrw filetype before attempting a doau
++			     in s:NetrwSafeOptions().
++	      Apr 14, 2009 * (asgeo1) suggested the "T" map (|netrw-T|)
++	      Apr 14, 2009 * marking wasn't working on executable and
++			     other special filenames
++	      Apr 20, 2009 * (Dennis Benzinger) files opened via http have
++			     their syntax filetype auto-detected
++	      Jun 19, 2009 * (Yukihiro Nakadaira) help document improvements
++	      Jul 22, 2009 * g:netrw_browse_split will honor the
++			     |'equalalways'| setting.
++	      Jul 29, 2009 * implemented "I" mapping to toggle banner
++			     (this is experimental and still being debugged)
++	      Sep 19, 2009 * (Mike McEwan) writes via ftp now send both
++			     g:netrw_ftpmode and g:netrw_ftpextracmd (if the
++			     latter exists)
++	      Dec 02, 2009 * netrw uses vimgrep several places; it now uses
++			     "noautocmd vimgrep" (should be speedier).
++	      Dec 03, 2009 * changed back to using -source instead of -dump
++			     for elinks-using commands. (requested by James
++			     Vega and Karsten Hopp)
++	v135: Oct 29, 2008 * using |simplify()| on directory names
++			     (supporting handling ".."s in directory names)
++	      Oct 31, 2008 * added special file highlighting for core dumps
++			     under Unix/Linux.  The default sorting sequence
++			     now also gives core dumps priority.
++	      Nov 10, 2008 * uses a call to netrw#Nread() instead of Nread
++			     to avoid having to use fnameescape()
++			   * fixed a tree redrawing problem (open directory,
++			     open subdir, close subdir, close dir)
++	      Nov 19, 2008 * sprinkled some histdel("/",-1)s through the code
++			     in an attempt to prevent netrw from changing
++			     the search history.
++	      Jan 02, 2009 * |g:Netrw_funcref| included
++	      Jan 05, 2009 * Explore */ **/ *// **// all clear explorer
++			     variables
++	      Jan 05, 2009 * (Panagiotis Louridas) extended s:WinPath()
++			     to remove cygdrive from non-cygwin Windows
++			     paths.  Improved the determination as to
++			     whether or not to do so.
++	      Jan 13, 2009 * included contains=@NoSpell in every syntax
++			     group for syntax/netrw.vim .
++	v134: Sep 30, 2008 * (Sander Marechal) provided a bugfix involving
++			     the use of the |netrw-t| command with a remote
++			     directory.
++	      Sep 30, 2008 * using "x" on a remote jpg was failing; fixed.
++	      Oct 03, 2008 * bookmarks now go on a list and are stored to
++			     the first directory on the |'runtimepath'| in
++			     the hopes of making their retention reliable.
++			     History now also goes to that directory.
++	      Oct 07, 2008 * Included check that vim 7.0 or later is in use.
++	      Oct 07, 2008 * Improved |g:netrw_retmap| handling.
++	      Oct 12, 2008 * Based upon Sébastien Migniot's suggestion, if
++			     cadaver isn't available then netrw will try to
++			     use curl for the dav://... protocol.
++	      Oct 13, 2008 * added @*/ to netrw buffers' |'iskeyword'|setting
++			     This lets mf (|netrw-mf|) mark directories, links
++			     and executables.
++	      Oct 13, 2008 * avoids a second NetrwBrowse() refresh when
++			     g:netrw_fastbrowse is <= 1 (slow, medium speed)
++	      Oct 22, 2008 * |g:netrw_http_xcmd| may now be overridden
++			     independently of |g:netrw_http_cmd|.
++	      Oct 23, 2008 * [N] added to the various Explore commands to
++			     let users specify the width/height of new
++			     explorer windows, overriding |g:netrw_winsize|.
++	v133: Aug 10, 2008 * NetReadFixup() for win95 was missing some "a:"s
++	      Aug 12, 2008 * (Jan Minář) an error condition in NetrwMethod()
++			     wasn't being used, resulting in "b:netrw_fname
++			     undefined" errors
++	      Aug 12, 2008 * (François Ingeirest) asked that "hi link" be
++			     changed to hi default link in the netrw syntax
++			     files.
++	      Aug 12, 2008 * using s:NetrwUnmarkList() more often.  Filenames
++			     were being left on the global list when removed
++			     from the buffer-local lists.
++	      Aug 14, 2008 * (Joshua Clayton) an errant extra ")" was left in
++			     the rcp-handling portion of NetRead().
++	      Sep 03, 2008 * added |'cursorline'| highlighting to thin, long,
++			     and tree displays.
+ 	v132: Aug 06, 2008 * Fixed marked file-based obtain
+ 	      Aug 08, 2008 * sourcing a file via ftp from a netrw-generated
+ 	                     buffer (or any buffer with |'nobl'|) left an
+@@ -2543,8 +2926,8 @@
+ 			   * executable files now displayed with trailing (*)
+ 			   * symbolically linked files now displayed with
+ 			     trailing (@)
+-			   * Somewhen, s:NetrwMarkFileMove() got damaged.  Its
+-			     now restored (missing an endif, for example).
++			   * Somewhen, s:NetrwMarkFileMove() got damaged.  It
++			   * is now restored (missing an endif, for example).
+ 			   * |netrw-mu| implemented (unmarking marked files)
+ 			   * many bugs have been removed from the marked file
+ 			     system (tnx to Mark S. for feedback)
+@@ -2615,7 +2998,7 @@
+ 			     the end of the s:NetrwBrowseChgDir() function;
+ 			     they're now at the end of every if..elseif..else
+ 			     block.  The edit-a-file one is not quite at the end
+-			     of its block; instead, its just before the edit.
++			     of its block; instead, it's just before the edit.
+ 			     Restores user options, then this new placement
+ 			     allows ftplugins, autocmds, etc to change settings
+ 			     (ex. ftplugin/cpp.vim sets cindent).
+@@ -2652,7 +3035,7 @@
+ 			     marked files.
+ 	v110: May 10, 2007 * added [ and ] maps to NetrwTreeListing
+ 	      May 25, 2007 * |g:netrw_preview| included
+-	      May 29, 2007 * modifed netrw#NetBrowseX to consistently use
++	      May 29, 2007 * modified netrw#NetBrowseX to consistently use
+ 			     g:netrw_shq instead of hardcoded quotes,
+ 			     and modified the snippet that sets up redir
+ 			     so Windows machines use "nul" instead of
+@@ -2668,7 +3051,7 @@
+ 			     decipher the name.
+ 	      May 07, 2007 * g:netrw_use_errorwindow now allows one to
+ 			     have error messages go to a reliable window
+-			     or to use a less reliable but recallable 
++			     or to use a less reliable but recallable
+ 			     echoerr method
+ 	      May 07, 2007 * g:netrw_scpport and g:netrw_sshport support
+ 			     use of -P and -p, respectively, to set port
+@@ -3113,7 +3496,16 @@
+ 
+ 
+ ==============================================================================
+-12. Credits						*netrw-credits* {{{1
++13. Todo						*netrw-todo* {{{1
++
++07/29/09 : banner	:|g:netrw_banner| can be used to suppress the
++	   suppression	  banner.  This feature is new and experimental,
++			  so its in the process of being debugged.
++09/04/09 : "gp"		: See if it can be made to work for remote systems.
++			: See if it can be made to work with marked files.
++
++==============================================================================
++14. Credits						*netrw-credits* {{{1
+ 
+ 	Vim editor	by Bram Moolenaar (Thanks, Bram!)
+ 	dav		support by C Campbell
+diff -Nur runtime/doc/pi_paren.txt runtime/doc/pi_paren.txt
+--- runtime/doc/pi_paren.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_paren.txt	2011-04-03 09:27:21.320245764 -0700
+@@ -1,4 +1,4 @@
+-*pi_paren.txt*  For Vim version 7.2.  Last change: 2008 Jun 16
++*pi_paren.txt*  For Vim version 7.3a.  Last change: 2008 Jun 16
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/pi_spec.txt runtime/doc/pi_spec.txt
+--- runtime/doc/pi_spec.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_spec.txt	2011-04-03 09:27:21.320943227 -0700
+@@ -1,4 +1,4 @@
+-*pi_spec.txt*   For Vim version 7.2.  Last change: 2006 Apr 24
++*pi_spec.txt*   For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ by Gustavo Niemeyer ~
+ 
+diff -Nur runtime/doc/pi_tar.txt runtime/doc/pi_tar.txt
+--- runtime/doc/pi_tar.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_tar.txt	2011-04-03 09:27:21.321762192 -0700
+@@ -1,4 +1,4 @@
+-*pi_tar.txt*	For Vim version 7.2.  Last change: 2008 Aug 09
++*pi_tar.txt*	For Vim version 7.3a.  Last change: 2009 Dec 28
+ 
+ 		       +====================+
+ 		       | Tar File Interface |
+@@ -26,6 +26,33 @@
+    also write to the file.  Currently, one may not make a new file in
+    tar archives via the plugin.
+ 
++						*:Untarvim*
++   UNTARVIM~
++
++   :Untarvim [vimhome]
++
++	This command copies, if necessary, the tarball to the .vim or vimfiles
++	directory using the first writable directory in the |'runtimepath'|
++	when no [vimhome] is specified.  Otherwise, the [vimhome] argument
++	allows the user to specify that directory, instead.
++
++	The copy is done using the command in *g:tar_copycmd* , which is >
++		cp   for cygwin, unix, macunix
++		copy for windows (32, 95, 64, 16)
++<	The extraction is done with the command specified with
++	*g:tar_extractcmd* , which by default is >
++		"tar -xf"
++<
++   PREVENTING LOADING~
++
++   If for some reason you do not wish to use vim to examine tar'd files,
++   you may put the following two variables into your <.vimrc> to prevent
++   the tar plugin from loading: >
++
++	let g:loaded_tarPlugin= 1
++	let g:loaded_tar      = 1
++<
++
+ ==============================================================================
+ 3. Options						*tar-options*
+ 
+@@ -38,14 +65,15 @@
+    *g:tar_cmd*            "tar"   the name of the tar program
+    *g:tar_nomax*            0     if true, file window will not be maximized
+    *g:tar_secure*         undef   if exists:
+-					"--" will be used to prevent unwanted
++					"--"s will be used to prevent unwanted
+ 					option expansion in tar commands.
+ 					Please be sure that your tar command
+ 					accepts "--"; Posix compliant tar
+-					utilities do accept it.
++					utilities do accept them.
+ 				  if not exists:
+-					The tar plugin will reject any member
+-					files that begin with "-"
++				  	The tar plugin will reject any tar
++					files or member files that begin with
++					"-"
+ 				  Not all tar's support the "--" which is why
+ 				  it isn't default.
+    *g:tar_writeoptions*   "uf"    used to update/replace a file
+@@ -54,6 +82,9 @@
+ ==============================================================================
+ 4. History						*tar-history*
+ 
++
++   v24 Apr 07, 2009 * :Untarvim command implemented
++       Sep 28, 2009 * Added lzma support
+    v22 Aug 08, 2008 * security fixes
+    v16 Jun 06, 2008 * tarfile:: used instead of tarfile: when editing files
+ 		      inside tarballs.  Fixes a problem with tarballs called
+diff -Nur runtime/doc/pi_vimball.txt runtime/doc/pi_vimball.txt
+--- runtime/doc/pi_vimball.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_vimball.txt	2011-04-03 09:27:21.322568977 -0700
+@@ -1,4 +1,4 @@
+-*pi_vimball.txt*	For Vim version 7.2.  Last change: 2008 Jul 30
++*pi_vimball.txt*	For Vim version 7.3a.  Last change: 2010 Apr 12
+ 
+ 			       ----------------
+ 			       Vimball Archiver
+@@ -6,7 +6,7 @@
+ 
+ Author:  Charles E. Campbell, Jr.  <[email protected]>
+ 	  (remove NOSPAM from Campbell's email first)
+-Copyright: (c) 2004-2008 by Charles E. Campbell, Jr.	*Vimball-copyright*
++Copyright: (c) 2004-2009 by Charles E. Campbell, Jr.	*Vimball-copyright*
+ 	   The VIM LICENSE applies to Vimball.vim, and Vimball.txt
+ 	   (see |copyright|) except use "Vimball" instead of "Vim".
+ 	   No warranty, express or implied.
+@@ -55,7 +55,7 @@
+ ==============================================================================
+ 3. Vimball Manual					*vimball-manual*
+ 
+-							*:MkVimball*
++MAKING A VIMBALL						*:MkVimball*
+ 		:[range]MkVimball[!] filename [path]
+ 
+ 	The range is composed of lines holding paths to files to be included
+@@ -79,28 +79,33 @@
+ 	"filename.vba" file, overwriting it if it already exists.  This
+ 	behavior resembles that for |:w|.
+ 
+-							*g:vimball_mkdir*
++	If you wish to force slashes into the filename, that can also be done
++	by using the exclamation mark (ie. :MkVimball! path/filename).
++
++	The tip at http://vim.wikia.com/wiki/Using_VimBall_with_%27Make%27
++	has a good idea on how to automate the production of vimballs using
++	make.
++
++
++MAKING DIRECTORIES VIA VIMBALLS				*g:vimball_mkdir*
++
+ 	First, the |mkdir()| command is tried (not all systems support it).
+ 
+-	If it doesn't exist, then g:vimball_mkdir doesn't exist, it is set to:
++	If it doesn't exist, then if g:vimball_mkdir doesn't exist, it is set
++	as follows: >
+ 	  |g:netrw_local_mkdir|, if it exists
+-	   "mkdir", if it is executable
+-	   "makedir", if it is executable
+-	   Otherwise, it is undefined.
+-	One may explicitly specify the directory making command using
++	  "mkdir"              , if it is executable
++	  "makedir"            , if it is executable
++	  Otherwise            , it is undefined.
++<	One may explicitly specify the directory making command using
+ 	g:vimball_mkdir.  This command is used to make directories that
+ 	are needed as indicated by the vimball.
+ 
+-							*g:vimball_home*
+-	You may override the use of the |'runtimepath'| by specifying a
+-	variable, g:vimball_home.
+ 
+-	Path Preprocessing				*g:vimball_path_escape*
++CONTROLLING THE VIMBALL EXTRACTION DIRECTORY		*g:vimball_home*
+ 
+-	Paths used in vimball are preprocessed by s:Path(); in addition,
+-	certain characters are escaped (by prepending a backslash).  The
+-	characters are in g:vimball_path_escape, and may be overridden by
+-	the user in his/her .vimrc initialization script.
++	You may override the use of the |'runtimepath'| by specifying a
++	variable, g:vimball_home.
+ 
+ 							*vimball-extract*
+ 		vim filename.vba
+@@ -112,12 +117,16 @@
+ 	file holds the "Vimball Archiver by Charles E. Campbell, Jr., Ph.D."
+ 	line.
+ 
+-		:VimballList				*:VimballList*
++LISTING FILES IN A VIMBALL					*:VimballList*
++
++		:VimballList
+ 
+ 	This command will tell Vimball to list the files in the archive, along
+ 	with their lengths in lines.
+ 
+-		:UseVimball [path]			*:UseVimball*
++MANUALLY INVOKING VIMBALL EXTRACTION				*:UseVimball*
++
++		:UseVimball [path]
+ 
+ 	This command is contained within the vimball itself; it invokes the
+ 	vimball#Vimball() routine which is responsible for unpacking the
+@@ -126,7 +135,9 @@
+ 	installation, thereby overriding the automatic choice of the first
+ 	existing directory on the |'runtimepath'|.
+ 
+-		:RmVimball vimballfile [path]		*:RmVimball*
++REMOVING A VIMBALL						*:RmVimball*
++
++		:RmVimball vimballfile [path]
+ 
+ 	This command removes all files generated by the specified vimball
+ 	(but not any directories it may have made).  One may choose a path
+@@ -136,10 +147,45 @@
+ 	containing a record of what files need to be removed for all vimballs
+ 	used thus far.
+ 
++PREVENTING LOADING
++
++	If for some reason you don't want to be able to extract plugins
++	using vimballs: you may prevent the loading of vimball.vim by
++	putting the following two variables in your <.vimrc>: >
++
++		let g:loaded_vimballPlugin= 1
++		let g:loaded_vimball      = 1
++<
++WINDOWS							*vimball-windows*
++
++	Many vimball files are compressed with gzip.  Windows, unfortunately,
++	does not come provided with a tool to decompress gzip'ped files.
++	Fortunately, there are a number of tools available for Windows users
++	to un-gzip files:
++>
++	    Item     Tool/Suite   Free   Website
++	    ----     ----------   ----   -------
++	    7zip        tool       y     http://www.7-zip.org/
++	    Winzip      tool       n     http://www.winzip.com/downwz.htm
++	    unxutils    suite      y     http://unxutils.sourceforge.net/
++	    cygwin      suite      y     http://www.cygwin.com/
++	    GnuWin32    suite      y     http://gnuwin32.sourceforge.net/
++	    MinGW       suite      y     http://www.mingw.org/
++<
+ 
+ ==============================================================================
+ 4. Vimball History					*vimball-history* {{{1
+ 
++	30 : Dec 08, 2008 * fnameescape() inserted to protect error
++			    messaging using corrupted filenames from
++			    causing problems
++			  * RmVimball supports filenames that would
++			    otherwise be considered to have "magic"
++			    characters (ie. Abc[1].vba)
++	     Feb 18, 2009 * s:Escape(), g:vimball_shq, and g:netrw_shq
++			    removed (shellescape() used directly)
++	     Oct 05, 2009 * (Nikolai Weibull) suggested that MkVimball
++			    be allowed to use slashes in the filename.
+ 	26 : May 27, 2008 * g:vimball_mkdir usage installed.  Makes the
+ 	                    $HOME/.vim (or $HOME\vimfiles) directory if
+ 			    necessary.
+@@ -151,7 +197,7 @@
+ 	     Apr 18, 2008 * RmVimball command is now protected by saving and
+ 	                    restoring settings -- in particular, acd was
+ 			    causing problems as reported by Zhang Shuhan
+-	24 : Nov 15, 2007 * |g:vimball_path_escape| used by s:Path() to
++	24 : Nov 15, 2007 * g:vimball_path_escape used by s:Path() to
+ 	                    prevent certain characters from causing trouble
+ 	22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter
+ 	21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header
+diff -Nur runtime/doc/pi_zip.txt runtime/doc/pi_zip.txt
+--- runtime/doc/pi_zip.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/pi_zip.txt	2011-04-03 09:27:21.323374150 -0700
+@@ -1,4 +1,4 @@
+-*pi_zip.txt*	For Vim version 7.2.  Last change: 2008 Jul 30
++*pi_zip.txt*	For Vim version 7.3a.  Last change: 2010 Apr 12
+ 
+ 				+====================+
+ 				| Zip File Interface |
+@@ -6,7 +6,7 @@
+ 
+ Author:  Charles E. Campbell, Jr.  <[email protected]>
+ 	  (remove NOSPAM from Campbell's email first)
+-Copyright: Copyright (C) 2005-2008 Charles E Campbell, Jr *zip-copyright*
++Copyright: Copyright (C) 2005-2009 Charles E Campbell, Jr *zip-copyright*
+            Permission is hereby granted to use and distribute this code,
+ 	   with or without modifications, provided that this copyright
+ 	   notice is copied with it. Like anything else that's free,
+@@ -60,6 +60,16 @@
+    file; by default: >
+    	let g:zip_zipcmd= "zip"
+ <
++   PREVENTING LOADING~
++
++   If for some reason you do not wish to use vim to examine zipped files,
++   you may put the following two variables into your <.vimrc> to prevent
++   the tar plugin from loading: >
++
++	let g:loaded_zipPlugin= 1
++	let g:loaded_zip      = 1
++<
++<
+ 
+ ==============================================================================
+ 3. Additional Extensions					*zip-extension*
+diff -Nur runtime/doc/print.txt runtime/doc/print.txt
+--- runtime/doc/print.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/print.txt	2011-04-03 09:27:21.324412977 -0700
+@@ -1,4 +1,4 @@
+-*print.txt*     For Vim version 7.2.  Last change: 2008 Apr 30
++*print.txt*     For Vim version 7.3a.  Last change: 2008 Dec 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -490,7 +490,7 @@
+ 
+ You can find descriptions of the various fonts in the read me file at
+ 
+-  http://examples.oreilly.com/cjkvinfo/adobe/00README
++  http://examples.oreilly.de/english_examples/cjkvinfo/adobe/00README
+ 
+ Please read your printer documentation on how to install new fonts.
+ 
+@@ -704,7 +704,7 @@
+ even.ps with your platform's print command.  All the even pages should now
+ appear on the back of the odd pages.
+ 
+-There a couple of points to bear in mind:
++There are a couple of points to bear in mind:
+ 
+ 1. Position of the first page.  If the first page is on top of the printout
+    when printing the odd pages then you need to reverse the order that the odd
+diff -Nur runtime/doc/quickfix.txt runtime/doc/quickfix.txt
+--- runtime/doc/quickfix.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/quickfix.txt	2011-04-03 09:27:21.326073182 -0700
+@@ -1,4 +1,4 @@
+-*quickfix.txt*  For Vim version 7.2.  Last change: 2008 Mar 14
++*quickfix.txt*  For Vim version 7.3a.  Last change: 2009 May 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -482,7 +482,7 @@
+ {shellpipe} is the 'shellpipe' option.
+ {errorfile} is the 'makeef' option, with ## replaced to make it unique.
+ 
+-The placeholder "$*" can be used for the argument list in {makeprog} if the
++The placeholder "$*" can be used for the argument list in {makeprg} if the
+ command needs some additional characters after its arguments.  The $* is
+ replaced then by all arguments.  Example: >
+    :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
+@@ -630,14 +630,20 @@
+ 			Just like ":grep", but instead of making a new list of
+ 			errors the matches are appended to the current list.
+ 			Example: >
+-				:grep nothing %
++				:call setqflist([])
+ 				:bufdo grepadd! something %
+ <			The first command makes a new error list which is
+ 			empty.  The second command executes "grepadd" for each
+ 			listed buffer.  Note the use of ! to avoid that
+ 			":grepadd" jumps to the first error, which is not
+ 			allowed with |:bufdo|.
+-
++			An example that uses the argument list and avoids
++			errors for files without matches: >
++                                :silent argdo try 
++				  \ | grepadd! something %
++				  \ | catch /E480:/
++				  \ | endtry"
++<
+ 							*:lgrepa* *:lgrepadd*
+ :lgrepa[dd][!] [arguments]
+ 			Same as ":grepadd", except the location list for the
+@@ -1206,7 +1212,7 @@
+ GNU-make.  AIX-make for example doesn't print any information about its
+ working directory.  Then you need to enhance the makefile.  In the makefile of
+ LessTif there is a command which echoes "Making {target} in {dir}".  The
+-special problem here is that it doesn't print informations on leaving the
++special problem here is that it doesn't print information on leaving the
+ directory and that it doesn't print the absolute path.
+ 
+ To solve the problem with relative paths and missing "leave directory"
+@@ -1224,7 +1230,7 @@
+ directory stack (NOT the directory subtree!).  If it is still not found, it is
+ assumed that it is in Vim's current directory.
+ 
+-There are limitation in this algorithm.  This examples assume that make just
++There are limitations in this algorithm.  These examples assume that make just
+ prints information about entering a directory in the form "Making all in dir".
+ 
+ 1) Assume you have following directories and files:
+@@ -1254,7 +1260,7 @@
+    This can be solved by printing absolute directories in the "enter directory"
+    message or by printing "leave directory" messages..
+ 
+-To avoid this problems, ensure to print absolute directory names and "leave
++To avoid this problem, ensure to print absolute directory names and "leave
+ directory" messages.
+ 
+ Examples for Makefiles:
+diff -Nur runtime/doc/quickref.txt runtime/doc/quickref.txt
+--- runtime/doc/quickref.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/quickref.txt	2011-04-03 09:27:21.333036576 -0700
+@@ -1,4 +1,4 @@
+-*quickref.txt*  For Vim version 7.2.  Last change: 2008 Jan 22
++*quickref.txt*  For Vim version 7.3a.  Last change: 2009 Jan 22
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -18,7 +18,7 @@
+ |Q_sc|	Scrolling			|Q_ce|	Ex: Command-line editing
+ |Q_in|	insert: Inserting text		|Q_ra|	Ex: Ranges
+ |Q_ai|	insert: Keys			|Q_ex|	Ex: Special characters
+-|Q_ss|	insert: Special keys		|Q_st|	Starting VIM
++|Q_ss|	insert: Special keys		|Q_st|	Starting Vim
+ |Q_di|	insert: Digraphs		|Q_ed|	Editing a file
+ |Q_si|	insert: Special inserts		|Q_fl|	Using the argument list
+ |Q_de|	change: Deleting text		|Q_wq|	Writing and quitting
+@@ -40,13 +40,13 @@
+ |^|	   ^		to first non-blank character in the line
+ |$|	N  $		to the last character in the line (N-1 lines lower)
+ 			   (also: <End> key)
+-|g0|	N  g0		to first character in screen line (differs from "0"
++|g0|	   g0		to first character in screen line (differs from "0"
+ 			   when lines wrap)
+-|g^|	N  g^		to first non-blank character in screen line (differs
++|g^|	   g^		to first non-blank character in screen line (differs
+ 			   from "^" when lines wrap)
+ |g$|	N  g$		to last character in screen line (differs from "$"
+ 			   when lines wrap)
+-|gm|	N  gm		to middle of the screen line
++|gm|	   gm		to middle of the screen line
+ |bar|	N  |		to column N (default: 1)
+ |f|	N  f{char}	to the Nth occurrence of {char} to the right
+ |F|	N  F{char}	to the Nth occurrence of {char} to the left
+@@ -68,8 +68,8 @@
+ 			   non-blank character
+ |gg|	N  gg		goto line N (default: first line), on the first
+ 			   non-blank character
+-|N%|	N  %		goto line N percentage down in the file.  N must be
+-			   given, otherwise it is the |%| command.
++|N%|	N  %		goto line N percentage down in the file; N must be
++			   given, otherwise it is the |%| command
+ |gk|	N  gk		up N screen lines (differs from "k" when line wraps)
+ |gj|	N  gj		down N screen lines (differs from "j" when line wraps)
+ ------------------------------------------------------------------------------
+@@ -204,23 +204,23 @@
+ ------------------------------------------------------------------------------
+ *Q_ta*		Using tags
+ 
+-|:ta|	   :ta[g][!] {tag}	Jump to tag {tag}
+-|:ta|	   :[count]ta[g][!]	Jump to [count]'th newer tag in tag list
+-|CTRL-]|      CTRL-]		Jump to the tag under cursor, unless changes
++|:ta|	   :ta[g][!] {tag}	jump to tag {tag}
++|:ta|	   :[count]ta[g][!]	jump to [count]'th newer tag in tag list
++|CTRL-]|      CTRL-]		jump to the tag under cursor, unless changes
+ 				   have been made
+-|:ts|	   :ts[elect][!] [tag]	List matching tags and select one to jump to
+-|:tjump|   :tj[ump][!] [tag]	Jump to tag [tag] or select from list when
++|:ts|	   :ts[elect][!] [tag]	list matching tags and select one to jump to
++|:tjump|   :tj[ump][!] [tag]	jump to tag [tag] or select from list when
+ 				   there are multiple matches
+-|:ltag|	   :lt[ag][!] [tag]	Jump to tag [tag] and add matching tags to the
+-				   location list.
++|:ltag|	   :lt[ag][!] [tag]	jump to tag [tag] and add matching tags to the
++				   location list
+ 
+-|:tags|	   :tags		Print tag list
+-|CTRL-T|   N  CTRL-T		Jump back from Nth older tag in tag list
+-|:po|	   :[count]po[p][!]	Jump back from [count]'th older tag in tag list
+-|:tnext|   :[count]tn[ext][!]	Jump to [count]'th next matching tag
+-|:tp|      :[count]tp[revious][!] Jump to [count]'th previous matching tag
+-|:tr|	   :[count]tr[ewind][!] Jump to [count]'th matching tag
+-|:tl|	   :tl[ast][!]		Jump to last matching tag
++|:tags|	   :tags		print tag list
++|CTRL-T|   N  CTRL-T		jump back from Nth older tag in tag list
++|:po|	   :[count]po[p][!]	jump back from [count]'th older tag in tag list
++|:tnext|   :[count]tn[ext][!]	jump to [count]'th next matching tag
++|:tp|      :[count]tp[revious][!] jump to [count]'th previous matching tag
++|:tr|	   :[count]tr[ewind][!] jump to [count]'th matching tag
++|:tl|	   :tl[ast][!]		jump to last matching tag
+ 
+ |:ptag|	   :pt[ag] {tag}	open a preview window to show tag {tag}
+ |CTRL-W_}|     CTRL-W }		like CTRL-] but show tag in preview window
+@@ -494,35 +494,34 @@
+ 			   command
+ |:@@|	   :@@		repeat previous :@{a-z}
+ |:g|	   :[range]g[lobal]/{pattern}/[cmd]
+-			Execute Ex command [cmd] (default: ":p") on the lines
+-			   within [range] where {pattern} matches.
++			execute Ex command [cmd] (default: ":p") on the lines
++			   within [range] where {pattern} matches
+ |:g|	   :[range]g[lobal]!/{pattern}/[cmd]
+-			Execute Ex command [cmd] (default: ":p") on the lines
+-			   within [range] where {pattern} does NOT match.
++			execute Ex command [cmd] (default: ":p") on the lines
++			   within [range] where {pattern} does NOT match
+ |:so|	   :so[urce] {file}
+-			Read Ex commands from {file}.
++			read Ex commands from {file}
+ |:so|	   :so[urce]! {file}
+-			Read Vim commands from {file}.
++			read Vim commands from {file}
+ |:sl|	   :sl[eep] [sec]
+ 			don't do anything for [sec] seconds
+-|gs|	   N  gs	Goto Sleep for N seconds
++|gs|	   N  gs	goto Sleep for N seconds
+ ------------------------------------------------------------------------------
+ *Q_km*		Key mapping
+ 
+-|:map|	     :ma[p] {lhs} {rhs}	  Map {lhs} to {rhs} in Normal and Visual
+-				     mode.
+-|:map!|	     :ma[p]! {lhs} {rhs}  Map {lhs} to {rhs} in Insert and Command-line
+-				     mode.
++|:map|	     :ma[p] {lhs} {rhs}	  map {lhs} to {rhs} in Normal and Visual mode
++|:map!|	     :ma[p]! {lhs} {rhs}  map {lhs} to {rhs} in Insert and Command-line
++				     mode
+ |:noremap|   :no[remap][!] {lhs} {rhs}
+-				  Same as ":map", no remapping for this {rhs}
+-|:unmap|     :unm[ap] {lhs}	  Remove the mapping of {lhs} for Normal and
+-				     Visual mode.
+-|:unmap!|    :unm[ap]! {lhs}	  Remove the mapping of {lhs} for Insert and
+-				     Command-line mode.
+-|:map_l|     :ma[p] [lhs]	  List mappings (starting with [lhs]) for
+-				     Normal and Visual mode.
+-|:map_l!|    :ma[p]! [lhs]	  List mappings (starting with [lhs]) for
+-				     Insert and Command-line mode.
++				  same as ":map", no remapping for this {rhs}
++|:unmap|     :unm[ap] {lhs}	  remove the mapping of {lhs} for Normal and
++				     Visual mode
++|:unmap!|    :unm[ap]! {lhs}	  remove the mapping of {lhs} for Insert and
++				     Command-line mode
++|:map_l|     :ma[p] [lhs]	  list mappings (starting with [lhs]) for
++				     Normal and Visual mode
++|:map_l!|    :ma[p]! [lhs]	  list mappings (starting with [lhs]) for
++				     Insert and Command-line mode
+ |:cmap|	     :cmap/:cunmap/:cnoremap
+ 				  like ":map!"/":unmap!"/":noremap!" but for
+ 				     Command-line mode only
+@@ -553,7 +552,7 @@
+ |:mksession| :mks[ession][!] [file]
+ 				  like ":mkvimrc", but store current files,
+ 				     windows, etc. too, to be able to continue
+-				     this session later.
++				     this session later
+ ------------------------------------------------------------------------------
+ *Q_ab*		Abbreviations
+ 
+@@ -571,32 +570,32 @@
+ ------------------------------------------------------------------------------
+ *Q_op*		Options
+ 
+-|:set|		:se[t]			  Show all modified options.
+-|:set|		:se[t] all		  Show all non-termcap options.
+-|:set|		:se[t] termcap		  Show all termcap options.
+-|:set|		:se[t] {option}		  Set boolean option (switch it on),
+-					  show string or number option.
+-|:set|		:se[t] no{option}	  Reset boolean option (switch it off).
+-|:set|		:se[t] inv{option}	  invert boolean option.
+-|:set|		:se[t] {option}={value}	  Set string/number option to {value}.
++|:set|		:se[t]			  show all modified options
++|:set|		:se[t] all		  show all non-termcap options
++|:set|		:se[t] termcap		  show all termcap options
++|:set|		:se[t] {option}		  set boolean option (switch it on),
++					  show string or number option
++|:set|		:se[t] no{option}	  reset boolean option (switch it off)
++|:set|		:se[t] inv{option}	  invert boolean option
++|:set|		:se[t] {option}={value}	  set string/number option to {value}
+ |:set|		:se[t] {option}+={value}  append {value} to string option, add
+ 					  {value} to number option
+ |:set|		:se[t] {option}-={value}  remove {value} to string option,
+ 					  subtract {value} from number option
+-|:set|		:se[t] {option}?	  Show value of {option}.
+-|:set|		:se[t] {option}&	  Reset {option} to its default value.
++|:set|		:se[t] {option}?	  show value of {option}
++|:set|		:se[t] {option}&	  reset {option} to its default value
+ 
+ |:setlocal|	:setl[ocal]		  like ":set" but set the local value
+ 					  for options that have one
+ |:setglobal|	:setg[lobal]		  like ":set" but set the global value
+ 					  of a local option
+ 
+-|:fix|		:fix[del]		  Set value of 't_kD' according to
+-					  value of 't_kb'.
+-|:options|	:opt[ions]		  Open a new window to view and set
++|:fix|		:fix[del]		  set value of 't_kD' according to
++					  value of 't_kb'
++|:options|	:opt[ions]		  open a new window to view and set
+ 					  options, grouped by functionality,
+ 					  a one line explanation and links to
+-					  the help.
++					  the help
+ 
+ Short explanation of each option:		*option-list*
+ 'aleph'		  'al'	    ASCII code of the letter Aleph (Hebrew)
+@@ -647,16 +646,19 @@
+ 'complete'	  'cpt'     specify how Insert mode completion works
+ 'completefunc'	  'cfu'     function to be used for Insert mode completion
+ 'completeopt'	  'cot'     options for Insert mode completion
++'conceallevel'	  'conc'    whether concealable text is shown or hidden 
+ 'confirm'	  'cf'	    ask what to do about unsaved/read-only files
+ 'conskey'	  'consk'   get keys directly from console (MS-DOS only)
+ 'copyindent'	  'ci'	    make 'autoindent' use existing indent structure
+ 'cpoptions'	  'cpo'     flags for Vi-compatible behavior
++'cryptmethod'	  'cm'	    type of encryption to use for file writing
+ 'cscopepathcomp'  'cspc'    how many components of the path to show
+ 'cscopeprg'       'csprg'   command to execute cscope
+ 'cscopequickfix'  'csqf'    use quickfix window for cscope results
+ 'cscopetag'       'cst'     use cscope for tag commands
+ 'cscopetagorder'  'csto'    determines ":cstag" search order
+ 'cscopeverbose'   'csverb'  give messages when adding a cscope database
++'cursorbind'	  'crb'     move cursor in window as it moves in other windows
+ 'cursorcolumn'	  'cuc'	    highlight the screen column of the cursor
+ 'cursorline'	  'cul'	    highlight the screen line of the cursor
+ 'debug'			    set to "msg" to see all error messages
+@@ -818,6 +820,7 @@
+ 'quoteescape'	  'qe'	    escape characters used in a string
+ 'readonly'	  'ro'	    disallow writing the buffer
+ 'redrawtime'	  'rdt'     timeout for 'hlsearch' and |:match| highlighting
++'relativenumber'  'rnu'	    show relative line number in front of each line
+ 'remap'			    allow mappings to work recursively
+ 'report'		    threshold for reporting nr. of lines changed
+ 'restorescreen'   'rs'	    Win32: restore screen when exiting
+@@ -910,6 +913,8 @@
+ 'ttymouse'	  'ttym'    type of mouse codes generated
+ 'ttyscroll'	  'tsl'     maximum number of lines for a scroll
+ 'ttytype'	  'tty'     alias for 'term'
++'undodir'	  'udir'    where to store undo files
++'undofile'	  'udf'	    save undo information in a file
+ 'undolevels'	  'ul'	    maximum number of changes that can be undone
+ 'updatecount'	  'uc'	    after this many characters flush swap file
+ 'updatetime'	  'ut'	    after this many milliseconds flush swap file
+@@ -921,14 +926,14 @@
+ 'virtualedit'	  've'	    when to use virtual editing
+ 'visualbell'	  'vb'	    use visual bell instead of beeping
+ 'warn'			    warn for shell command when buffer was changed
+-'weirdinvert'	  'wi'	    for terminals that have weird inversion method
++'weirdinvert'	  'wiv'	    for terminals that have weird inversion method
+ 'whichwrap'	  'ww'	    allow specified keys to cross line boundaries
+ 'wildchar'	  'wc'	    command-line character for wildcard expansion
+ 'wildcharm'	  'wcm'     like 'wildchar' but also works when mapped
+ 'wildignore'	  'wig'     files matching these patterns are not completed
+ 'wildmenu'	  'wmnu'    use menu for command line completion
+ 'wildmode'	  'wim'     mode for 'wildchar' command-line expansion
+-'wildoptions'	  'wop'     specifies how command line completion is done.
++'wildoptions'	  'wop'     specifies how command line completion is done
+ 'winaltkeys'	  'wak'     when the windows system handles ALT keys
+ 'winheight'	  'wh'	    minimum number of lines for the current window
+ 'winfixheight'	  'wfh'     keep window height when opening/closing windows
+@@ -978,17 +983,17 @@
+ |:make|		:make [args]	start make, read errors, and jump to first
+ 				   error
+ |:grep|		:gr[ep] [args]	execute 'grepprg' to find matches and jump to
+-				   the first one.
++				   the first one
+ ------------------------------------------------------------------------------
+ *Q_vc*		Various commands
+ 
+-|CTRL-L|	   CTRL-L	Clear and redraw the screen.
++|CTRL-L|	   CTRL-L	clear and redraw the screen
+ |CTRL-G|	   CTRL-G	show current file name (with path) and cursor
+ 				   position
+ |ga|		   ga		show ascii value of character under cursor in
+ 				   decimal, hex, and octal
+ |g8|		   g8		for utf-8 encoding: show byte sequence for
+-				   character under cursor in hex.
++				   character under cursor in hex
+ |g_CTRL-G|	   g CTRL-G	show cursor column, line, and character
+ 				   position
+ |CTRL-C|	   CTRL-C	during searches: Interrupt the search
+@@ -998,13 +1003,13 @@
+ |:mode|		:mode N		MS-DOS: set screen mode to N (number, C80,
+ 				   C4350, etc.)
+ |:normal|	:norm[al][!] {commands}
+-				Execute Normal mode commands.
++				execute Normal mode commands
+ |Q|		Q		switch to "Ex" mode
+ 
+ |:redir|	:redir >{file}		redirect messages to {file}
+ |:silent|	:silent[!] {command}	execute {command} silently
+ |:confirm|	:confirm {command}	quit, write, etc., asking about
+-					unsaved changes or read-only files.
++					unsaved changes or read-only files
+ |:browse|	:browse {command}	open/read/write file, using a
+ 					file selection dialog
+ ------------------------------------------------------------------------------
+@@ -1039,9 +1044,9 @@
+ 
+ |c_wildchar|	'wildchar'  (default: <Tab>)
+ 				do completion on the pattern in front of the
+-				   cursor.  If there are multiple matches,
++				   cursor; if there are multiple matches,
+ 				   beep and show the first one; further
+-				   'wildchar' will show the next ones.
++				   'wildchar' will show the next ones
+ |c_CTRL-D|	CTRL-D		list all names that match the pattern in
+ 				   front of the cursor
+ |c_CTRL-A|	CTRL-A		insert all names that match pattern in front
+@@ -1081,15 +1086,19 @@
+ |:_%|	    %		current file name (only where a file name is expected)
+ |:_#|	    #[num]	alternate file name [num] (only where a file name is
+ 			   expected)
+-	Note: The next four are typed literally; these are not special keys!
++	Note: The next seven are typed literally; these are not special keys!
++|:<afile>|  <abuf>	buffer number, for use in an autocommand (only where a
++			   file name is expected)
++|:<afile>|  <afile>	file name, for user in an autocommand (only where a
++			   file name is expected)
++|:<afile>|  <amatch>	what matched with the pattern, for use in an
++			   autocommand (only where a file name is expected)
+ |:<cword>|  <cword>	word under the cursor (only where a file name is
+ 			   expected)
+ |:<cWORD>|  <cWORD>	WORD under the cursor (only where a file name is
+ 			   expected) (see |WORD|)
+ |:<cfile>|  <cfile>	file name under the cursor (only where a file name is
+ 			   expected)
+-|:<afile>|  <afile>	file name for autocommand (only where a file name is
+-			   expected)
+ |:<sfile>|  <sfile>	file name of a ":source"d file, within that file (only
+ 			   where a file name is expected)
+ 
+@@ -1101,7 +1110,7 @@
+ 		|::e|	    :e		extension
+ 		|::s|	    :s/{pat}/{repl}/	substitute {pat} with {repl}
+ ------------------------------------------------------------------------------
+-*Q_st*		Starting VIM
++*Q_st*		Starting Vim
+ 
+ |-vim|	   vim [options]		start editing with an empty buffer
+ |-file|	   vim [options] {file} ..	start editing one or more files
+@@ -1135,7 +1144,7 @@
+ |-n|	-n		    do not create a swap file
+ |-o|	-o [num]	    open [num] windows (default: one for each file)
+ |-f|	-f		    GUI: foreground process, don't fork
+-			    Amiga: do not restart VIM to open a window (for
++			    Amiga: do not restart Vim to open a window (for
+ 				e.g., mail)
+ |-s|	-s {scriptin}	    first read commands from the file {scriptin}
+ |-w|	-w {scriptout}	    write typed chars to file {scriptout} (append)
+@@ -1148,92 +1157,92 @@
+ |---|	--		    end of options, other arguments are file names
+ |--help|    --help	    show list of arguments and exit
+ |--version| --version	    show version info and exit
+-|--|	-		    Read file from stdin.
++|--|	-		    read file from stdin
+ ------------------------------------------------------------------------------
+ *Q_ed*		Editing a file
+ 
+-	   Without !: Fail if changes has been made to the current buffer.
++	   Without !: Fail if changes have been made to the current buffer.
+ 	      With !: Discard any changes to the current buffer.
+-|:edit_f|  :e[dit][!] {file}	Edit {file}.
+-|:edit|	   :e[dit][!]		Reload the current file.
+-|:enew|	   :ene[w][!]		Edit a new, unnamed buffer.
+-|:find|    :fin[d][!] {file}	Find {file} in 'path' and edit it.
+-
+-|CTRL-^|   N   CTRL-^		Edit alternate file N (equivalent to ":e #N").
+-|gf|	       gf  or ]f	Edit the file whose name is under the cursor
+-|:pwd|	   :pwd			Print the current directory name.
+-|:cd|	   :cd [path]		Change the current directory to [path].
+-|:cd-|	   :cd -		Back to previous current directory.
+-|:file|	   :f[ile]		Print the current file name and the cursor
+-				   position.
+-|:file|	   :f[ile] {name}	Set the current file name to {name}.
+-|:files|   :files		Show alternate file names.
++|:edit_f|  :e[dit][!] {file}	edit {file}
++|:edit|	   :e[dit][!]		reload the current file
++|:enew|	   :ene[w][!]		edit a new, unnamed buffer
++|:find|    :fin[d][!] {file}	find {file} in 'path' and edit it
++
++|CTRL-^|   N   CTRL-^		edit alternate file N (equivalent to ":e #N")
++|gf|	       gf  or ]f	edit the file whose name is under the cursor
++|:pwd|	   :pwd			print the current directory name
++|:cd|	   :cd [path]		change the current directory to [path]
++|:cd-|	   :cd -		back to previous current directory
++|:file|	   :f[ile]		print the current file name and the cursor
++				   position
++|:file|	   :f[ile] {name}	set the current file name to {name}
++|:files|   :files		show alternate file names
+ ------------------------------------------------------------------------------
+ *Q_fl*		Using the argument list			|argument-list|
+ 
+-|:args|	   :ar[gs]		Print the argument list, with the current file
+-				   in "[]".
+-|:all|	   :all  or :sall	Open a window for every file in the arg list.
+-|:wn|	   :wn[ext][!]		Write file and edit next file.
+-|:wn|	   :wn[ext][!] {file}	Write to {file} and edit next file, unless
+-				   {file} exists.  With !, overwrite existing
+-				   file.
+-|:wN|	   :wN[ext][!] [file]	Write file and edit previous file.
++|:args|	   :ar[gs]		print the argument list, with the current file
++				   in "[]"
++|:all|	   :all  or :sall	open a window for every file in the arg list
++|:wn|	   :wn[ext][!]		write file and edit next file
++|:wn|	   :wn[ext][!] {file}	write to {file} and edit next file, unless
++				   {file} exists; With !, overwrite existing
++				   file
++|:wN|	   :wN[ext][!] [file]	write file and edit previous file
+ 
+ 	     in current window    in new window	~
+-|:argument|  :argu[ment] N	  :sar[gument] N	Edit file N
+-|:next|	     :n[ext]		  :sn[ext]		Edit next file
++|:argument|  :argu[ment] N	  :sar[gument] N	edit file N
++|:next|	     :n[ext]		  :sn[ext]		edit next file
+ |:next_f|    :n[ext] {arglist}	  :sn[ext] {arglist}	define new arg list
+ 							   and edit first file
+-|:Next|	     :N[ext]		  :sN[ext]		Edit previous file
+-|:first|     :fir[st]		  :sfir[st]		Edit first file
+-|:last|	     :la[st]		  :sla[st]		Edit last file
++|:Next|	     :N[ext]		  :sN[ext]		edit previous file
++|:first|     :fir[st]		  :sfir[st]		edit first file
++|:last|	     :la[st]		  :sla[st]		edit last file
+ ------------------------------------------------------------------------------
+ *Q_wq*		Writing and quitting
+ 
+-|:w|	  :[range]w[rite][!]		Write to the current file.
+-|:w_f|	  :[range]w[rite] {file}	Write to {file}, unless it already
+-					   exists.
+-|:w_f|	  :[range]w[rite]! {file}	Write to {file}.  Overwrite an existing
+-					   file.
+-|:w_a|	  :[range]w[rite][!] >>		Append to the current file.
+-|:w_a|	  :[range]w[rite][!] >> {file}	Append to {file}.
+-|:w_c|	  :[range]w[rite] !{cmd}	Execute {cmd} with [range] lines as
+-					   standard input.
++|:w|	  :[range]w[rite][!]		write to the current file
++|:w_f|	  :[range]w[rite] {file}	write to {file}, unless it already
++					   exists
++|:w_f|	  :[range]w[rite]! {file}	write to {file}.  Overwrite an existing
++					   file
++|:w_a|	  :[range]w[rite][!] >>		append to the current file
++|:w_a|	  :[range]w[rite][!] >> {file}	append to {file}
++|:w_c|	  :[range]w[rite] !{cmd}	execute {cmd} with [range] lines as
++					   standard input
+ |:up|	  :[range]up[date][!]		write to current file if modified
+ |:wall|	  :wa[ll][!]			write all changed buffers
+ 
+-|:q|	  :q[uit]		Quit current buffer, unless changes have been
+-				   made.  Exit Vim when there are no other
++|:q|	  :q[uit]		quit current buffer, unless changes have been
++				   made; Exit Vim when there are no other
+ 				   non-help buffers
+-|:q|	  :q[uit]!		Quit current buffer always, discard any
++|:q|	  :q[uit]!		quit current buffer always, discard any
+ 				   changes.  Exit Vim when there are no other
+ 				   non-help buffers
+-|:qa|	  :qa[ll]		Exit Vim, unless changes have been made.
+-|:qa|	  :qa[ll]!		Exit Vim always, discard any changes.
+-|:cq|	  :cq			Quit without writing and return error code.
+-
+-|:wq|	  :wq[!]		Write the current file and exit.
+-|:wq|	  :wq[!] {file}		Write to {file} and exit.
+-|:xit|	  :x[it][!] [file]	Like ":wq" but write only when changes have
++|:qa|	  :qa[ll]		exit Vim, unless changes have been made
++|:qa|	  :qa[ll]!		exit Vim always, discard any changes
++|:cq|	  :cq			quit without writing and return error code
++
++|:wq|	  :wq[!]		write the current file and exit
++|:wq|	  :wq[!] {file}		write to {file} and exit
++|:xit|	  :x[it][!] [file]	like ":wq" but write only when changes have
+ 				   been made
+-|ZZ|	     ZZ			Same as ":x".
+-|ZQ|	     ZQ			Same as ":q!".
++|ZZ|	     ZZ			same as ":x"
++|ZQ|	     ZQ			same as ":q!"
+ |:xall|	  :xa[ll][!]  or :wqall[!]
+-				Write all changed buffers and exit
++				write all changed buffers and exit
+ 
+-|:stop|	  :st[op][!]		Suspend VIM or start new shell.  If 'aw' option
+-				   is set and [!] not given write the buffer.
+-|CTRL-Z|     CTRL-Z		Same as ":stop"
++|:stop|	  :st[op][!]		suspend Vim or start new shell; if 'aw' option
++				   is set and [!] not given write the buffer
++|CTRL-Z|     CTRL-Z		same as ":stop"
+ ------------------------------------------------------------------------------
+ *Q_ac*		Automatic Commands
+ 
+-|viminfo-file|	Read registers, marks, history at startup, save when exiting.
++|viminfo-file|	read registers, marks, history at startup, save when exiting.
+ 
+-|:rviminfo|	:rv[iminfo] [file]	Read info from viminfo file [file]
++|:rviminfo|	:rv[iminfo] [file]	read info from viminfo file [file]
+ |:rviminfo|	:rv[iminfo]! [file]	idem, overwrite existing info
+-|:wviminfo|	:wv[iminfo] [file]	Add info to viminfo file [file]
+-|:wviminfo|	:wv[iminfo]! [file]	Write info to viminfo file [file]
++|:wviminfo|	:wv[iminfo] [file]	add info to viminfo file [file]
++|:wviminfo|	:wv[iminfo]! [file]	write info to viminfo file [file]
+ 
+ |modeline|	Automatic option setting when editing a file
+ 
+@@ -1243,57 +1252,57 @@
+ 
+ |autocommand|	Automatic execution of commands on certain events.
+ 
+-|:autocmd|	:au			List all autocommands
+-|:autocmd|	:au {event}		List all autocommands for {event}
+-|:autocmd|	:au {event} {pat}	List all autocommands for {event} with
+-					{pat}
+-|:autocmd|	:au {event} {pat} {cmd}	Enter new autocommands for {event}
+-					with {pat}
+-|:autocmd|	:au!			Remove all autocommands
+-|:autocmd|	:au! {event}		Remove all autocommands for {event}
+-|:autocmd|	:au! * {pat}		Remove all autocommands for {pat}
+-|:autocmd|	:au! {event} {pat}	Remove all autocommands for {event}
+-					with {pat}
+-|:autocmd|	:au! {event} {pat} {cmd}  Remove all autocommands for {event}
+-					with {pat} and enter new one
++|:autocmd|	:au			  list all autocommands
++|:autocmd|	:au {event}		  list all autocommands for {event}
++|:autocmd|	:au {event} {pat}	  list all autocommands for {event}
++					  with {pat}
++|:autocmd|	:au {event} {pat} {cmd}	  enter new autocommands for {event}
++					  with {pat}
++|:autocmd|	:au!			  remove all autocommands
++|:autocmd|	:au! {event}		  remove all autocommands for {event}
++|:autocmd|	:au! * {pat}		  remove all autocommands for {pat}
++|:autocmd|	:au! {event} {pat}	  remove all autocommands for {event}
++					  with {pat}
++|:autocmd|	:au! {event} {pat} {cmd}  remove all autocommands for {event}
++					  with {pat} and enter new one
+ ------------------------------------------------------------------------------
+ *Q_wi*		Multi-window commands
+ 
+-|CTRL-W_s|	CTRL-W s  or  :split	Split window into two parts
+-|:split_f|	:split {file}		Split window and edit {file} in one of
++|CTRL-W_s|	CTRL-W s  or  :split	split window into two parts
++|:split_f|	:split {file}		split window and edit {file} in one of
+ 					   them
+-|:vsplit|	:vsplit {file}		Same, but split vertically
+-|:vertical|	:vertical {cmd}		Make {cmd} split vertically
++|:vsplit|	:vsplit {file}		same, but split vertically
++|:vertical|	:vertical {cmd}		make {cmd} split vertically
+ 
+-|:sfind|	:sf[ind] {file}		Split window, find {file} in 'path'
+-					   and edit it.
+-|CTRL-W_]|	CTRL-W ]		Split window and jump to tag under
++|:sfind|	:sf[ind] {file}		split window, find {file} in 'path'
++					   and edit it
++|CTRL-W_]|	CTRL-W ]		split window and jump to tag under
+ 					   cursor
+-|CTRL-W_f|	CTRL-W f		Split window and edit file name under
++|CTRL-W_f|	CTRL-W f		split window and edit file name under
+ 					   the cursor
+-|CTRL-W_^|	CTRL-W ^		Split window and edit alternate file
+-|CTRL-W_n|	CTRL-W n  or  :new	Create new empty window
+-|CTRL-W_q|	CTRL-W q  or  :q[uit]	Quit editing and close window
+-|CTRL-W_c|	CTRL-W c  or  :cl[ose]	Make buffer hidden and close window
+-|CTRL-W_o|	CTRL-W o  or  :on[ly]	Make current window only one on the
++|CTRL-W_^|	CTRL-W ^		split window and edit alternate file
++|CTRL-W_n|	CTRL-W n  or  :new	create new empty window
++|CTRL-W_q|	CTRL-W q  or  :q[uit]	quit editing and close window
++|CTRL-W_c|	CTRL-W c  or  :cl[ose]	make buffer hidden and close window
++|CTRL-W_o|	CTRL-W o  or  :on[ly]	make current window only one on the
+ 					   screen
+ 
+-|CTRL-W_j|	CTRL-W j		Move cursor to window below
+-|CTRL-W_k|	CTRL-W k		Move cursor to window above
+-|CTRL-W_CTRL-W|	CTRL-W CTRL-W		Move cursor to window below (wrap)
+-|CTRL-W_W|	CTRL-W W		Move cursor to window above (wrap)
+-|CTRL-W_t|	CTRL-W t		Move cursor to top window
+-|CTRL-W_b|	CTRL-W b		Move cursor to bottom window
+-|CTRL-W_p|	CTRL-W p		Move cursor to previous active window
+-
+-|CTRL-W_r|	CTRL-W r		Rotate windows downwards
+-|CTRL-W_R|	CTRL-W R		Rotate windows upwards
+-|CTRL-W_x|	CTRL-W x		Exchange current window with next one
+-
+-|CTRL-W_=|	CTRL-W =		Make all windows equal height
+-|CTRL-W_-|	CTRL-W -		Decrease current window height
+-|CTRL-W_+|	CTRL-W +		Increase current window height
+-|CTRL-W__|	CTRL-W _		Set current window height (default:
++|CTRL-W_j|	CTRL-W j		move cursor to window below
++|CTRL-W_k|	CTRL-W k		move cursor to window above
++|CTRL-W_CTRL-W|	CTRL-W CTRL-W		move cursor to window below (wrap)
++|CTRL-W_W|	CTRL-W W		move cursor to window above (wrap)
++|CTRL-W_t|	CTRL-W t		move cursor to top window
++|CTRL-W_b|	CTRL-W b		move cursor to bottom window
++|CTRL-W_p|	CTRL-W p		move cursor to previous active window
++
++|CTRL-W_r|	CTRL-W r		rotate windows downwards
++|CTRL-W_R|	CTRL-W R		rotate windows upwards
++|CTRL-W_x|	CTRL-W x		exchange current window with next one
++
++|CTRL-W_=|	CTRL-W =		make all windows equal height
++|CTRL-W_-|	CTRL-W -		decrease current window height
++|CTRL-W_+|	CTRL-W +		increase current window height
++|CTRL-W__|	CTRL-W _		set current window height (default:
+ 					   very high)
+ ------------------------------------------------------------------------------
+ *Q_bu*		Buffer list commands
+@@ -1350,11 +1359,11 @@
+ 
+ |:menu|		:menu			list all menus
+ |:menu|		:menu {mpath}		list menus starting with {mpath}
+-|:menu|		:menu {mpath} {rhs}	add menu {mpath}, giving {lhs}
++|:menu|		:menu {mpath} {rhs}	add menu {mpath}, giving {rhs}
+ |:menu|		:menu {pri} {mpath} {rhs}
+ 					idem, with priorities {pri}
+ |:menu|		:menu ToolBar.{name} {rhs}
+-					add toolbar item, giving {lhs}
++					add toolbar item, giving {rhs}
+ |:tmenu|	:tmenu {mpath} {text}	add tooltip to menu {mpath}
+ |:unmenu|	:unmenu {mpath}		remove menu {mpath}
+ ------------------------------------------------------------------------------
+diff -Nur runtime/doc/quotes.txt runtime/doc/quotes.txt
+--- runtime/doc/quotes.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/quotes.txt	2011-04-03 09:27:21.333890841 -0700
+@@ -1,4 +1,4 @@
+-*quotes.txt*    For Vim version 7.2.  Last change: 2006 Apr 24
++*quotes.txt*    For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -211,7 +211,7 @@
+ getting tired of hearing me bragging about it.  Others eyes are lighting up.
+ (Rick Croote)
+ 
+-Emacs takes way to much time to start up and run, it is to big and bulky for
++Emacs takes way too much time to start up and run, it is too big and bulky for
+ effective use and the interface is more confusing than it is of any help.  VIM
+ however is short, it is fast, it is powerful, it has a good interface and it
+ is all purpose.  (Paal Ditlefsen Ekran)
+@@ -247,7 +247,7 @@
+ memory usage, text alteration to name 3.  (Mark Adam)
+ 
+ In fact, now if I want to know what a particular setting does in vi, I fire up
+-VIM and check out it's help!  (Nikhil Patel, USA)
++VIM and check out its help!  (Nikhil Patel, USA)
+ 
+ As a vi user, VIM has made working with text a far more pleasant task than
+ before I encountered this program.  (Steinar Knutsen, Norway)
+diff -Nur runtime/doc/recover.txt runtime/doc/recover.txt
+--- runtime/doc/recover.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/recover.txt	2011-04-03 09:27:21.334706846 -0700
+@@ -1,4 +1,4 @@
+-*recover.txt*   For Vim version 7.2.  Last change: 2006 Apr 24
++*recover.txt*   For Vim version 7.3a.  Last change: 2009 Apr 18
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -181,11 +181,50 @@
+ Be sure that the recovery was successful before overwriting the original
+ file or deleting the swap file.  It is good practice to write the recovered
+ file elsewhere and run 'diff' to find out if the changes you want are in the
+-recovered file.
++recovered file.  Or use |:DiffOrig|.
+ 
+ Once you are sure the recovery is ok delete the swap file.  Otherwise, you
+ will continue to get warning messages that the ".swp" file already exists.
+ 
+ {Vi: recovers in another way and sends mail if there is something to recover}
+ 
++
++ENCRYPTION AND THE SWAP FILE				*:recover-crypt*
++
++When the text file is encrypted the swap file is encrypted as well.  This
++makes recovery a bit more complicated.  When recovering from a swap file and
++encryption has been used, you will be asked to enter one or two crypt keys.
++
++If the text file does not exist you will only be asked to enter the crypt key
++for the swap file.
++
++If the text file does exist, it may be encrypted in a different way than the
++swap file.  You will be asked for the crypt key twice:
++
++	Need encryption key for "/tmp/tt" ~
++	Enter encryption key: ****** ~
++	"/tmp/tt" [crypted] 23200L, 522129C ~
++	Using swap file "/tmp/.tt.swp" ~
++	Original file "/tmp/tt" ~
++	Swap file is encrypted: "/tmp/.tt.swp" ~
++	If you entered a new crypt key but did not write the text file, ~
++	enter the new crypt key. ~
++	If you wrote the text file after changing the crypt key press enter ~
++	to use the same key for text file and swap file ~
++	Enter encryption key:  ~
++
++You can be in one of these two situations:
++
++1. The encryption key was not changed, or after changing the key the text file
++   was written.  You will be prompted for the crypt key twice.  The second
++   time you can simply press Enter.  That means the same key is used for the
++   text file and the swap file.
++2. You entered a new encryption key, but did not save the text file.  Vim will
++   then use the new key for the swap file, and the text file will still be
++   encrypted with the old key.  At the second prompt enter the new key.
++
++Note that after recovery the key of the swap file will be used for the text
++file.  Thus if you write the text file, you need to use that new key.
++
++
+  vim:tw=78:ts=8:ft=help:norl:
+diff -Nur runtime/doc/remote.txt runtime/doc/remote.txt
+--- runtime/doc/remote.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/remote.txt	2011-04-03 09:27:21.335468732 -0700
+@@ -1,4 +1,4 @@
+-*remote.txt*    For Vim version 7.2.  Last change: 2008 May 24
++*remote.txt*    For Vim version 7.3a.  Last change: 2008 May 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/repeat.txt runtime/doc/repeat.txt
+--- runtime/doc/repeat.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/repeat.txt	2011-04-03 09:27:21.344129494 -0700
+@@ -1,4 +1,4 @@
+-*repeat.txt*    For Vim version 7.2.  Last change: 2007 Aug 12
++*repeat.txt*    For Vim version 7.3a.  Last change: 2009 Nov 04
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -217,7 +217,7 @@
+ 			Don't use "ucs-2" or "ucs-4", scripts cannot be in
+ 			these encodings (they would contain NUL bytes).
+ 			When a sourced script starts with a BOM (Byte Order
+-			Mark) in utf-8 format Vim will recognized it, no need
++			Mark) in utf-8 format Vim will recognize it, no need
+ 			to use ":scriptencoding utf-8" then.
+ 
+ 			When compiled without the |+multi_byte| feature this
+@@ -332,6 +332,12 @@
+ inserted freely; it depends on the position where a command is split up
+ whether additional whitespace is allowed or not.
+ 
++When a space is required it's best to put it right after the backslash.  A
++space at the end of a line is hard to see and may be accidentally deleted. >
++	:syn match Comment
++		\ "very long regexp"
++		\ keepend
++
+ There is a problem with the ":append" and ":insert" commands: >
+    :1append
+    \asdf
+@@ -564,7 +570,7 @@
+ ==============================================================================
+ 6. Profiling						*profile* *profiling*
+ 
+-Profiling means that Vim measures the time that is spend on executing
++Profiling means that Vim measures the time that is spent on executing
+ functions and/or scripts.  The |+profile| feature is required for this.
+ It is only included when Vim was compiled with "huge" features.
+ {Vi does not have profiling}
+diff -Nur runtime/doc/rileft.txt runtime/doc/rileft.txt
+--- runtime/doc/rileft.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/rileft.txt	2011-04-03 09:27:21.344826676 -0700
+@@ -1,4 +1,4 @@
+-*rileft.txt*    For Vim version 7.2.  Last change: 2006 Apr 24
++*rileft.txt*    For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Avner Lottem
+diff -Nur runtime/doc/russian.txt runtime/doc/russian.txt
+--- runtime/doc/russian.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/russian.txt	2011-04-03 09:27:21.352194078 -0700
+@@ -1,4 +1,4 @@
+-*russian.txt*   For Vim version 7.2.  Last change: 2006 Apr 24
++*russian.txt*   For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Vassily Ragosin
+diff -Nur runtime/doc/scroll.txt runtime/doc/scroll.txt
+--- runtime/doc/scroll.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/scroll.txt	2011-04-03 09:27:21.353014674 -0700
+@@ -1,4 +1,4 @@
+-*scroll.txt*    For Vim version 7.2.  Last change: 2006 Aug 27
++*scroll.txt*    For Vim version 7.3a.  Last change: 2006 Aug 27
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -132,7 +132,7 @@
+ 
+ 							*zz*
+ zz			Like "z.", but leave the cursor in the same column.
+-			Careful: If caps-lock is on, this commands becomes
++			Careful: If caps-lock is on, this command becomes
+ 			"ZZ": write buffer and exit!  {not in Vi}
+ 
+ 							*z-*
+@@ -193,7 +193,7 @@
+ 5. Scrolling synchronously				*scroll-binding*
+ 
+ Occasionally, it is desirable to bind two or more windows together such that
+-when one window is scrolled, the other windows are scrolled also.  In Vim,
++when one window is scrolled, the other windows are also scrolled.  In Vim,
+ windows can be given this behavior by setting the (window-specific)
+ 'scrollbind' option.  When a window that has 'scrollbind' set is scrolled, all
+ other 'scrollbind' windows are scrolled the same amount, if possible.  The
+diff -Nur runtime/doc/sign.txt runtime/doc/sign.txt
+--- runtime/doc/sign.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/sign.txt	2011-04-03 09:27:21.353721086 -0700
+@@ -1,4 +1,4 @@
+-*sign.txt*      For Vim version 7.2.  Last change: 2006 Apr 24
++*sign.txt*      For Vim version 7.3a.  Last change: 2010 May 07
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Gordon Prieur
+@@ -53,7 +53,7 @@
+ ==============================================================================
+ 2. Commands					*sign-commands* *:sig* *:sign*
+ 
+-Here is an example that places a sign piet, displayed with the text ">>", in
++Here is an example that places a sign "piet", displayed with the text ">>", in
+ line 23 of the current file: >
+ 	:sign define piet text=>> texthl=Search
+ 	:exe ":sign place 2 line=23 name=piet file=" . expand("%:p")
+diff -Nur runtime/doc/spell.txt runtime/doc/spell.txt
+--- runtime/doc/spell.txt	2011-04-03 13:03:28.532899529 -0700
++++ runtime/doc/spell.txt	2011-04-03 09:27:21.356271015 -0700
+@@ -1,4 +1,4 @@
+-*spell.txt*	For Vim version 7.2.  Last change: 2008 Nov 30
++*spell.txt*	For Vim version 7.3a.  Last change: 2010 Apr 11
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+@@ -468,8 +468,11 @@
+ the word list and keeps it small.
+ 						    *.aff* *.dic* *Myspell*
+ You can create a Vim spell file from the .aff and .dic files that Myspell
+-uses.  Myspell is used by OpenOffice.org and Mozilla.  You should be able to
+-find them here:
++uses.  Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt 
++files are zip files which contain the .aff and .dic files. You should be able
++to find them here:
++	http://extensions.services.openoffice.org/dictionary
++The older, OpenOffice 2 files may be used if this doesn't work:
+ 	http://wiki.services.openoffice.org/wiki/Dictionaries
+ You can also use a plain word list.  The results are the same, the choice
+ depends on what word lists you can find.
+@@ -1279,7 +1282,7 @@
+ 
+ 							*spell-ONLYINCOMPOUND*
+ The ONLYINCOMPOUND does exactly the same as NEEDCOMPOUND.  Supported for
+-compatiblity with Hunspell.
++compatibility with Hunspell.
+ 
+ 							*spell-COMPOUNDMIN*
+ The minimal character length of a word used for compounding is specified with
+diff -Nur runtime/doc/spell.txt.~1~ runtime/doc/spell.txt.~1~
+diff -Nur runtime/doc/sponsor.txt runtime/doc/sponsor.txt
+--- runtime/doc/sponsor.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/sponsor.txt	2011-04-03 09:27:21.357059852 -0700
+@@ -1,4 +1,4 @@
+-*sponsor.txt*   For Vim version 7.2.  Last change: 2008 Jun 21
++*sponsor.txt*   For Vim version 7.3a.  Last change: 2008 Jun 21
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/starting.txt runtime/doc/starting.txt
+--- runtime/doc/starting.txt	2011-04-03 13:03:30.155661692 -0700
++++ runtime/doc/starting.txt	2011-04-03 09:27:21.358906277 -0700
+@@ -1,4 +1,4 @@
+-*starting.txt*  For Vim version 7.2.  Last change: 2008 Nov 09
++*starting.txt*  For Vim version 7.3a.  Last change: 2009 Dec 31
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -338,12 +338,19 @@
+ 							*-C*
+ -C		Compatible mode.  Sets the 'compatible' option.  You can use
+ 		this to get 'compatible', even though a .vimrc file exists.
+-		But the command ":set nocompatible" overrules it anyway.
+-		Also see |compatible-default|.  {not in Vi}
++		Keep in mind that the command ":set nocompatible" in some
++		plugin or startup script overrules this, so you may end up
++		with 'nocompatible' anyway.  To find out, use: >
++			:verbose set compatible?
++<		Several plugins won't work with 'compatible' set.  You may
++		want to set it after startup this way: >
++			vim "+set cp" filename
++<		Also see |compatible-default|.  {not in Vi}
+ 
+ 							*-N*
+ -N		Not compatible mode.  Resets the 'compatible' option.  You can
+-		use this to get 'nocompatible', when there is no .vimrc file.
++		use this to get 'nocompatible', when there is no .vimrc file
++		or when using "-u NONE".
+ 		Also see |compatible-default|.  {not in Vi}
+ 
+ 							*-y* *easy*
+@@ -361,6 +368,8 @@
+ 		Can also be done with ":set updatecount=0".  You can switch it
+ 		on again by setting the 'updatecount' option to some value,
+ 		e.g., ":set uc=100".
++		NOTE: Don't combine -n with -b, making -nb, because that has a
++		different meaning: |-nb|.
+ 		'updatecount' is set to 0 AFTER executing commands from a
+ 		vimrc file, but before the GUI initializations.  Thus it
+ 		overrides a setting for 'updatecount' in a vimrc file, but not
+@@ -593,17 +602,8 @@
+ 		it.  The second form specifies a file to read connection info
+ 		from.  The third form specifies the hostname, address and
+ 		password for connecting to Netbeans. |netbeans-run|
+-
+-Example for using a script file to change a name in several files:
+-	Create a file "subs.vi" containing substitute commands and a :wq
+-	command: >
+-		:%s/Jones/Smith/g
+-		:%s/Allen/Peter/g
+-		:wq
+-<
+-	Execute Vim on all files you want to change: >
+-
+-		foreach i ( *.let ) vim -s subs.vi $i
++		{only available when compiled with the |+netbeans_intg|
++		feature; if not then -nb will make Vim exit}
+ 
+ If the executable is called "view", Vim will start in Readonly mode.  This is
+ useful if you can make a hard or symbolic link from "view" to "vim".
+@@ -777,10 +777,11 @@
+ 	nocp" command if you like.
+ 	For the Macintosh the $VIMRUNTIME/macmap.vim is read.
+ 
+-			  *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc*
++	  *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* *$MYVIMRC*
+      c. Four places are searched for initializations.  The first that exists
+ 	is used, the others are ignored.  The $MYVIMRC environment variable is
+-	set to the file that was first found, unless $MYVIMRC was already set.
++	set to the file that was first found, unless $MYVIMRC was already set
++	and when using VIMINIT.
+ 	-  The environment variable VIMINIT (see also |compatible-default|) (*)
+ 	   The value of $VIMINIT is used as an Ex command line.
+ 	-  The user vimrc file(s):
+@@ -969,7 +970,8 @@
+ just like executing a command from a vimrc/exrc in the current directory.
+ 
+ 							*slow-start*
+-If Vim takes a long time to start up, there may be a few causes:
++If Vim takes a long time to start up, use the |--startuptime| argument to find
++out what happens.  There are a few common causes:
+ - If the Unix version was compiled with the GUI and/or X11 (check the output
+   of ":version" for "+GUI" and "+X11"), it may need to load shared libraries
+   and connect to the X11 server.  Try compiling a version with GUI and X11
+@@ -990,7 +992,7 @@
+ 
+ 							*info-message*
+ The |--help| and |--version| arguments cause Vim to print a message and then
+-exit.  Normally the message is send to stdout, thus can be redirected to a
++exit.  Normally the message is sent to stdout, thus can be redirected to a
+ file with: >
+ 
+ 	vim --help >file
+@@ -1441,7 +1443,7 @@
+ converted.
+ 
+ 
+-MANUALLY READING AND WRITING
++MANUALLY READING AND WRITING				*viminfo-read-write*
+ 
+ Two commands can be used to read and write the viminfo file manually.  This
+ can be used to exchange registers between two running Vim programs: First
+@@ -1504,7 +1506,7 @@
+ 			the list is edited.
+ 			If you get the |press-enter| prompt you can press "q"
+ 			and still get the prompt to enter a file number.
+-			Use ! to abondon a modified buffer. |abandon|
++			Use ! to abandon a modified buffer. |abandon|
+ 			{not when compiled with tiny or small features}
+ 
+  vim:tw=78:ts=8:ft=help:norl:
+diff -Nur runtime/doc/starting.txt.~1~ runtime/doc/starting.txt.~1~
+diff -Nur runtime/doc/starting.txt.~2~ runtime/doc/starting.txt.~2~
+diff -Nur runtime/doc/starting.txt.~3~ runtime/doc/starting.txt.~3~
+diff -Nur runtime/doc/syntax.txt runtime/doc/syntax.txt
+--- runtime/doc/syntax.txt	2011-04-03 13:03:31.111528679 -0700
++++ runtime/doc/syntax.txt	2011-04-03 09:27:21.362411075 -0700
+@@ -1,4 +1,4 @@
+-*syntax.txt*	For Vim version 7.2.  Last change: 2008 Jul 22
++*syntax.txt*	For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+@@ -35,7 +35,8 @@
+ 13. Linking groups		|:highlight-link|
+ 14. Cleaning up			|:syn-clear|
+ 15. Highlighting tags		|tag-highlight|
+-16. Color xterms		|xterm-color|
++16. Window-local syntax		|:ownsyntax|
++17. Color xterms		|xterm-color|
+ 
+ {Vi does not have any of these commands}
+ 
+@@ -201,8 +202,12 @@
+ Vim will only load the first syntax file found.
+ 
+ 
+-NAMING CONVENTIONS
+-				    *group-name* *{group-name}* *E669* *W18*
++NAMING CONVENTIONS		    *group-name* *{group-name}* *E669* *W18*
++
++A syntax group name is to be used for syntax items that match the same kind of
++thing.  These are then linked to a highlight group that specifies the color.
++A syntax group name doesn't specify any color or attributes itself.
++
+ The name for a highlight or syntax group must consist of ASCII letters, digits
+ and the underscore.  As a regexp: "[a-zA-Z0-9_]*"
+ 
+@@ -382,8 +387,14 @@
+ 
+ 	:10,40TOhtml
+ 
+-After you save the resulting file, you can view it with any HTML viewer, such
+-as Netscape.  The colors should be exactly the same as you see them in Vim.
++":TOhtml" has another special feature: if the window is in diff mode, it will
++generate HTML that shows all the related windows.  This can be disabled by
++setting the g:diff_one_file variable: >
++
++	let g:diff_one_file = 1
++
++After you save the resulting file, you can view it with any browser.  The
++colors should be exactly the same as you see them in Vim.
+ 
+ To restrict the conversion to a range of lines set "html_start_line" and
+ "html_end_line" to the first and last line to be converted.  Example, using
+@@ -401,15 +412,45 @@
+ Go back to the default to use 'number' by deleting the variable: >
+    :unlet html_number_lines
+ 
+-Closed folds are put in the HTML as they are displayed.  If you don't want
+-this, use the |zR| command before invoking 2html, or use: >
+-   :let html_ignore_folding = 1
+-
+ By default, HTML optimized for old browsers is generated.  If you prefer using
+ cascading style sheets (CSS1) for the attributes (resulting in considerably
+ shorter and valid HTML 4 file), use: >
+    :let html_use_css = 1
+ 
++Closed folds are put in the HTML as they are displayed.  If you don't want
++this, use the |zR| command before invoking 2html, or use: >
++   :let html_ignore_folding = 1
++
++You may want to generate HTML that includes all the data within the folds, and
++allow the user to view the folded data similar to how they would in Vim. To
++generate this dynamic fold information, use: >
++   :let html_dynamic_folds = 1
++
++Using html_dynamic_folds will imply html_use_css, because it would be far too
++difficult to do it for old browsers. However, html_ignore_folding overrides
++html_dynamic_folds.
++
++Using html_dynamic_folds will default to generating a foldcolumn in the html
++similar to Vim's foldcolumn, that will use javascript to open and close the
++folds in the HTML document. The width of this foldcolumn starts at the current
++setting of |'foldcolumn'| but grows to fit the greatest foldlevel in your
++document. If you do not want to show a foldcolumn at all, use: >
++   :let html_no_foldcolumn = 1
++
++Using this option, there will be no foldcolumn available to open the folds in
++the HTML. For this reason, another option is provided: html_hover_unfold.
++Enabling this option will use CSS 2.0 to allow a user to open a fold by
++hovering the mouse pointer over it. Note that old browsers (notably Internet
++Explorer 6) will not support this feature.  Browser-specific markup for IE6 is
++included to fall back to the normal CSS1 code so that the folds show up
++correctly for this browser, but they will not be openable without a
++foldcolumn. Note that using html_hover_unfold will allow modern browsers with
++disabled javascript to view closed folds. To use this option, use: >
++   :let html_hover_unfold = 1
++
++Setting html_no_foldcolumn with html_dynamic_folds will automatically set
++html_hover_unfold, because otherwise the folds wouldn't be dynamic.
++
+ By default "<pre>" and "</pre>" is used around the text.  This makes it show
+ up as you see it in Vim, but without wrapping.	If you prefer wrapping, at the
+ risk of making some things look a bit different, use: >
+@@ -528,9 +569,10 @@
+ 	pic		PIC assembly (currently for PIC16F84)
+ 
+ The most flexible is to add a line in your assembly file containing: >
+-	:asmsyntax=nasm
++	asmsyntax=nasm
+ Replace "nasm" with the name of the real assembly syntax.  This line must be
+-one of the first five lines in the file.
++one of the first five lines in the file.  No non-white text must be
++immediately before or after this text.
+ 
+ The syntax type can always be overruled for a specific buffer by setting the
+ b:asmsyntax variable: >
+@@ -677,7 +719,7 @@
+ highlighting for cErrInParen and cErrInBracket.
+ 
+ If you want to use folding in your C files, you can add these lines in a file
+-an the "after" directory in 'runtimepath'.  For Unix this would be
++in the "after" directory in 'runtimepath'.  For Unix this would be
+ ~/.vim/after/syntax/c.vim. >
+     syn sync fromstart
+     set foldmethod=syntax
+@@ -793,7 +835,8 @@
+ DESKTOP					   *desktop.vim* *ft-desktop-syntax*
+ 
+ Primary goal of this syntax file is to highlight .desktop and .directory files
+-according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/
++according to freedesktop.org standard:
++http://standards.freedesktop.org/desktop-entry-spec/latest/
+ But actually almost none implements this standard fully.  Thus it will
+ highlight all Unix ini files.  But you can force strict highlighting according
+ to standard by placing this in your vimrc file: >
+@@ -870,7 +913,7 @@
+ the following to your .vimrc. >
+ 	:let g:load_doxygen_syntax=1
+ 
+-There are a couple of variables that have an affect on syntax highlighting, and
++There are a couple of variables that have an effect on syntax highlighting, and
+ are to do with non-standard highlighting options.
+ 
+ Variable			Default	Effect ~
+@@ -1892,7 +1935,7 @@
+ 
+    :let pascal_no_functions=1
+ 
+-Furthermore, there are specific variable for some compiler.  Besides
++Furthermore, there are specific variables for some compilers.  Besides
+ pascal_delphi, there are pascal_gpc and pascal_fpc.  Default extensions try to
+ match Turbo Pascal. >
+ 
+@@ -2532,11 +2575,13 @@
+ when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable
+ to a larger number: >
+ 
+-	:let tcsh_minlines = 100
++	:let tcsh_minlines = 1000
+ 
+-This will make the syntax synchronization start 100 lines before the first
+-displayed line.  The default value is 15.  The disadvantage of using a larger
+-number is that redrawing can become slow.
++This will make the syntax synchronization start 1000 lines before the first
++displayed line.  If you set "tcsh_minlines" to "fromstart", then
++synchronization is done from the start of the file. The default value for
++tcsh_minlines is 100.  The disadvantage of using a larger number is that
++redrawing can become slow.
+ 
+ 
+ TEX						*tex.vim* *ft-tex-syntax*
+@@ -2644,7 +2689,7 @@
+ 
+ VIM			*vim.vim*		*ft-vim-syntax*
+ 			*g:vimsyn_minlines*	*g:vimsyn_maxlines*
+-There is a tradeoff between more accurate syntax highlighting versus screen
++There is a trade-off between more accurate syntax highlighting versus screen
+ updating speed.  To improve accuracy, you may wish to increase the
+ g:vimsyn_minlines variable.  The g:vimsyn_maxlines variable may be used to
+ improve screen updating rates (see |:syn-sync| for more on this). >
+@@ -3077,12 +3122,14 @@
+ Not all commands accept all arguments.	This table shows which arguments
+ can not be used for all commands:
+ 							*E395* *E396*
+-		    contains  oneline	fold  display  extend ~
+-:syntax keyword		 -	 -	 -	 -	 -
+-:syntax match		yes	 -	yes	yes	yes
+-:syntax region		yes	yes	yes	yes	yes
++		    contains  oneline	fold  display  extend concealends~
++:syntax keyword		 -	 -	 -	 -	 -      -
++:syntax match		yes	 -	yes	yes	yes     -
++:syntax region		yes	yes	yes	yes	yes    yes
+ 
+ These arguments can be used for all three commands:
++	conceal
++	cchar
+ 	contained
+ 	containedin
+ 	nextgroup
+@@ -3091,6 +3138,30 @@
+ 	skipnl
+ 	skipempty
+ 
++conceal						*conceal* *:syn-conceal*
++
++When the "conceal" argument is given, the item is marked as concealable.
++Whether or not it is actually concealed depends on the value of the
++'conceallevel' option.  If 'modifiable' option is on, concealable items
++in the current line are always displayed unconcealed to be able to edit
++the line.
++
++concealends						*:syn-concealends*
++
++When the "concealends" argument is given, the start and end matches of
++the region, but not the contents of the region, are marked as concealable.
++Whether or not they are actually concealed depends on the setting on the
++'conceallevel' option. The ends of a region can only be concealed separately
++in this way when they have their own highlighting via "matchgroup"
++
++cchar							*:syn-cchar*
++
++The "cchar" argument defines the character shown in place of the item
++when it is concealed (setting "cchar" only makes sense when the conceal
++argument is given.) If "cchar" is not set then the default conceal
++character defined in the 'listchars' option is used. Example: >
++   :syntax match Entity "&amp;" conceal cchar=&
++See |hl-Conceal| for highlighting.
+ 
+ contained						*:syn-contained*
+ 
+@@ -3347,6 +3418,16 @@
+ "contains" arguments to make that work (omitted for simplicity of the
+ example).
+ 
++IMPLICIT CONCEAL					*:syn-conceal-implicit*
++
++:sy[ntax] conceal [on|off]
++	This defines if the following ":syntax" commands will define keywords,
++	matches or regions with the "conceal" flag set. After ":syn conceal
++	on", all subsequent ":syn keyword", ":syn match" or ":syn region"
++	defined will have the "conceal" flag set implicitly. ":syn conceal
++	off" returns to the normal state where the "conceal" flag must be
++	given explicitly.
++
+ ==============================================================================
+ 7. Syntax patterns				*:syn-pattern* *E401* *E402*
+ 
+@@ -3417,8 +3498,9 @@
+ - The highlighted area will never be outside of the matched text.
+ - A negative offset for an end pattern may not always work, because the end
+   pattern may be detected when the highlighting should already have stopped.
+-- Until Vim 7.2 the offsets were counted in bytes instead of characters.  This
+-  didn't work well for multi-byte characters.
++- Before Vim 7.2 the offsets were counted in bytes instead of characters.
++  This didn't work well for multi-byte characters, so it was changed with the
++  Vim 7.2 release.
+ - The start of a match cannot be in a line other than where the pattern
+   matched.  This doesn't work: "a\nb"ms=e.  You can make the highlighting
+   start in another line, this does work: "a\nb"hs=e.
+@@ -3469,7 +3551,8 @@
+ 
+ When using a start pattern with an offset, the start of the match is not
+ allowed to start in a following line.  The highlighting can start in a
+-following line though.
++following line though.  Using the "\zs" item also requires that the start of
++the match doesn't move to another line.
+ 
+ The skip pattern can include the "\n", but the search for an end pattern will
+ continue in the first character of the next line, also when that character is
+@@ -4129,6 +4212,9 @@
+ 'highlight' option default.  Note that the highlighting depends on the value
+ of 'background'.  You can see the current settings with the ":highlight"
+ command.
++							*hl-Conceal*
++Conceal		placeholder characters substituted for concealed
++		text (see 'conceallevel')
+ 							*hl-Cursor*
+ Cursor		the character under the cursor
+ 							*hl-CursorIM*
+@@ -4164,7 +4250,7 @@
+ 		":s///c"
+ 							*hl-LineNr*
+ LineNr		Line number for ":number" and ":#" commands, and when 'number'
+-		option is set.
++		or 'relativenumber' option is set.
+ 							*hl-MatchParen*
+ MatchParen	The character under the cursor or just before it, if it
+ 		is a paired bracket, and its match. |pi_paren.txt|
+@@ -4432,6 +4518,35 @@
+    autocmd BufRead,BufNewFile *.[ch] endif
+ 
+ ==============================================================================
++16. Window-local syntax				*:ownsyntax*
++
++Normally all windows on a buffer share the same syntax settings. It is
++possible, however, to set a particular window on a file to have its own
++private syntax setting. A possible example would be to edit LaTeX source
++with conventional highlighting in one window, while seeing the same source
++highlighted differently (so as to hide control sequences and indicate bold,
++italic etc regions) in another. The 'scrollbind' option is useful here.
++
++To set the current window to have the syntax "foo", separately from all other
++windows on the buffer: >
++   :ownsyntax foo
++<						*w:current_syntax*
++This will set the "w:current_syntax" variable to "foo".  The value of
++"b:current_syntax" does not change.  This is implemented by saving and
++restoring "b:current_syntax", since the syntax files do set
++"b:current_syntax".  The value set by the syntax file is assigned to
++"w:current_syntax".
++
++Once a window has its own syntax, syntax commands executed from other windows
++on the same buffer (including :syntax clear) have no effect. Conversely, 
++syntax commands executed from that window do not effect other windows on the
++same buffer.
++
++A window with its own syntax reverts to normal behavior when another buffer
++is loaded into that window or the file is reloaded.
++When splitting the window, the new window will use the original syntax.
++
++==============================================================================
+ 16. Color xterms				*xterm-color* *color-xterm*
+ 
+ Most color xterms have only eight colors.  If you don't get colors with the
+diff -Nur runtime/doc/syntax.txt.~1~ runtime/doc/syntax.txt.~1~
+diff -Nur runtime/doc/tabpage.txt runtime/doc/tabpage.txt
+--- runtime/doc/tabpage.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/tabpage.txt	2011-04-03 09:27:21.363501059 -0700
+@@ -1,4 +1,4 @@
+-*tabpage.txt*   For Vim version 7.2.  Last change: 2007 Mar 11
++*tabpage.txt*   For Vim version 7.3a.  Last change: 2007 Mar 11
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/tags runtime/doc/tags
+--- runtime/doc/tags	2008-08-09 07:47:14.000000000 -0700
++++ runtime/doc/tags	2011-04-03 09:27:21.368956673 -0700
+@@ -4,10 +4,22 @@
+ $	motion.txt	/*$*
+ $HOME	options.txt	/*$HOME*
+ $HOME-use	version5.txt	/*$HOME-use*
++$MYGVIMRC	gui.txt	/*$MYGVIMRC*
++$MYVIMRC	starting.txt	/*$MYVIMRC*
+ $VIM	starting.txt	/*$VIM*
+ $VIM-use	version5.txt	/*$VIM-use*
+ $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
+ %	motion.txt	/*%*
++%:.	cmdline.txt	/*%:.*
++%:8	cmdline.txt	/*%:8*
++%:e	cmdline.txt	/*%:e*
++%:gs	cmdline.txt	/*%:gs*
++%:h	cmdline.txt	/*%:h*
++%:p	cmdline.txt	/*%:p*
++%:r	cmdline.txt	/*%:r*
++%:s	cmdline.txt	/*%:s*
++%:t	cmdline.txt	/*%:t*
++%:~	cmdline.txt	/*%:~*
+ &	change.txt	/*&*
+ '	motion.txt	/*'*
+ ''	motion.txt	/*''*
+@@ -108,6 +120,7 @@
+ 'cinw'	options.txt	/*'cinw'*
+ 'cinwords'	options.txt	/*'cinwords'*
+ 'clipboard'	options.txt	/*'clipboard'*
++'cm'	options.txt	/*'cm'*
+ 'cmdheight'	options.txt	/*'cmdheight'*
+ 'cmdwinheight'	options.txt	/*'cmdwinheight'*
+ 'cmp'	options.txt	/*'cmp'*
+@@ -121,6 +134,8 @@
+ 'complete'	options.txt	/*'complete'*
+ 'completefunc'	options.txt	/*'completefunc'*
+ 'completeopt'	options.txt	/*'completeopt'*
++'conc'	options.txt	/*'conc'*
++'conceallevel'	options.txt	/*'conceallevel'*
+ 'confirm'	options.txt	/*'confirm'*
+ 'consk'	options.txt	/*'consk'*
+ 'conskey'	options.txt	/*'conskey'*
+@@ -130,6 +145,8 @@
+ 'cpo'	options.txt	/*'cpo'*
+ 'cpoptions'	options.txt	/*'cpoptions'*
+ 'cpt'	options.txt	/*'cpt'*
++'crb'	options.txt	/*'crb'*
++'cryptmethod'	options.txt	/*'cryptmethod'*
+ 'cscopepathcomp'	options.txt	/*'cscopepathcomp'*
+ 'cscopeprg'	options.txt	/*'cscopeprg'*
+ 'cscopequickfix'	options.txt	/*'cscopequickfix'*
+@@ -144,6 +161,7 @@
+ 'csverb'	options.txt	/*'csverb'*
+ 'cuc'	options.txt	/*'cuc'*
+ 'cul'	options.txt	/*'cul'*
++'cursorbind'	options.txt	/*'cursorbind'*
+ 'cursorcolumn'	options.txt	/*'cursorcolumn'*
+ 'cursorline'	options.txt	/*'cursorline'*
+ 'cwh'	options.txt	/*'cwh'*
+@@ -468,12 +486,14 @@
+ 'noconskey'	options.txt	/*'noconskey'*
+ 'nocopyindent'	options.txt	/*'nocopyindent'*
+ 'nocp'	options.txt	/*'nocp'*
++'nocrb'	options.txt	/*'nocrb'*
+ 'nocscopetag'	options.txt	/*'nocscopetag'*
+ 'nocscopeverbose'	options.txt	/*'nocscopeverbose'*
+ 'nocst'	options.txt	/*'nocst'*
+ 'nocsverb'	options.txt	/*'nocsverb'*
+ 'nocuc'	options.txt	/*'nocuc'*
+ 'nocul'	options.txt	/*'nocul'*
++'nocursorbind'	options.txt	/*'nocursorbind'*
+ 'nocursorcolumn'	options.txt	/*'nocursorcolumn'*
+ 'nocursorline'	options.txt	/*'nocursorline'*
+ 'nodeco'	options.txt	/*'nodeco'*
+@@ -481,7 +501,6 @@
+ 'nodg'	options.txt	/*'nodg'*
+ 'nodiff'	options.txt	/*'nodiff'*
+ 'nodigraph'	options.txt	/*'nodigraph'*
+-'nodisable'	options.txt	/*'nodisable'*
+ 'noea'	options.txt	/*'noea'*
+ 'noeb'	options.txt	/*'noeb'*
+ 'noed'	options.txt	/*'noed'*
+@@ -518,6 +537,7 @@
+ 'noimc'	options.txt	/*'noimc'*
+ 'noimcmdline'	options.txt	/*'noimcmdline'*
+ 'noimd'	options.txt	/*'noimd'*
++'noimdisable'	options.txt	/*'noimdisable'*
+ 'noincsearch'	options.txt	/*'noincsearch'*
+ 'noinf'	options.txt	/*'noinf'*
+ 'noinfercase'	options.txt	/*'noinfercase'*
+@@ -557,6 +577,7 @@
+ 'noprompt'	options.txt	/*'noprompt'*
+ 'nopvw'	options.txt	/*'nopvw'*
+ 'noreadonly'	options.txt	/*'noreadonly'*
++'norelativenumber'	options.txt	/*'norelativenumber'*
+ 'noremap'	options.txt	/*'noremap'*
+ 'norestorescreen'	options.txt	/*'norestorescreen'*
+ 'norevins'	options.txt	/*'norevins'*
+@@ -565,6 +586,7 @@
+ 'norightleftcmd'	options.txt	/*'norightleftcmd'*
+ 'norl'	options.txt	/*'norl'*
+ 'norlc'	options.txt	/*'norlc'*
++'nornu'	options.txt	/*'nornu'*
+ 'noro'	options.txt	/*'noro'*
+ 'nors'	options.txt	/*'nors'*
+ 'noru'	options.txt	/*'noru'*
+@@ -706,6 +728,7 @@
+ 'readonly'	options.txt	/*'readonly'*
+ 'redraw'	vi_diff.txt	/*'redraw'*
+ 'redrawtime'	options.txt	/*'redrawtime'*
++'relativenumber'	options.txt	/*'relativenumber'*
+ 'remap'	options.txt	/*'remap'*
+ 'report'	options.txt	/*'report'*
+ 'restorescreen'	options.txt	/*'restorescreen'*
+@@ -715,6 +738,7 @@
+ 'rightleftcmd'	options.txt	/*'rightleftcmd'*
+ 'rl'	options.txt	/*'rl'*
+ 'rlc'	options.txt	/*'rlc'*
++'rnu'	options.txt	/*'rnu'*
+ 'ro'	options.txt	/*'ro'*
+ 'rs'	options.txt	/*'rs'*
+ 'rtp'	options.txt	/*'rtp'*
+@@ -997,7 +1021,11 @@
+ 'tw'	options.txt	/*'tw'*
+ 'tx'	options.txt	/*'tx'*
+ 'uc'	options.txt	/*'uc'*
++'udf'	options.txt	/*'udf'*
++'udir'	options.txt	/*'udir'*
+ 'ul'	options.txt	/*'ul'*
++'undodir'	options.txt	/*'undodir'*
++'undofile'	options.txt	/*'undofile'*
+ 'undolevels'	options.txt	/*'undolevels'*
+ 'updatecount'	options.txt	/*'updatecount'*
+ 'updatetime'	options.txt	/*'updatetime'*
+@@ -1098,8 +1126,10 @@
+ +cmdline_hist	various.txt	/*+cmdline_hist*
+ +cmdline_info	various.txt	/*+cmdline_info*
+ +comments	various.txt	/*+comments*
+++conceal	various.txt	/*+conceal*
+ +cryptv	various.txt	/*+cryptv*
+ +cscope	various.txt	/*+cscope*
+++cursorbind	various.txt	/*+cursorbind*
+ +cursorshape	various.txt	/*+cursorshape*
+ +debug	various.txt	/*+debug*
+ +dialog_con	various.txt	/*+dialog_con*
+@@ -1155,6 +1185,7 @@
+ +path_extra	various.txt	/*+path_extra*
+ +perl	various.txt	/*+perl*
+ +perl/dyn	various.txt	/*+perl\/dyn*
+++persistent_undo	various.txt	/*+persistent_undo*
+ +postscript	various.txt	/*+postscript*
+ +printer	various.txt	/*+printer*
+ +profile	various.txt	/*+profile*
+@@ -1169,6 +1200,7 @@
+ +signs	various.txt	/*+signs*
+ +smartindent	various.txt	/*+smartindent*
+ +sniff	various.txt	/*+sniff*
+++startuptime	various.txt	/*+startuptime*
+ +statusline	various.txt	/*+statusline*
+ +sun_workshop	various.txt	/*+sun_workshop*
+ +syntax	various.txt	/*+syntax*
+@@ -1230,6 +1262,7 @@
+ --serverlist	remote.txt	/*--serverlist*
+ --servername	remote.txt	/*--servername*
+ --socketid	starting.txt	/*--socketid*
++--startuptime	starting.txt	/*--startuptime*
+ --version	starting.txt	/*--version*
+ --windowid	starting.txt	/*--windowid*
+ -A	starting.txt	/*-A*
+@@ -1649,6 +1682,7 @@
+ 32.1	usr_32.txt	/*32.1*
+ 32.2	usr_32.txt	/*32.2*
+ 32.3	usr_32.txt	/*32.3*
++32.4	usr_32.txt	/*32.4*
+ 40.1	usr_40.txt	/*40.1*
+ 40.2	usr_40.txt	/*40.2*
+ 40.3	usr_40.txt	/*40.3*
+@@ -1763,6 +1797,12 @@
+ :Nexplore	pi_netrw.txt	/*:Nexplore*
+ :Next	editing.txt	/*:Next*
+ :NoMatchParen	pi_paren.txt	/*:NoMatchParen*
++:Nr	pi_netrw.txt	/*:Nr*
++:Nread	pi_netrw.txt	/*:Nread*
++:Ns	pi_netrw.txt	/*:Ns*
++:Nsource	pi_netrw.txt	/*:Nsource*
++:Nw	pi_netrw.txt	/*:Nw*
++:Nwrite	pi_netrw.txt	/*:Nwrite*
+ :P	various.txt	/*:P*
+ :Pexplore	pi_netrw.txt	/*:Pexplore*
+ :Print	various.txt	/*:Print*
+@@ -1771,6 +1811,7 @@
+ :Sexplore	pi_netrw.txt	/*:Sexplore*
+ :TOhtml	syntax.txt	/*:TOhtml*
+ :Texplore	pi_netrw.txt	/*:Texplore*
++:Untarvim	pi_tar.txt	/*:Untarvim*
+ :UseVimball	pi_vimball.txt	/*:UseVimball*
+ :Vexplore	pi_netrw.txt	/*:Vexplore*
+ :VimballList	pi_vimball.txt	/*:VimballList*
+@@ -1781,6 +1822,9 @@
+ :_!	cmdline.txt	/*:_!*
+ :_#	cmdline.txt	/*:_#*
+ :_##	cmdline.txt	/*:_##*
++:_#0	cmdline.txt	/*:_#0*
++:_#<	cmdline.txt	/*:_#<*
++:_#n	cmdline.txt	/*:_#n*
+ :_%	cmdline.txt	/*:_%*
+ :_%:	cmdline.txt	/*:_%:*
+ :_%<	cmdline.txt	/*:_%<*
+@@ -1971,7 +2015,7 @@
+ :command-range	map.txt	/*:command-range*
+ :command-register	map.txt	/*:command-register*
+ :command-verbose	map.txt	/*:command-verbose*
+-:comment	eval.txt	/*:comment*
++:comment	cmdline.txt	/*:comment*
+ :comp	quickfix.txt	/*:comp*
+ :compiler	quickfix.txt	/*:compiler*
+ :con	eval.txt	/*:con*
+@@ -2087,11 +2131,12 @@
+ :enew!	editing.txt	/*:enew!*
+ :ex	editing.txt	/*:ex*
+ :exe	eval.txt	/*:exe*
++:exe-comment	eval.txt	/*:exe-comment*
+ :execute	eval.txt	/*:execute*
+ :exi	editing.txt	/*:exi*
+ :exit	editing.txt	/*:exit*
+-:exu	various.txt	/*:exu*
+-:exusage	various.txt	/*:exusage*
++:exu	helphelp.txt	/*:exu*
++:exusage	helphelp.txt	/*:exusage*
+ :f	editing.txt	/*:f*
+ :fi	editing.txt	/*:fi*
+ :file	editing.txt	/*:file*
+@@ -2142,16 +2187,16 @@
+ :gui	gui_x11.txt	/*:gui*
+ :gv	gui_x11.txt	/*:gv*
+ :gvim	gui_x11.txt	/*:gvim*
+-:h	various.txt	/*:h*
++:h	helphelp.txt	/*:h*
+ :ha	print.txt	/*:ha*
+ :hardcopy	print.txt	/*:hardcopy*
+-:help	various.txt	/*:help*
+-:helpf	various.txt	/*:helpf*
+-:helpfind	various.txt	/*:helpfind*
+-:helpg	various.txt	/*:helpg*
+-:helpgrep	various.txt	/*:helpgrep*
+-:helpt	various.txt	/*:helpt*
+-:helptags	various.txt	/*:helptags*
++:help	helphelp.txt	/*:help*
++:helpf	helphelp.txt	/*:helpf*
++:helpfind	helphelp.txt	/*:helpfind*
++:helpg	helphelp.txt	/*:helpg*
++:helpgrep	helphelp.txt	/*:helpgrep*
++:helpt	helphelp.txt	/*:helpt*
++:helptags	helphelp.txt	/*:helptags*
+ :hi	syntax.txt	/*:hi*
+ :hi-default	syntax.txt	/*:hi-default*
+ :hi-link	syntax.txt	/*:hi-link*
+@@ -2273,8 +2318,8 @@
+ :lgrep	quickfix.txt	/*:lgrep*
+ :lgrepa	quickfix.txt	/*:lgrepa*
+ :lgrepadd	quickfix.txt	/*:lgrepadd*
+-:lh	various.txt	/*:lh*
+-:lhelpgrep	various.txt	/*:lhelpgrep*
++:lh	helphelp.txt	/*:lh*
++:lhelpgrep	helphelp.txt	/*:lhelpgrep*
+ :list	various.txt	/*:list*
+ :ll	quickfix.txt	/*:ll*
+ :lla	quickfix.txt	/*:lla*
+@@ -2396,7 +2441,9 @@
+ :mzfile	if_mzsch.txt	/*:mzfile*
+ :mzscheme	if_mzsch.txt	/*:mzscheme*
+ :n	editing.txt	/*:n*
++:nbclose	netbeans.txt	/*:nbclose*
+ :nbkey	netbeans.txt	/*:nbkey*
++:nbstart	netbeans.txt	/*:nbstart*
+ :ne	editing.txt	/*:ne*
+ :new	windows.txt	/*:new*
+ :next	editing.txt	/*:next*
+@@ -2434,6 +2481,8 @@
+ :nunme	gui.txt	/*:nunme*
+ :nunmenu	gui.txt	/*:nunmenu*
+ :o	vi_diff.txt	/*:o*
++:ol	starting.txt	/*:ol*
++:oldfiles	starting.txt	/*:oldfiles*
+ :om	map.txt	/*:om*
+ :omap	map.txt	/*:omap*
+ :omap_l	map.txt	/*:omap_l*
+@@ -2455,6 +2504,7 @@
+ :ounmap	map.txt	/*:ounmap*
+ :ounme	gui.txt	/*:ounme*
+ :ounmenu	gui.txt	/*:ounmenu*
++:ownsyntax	syntax.txt	/*:ownsyntax*
+ :p	various.txt	/*:p*
+ :pc	windows.txt	/*:pc*
+ :pclose	windows.txt	/*:pclose*
+@@ -2528,6 +2578,7 @@
+ :read!	insert.txt	/*:read!*
+ :rec	recover.txt	/*:rec*
+ :recover	recover.txt	/*:recover*
++:recover-crypt	recover.txt	/*:recover-crypt*
+ :red	undo.txt	/*:red*
+ :redi	various.txt	/*:redi*
+ :redir	various.txt	/*:redir*
+@@ -2557,6 +2608,7 @@
+ :rubydo	if_ruby.txt	/*:rubydo*
+ :rubyf	if_ruby.txt	/*:rubyf*
+ :rubyfile	if_ruby.txt	/*:rubyfile*
++:rundo	undo.txt	/*:rundo*
+ :runtime	repeat.txt	/*:runtime*
+ :rv	starting.txt	/*:rv*
+ :rviminfo	starting.txt	/*:rviminfo*
+@@ -2603,6 +2655,7 @@
+ :search-args	tagsrch.txt	/*:search-args*
+ :set	options.txt	/*:set*
+ :set+=	options.txt	/*:set+=*
++:set-!	options.txt	/*:set-!*
+ :set-&	options.txt	/*:set-&*
+ :set-&vi	options.txt	/*:set-&vi*
+ :set-&vim	options.txt	/*:set-&vim*
+@@ -2610,6 +2663,7 @@
+ :set-args	options.txt	/*:set-args*
+ :set-browse	options.txt	/*:set-browse*
+ :set-default	options.txt	/*:set-default*
++:set-inv	options.txt	/*:set-inv*
+ :set-termcap	options.txt	/*:set-termcap*
+ :set-verbose	options.txt	/*:set-verbose*
+ :set^=	options.txt	/*:set^=*
+@@ -2718,8 +2772,12 @@
+ :syn	syntax.txt	/*:syn*
+ :syn-arguments	syntax.txt	/*:syn-arguments*
+ :syn-case	syntax.txt	/*:syn-case*
++:syn-cchar	syntax.txt	/*:syn-cchar*
+ :syn-clear	syntax.txt	/*:syn-clear*
+ :syn-cluster	syntax.txt	/*:syn-cluster*
++:syn-conceal	syntax.txt	/*:syn-conceal*
++:syn-conceal-implicit	syntax.txt	/*:syn-conceal-implicit*
++:syn-concealends	syntax.txt	/*:syn-concealends*
+ :syn-contained	syntax.txt	/*:syn-contained*
+ :syn-containedin	syntax.txt	/*:syn-containedin*
+ :syn-contains	syntax.txt	/*:syn-contains*
+@@ -2862,6 +2920,8 @@
+ :unme	gui.txt	/*:unme*
+ :unmenu	gui.txt	/*:unmenu*
+ :unmenu-all	gui.txt	/*:unmenu-all*
++:uns	various.txt	/*:uns*
++:unsilent	various.txt	/*:unsilent*
+ :up	editing.txt	/*:up*
+ :update	editing.txt	/*:update*
+ :v	repeat.txt	/*:v*
+@@ -2883,8 +2943,8 @@
+ :vimgrepadd	quickfix.txt	/*:vimgrepadd*
+ :visual	editing.txt	/*:visual*
+ :visual_example	visual.txt	/*:visual_example*
+-:viu	various.txt	/*:viu*
+-:viusage	various.txt	/*:viusage*
++:viu	helphelp.txt	/*:viu*
++:viusage	helphelp.txt	/*:viusage*
+ :vm	map.txt	/*:vm*
+ :vmap	map.txt	/*:vmap*
+ :vmap_l	map.txt	/*:vmap_l*
+@@ -2935,6 +2995,7 @@
+ :write_f	editing.txt	/*:write_f*
+ :ws	workshop.txt	/*:ws*
+ :wsverb	workshop.txt	/*:wsverb*
++:wundo	undo.txt	/*:wundo*
+ :wv	starting.txt	/*:wv*
+ :wviminfo	starting.txt	/*:wviminfo*
+ :x	editing.txt	/*:x*
+@@ -3009,7 +3070,7 @@
+ <F17>	term.txt	/*<F17>*
+ <F18>	term.txt	/*<F18>*
+ <F19>	term.txt	/*<F19>*
+-<F1>	various.txt	/*<F1>*
++<F1>	helphelp.txt	/*<F1>*
+ <F2>	term.txt	/*<F2>*
+ <F3>	term.txt	/*<F3>*
+ <F4>	term.txt	/*<F4>*
+@@ -3018,7 +3079,7 @@
+ <F7>	term.txt	/*<F7>*
+ <F8>	term.txt	/*<F8>*
+ <F9>	term.txt	/*<F9>*
+-<Help>	various.txt	/*<Help>*
++<Help>	helphelp.txt	/*<Help>*
+ <Home>	motion.txt	/*<Home>*
+ <Insert>	insert.txt	/*<Insert>*
+ <Leader>	map.txt	/*<Leader>*
+@@ -3384,13 +3445,13 @@
+ E146	change.txt	/*E146*
+ E147	repeat.txt	/*E147*
+ E148	repeat.txt	/*E148*
+-E149	various.txt	/*E149*
++E149	helphelp.txt	/*E149*
+ E15	eval.txt	/*E15*
+-E150	various.txt	/*E150*
+-E151	various.txt	/*E151*
+-E152	various.txt	/*E152*
+-E153	various.txt	/*E153*
+-E154	various.txt	/*E154*
++E150	helphelp.txt	/*E150*
++E151	helphelp.txt	/*E151*
++E152	helphelp.txt	/*E152*
++E153	helphelp.txt	/*E153*
++E154	helphelp.txt	/*E154*
+ E155	sign.txt	/*E155*
+ E156	sign.txt	/*E156*
+ E157	sign.txt	/*E157*
+@@ -3778,6 +3839,7 @@
+ E509	editing.txt	/*E509*
+ E51	pattern.txt	/*E51*
+ E510	editing.txt	/*E510*
++E511	netbeans.txt	/*E511*
+ E512	editing.txt	/*E512*
+ E513	options.txt	/*E513*
+ E514	editing.txt	/*E514*
+@@ -3800,6 +3862,7 @@
+ E53	pattern.txt	/*E53*
+ E530	options.txt	/*E530*
+ E531	options.txt	/*E531*
++E532	netbeans.txt	/*E532*
+ E533	options.txt	/*E533*
+ E534	options.txt	/*E534*
+ E535	options.txt	/*E535*
+@@ -3872,6 +3935,7 @@
+ E596	options.txt	/*E596*
+ E597	options.txt	/*E597*
+ E598	options.txt	/*E598*
++E599	options.txt	/*E599*
+ E60	pattern.txt	/*E60*
+ E600	eval.txt	/*E600*
+ E601	eval.txt	/*E601*
+@@ -3940,7 +4004,7 @@
+ E659	if_pyth.txt	/*E659*
+ E66	syntax.txt	/*E66*
+ E660	netbeans.txt	/*E660*
+-E661	various.txt	/*E661*
++E661	helphelp.txt	/*E661*
+ E662	motion.txt	/*E662*
+ E663	motion.txt	/*E663*
+ E664	motion.txt	/*E664*
+@@ -3950,7 +4014,7 @@
+ E668	netbeans.txt	/*E668*
+ E669	syntax.txt	/*E669*
+ E67	syntax.txt	/*E67*
+-E670	various.txt	/*E670*
++E670	helphelp.txt	/*E670*
+ E671	starting.txt	/*E671*
+ E672	starting.txt	/*E672*
+ E673	print.txt	/*E673*
+@@ -4102,9 +4166,34 @@
+ E806	eval.txt	/*E806*
+ E807	eval.txt	/*E807*
+ E808	eval.txt	/*E808*
++E809	cmdline.txt	/*E809*
+ E81	map.txt	/*E81*
++E810	diff.txt	/*E810*
++E811	autocmd.txt	/*E811*
++E812	autocmd.txt	/*E812*
++E813	editing.txt	/*E813*
++E814	editing.txt	/*E814*
++E815	if_mzsch.txt	/*E815*
++E816	diff.txt	/*E816*
++E817	editing.txt	/*E817*
++E818	editing.txt	/*E818*
++E819	editing.txt	/*E819*
+ E82	message.txt	/*E82*
++E820	editing.txt	/*E820*
++E821	options.txt	/*E821*
++E822	undo.txt	/*E822*
++E823	undo.txt	/*E823*
++E824	undo.txt	/*E824*
++E825	undo.txt	/*E825*
++E826	undo.txt	/*E826*
++E827	undo.txt	/*E827*
++E828	undo.txt	/*E828*
++E829	undo.txt	/*E829*
+ E83	message.txt	/*E83*
++E830	undo.txt	/*E830*
++E831	editing.txt	/*E831*
++E832	undo.txt	/*E832*
++E833	editing.txt	/*E833*
+ E84	windows.txt	/*E84*
+ E85	options.txt	/*E85*
+ E86	windows.txt	/*E86*
+@@ -4214,26 +4303,21 @@
+ N<Del>	various.txt	/*N<Del>*
+ NL-used-for-Nul	pattern.txt	/*NL-used-for-Nul*
+ NetBSD-backspace	options.txt	/*NetBSD-backspace*
++NetUserPass()	pi_netrw.txt	/*NetUserPass()*
+ Normal	intro.txt	/*Normal*
+ Normal-mode	intro.txt	/*Normal-mode*
+-Nread	pi_netrw.txt	/*Nread*
+-Nsource	pi_netrw.txt	/*Nsource*
+ Number	eval.txt	/*Number*
+ Nvi	intro.txt	/*Nvi*
+-Nwrite	pi_netrw.txt	/*Nwrite*
+ O	insert.txt	/*O*
+ OS/2	os_os2.txt	/*OS\/2*
+ OS2	os_os2.txt	/*OS2*
+ OS390	os_390.txt	/*OS390*
+ OS390-Motif	os_390.txt	/*OS390-Motif*
++OS390-PuTTY	os_390.txt	/*OS390-PuTTY*
+ OS390-bugs	os_390.txt	/*OS390-bugs*
+-OS390-building	os_390.txt	/*OS390-building*
+-OS390-changes	os_390.txt	/*OS390-changes*
+-OS390-feedback	os_390.txt	/*OS390-feedback*
+ OS390-has-ebcdic	os_390.txt	/*OS390-has-ebcdic*
++OS390-limitations	os_390.txt	/*OS390-limitations*
+ OS390-open-source	os_390.txt	/*OS390-open-source*
+-OS390-weaknesses	os_390.txt	/*OS390-weaknesses*
+-OS390-xterm	os_390.txt	/*OS390-xterm*
+ OffTheSpot	mbyte.txt	/*OffTheSpot*
+ OnTheSpot	mbyte.txt	/*OnTheSpot*
+ Operator-pending	intro.txt	/*Operator-pending*
+@@ -4304,6 +4388,7 @@
+ Russian	russian.txt	/*Russian*
+ S	change.txt	/*S*
+ SHELL	starting.txt	/*SHELL*
++SQLGetType	ft_sql.txt	/*SQLGetType*
+ SQLSetType	ft_sql.txt	/*SQLSetType*
+ Select	visual.txt	/*Select*
+ Select-mode	visual.txt	/*Select-mode*
+@@ -4510,6 +4595,7 @@
+ abbreviations	map.txt	/*abbreviations*
+ abel.vim	syntax.txt	/*abel.vim*
+ abs()	eval.txt	/*abs()*
++acos()	eval.txt	/*acos()*
+ active-buffer	windows.txt	/*active-buffer*
+ ada#Create_Tags()	ft_ada.txt	/*ada#Create_Tags()*
+ ada#Jump_Tag()	ft_ada.txt	/*ada#Jump_Tag()*
+@@ -4541,6 +4627,7 @@
+ added-6.4	version6.txt	/*added-6.4*
+ added-7.1	version7.txt	/*added-7.1*
+ added-7.2	version7.txt	/*added-7.2*
++added-7.3	version7.txt	/*added-7.3*
+ added-BeOS	version5.txt	/*added-BeOS*
+ added-Mac	version5.txt	/*added-Mac*
+ added-VMS	version5.txt	/*added-VMS*
+@@ -4565,6 +4652,7 @@
+ arabic.txt	arabic.txt	/*arabic.txt*
+ arabicfonts	arabic.txt	/*arabicfonts*
+ arabickeymap	arabic.txt	/*arabickeymap*
++arg-functions	usr_41.txt	/*arg-functions*
+ argc()	eval.txt	/*argc()*
+ argidx()	eval.txt	/*argidx()*
+ arglist	editing.txt	/*arglist*
+@@ -4573,11 +4661,13 @@
+ argument-list	editing.txt	/*argument-list*
+ argv()	eval.txt	/*argv()*
+ as	motion.txt	/*as*
++asin()	eval.txt	/*asin()*
+ asm.vim	syntax.txt	/*asm.vim*
+ asm68k	syntax.txt	/*asm68k*
+ asmh8300.vim	syntax.txt	/*asmh8300.vim*
+ at	motion.txt	/*at*
+ atan()	eval.txt	/*atan()*
++atan2()	eval.txt	/*atan2()*
+ athena-intellimouse	gui.txt	/*athena-intellimouse*
+ attr-list	syntax.txt	/*attr-list*
+ author	intro.txt	/*author*
+@@ -4659,7 +4749,9 @@
+ blockwise-operators	visual.txt	/*blockwise-operators*
+ blockwise-register	change.txt	/*blockwise-register*
+ blockwise-visual	visual.txt	/*blockwise-visual*
++blowfish	options.txt	/*blowfish*
+ bold	syntax.txt	/*bold*
++bom-bytes	mbyte.txt	/*bom-bytes*
+ book	intro.txt	/*book*
+ bookmark	usr_03.txt	/*bookmark*
+ boolean	options.txt	/*boolean*
+@@ -4668,6 +4760,7 @@
+ browsedir()	eval.txt	/*browsedir()*
+ browsefilter	editing.txt	/*browsefilter*
+ bufexists()	eval.txt	/*bufexists()*
++buffer-functions	usr_41.txt	/*buffer-functions*
+ buffer-hidden	windows.txt	/*buffer-hidden*
+ buffer-list	windows.txt	/*buffer-list*
+ buffer-variable	eval.txt	/*buffer-variable*
+@@ -4698,6 +4791,11 @@
+ c	change.txt	/*c*
+ c.vim	syntax.txt	/*c.vim*
+ cW	change.txt	/*cW*
++c_#	cmdline.txt	/*c_#*
++c_##	cmdline.txt	/*c_##*
++c_#<	cmdline.txt	/*c_#<*
++c_#n	cmdline.txt	/*c_#n*
++c_%	cmdline.txt	/*c_%*
+ c_<BS>	cmdline.txt	/*c_<BS>*
+ c_<C-Left>	cmdline.txt	/*c_<C-Left>*
+ c_<C-R>	cmdline.txt	/*c_<C-R>*
+@@ -4733,6 +4831,7 @@
+ c_CTRL-C	cmdline.txt	/*c_CTRL-C*
+ c_CTRL-D	cmdline.txt	/*c_CTRL-D*
+ c_CTRL-E	cmdline.txt	/*c_CTRL-E*
++c_CTRL-F	cmdline.txt	/*c_CTRL-F*
+ c_CTRL-H	cmdline.txt	/*c_CTRL-H*
+ c_CTRL-I	cmdline.txt	/*c_CTRL-I*
+ c_CTRL-J	cmdline.txt	/*c_CTRL-J*
+@@ -4773,6 +4872,7 @@
+ ceil()	eval.txt	/*ceil()*
+ ch.vim	syntax.txt	/*ch.vim*
+ change-list-jumps	motion.txt	/*change-list-jumps*
++change-name	tips.txt	/*change-name*
+ change-tabs	change.txt	/*change-tabs*
+ change.txt	change.txt	/*change.txt*
+ changed-5.1	version5.txt	/*changed-5.1*
+@@ -4789,6 +4889,7 @@
+ changed-6.4	version6.txt	/*changed-6.4*
+ changed-7.1	version7.txt	/*changed-7.1*
+ changed-7.2	version7.txt	/*changed-7.2*
++changed-7.3	version7.txt	/*changed-7.3*
+ changelist	motion.txt	/*changelist*
+ changelog.vim	syntax.txt	/*changelog.vim*
+ changenr()	eval.txt	/*changenr()*
+@@ -4808,6 +4909,7 @@
+ cindent()	eval.txt	/*cindent()*
+ cinkeys-format	indent.txt	/*cinkeys-format*
+ cinoptions-values	indent.txt	/*cinoptions-values*
++clear-undo	undo.txt	/*clear-undo*
+ clearmatches()	eval.txt	/*clearmatches()*
+ client-server	remote.txt	/*client-server*
+ clientserver	remote.txt	/*clientserver*
+@@ -4836,6 +4938,8 @@
+ color-xterm	syntax.txt	/*color-xterm*
+ coloring	syntax.txt	/*coloring*
+ colortest.vim	syntax.txt	/*colortest.vim*
++command-line-functions	usr_41.txt	/*command-line-functions*
++command-line-window	cmdline.txt	/*command-line-window*
+ command-mode	intro.txt	/*command-mode*
+ compatible-default	starting.txt	/*compatible-default*
+ compile-changes-5	version5.txt	/*compile-changes-5*
+@@ -4872,9 +4976,11 @@
+ complete_CTRL-Y	insert.txt	/*complete_CTRL-Y*
+ complete_add()	eval.txt	/*complete_add()*
+ complete_check()	eval.txt	/*complete_check()*
++completion-functions	usr_41.txt	/*completion-functions*
+ complex-change	change.txt	/*complex-change*
+ complex-repeat	repeat.txt	/*complex-repeat*
+ compress	pi_gzip.txt	/*compress*
++conceal	syntax.txt	/*conceal*
+ confirm()	eval.txt	/*confirm()*
+ connection-refused	message.txt	/*connection-refused*
+ console-menus	gui.txt	/*console-menus*
+@@ -4889,6 +4995,7 @@
+ copying	uganda.txt	/*copying*
+ copyright	uganda.txt	/*copyright*
+ cos()	eval.txt	/*cos()*
++cosh()	eval.txt	/*cosh()*
+ count	intro.txt	/*count*
+ count()	eval.txt	/*count()*
+ count-bytes	tips.txt	/*count-bytes*
+@@ -4998,6 +5105,7 @@
+ cursor()	eval.txt	/*cursor()*
+ cursor-blinking	options.txt	/*cursor-blinking*
+ cursor-down	intro.txt	/*cursor-down*
++cursor-functions	usr_41.txt	/*cursor-functions*
+ cursor-left	intro.txt	/*cursor-left*
+ cursor-motions	motion.txt	/*cursor-motions*
+ cursor-position	pattern.txt	/*cursor-position*
+@@ -5016,12 +5124,14 @@
+ dab	motion.txt	/*dab*
+ dap	motion.txt	/*dap*
+ das	motion.txt	/*das*
++date-functions	usr_41.txt	/*date-functions*
+ dav	pi_netrw.txt	/*dav*
+ davs	pi_netrw.txt	/*davs*
+ daw	motion.txt	/*daw*
+ dd	change.txt	/*dd*
+ debug-gcc	debug.txt	/*debug-gcc*
+ debug-highlight	debugger.txt	/*debug-highlight*
++debug-leaks	debug.txt	/*debug-leaks*
+ debug-minidump	debug.txt	/*debug-minidump*
+ debug-mode	repeat.txt	/*debug-mode*
+ debug-scripts	repeat.txt	/*debug-scripts*
+@@ -5067,6 +5177,7 @@
+ dialog	gui_w32.txt	/*dialog*
+ dialogs-added	version5.txt	/*dialogs-added*
+ dib	motion.txt	/*dib*
++dict-functions	usr_41.txt	/*dict-functions*
+ dict-identity	eval.txt	/*dict-identity*
+ dict-modification	eval.txt	/*dict-modification*
+ did_filetype()	eval.txt	/*did_filetype()*
+@@ -5208,6 +5319,7 @@
+ execute-menus	gui.txt	/*execute-menus*
+ exim	starting.txt	/*exim*
+ exists()	eval.txt	/*exists()*
++exp()	eval.txt	/*exp()*
+ expand()	eval.txt	/*expand()*
+ expand-env	options.txt	/*expand-env*
+ expand-environment-var	options.txt	/*expand-environment-var*
+@@ -5290,6 +5402,7 @@
+ fetch	pi_netrw.txt	/*fetch*
+ file-browser-5.2	version5.txt	/*file-browser-5.2*
+ file-formats	editing.txt	/*file-formats*
++file-functions	usr_41.txt	/*file-functions*
+ file-pattern	autocmd.txt	/*file-pattern*
+ file-read	insert.txt	/*file-read*
+ file-searching	editing.txt	/*file-searching*
+@@ -5330,13 +5443,16 @@
+ fixed-6.4	version6.txt	/*fixed-6.4*
+ fixed-7.1	version7.txt	/*fixed-7.1*
+ fixed-7.2	version7.txt	/*fixed-7.2*
++fixed-7.3	version7.txt	/*fixed-7.3*
+ flexwiki.vim	syntax.txt	/*flexwiki.vim*
+ float-e	eval.txt	/*float-e*
++float-functions	usr_41.txt	/*float-functions*
+ float-pi	eval.txt	/*float-pi*
+ float2nr()	eval.txt	/*float2nr()*
+ floating-point-format	eval.txt	/*floating-point-format*
+ floating-point-precision	eval.txt	/*floating-point-precision*
+ floor()	eval.txt	/*floor()*
++fmod()	eval.txt	/*fmod()*
+ fname_diff-variable	eval.txt	/*fname_diff-variable*
+ fname_in-variable	eval.txt	/*fname_in-variable*
+ fname_new-variable	eval.txt	/*fname_new-variable*
+@@ -5366,8 +5482,10 @@
+ folddashes-variable	eval.txt	/*folddashes-variable*
+ foldend-variable	eval.txt	/*foldend-variable*
+ folding	fold.txt	/*folding*
++folding-functions	usr_41.txt	/*folding-functions*
+ foldlevel()	eval.txt	/*foldlevel()*
+ foldlevel-variable	eval.txt	/*foldlevel-variable*
++folds	fold.txt	/*folds*
+ foldstart-variable	eval.txt	/*foldstart-variable*
+ foldtext()	eval.txt	/*foldtext()*
+ foldtextresult()	eval.txt	/*foldtextresult()*
+@@ -5512,7 +5630,6 @@
+ ft-xml-syntax	syntax.txt	/*ft-xml-syntax*
+ ft-xpm-syntax	syntax.txt	/*ft-xpm-syntax*
+ ft_ada.txt	ft_ada.txt	/*ft_ada.txt*
+-ft_sql.txt	ft_sql.txt	/*ft_sql.txt*
+ ftdetect	filetype.txt	/*ftdetect*
+ ftp	pi_netrw.txt	/*ftp*
+ ftplugin	usr_41.txt	/*ftplugin*
+@@ -5544,6 +5661,7 @@
+ g0	motion.txt	/*g0*
+ g8	various.txt	/*g8*
+ g:NetrwTopLvlMenu	pi_netrw.txt	/*g:NetrwTopLvlMenu*
++g:Netrw_funcref	pi_netrw.txt	/*g:Netrw_funcref*
+ g:ada#Comment	ft_ada.txt	/*g:ada#Comment*
+ g:ada#Ctags_Kinds	ft_ada.txt	/*g:ada#Ctags_Kinds*
+ g:ada#DotWordRegex	ft_ada.txt	/*g:ada#DotWordRegex*
+@@ -5586,14 +5704,17 @@
+ g:gnat.Tags_Command	ft_ada.txt	/*g:gnat.Tags_Command*
+ g:netrw_alto	pi_netrw.txt	/*g:netrw_alto*
+ g:netrw_altv	pi_netrw.txt	/*g:netrw_altv*
++g:netrw_banner	pi_netrw.txt	/*g:netrw_banner*
+ g:netrw_browse_split	pi_netrw.txt	/*g:netrw_browse_split*
+ g:netrw_browsex_viewer	pi_netrw.txt	/*g:netrw_browsex_viewer*
++g:netrw_chgperm	pi_netrw.txt	/*g:netrw_chgperm*
++g:netrw_chgwin	pi_netrw.txt	/*g:netrw_chgwin*
+ g:netrw_compress	pi_netrw.txt	/*g:netrw_compress*
+ g:netrw_ctags	pi_netrw.txt	/*g:netrw_ctags*
++g:netrw_cursorline	pi_netrw.txt	/*g:netrw_cursorline*
+ g:netrw_cygwin	pi_netrw.txt	/*g:netrw_cygwin*
+ g:netrw_dav_cmd	pi_netrw.txt	/*g:netrw_dav_cmd*
+ g:netrw_decompress	pi_netrw.txt	/*g:netrw_decompress*
+-g:netrw_extracmd	pi_netrw.txt	/*g:netrw_extracmd*
+ g:netrw_fastbrowse	pi_netrw.txt	/*g:netrw_fastbrowse*
+ g:netrw_fetch_cmd	pi_netrw.txt	/*g:netrw_fetch_cmd*
+ g:netrw_fname_escape	pi_netrw.txt	/*g:netrw_fname_escape*
+@@ -5603,10 +5724,13 @@
+ g:netrw_ftp_list_cmd	pi_netrw.txt	/*g:netrw_ftp_list_cmd*
+ g:netrw_ftp_sizelist_cmd	pi_netrw.txt	/*g:netrw_ftp_sizelist_cmd*
+ g:netrw_ftp_timelist_cmd	pi_netrw.txt	/*g:netrw_ftp_timelist_cmd*
++g:netrw_ftpextracmd	pi_netrw.txt	/*g:netrw_ftpextracmd*
+ g:netrw_ftpmode	pi_netrw.txt	/*g:netrw_ftpmode*
+ g:netrw_glob_escape	pi_netrw.txt	/*g:netrw_glob_escape*
+ g:netrw_hide	pi_netrw.txt	/*g:netrw_hide*
++g:netrw_home	pi_netrw.txt	/*g:netrw_home*
+ g:netrw_http_cmd	pi_netrw.txt	/*g:netrw_http_cmd*
++g:netrw_http_xcmd	pi_netrw.txt	/*g:netrw_http_xcmd*
+ g:netrw_ignorenetrc	pi_netrw.txt	/*g:netrw_ignorenetrc*
+ g:netrw_keepdir	pi_netrw.txt	/*g:netrw_keepdir*
+ g:netrw_list_cmd	pi_netrw.txt	/*g:netrw_list_cmd*
+@@ -5619,6 +5743,7 @@
+ g:netrw_maxfilenamelen	pi_netrw.txt	/*g:netrw_maxfilenamelen*
+ g:netrw_menu	pi_netrw.txt	/*g:netrw_menu*
+ g:netrw_mkdir_cmd	pi_netrw.txt	/*g:netrw_mkdir_cmd*
++g:netrw_mousemaps	pi_netrw.txt	/*g:netrw_mousemaps*
+ g:netrw_nogx	pi_netrw.txt	/*g:netrw_nogx*
+ g:netrw_preview	pi_netrw.txt	/*g:netrw_preview*
+ g:netrw_rcp_cmd	pi_netrw.txt	/*g:netrw_rcp_cmd*
+@@ -5629,6 +5754,7 @@
+ g:netrw_rsync_cmd	pi_netrw.txt	/*g:netrw_rsync_cmd*
+ g:netrw_scp_cmd	pi_netrw.txt	/*g:netrw_scp_cmd*
+ g:netrw_scpport	pi_netrw.txt	/*g:netrw_scpport*
++g:netrw_sepchr	pi_netrw.txt	/*g:netrw_sepchr*
+ g:netrw_sftp_cmd	pi_netrw.txt	/*g:netrw_sftp_cmd*
+ g:netrw_silent	pi_netrw.txt	/*g:netrw_silent*
+ g:netrw_sort_by	pi_netrw.txt	/*g:netrw_sort_by*
+@@ -5650,6 +5776,8 @@
+ g:netrw_xstrlen	pi_netrw.txt	/*g:netrw_xstrlen*
+ g:tar_browseoptions	pi_tar.txt	/*g:tar_browseoptions*
+ g:tar_cmd	pi_tar.txt	/*g:tar_cmd*
++g:tar_copycmd	pi_tar.txt	/*g:tar_copycmd*
++g:tar_extractcmd	pi_tar.txt	/*g:tar_extractcmd*
+ g:tar_nomax	pi_tar.txt	/*g:tar_nomax*
+ g:tar_readoptions	pi_tar.txt	/*g:tar_readoptions*
+ g:tar_secure	pi_tar.txt	/*g:tar_secure*
+@@ -5657,7 +5785,6 @@
+ g:var	eval.txt	/*g:var*
+ g:vimball_home	pi_vimball.txt	/*g:vimball_home*
+ g:vimball_mkdir	pi_vimball.txt	/*g:vimball_mkdir*
+-g:vimball_path_escape	pi_vimball.txt	/*g:vimball_path_escape*
+ g:vimsyn_embed	syntax.txt	/*g:vimsyn_embed*
+ g:vimsyn_folding	syntax.txt	/*g:vimsyn_folding*
+ g:vimsyn_maxlines	syntax.txt	/*g:vimsyn_maxlines*
+@@ -5736,6 +5863,7 @@
+ getscript-history	pi_getscript.txt	/*getscript-history*
+ getscript-plugins	pi_getscript.txt	/*getscript-plugins*
+ getscript-start	pi_getscript.txt	/*getscript-start*
++gettabvar()	eval.txt	/*gettabvar()*
+ gettabwinvar()	eval.txt	/*gettabwinvar()*
+ getwinposx()	eval.txt	/*getwinposx()*
+ getwinposy()	eval.txt	/*getwinposy()*
+@@ -5798,6 +5926,7 @@
+ gui-extras	gui.txt	/*gui-extras*
+ gui-footer	debugger.txt	/*gui-footer*
+ gui-fork	gui_x11.txt	/*gui-fork*
++gui-functions	usr_41.txt	/*gui-functions*
+ gui-gnome	gui_x11.txt	/*gui-gnome*
+ gui-gnome-session	gui_x11.txt	/*gui-gnome-session*
+ gui-gtk	gui_x11.txt	/*gui-gtk*
+@@ -5877,13 +6006,17 @@
+ hasmapto()	eval.txt	/*hasmapto()*
+ hebrew	hebrew.txt	/*hebrew*
+ hebrew.txt	hebrew.txt	/*hebrew.txt*
+-help	various.txt	/*help*
++help	helphelp.txt	/*help*
+ help-context	help.txt	/*help-context*
+ help-summary	usr_02.txt	/*help-summary*
+ help-tags	tags	1
+-help-translated	various.txt	/*help-translated*
+-help-xterm-window	various.txt	/*help-xterm-window*
++help-translated	helphelp.txt	/*help-translated*
++help-writing	helphelp.txt	/*help-writing*
++help-xterm-window	helphelp.txt	/*help-xterm-window*
+ help.txt	help.txt	/*help.txt*
++helpfile_name.txt	helphelp.txt	/*helpfile_name.txt*
++helphelp	helphelp.txt	/*helphelp*
++helphelp.txt	helphelp.txt	/*helphelp.txt*
+ hex-editing	tips.txt	/*hex-editing*
+ hidden-buffer	windows.txt	/*hidden-buffer*
+ hidden-changed	version5.txt	/*hidden-changed*
+@@ -5907,17 +6040,20 @@
+ highlight-term	syntax.txt	/*highlight-term*
+ highlightID()	eval.txt	/*highlightID()*
+ highlight_exists()	eval.txt	/*highlight_exists()*
++highlighting-functions	usr_41.txt	/*highlighting-functions*
+ hist-names	eval.txt	/*hist-names*
+ histadd()	eval.txt	/*histadd()*
+ histdel()	eval.txt	/*histdel()*
+ histget()	eval.txt	/*histget()*
+ histnr()	eval.txt	/*histnr()*
+ history	cmdline.txt	/*history*
++history-functions	usr_41.txt	/*history-functions*
+ hit-enter	message.txt	/*hit-enter*
+ hit-enter-prompt	message.txt	/*hit-enter-prompt*
+ hit-return	message.txt	/*hit-return*
+ hitest.vim	syntax.txt	/*hitest.vim*
+ hjkl	usr_02.txt	/*hjkl*
++hl-Conceal	syntax.txt	/*hl-Conceal*
+ hl-Cursor	syntax.txt	/*hl-Cursor*
+ hl-CursorColumn	syntax.txt	/*hl-CursorColumn*
+ hl-CursorIM	syntax.txt	/*hl-CursorIM*
+@@ -6006,8 +6142,8 @@
+ i_<Down>	insert.txt	/*i_<Down>*
+ i_<End>	insert.txt	/*i_<End>*
+ i_<Esc>	insert.txt	/*i_<Esc>*
+-i_<F1>	various.txt	/*i_<F1>*
+-i_<Help>	various.txt	/*i_<Help>*
++i_<F1>	helphelp.txt	/*i_<F1>*
++i_<Help>	helphelp.txt	/*i_<Help>*
+ i_<Home>	insert.txt	/*i_<Home>*
+ i_<Insert>	insert.txt	/*i_<Insert>*
+ i_<Left>	insert.txt	/*i_<Left>*
+@@ -6054,6 +6190,7 @@
+ i_CTRL-P	insert.txt	/*i_CTRL-P*
+ i_CTRL-Q	insert.txt	/*i_CTRL-Q*
+ i_CTRL-R	insert.txt	/*i_CTRL-R*
++i_CTRL-R_=	insert.txt	/*i_CTRL-R_=*
+ i_CTRL-R_CTRL-O	insert.txt	/*i_CTRL-R_CTRL-O*
+ i_CTRL-R_CTRL-P	insert.txt	/*i_CTRL-R_CTRL-P*
+ i_CTRL-R_CTRL-R	insert.txt	/*i_CTRL-R_CTRL-R*
+@@ -6171,6 +6308,7 @@
+ install-registry	gui_w32.txt	/*install-registry*
+ intel-itanium	syntax.txt	/*intel-itanium*
+ intellimouse-wheel-problems	gui_w32.txt	/*intellimouse-wheel-problems*
++interactive-functions	usr_41.txt	/*interactive-functions*
+ interfaces-5.2	version5.txt	/*interfaces-5.2*
+ internal-variables	eval.txt	/*internal-variables*
+ internal-wordlist	spell.txt	/*internal-wordlist*
+@@ -6193,6 +6331,8 @@
+ java-cinoptions	indent.txt	/*java-cinoptions*
+ java-indenting	indent.txt	/*java-indenting*
+ java.vim	syntax.txt	/*java.vim*
++javascript-cinoptions	indent.txt	/*javascript-cinoptions*
++javascript-indenting	indent.txt	/*javascript-indenting*
+ join()	eval.txt	/*join()*
+ jsbterm-mouse	options.txt	/*jsbterm-mouse*
+ jtags	tagsrch.txt	/*jtags*
+@@ -6228,6 +6368,7 @@
+ known-bugs	todo.txt	/*known-bugs*
+ l	motion.txt	/*l*
+ l:var	eval.txt	/*l:var*
++lCursor	mbyte.txt	/*lCursor*
+ lace.vim	syntax.txt	/*lace.vim*
+ lang-variable	eval.txt	/*lang-variable*
+ language-mapping	map.txt	/*language-mapping*
+@@ -6255,6 +6396,7 @@
+ linewise-visual	visual.txt	/*linewise-visual*
+ lisp.vim	syntax.txt	/*lisp.vim*
+ lispindent()	eval.txt	/*lispindent()*
++list-functions	usr_41.txt	/*list-functions*
+ list-identity	eval.txt	/*list-identity*
+ list-index	eval.txt	/*list-index*
+ list-modification	eval.txt	/*list-modification*
+@@ -6275,6 +6417,7 @@
+ localtime()	eval.txt	/*localtime()*
+ location-list	quickfix.txt	/*location-list*
+ location-list-window	quickfix.txt	/*location-list-window*
++log()	eval.txt	/*log()*
+ log10()	eval.txt	/*log10()*
+ long-lines	version5.txt	/*long-lines*
+ lowercase	change.txt	/*lowercase*
+@@ -6339,6 +6482,7 @@
+ mapmode-x	map.txt	/*mapmode-x*
+ mapping	map.txt	/*mapping*
+ mark	motion.txt	/*mark*
++mark-functions	usr_41.txt	/*mark-functions*
+ mark-motions	motion.txt	/*mark-motions*
+ markfilelist	pi_netrw.txt	/*markfilelist*
+ masm.vim	syntax.txt	/*masm.vim*
+@@ -6442,11 +6586,13 @@
+ mysyntaxfile	syntax.txt	/*mysyntaxfile*
+ mysyntaxfile-add	syntax.txt	/*mysyntaxfile-add*
+ mysyntaxfile-replace	syntax.txt	/*mysyntaxfile-replace*
++mzeval()	eval.txt	/*mzeval()*
+ mzscheme	if_mzsch.txt	/*mzscheme*
+ mzscheme-buffer	if_mzsch.txt	/*mzscheme-buffer*
+ mzscheme-commands	if_mzsch.txt	/*mzscheme-commands*
+ mzscheme-dynamic	if_mzsch.txt	/*mzscheme-dynamic*
+ mzscheme-examples	if_mzsch.txt	/*mzscheme-examples*
++mzscheme-mzeval	if_mzsch.txt	/*mzscheme-mzeval*
+ mzscheme-sandbox	if_mzsch.txt	/*mzscheme-sandbox*
+ mzscheme-threads	if_mzsch.txt	/*mzscheme-threads*
+ mzscheme-vim	if_mzsch.txt	/*mzscheme-vim*
+@@ -6464,14 +6610,15 @@
+ nb-terms	netbeans.txt	/*nb-terms*
+ ncf.vim	syntax.txt	/*ncf.vim*
+ netbeans	netbeans.txt	/*netbeans*
++netbeans-commands	netbeans.txt	/*netbeans-commands*
+ netbeans-configure	netbeans.txt	/*netbeans-configure*
+ netbeans-debugging	netbeans.txt	/*netbeans-debugging*
+ netbeans-download	netbeans.txt	/*netbeans-download*
+ netbeans-integration	netbeans.txt	/*netbeans-integration*
+ netbeans-intro	netbeans.txt	/*netbeans-intro*
+-netbeans-key	netbeans.txt	/*netbeans-key*
+ netbeans-keybindings	netbeans.txt	/*netbeans-keybindings*
+ netbeans-messages	netbeans.txt	/*netbeans-messages*
++netbeans-parameters	netbeans.txt	/*netbeans-parameters*
+ netbeans-preparation	netbeans.txt	/*netbeans-preparation*
+ netbeans-problems	netbeans.txt	/*netbeans-problems*
+ netbeans-protocol	netbeans.txt	/*netbeans-protocol*
+@@ -6483,11 +6630,13 @@
+ netrw	pi_netrw.txt	/*netrw*
+ netrw-%	pi_netrw.txt	/*netrw-%*
+ netrw--	pi_netrw.txt	/*netrw--*
++netrw-C	pi_netrw.txt	/*netrw-C*
+ netrw-D	pi_netrw.txt	/*netrw-D*
+ netrw-O	pi_netrw.txt	/*netrw-O*
+ netrw-P	pi_netrw.txt	/*netrw-P*
+ netrw-R	pi_netrw.txt	/*netrw-R*
+ netrw-S	pi_netrw.txt	/*netrw-S*
++netrw-T	pi_netrw.txt	/*netrw-T*
+ netrw-U	pi_netrw.txt	/*netrw-U*
+ netrw-a	pi_netrw.txt	/*netrw-a*
+ netrw-activate	pi_netrw.txt	/*netrw-activate*
+@@ -6505,6 +6654,7 @@
+ netrw-chgup	pi_netrw.txt	/*netrw-chgup*
+ netrw-clean	pi_netrw.txt	/*netrw-clean*
+ netrw-contents	pi_netrw.txt	/*netrw-contents*
++netrw-copyright	pi_netrw.txt	/*netrw-copyright*
+ netrw-cr	pi_netrw.txt	/*netrw-cr*
+ netrw-credits	pi_netrw.txt	/*netrw-credits*
+ netrw-ctrl-h	pi_netrw.txt	/*netrw-ctrl-h*
+@@ -6524,10 +6674,14 @@
+ netrw-explore-cmds	pi_netrw.txt	/*netrw-explore-cmds*
+ netrw-externapp	pi_netrw.txt	/*netrw-externapp*
+ netrw-file	pi_netrw.txt	/*netrw-file*
++netrw-filigree	pi_netrw.txt	/*netrw-filigree*
+ netrw-fixup	pi_netrw.txt	/*netrw-fixup*
+ netrw-ftp	pi_netrw.txt	/*netrw-ftp*
++netrw-ftype	pi_netrw.txt	/*netrw-ftype*
+ netrw-gb	pi_netrw.txt	/*netrw-gb*
++netrw-getftype	pi_netrw.txt	/*netrw-getftype*
+ netrw-gh	pi_netrw.txt	/*netrw-gh*
++netrw-gp	pi_netrw.txt	/*netrw-gp*
+ netrw-gx	pi_netrw.txt	/*netrw-gx*
+ netrw-handler	pi_netrw.txt	/*netrw-handler*
+ netrw-help	pi_netrw.txt	/*netrw-help*
+@@ -6539,10 +6693,12 @@
+ netrw-i	pi_netrw.txt	/*netrw-i*
+ netrw-incompatible	pi_netrw.txt	/*netrw-incompatible*
+ netrw-intro-browse	pi_netrw.txt	/*netrw-intro-browse*
++netrw-leftmouse	pi_netrw.txt	/*netrw-leftmouse*
+ netrw-list	pi_netrw.txt	/*netrw-list*
+ netrw-listbookmark	pi_netrw.txt	/*netrw-listbookmark*
+ netrw-listhack	pi_netrw.txt	/*netrw-listhack*
+ netrw-login	pi_netrw.txt	/*netrw-login*
++netrw-mB	pi_netrw.txt	/*netrw-mB*
+ netrw-mT	pi_netrw.txt	/*netrw-mT*
+ netrw-mb	pi_netrw.txt	/*netrw-mb*
+ netrw-mc	pi_netrw.txt	/*netrw-mc*
+@@ -6551,8 +6707,10 @@
+ netrw-mf	pi_netrw.txt	/*netrw-mf*
+ netrw-mg	pi_netrw.txt	/*netrw-mg*
+ netrw-mh	pi_netrw.txt	/*netrw-mh*
++netrw-middlemouse	pi_netrw.txt	/*netrw-middlemouse*
+ netrw-ml_get	pi_netrw.txt	/*netrw-ml_get*
+ netrw-mm	pi_netrw.txt	/*netrw-mm*
++netrw-mouse	pi_netrw.txt	/*netrw-mouse*
+ netrw-move	pi_netrw.txt	/*netrw-move*
+ netrw-mp	pi_netrw.txt	/*netrw-mp*
+ netrw-mr	pi_netrw.txt	/*netrw-mr*
+@@ -6563,6 +6721,7 @@
+ netrw-mz	pi_netrw.txt	/*netrw-mz*
+ netrw-netrc	pi_netrw.txt	/*netrw-netrc*
+ netrw-nexplore	pi_netrw.txt	/*netrw-nexplore*
++netrw-noload	pi_netrw.txt	/*netrw-noload*
+ netrw-nread	pi_netrw.txt	/*netrw-nread*
+ netrw-nwrite	pi_netrw.txt	/*netrw-nwrite*
+ netrw-o	pi_netrw.txt	/*netrw-o*
+@@ -6571,6 +6730,8 @@
+ netrw-p1	pi_netrw.txt	/*netrw-p1*
+ netrw-p10	pi_netrw.txt	/*netrw-p10*
+ netrw-p11	pi_netrw.txt	/*netrw-p11*
++netrw-p12	pi_netrw.txt	/*netrw-p12*
++netrw-p13	pi_netrw.txt	/*netrw-p13*
+ netrw-p2	pi_netrw.txt	/*netrw-p2*
+ netrw-p3	pi_netrw.txt	/*netrw-p3*
+ netrw-p4	pi_netrw.txt	/*netrw-p4*
+@@ -6603,6 +6764,7 @@
+ netrw-rename	pi_netrw.txt	/*netrw-rename*
+ netrw-reverse	pi_netrw.txt	/*netrw-reverse*
+ netrw-rexplore	pi_netrw.txt	/*netrw-rexplore*
++netrw-rightmouse	pi_netrw.txt	/*netrw-rightmouse*
+ netrw-s	pi_netrw.txt	/*netrw-s*
+ netrw-settings	pi_netrw.txt	/*netrw-settings*
+ netrw-sexplore	pi_netrw.txt	/*netrw-sexplore*
+@@ -6617,9 +6779,9 @@
+ netrw-start	pi_netrw.txt	/*netrw-start*
+ netrw-t	pi_netrw.txt	/*netrw-t*
+ netrw-texplore	pi_netrw.txt	/*netrw-texplore*
++netrw-todo	pi_netrw.txt	/*netrw-todo*
+ netrw-transparent	pi_netrw.txt	/*netrw-transparent*
+ netrw-u	pi_netrw.txt	/*netrw-u*
+-netrw-uidpass	pi_netrw.txt	/*netrw-uidpass*
+ netrw-updir	pi_netrw.txt	/*netrw-updir*
+ netrw-urls	pi_netrw.txt	/*netrw-urls*
+ netrw-userpass	pi_netrw.txt	/*netrw-userpass*
+@@ -6732,6 +6894,9 @@
+ objects	index.txt	/*objects*
+ obtaining-exted	netbeans.txt	/*obtaining-exted*
+ ocaml.vim	syntax.txt	/*ocaml.vim*
++octal	eval.txt	/*octal*
++octal-number	options.txt	/*octal-number*
++oldfiles-variable	eval.txt	/*oldfiles-variable*
+ ole-activation	if_ole.txt	/*ole-activation*
+ ole-eval	if_ole.txt	/*ole-eval*
+ ole-gethwnd	if_ole.txt	/*ole-gethwnd*
+@@ -6743,7 +6908,7 @@
+ ole-setforeground	if_ole.txt	/*ole-setforeground*
+ omap-info	map.txt	/*omap-info*
+ omni-sql-completion	ft_sql.txt	/*omni-sql-completion*
+-online-help	various.txt	/*online-help*
++online-help	helphelp.txt	/*online-help*
+ opening-window	windows.txt	/*opening-window*
+ operator	motion.txt	/*operator*
+ operator-variable	eval.txt	/*operator-variable*
+@@ -6815,6 +6980,7 @@
+ perl-patterns	pattern.txt	/*perl-patterns*
+ perl-using	if_perl.txt	/*perl-using*
+ perl.vim	syntax.txt	/*perl.vim*
++persistent-undo	undo.txt	/*persistent-undo*
+ pexpr-option	print.txt	/*pexpr-option*
+ pfn-option	print.txt	/*pfn-option*
+ pheader-option	print.txt	/*pheader-option*
+@@ -6834,6 +7000,7 @@
+ pi_tar.txt	pi_tar.txt	/*pi_tar.txt*
+ pi_vimball.txt	pi_vimball.txt	/*pi_vimball.txt*
+ pi_zip.txt	pi_zip.txt	/*pi_zip.txt*
++pkzip	options.txt	/*pkzip*
+ plaintex.vim	syntax.txt	/*plaintex.vim*
+ plsql	ft_sql.txt	/*plsql*
+ plugin	usr_05.txt	/*plugin*
+@@ -6852,7 +7019,7 @@
+ posix	vi_diff.txt	/*posix*
+ posix-compliance	vi_diff.txt	/*posix-compliance*
+ posix-screen-size	vi_diff.txt	/*posix-screen-size*
+-postgres	ft_sql.txt	/*postgres*
++postgress	ft_sql.txt	/*postgress*
+ postscr.vim	syntax.txt	/*postscr.vim*
+ postscript-cjk-printing	print.txt	/*postscript-cjk-printing*
+ postscript-print-encoding	print.txt	/*postscript-print-encoding*
+@@ -6889,6 +7056,7 @@
+ profiling-variable	eval.txt	/*profiling-variable*
+ progname-variable	eval.txt	/*progname-variable*
+ progress.vim	syntax.txt	/*progress.vim*
++pronounce	intro.txt	/*pronounce*
+ psql	ft_sql.txt	/*psql*
+ ptcap.vim	syntax.txt	/*ptcap.vim*
+ pterm-mouse	options.txt	/*pterm-mouse*
+@@ -6925,6 +7093,7 @@
+ quickfix-6	version6.txt	/*quickfix-6*
+ quickfix-directory-stack	quickfix.txt	/*quickfix-directory-stack*
+ quickfix-error-lists	quickfix.txt	/*quickfix-error-lists*
++quickfix-functions	usr_41.txt	/*quickfix-functions*
+ quickfix-gcc	quickfix.txt	/*quickfix-gcc*
+ quickfix-manx	quickfix.txt	/*quickfix-manx*
+ quickfix-perl	quickfix.txt	/*quickfix-perl*
+@@ -7131,6 +7300,7 @@
+ send-to-menu	gui_w32.txt	/*send-to-menu*
+ sendto	gui_w32.txt	/*sendto*
+ sentence	motion.txt	/*sentence*
++server-functions	usr_41.txt	/*server-functions*
+ server2client()	eval.txt	/*server2client()*
+ serverlist()	eval.txt	/*serverlist()*
+ servername-variable	eval.txt	/*servername-variable*
+@@ -7145,10 +7315,12 @@
+ setpos()	eval.txt	/*setpos()*
+ setqflist()	eval.txt	/*setqflist()*
+ setreg()	eval.txt	/*setreg()*
++settabvar()	eval.txt	/*settabvar()*
+ settabwinvar()	eval.txt	/*settabwinvar()*
+ setting-guifont	gui.txt	/*setting-guifont*
+ setting-guitablabel	tabpage.txt	/*setting-guitablabel*
+ setting-tabline	tabpage.txt	/*setting-tabline*
++setuid	change.txt	/*setuid*
+ setwinvar()	eval.txt	/*setwinvar()*
+ sftp	pi_netrw.txt	/*sftp*
+ sgml.vim	syntax.txt	/*sgml.vim*
+@@ -7170,7 +7342,9 @@
+ simulated-command	vi_diff.txt	/*simulated-command*
+ sin()	eval.txt	/*sin()*
+ single-repeat	repeat.txt	/*single-repeat*
++sinh()	eval.txt	/*sinh()*
+ skeleton	autocmd.txt	/*skeleton*
++slice	eval.txt	/*slice*
+ slow-fast-terminal	term.txt	/*slow-fast-terminal*
+ slow-start	starting.txt	/*slow-start*
+ slow-terminal	term.txt	/*slow-terminal*
+@@ -7195,6 +7369,7 @@
+ spell-ACCENT	spell.txt	/*spell-ACCENT*
+ spell-AUTHOR	spell.txt	/*spell-AUTHOR*
+ spell-BAD	spell.txt	/*spell-BAD*
++spell-BREAK	spell.txt	/*spell-BREAK*
+ spell-CHECKCOMPOUNDCASE	spell.txt	/*spell-CHECKCOMPOUNDCASE*
+ spell-CHECKCOMPOUNDDUP	spell.txt	/*spell-CHECKCOMPOUNDDUP*
+ spell-CHECKCOMPOUNDPATTERN	spell.txt	/*spell-CHECKCOMPOUNDPATTERN*
+@@ -7214,6 +7389,7 @@
+ spell-COMPOUNDPERMITFLAG	spell.txt	/*spell-COMPOUNDPERMITFLAG*
+ spell-COMPOUNDROOT	spell.txt	/*spell-COMPOUNDROOT*
+ spell-COMPOUNDRULE	spell.txt	/*spell-COMPOUNDRULE*
++spell-COMPOUNDRULES	spell.txt	/*spell-COMPOUNDRULES*
+ spell-COMPOUNDSYLLABLE	spell.txt	/*spell-COMPOUNDSYLLABLE*
+ spell-COMPOUNDSYLMAX	spell.txt	/*spell-COMPOUNDSYLMAX*
+ spell-COMPOUNDWORDMAX	spell.txt	/*spell-COMPOUNDWORDMAX*
+@@ -7224,6 +7400,7 @@
+ spell-FORBIDDENWORD	spell.txt	/*spell-FORBIDDENWORD*
+ spell-HOME	spell.txt	/*spell-HOME*
+ spell-KEEPCASE	spell.txt	/*spell-KEEPCASE*
++spell-KEY	spell.txt	/*spell-KEY*
+ spell-LANG	spell.txt	/*spell-LANG*
+ spell-LEMMA_PRESENT	spell.txt	/*spell-LEMMA_PRESENT*
+ spell-LOW	spell.txt	/*spell-LOW*
+@@ -7267,6 +7444,7 @@
+ spell-dic-format	spell.txt	/*spell-dic-format*
+ spell-double-scoring	spell.txt	/*spell-double-scoring*
+ spell-file-format	spell.txt	/*spell-file-format*
++spell-functions	usr_41.txt	/*spell-functions*
+ spell-german	spell.txt	/*spell-german*
+ spell-load	spell.txt	/*spell-load*
+ spell-midword	spell.txt	/*spell-midword*
+@@ -7311,9 +7489,11 @@
+ sql-predefined-objects	ft_sql.txt	/*sql-predefined-objects*
+ sql-type-default	ft_sql.txt	/*sql-type-default*
+ sql-types	ft_sql.txt	/*sql-types*
++sql.txt	ft_sql.txt	/*sql.txt*
+ sql.vim	syntax.txt	/*sql.vim*
+ sqlanywhere	ft_sql.txt	/*sqlanywhere*
+ sqlanywhere.vim	syntax.txt	/*sqlanywhere.vim*
++sqlgettype	ft_sql.txt	/*sqlgettype*
+ sqlinformix.vim	syntax.txt	/*sqlinformix.vim*
+ sqlj	ft_sql.txt	/*sqlj*
+ sqlserver	ft_sql.txt	/*sqlserver*
+@@ -7345,6 +7525,7 @@
+ strftime()	eval.txt	/*strftime()*
+ stridx()	eval.txt	/*stridx()*
+ string()	eval.txt	/*string()*
++string-functions	usr_41.txt	/*string-functions*
+ string-match	eval.txt	/*string-match*
+ strlen()	eval.txt	/*strlen()*
+ strpart()	eval.txt	/*strpart()*
+@@ -7364,12 +7545,14 @@
+ sub-replace-\=	change.txt	/*sub-replace-\\=*
+ sub-replace-expression	change.txt	/*sub-replace-expression*
+ sub-replace-special	change.txt	/*sub-replace-special*
++sublist	eval.txt	/*sublist*
+ submatch()	eval.txt	/*submatch()*
+ subscribe-maillist	intro.txt	/*subscribe-maillist*
+ substitute()	eval.txt	/*substitute()*
+ substitute-CR	version6.txt	/*substitute-CR*
+ suffixes	cmdline.txt	/*suffixes*
+ suspend	starting.txt	/*suspend*
++swap-exists-choices	usr_11.txt	/*swap-exists-choices*
+ swap-file	recover.txt	/*swap-file*
+ swapchoice-variable	eval.txt	/*swapchoice-variable*
+ swapcommand-variable	eval.txt	/*swapcommand-variable*
+@@ -7392,6 +7575,7 @@
+ synload-6	syntax.txt	/*synload-6*
+ synstack()	eval.txt	/*synstack()*
+ syntax	syntax.txt	/*syntax*
++syntax-functions	usr_41.txt	/*syntax-functions*
+ syntax-highlighting	syntax.txt	/*syntax-highlighting*
+ syntax-loading	syntax.txt	/*syntax-loading*
+ syntax-printing	usr_06.txt	/*syntax-printing*
+@@ -7400,6 +7584,7 @@
+ sys-file-list	help.txt	/*sys-file-list*
+ sysmouse	term.txt	/*sysmouse*
+ system()	eval.txt	/*system()*
++system-functions	usr_41.txt	/*system-functions*
+ system-vimrc	starting.txt	/*system-vimrc*
+ s~	change.txt	/*s~*
+ t	motion.txt	/*t*
+@@ -7595,6 +7780,8 @@
+ tags-option	tagsrch.txt	/*tags-option*
+ tagsrch.txt	tagsrch.txt	/*tagsrch.txt*
+ tagstack	tagsrch.txt	/*tagstack*
++tan()	eval.txt	/*tan()*
++tanh()	eval.txt	/*tanh()*
+ tar	pi_tar.txt	/*tar*
+ tar-contents	pi_tar.txt	/*tar-contents*
+ tar-copyright	pi_tar.txt	/*tar-copyright*
+@@ -7650,6 +7837,7 @@
+ tear-off-menus	gui.txt	/*tear-off-menus*
+ telnet-CTRL-]	tagsrch.txt	/*telnet-CTRL-]*
+ temp-file-name	eval.txt	/*temp-file-name*
++tempfile	change.txt	/*tempfile*
+ template	autocmd.txt	/*template*
+ tempname()	eval.txt	/*tempname()*
+ term-dependent-settings	term.txt	/*term-dependent-settings*
+@@ -7677,6 +7865,7 @@
+ tex-slow	syntax.txt	/*tex-slow*
+ tex-style	syntax.txt	/*tex-style*
+ tex.vim	syntax.txt	/*tex.vim*
++text-functions	usr_41.txt	/*text-functions*
+ text-objects	motion.txt	/*text-objects*
+ text-objects-changed	version5.txt	/*text-objects-changed*
+ textlock	eval.txt	/*textlock*
+@@ -7687,6 +7876,7 @@
+ throw-from-catch	eval.txt	/*throw-from-catch*
+ throw-variables	eval.txt	/*throw-variables*
+ throwpoint-variable	eval.txt	/*throwpoint-variable*
++time-functions	usr_41.txt	/*time-functions*
+ timestamp	editing.txt	/*timestamp*
+ timestamps	editing.txt	/*timestamps*
+ tips	tips.txt	/*tips*
+@@ -7721,12 +7911,15 @@
+ undo-blocks	undo.txt	/*undo-blocks*
+ undo-branches	undo.txt	/*undo-branches*
+ undo-commands	undo.txt	/*undo-commands*
++undo-persistence	undo.txt	/*undo-persistence*
+ undo-redo	undo.txt	/*undo-redo*
+ undo-remarks	undo.txt	/*undo-remarks*
+ undo-tree	undo.txt	/*undo-tree*
+ undo-two-ways	undo.txt	/*undo-two-ways*
+ undo.txt	undo.txt	/*undo.txt*
+ undo_ftplugin	usr_41.txt	/*undo_ftplugin*
++undofile()	eval.txt	/*undofile()*
++undotree()	eval.txt	/*undotree()*
+ unicode	mbyte.txt	/*unicode*
+ unix	os_unix.txt	/*unix*
+ unlisted-buffer	windows.txt	/*unlisted-buffer*
+@@ -7818,6 +8011,7 @@
+ v:mouse_col	eval.txt	/*v:mouse_col*
+ v:mouse_lnum	eval.txt	/*v:mouse_lnum*
+ v:mouse_win	eval.txt	/*v:mouse_win*
++v:oldfiles	eval.txt	/*v:oldfiles*
+ v:operator	eval.txt	/*v:operator*
+ v:prevcount	eval.txt	/*v:prevcount*
+ v:profiling	eval.txt	/*v:profiling*
+@@ -7942,10 +8136,13 @@
+ v_y	change.txt	/*v_y*
+ v_~	change.txt	/*v_~*
+ val-variable	eval.txt	/*val-variable*
++valgrind	debug.txt	/*valgrind*
+ values()	eval.txt	/*values()*
++var-functions	usr_41.txt	/*var-functions*
+ variables	eval.txt	/*variables*
+ various	various.txt	/*various*
+ various-cmds	various.txt	/*various-cmds*
++various-functions	usr_41.txt	/*various-functions*
+ various-motions	motion.txt	/*various-motions*
+ various.txt	various.txt	/*various.txt*
+ vb.vim	syntax.txt	/*vb.vim*
+@@ -7963,12 +8160,18 @@
+ version-6.2	version6.txt	/*version-6.2*
+ version-6.3	version6.txt	/*version-6.3*
+ version-6.4	version6.txt	/*version-6.4*
++version-7.0	version7.txt	/*version-7.0*
+ version-7.1	version7.txt	/*version-7.1*
+ version-7.2	version7.txt	/*version-7.2*
++version-7.3	version7.txt	/*version-7.3*
+ version-variable	eval.txt	/*version-variable*
+ version4.txt	version4.txt	/*version4.txt*
+ version5.txt	version5.txt	/*version5.txt*
+ version6.txt	version6.txt	/*version6.txt*
++version7.0	version7.txt	/*version7.0*
++version7.1	version7.txt	/*version7.1*
++version7.2	version7.txt	/*version7.2*
++version7.3	version7.txt	/*version7.3*
+ version7.txt	version7.txt	/*version7.txt*
+ vi	intro.txt	/*vi*
+ vi-differences	vi_diff.txt	/*vi-differences*
+@@ -7998,6 +8201,7 @@
+ vimball-history	pi_vimball.txt	/*vimball-history*
+ vimball-intro	pi_vimball.txt	/*vimball-intro*
+ vimball-manual	pi_vimball.txt	/*vimball-manual*
++vimball-windows	pi_vimball.txt	/*vimball-windows*
+ vimdev	intro.txt	/*vimdev*
+ vimdiff	diff.txt	/*vimdiff*
+ vimfiles	options.txt	/*vimfiles*
+@@ -8008,6 +8212,7 @@
+ viminfo-file-marks	starting.txt	/*viminfo-file-marks*
+ viminfo-file-name	starting.txt	/*viminfo-file-name*
+ viminfo-read	starting.txt	/*viminfo-read*
++viminfo-read-write	starting.txt	/*viminfo-read-write*
+ viminfo-write	starting.txt	/*viminfo-write*
+ vimrc	starting.txt	/*vimrc*
+ vimrc-filetype	usr_05.txt	/*vimrc-filetype*
+@@ -8047,6 +8252,7 @@
+ vt100-function-keys	term.txt	/*vt100-function-keys*
+ w	motion.txt	/*w*
+ w32-clientserver	remote.txt	/*w32-clientserver*
++w:current_syntax	syntax.txt	/*w:current_syntax*
+ w:var	eval.txt	/*w:var*
+ warningmsg-variable	eval.txt	/*warningmsg-variable*
+ white-space	pattern.txt	/*white-space*
+@@ -8091,10 +8297,12 @@
+ window	windows.txt	/*window*
+ window-contents	intro.txt	/*window-contents*
+ window-exit	editing.txt	/*window-exit*
++window-functions	usr_41.txt	/*window-functions*
+ window-move-cursor	windows.txt	/*window-move-cursor*
+ window-moving	windows.txt	/*window-moving*
+ window-resize	windows.txt	/*window-resize*
+ window-size	term.txt	/*window-size*
++window-size-functions	usr_41.txt	/*window-size-functions*
+ window-tag	windows.txt	/*window-tag*
+ window-variable	eval.txt	/*window-variable*
+ windows	windows.txt	/*windows*
+@@ -8167,6 +8375,7 @@
+ xterm-modifier-keys	term.txt	/*xterm-modifier-keys*
+ xterm-mouse	options.txt	/*xterm-mouse*
+ xterm-mouse-wheel	scroll.txt	/*xterm-mouse-wheel*
++xterm-resize	term.txt	/*xterm-resize*
+ xterm-save-screen	tips.txt	/*xterm-save-screen*
+ xterm-screens	tips.txt	/*xterm-screens*
+ xterm-scroll-region	term.txt	/*xterm-scroll-region*
+@@ -8201,13 +8410,10 @@
+ zOS	os_390.txt	/*zOS*
+ zOS-Bugs	os_390.txt	/*zOS-Bugs*
+ zOS-Motif	os_390.txt	/*zOS-Motif*
+-zOS-building	os_390.txt	/*zOS-building*
+-zOS-changes	os_390.txt	/*zOS-changes*
+-zOS-feedback	os_390.txt	/*zOS-feedback*
++zOS-PuTTY	os_390.txt	/*zOS-PuTTY*
+ zOS-has-ebcdic	os_390.txt	/*zOS-has-ebcdic*
++zOS-limitations	os_390.txt	/*zOS-limitations*
+ zOS-open-source	os_390.txt	/*zOS-open-source*
+-zOS-weaknesses	os_390.txt	/*zOS-weaknesses*
+-zOS-xterm	os_390.txt	/*zOS-xterm*
+ zR	fold.txt	/*zR*
+ zW	spell.txt	/*zW*
+ zX	fold.txt	/*zX*
+@@ -8259,7 +8465,7 @@
+ {offset}	pattern.txt	/*{offset}*
+ {pat}	autocmd.txt	/*{pat}*
+ {rhs}	map.txt	/*{rhs}*
+-{subject}	various.txt	/*{subject}*
++{subject}	helphelp.txt	/*{subject}*
+ {}	intro.txt	/*{}*
+ }	motion.txt	/*}*
+ ~	change.txt	/*~*
+diff -Nur runtime/doc/tagsrch.txt runtime/doc/tagsrch.txt
+--- runtime/doc/tagsrch.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/tagsrch.txt	2011-04-03 09:27:21.379434746 -0700
+@@ -1,4 +1,4 @@
+-*tagsrch.txt*   For Vim version 7.2.  Last change: 2006 Apr 24
++*tagsrch.txt*   For Vim version 7.3a.  Last change: 2009 Feb 18
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -176,7 +176,7 @@
+ 3. Tag match list				*tag-matchlist* *E427* *E428*
+ 
+ When there are several matching tags, these commands can be used to jump
+-between them.  Note that these command don't change the tag stack, they keep
++between them.  Note that these commands don't change the tag stack, they keep
+ the same entry.
+ 
+ 							*:ts* *:tselect*
+@@ -428,6 +428,10 @@
+ |+emacs_tags| feature enabled.  Sorry, there is no explanation about Emacs tag
+ files here, it is only supported for backwards compatibility :-).
+ 
++Lines in Emacs tags files can be very long.  Vim only deals with lines of up
++to about 510 bytes.  To see whether lines are ignored set 'verbose' to 5 or
++higher.
++
+ 							*tags-option*
+ The 'tags' option is a list of file names.  Each of these files is searched
+ for the tag.  This can be used to use a different tags file than the default
+diff -Nur runtime/doc/term.txt runtime/doc/term.txt
+--- runtime/doc/term.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/term.txt	2011-04-03 09:27:21.380510721 -0700
+@@ -1,4 +1,4 @@
+-*term.txt*      For Vim version 7.2.  Last change: 2008 Jun 21
++*term.txt*      For Vim version 7.3a.  Last change: 2009 Nov 05
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -410,6 +410,21 @@
+ Note: This is only done on startup.  If the xterm options are changed after
+ Vim has started, the escape sequences may not be recognized any more.
+ 
++							*xterm-resize*
++Window resizing with xterm only works if the allowWindowOps resource is
++enabled.  On some systems and versions of xterm it's disabled by default
++because someone thought it would be a security issue.  It's not clear if this
++is actually the case.
++
++To overrule the default, put this line in your ~/.Xdefaults or
++~/.Xresources:
++>
++	XTerm*allowWindowOps: 		true
++
++And run "xrdb -merge .Xresources" to make it effective.  You can check the
++value with the context menu (right mouse button while CTRL key is pressed),
++there should be a tick at allow-window-ops.
++
+ 							*termcap-colors*
+ Note about colors: The 't_Co' option tells Vim the number of colors available.
+ When it is non-zero, the 't_AB' and 't_AF' options are used to set the color.
+@@ -579,7 +594,7 @@
+ to use the mouse in a GUI window is explained in |gui-mouse|.  For scrolling
+ with a mouse wheel see |scroll-mouse-wheel|.
+ 
+-Don't forget to enable the mouse with this commands: >
++Don't forget to enable the mouse with this command: >
+ 	:set mouse=a
+ Otherwise Vim won't recognize the mouse in all modes (See 'mouse').
+ 
+diff -Nur runtime/doc/tips.txt runtime/doc/tips.txt
+--- runtime/doc/tips.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/tips.txt	2011-04-03 09:27:21.381609906 -0700
+@@ -1,4 +1,4 @@
+-*tips.txt*      For Vim version 7.2.  Last change: 2006 Jul 24
++*tips.txt*      For Vim version 7.3a.  Last change: 2009 Nov 07
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -6,6 +6,10 @@
+ 
+ Tips and ideas for using Vim				*tips*
+ 
++These are just a few that we thought would be helpful for many users.
++You can find many more tips on the wiki.  The URL can be found on
++http://www.vim.org
++
+ Don't forget to browse the user manual, it also contains lots of useful tips
+ |usr_toc.txt|.
+ 
+@@ -18,11 +22,12 @@
+ Counting words, lines, etc.			|count-items|
+ Restoring the cursor position			|restore-position|
+ Renaming files					|rename-files|
++Change a name in multiple files			|change-name|
+ Speeding up external commands			|speed-up|
+ Useful mappings					|useful-mappings|
+ Compressing the help files			|gzip-helpfile|
+-Hex editing					|hex-editing|
+ Executing shell commands in a window		|shell-window|
++Hex editing					|hex-editing|
+ Using <> notation in autocommands		|autocmd-<>|
+ Highlighting matching parens			|match-parens|
+ 
+@@ -246,6 +251,8 @@
+ 	zt	scroll to move this line to the top of the window
+ 	`s	jump to the original position of the cursor
+ 
++For something more advanced see |winsaveview()| and |winrestview()|.
++
+ ==============================================================================
+ Renaming files						*rename-files*
+ 
+@@ -266,6 +273,25 @@
+ 	:q!
+ 
+ ==============================================================================
++Change a name in multiple files				*change-name*
++
++Example for using a script file to change a name in several files:
++
++	Create a file "subs.vim" containing substitute commands and a :update
++	command: >
++		:%s/Jones/Smith/g
++		:%s/Allen/Peter/g
++		:update
++<
++	Execute Vim on all files you want to change, and source the script for
++	each argument: >
++
++		vim *.let
++		argdo source subs.vim
++
++See |:argdo|.
++
++==============================================================================
+ Speeding up external commands				*speed-up*
+ 
+ In some situations, execution of an external command can be very slow.  This
+diff -Nur runtime/doc/todo.txt runtime/doc/todo.txt
+--- runtime/doc/todo.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/todo.txt	2011-04-03 09:27:21.391948936 -0700
+@@ -1,4 +1,4 @@
+-*todo.txt*      For Vim version 7.2.  Last change: 2008 Aug 09
++*todo.txt*      For Vim version 7.3a.  Last change: 2010 May 15
+ 
+ 
+ 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+@@ -30,31 +30,345 @@
+ 							*known-bugs*
+ -------------------- Known bugs and current work -----------------------
+ 
+-":pedit %" with a BufReadPre autocommand causes the cursor to move to the
+-first line. (Ingo Karkat, 2008 Jul 1)  Ian Kelling is working on this.
++Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
+ 
+-Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23)
++Test 69 breaks on MS-Windows, both 32 and 64 builds. (George Reilly, 2010 Feb
++26)
++
++Bug: searching for tags file uses 'suffixesadd', should not happen. (Dominique
++Pelle, 2010 June 28)
++
++When directory "/tmp/tags" contains "tags1" and "tags2", setting 'tags' to
++"/tmp/tags/*" doesn't pick up these files.  (Simon Ruggier, 2010 Mar 17)
++
++":command Print echo 'print'" works, but ":Print" doesn't.  Builtin Print
++should be overruled. (Aaron Thoma)
++
++Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
++^M is displayed as ^J sometimes.  Getting 'ff' value from wrong window/buffer?
++
++Problem producing tags file when hebrew.frx is present.  It has a BOM.
++Results in E670. (Tony Mechelynck, 2010 May 2)
++
++'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
++
++":helpgrep" does not put the cursor in the correct column when preceded by
++accented character. (Tony Mechelynck, 2010 Apr 15)
++
++Better Czech keymap. (Stepnem, 2010 May 4)  Use if no response from Jiri
++Tobisek.
++
++Use Dutch spell files from:
++http://extensions.services.openoffice.org/en/project/dict-nl
++Looks like this is newer than the new wordlist for Dutch:
++http://www.opentaal.org/bestanden/1_10/nl_NL-Pack
++
++Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
++Additional info by Dominique Pelle. (also on 2010 Apr 10)
++
++"make install" installs some of the .info files on Unix.
++(James Vega, 2010 Mar 30)
++
++Is ~/bin (literally) in $PATH supposed to work?  (Paul, 2010 March 29)
++Looks like only bash can do it. (Yakov Lerner)
++
++8   Add an event like CursorHold that is triggered repeatedly, not just once
++    after typing something.
++Need for CursorHold that retriggers.  Use a key that doesn't do anything, or a
++function that resets did_cursorhold.
++
++Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010
++Jun 29)  Caused by 7.2.433?
++
++I often see pasted text (from Firefox, to Vim in xterm) appear twice.
++Also, Vim in xterm sometimes loses copy/paste ability (probably after running
++an external command).
++
++Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20)
++
++Problem with transparent cmdline.  Also: Terminal title is wrong with
++non-ASCII character. (Lily White, 2010 Mar 7)
++
++iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009
++Nov 15, example Nov 26)  Add argument to specify whether iconv() should fail
++or replace with a character and continue?
++
++Add local time at start of --startuptime output.
++Requires configure check for localtime().
++Use format year-month-day hr:min:sec.
++
++Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
++Find tail?  Might have a / in argument.  Find space?  Might have space in
++path.
++
++":function f(x) keepjumps" creates a function where every command is executed
++like it has ":keepjumps" before it.
++
++Coverity: ask someone to create new user: Dominique.
++look into reported defects: http://scan.coverity.com/rung2.html
++
++Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17)
++Only with "vim -u NONE".
++
++Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
++
++Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
++
++Undo problem: line not removed as expected when using setline() from Insert
++mode. (Israel Chauca, 2010 May 13, more in second msg)
++Break undo when CTRL-R = changes the text?  Or save more lines?
++
++Change to C syntax folding to make it work much faster, but a bit less
++reliable. (Lech Lorens, 2009 Nov 9)  Enable with an option?
++Most time is spent in in_id_list().
++
++Slow combination of folding and PHP syntax highlighting.  Script to reproduce
++it.  Caused by "syntax sync fromstart" in combination with patch 7.2.274.
++(Christian Brabandt, 2010 May 27)
++
++When completion inserts the first match, it may trigger the line to be folded.
++Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
++
++In command line window ":close" doesn't work properly. (Tony Mechelynck, 2009
++Jun 1)
++
++When a:base in 'completefunc' starts with a number it's passed as a number,
++not a string. (Sean Ma)  Need to add flag to call_func_retlist() to force a
++string value.
++
++There is no command line completion for ":lmap".
++
++Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
++
++For running gvim on an USB stick: avoid the OLE registration.  Use a command
++line argument -noregister.
++
++When a mapping exists both for insert mode and lang-insert mode, the last one
++doesn't work. (Tyru, 2010 May 6)  Or is this intended?
++
++Still a problem with ":make" in the wrong directory.  Caused by ":bufdo".
++(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15.
++Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ?
++There also is a BufLeave/BufEnter aucmd to save/restore view.
++Does the patch to save/restore globaldir work?
++
++":bufdo normal gg" while 'hidden' is set leaves buffers without syntax
++highlighting.  Don't disable Syntax autocommands then?  Or add a flag/modifier
++to avoid changing 'eventignore'?
++
++Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6)
++Probably needs a bit of work.
++
++List of encoding aliases. (Takao Fujiware, 2009 Jul 18)
++Are they all OK?  Update Jul 22.
++
++Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15)
++
++Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong,
++2009 Jul 18)
++
++Patch to add farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2)
++Added test, updates, June 23.
++
++Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in
++window that doesn't have focus. (Jonathon Mah, 2009 Jan 12)
++Needs more work.
++
++Problem with <script> mappings (Andy Wokula, 2009 Mar 8)
++
++When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a
++few control characters in the output. (Dale Wiles, 2009 May 28)
++
++'cmdwinheight is only used in last window when 'winheight' is a large value.
++(Tony Mechelynck, 2009 Apr 15)
++
++Status line containing winnr() isn't updated when splitting the window (Clark
++J.  Wang, 2009 Mar 31)
++
++When $VIMRUNTIME is set in .vimrc, need to reload lang files.  Already done
++for GTK, how about others? (Ron Aaron, 2010 Apr 10)
++
++Motif: Build on Ubuntu can't enter any text in dialog text fields.
++
++When 'ft' changes redraw custom status line.
++
++":tab split fname" doesn't set the alternate file in the original window,
++because win_valid() always returns FALSE.  Below win_new_tabpage() in
++ex_docmd.c.
++
++Space before comma in function definition not allowed: "function x(a , b)"
++Give a more appropriate error message.  Add a remark to the docs.
++
++string_convert() should be able to convert between utf-8 and utf-16le.  Used
++for GTK clipboard.  Avoid requirement for iconv.
++
++Now that colnr_T is int instead of unsigned, more type casts can be removed.
++
++'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul
++20)
++
++Unwanted file name escaping: ":echo input('file:' , '', 'file')"
++And use file name completion on a file with spaces. (Frederic Hardy, 2009 Mar
++23)
++
++Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron,
++2009 Apr 7)  Reminder Apr 14.
++
++Add "no_hlsearch" to winsaveview().
++
++Cursorline highlighting combines with Search ('hlsearch') but not with
++SpellBad. (Jim Karsten, 2009 Mar 18)
++
++When 'foldmethod' is "indent", using >> on a line just above a fold makes the
++cursor line folded. (Evan Laforge, 2009 Oct 17)
++
++When 'foldmethod' is "indent", adding an empty line below a fold and then
++indented text, creates a new fold instead of joining it with the previous one.
++(Evan Laforge, 2009 Oct 17)
++
++Bug: When reloading a buffer changed outside of Vim, BufRead autocommands
++are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11)
++Ignore window options when not in the right window?
++Perhaps we need to use a hidden window for applying autocommands to a buffer
++that doesn't have a window.
++
++When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo
++doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6)
++
++getbufvar() to get a window-local option value for a buffer that's not
++displayed in a window should return the value that's stored for that buffer.
++
++":he ctrl_u" can be auto-corrected to ":he ctrl-u".
++
++There should be a way after an abbreviation has expanded to go back to what
++was typed.  CTRL-G h ?  Would also undo last word or line break inserted
++perhaps.  And undo CTRL-W.  CTRL-G l would redo.
++
++Win32: A --remote command that has a directory name starting with a ( doesn't
++work, the backslash is removed, assuming that it escapes the (. (Valery
++Kondakoff, 2009 May 13)
++
++Win32 GUI: Changing manifest helps for dpi changes (Joe Castro, 2009 Mar 27)
++
++Win32 GUI: last message from startup doesn't show up when there is an echoerr
++command. (Cyril Slobin, 2009 Mar 13)
++
++Win32: use different args for SearchPath()? (Yasuhiro Matsumoto, 2009 Jan 30)
++
++Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which
++does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22)
++
++Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
++(Felix Kater, 2009 Mar 3)
++
++maparg() doesn't return the flags, such as <buffer>, <script>, <silent>.
++These are needed to save and restore a mapping.
++Also: the rhs string is not always correct. (Hari Krishna Dara, 2009 Sept 29)
++
++Using ~ works OK on 'a' with composing char, but not on 0x0418  with composing
++char 0x0301. (Tony Mechelynck, 2009 Mar 4)
++
++Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish
++messages, even though locale is not supported.  But ":lang messages
++es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle,
++2009 Jan 26)
++
++When $HOME contains special characters, sich as a comma, escape them when used
++in an option. (Michael Hordijk, 2009 May 5)
++Turn "esc" argument of expand_env_esc() into string of chars to be escaped.
++
++Can 'undolevels' be a buffer-local option?  Helps for making big changes in
++one file only, set 'ul' to -1 only for that buffer.
++
++Should make 'ignorecase' global-local, so that it makes sense setting it from
++a modeline.
++
++Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by
++Sergey Khorev)
++
++Consider making YankRing or something else that keeps a list of yanked text
++part of standard Vim.  The "1 to "9 registers are not sufficient.
+ 
+ netrw: dragging status line causes selection of entry.  Should check row
+ number to be below last visible line.
+ 
++After doing "su" $HOME can be the old user's home, thus ~root/file is not
++correct.  Don't use it in the swap file.
++
++Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
++(Henrik Ohman, 2009, Jan 29)
++
++Allow patches to add something to version.c, like with an official patch, so
++that :version output shows which patches have been applied.
++
++Bug: in Ex mode (after "Q") backslash before line break, when yanked into a
++register and executed, results in <Nul>: instead of line break.
++(Konrad Schwarz, 2010 Apr 16)
++
++Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23)
++Now at: http://vimgadgets.sourceforge.net/liblinebreak/
++
++Greek sigma character should be lower cased depending on the context.  Can we
++make this work?  (Dominique Pelle, 2009 Sep 24)
++
++When changing 'encoding' convert all the swap file names, so that we can
++still delete them.  Also convert all buffer file names?
++
++"gqip" in Insert mode has an off-by-one error, causing it to reflow text.
++(Raul Coronado, 2009 Nov 2)
++
++Update src/testdir/main.aap.
++
++"vim -c 'sniff connect'" hangs Vim. (Dominique Pelle, 2008 Dec 7)
++
++Something wrong with session that has "cd" commands and "badd", in such a way
++that Vim doesn't find the edited file in the buffer list, causing the
++ATTENTION message?  (Tony Mechelynck, 2008 Dec 1)
++Also: swap files are in ~/tmp/  One has relative file name ".mozilla/...".
++
++Add v:motion_force. (Kana Natsuno, 2008 Dec 6)
++
+ Runtime files for Clojure. (Toralf Wittner, 2008 Jun 25)
+ 
+-Patch to add extra argument to glob() and globpath() to ignore 'wildignore'.
+-(Ingo Karkat, 2008 Jun 25)
++MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
++doesn't set 'ff' to "unix".  (Ben Fritz, 2008 Dec 5) Reusing the old buffer
++probably causes this.
++
++'scrollbind' is not respected when deleting lines or undo. (Milan Vancura,
++2009 Jan 16)
++
++Document that default font in Athena can be set with resources:
++   XtDefaultFont: "9x15"
++   XtDefaultFontSet: "9x15"
++(Richard Sherman, 2009 Apr 12)
++
++Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for
++":bufdo e" when buffers are open in windows.  ex_listdo(eap) could set the
++option only for when jumping to another buffer, not when the command argument
++is executed.
+ 
+ Crash with dragn-n-drop of file combined with netrw (Marius Gedminas, 2008 Jun
+ 11)  I can't reproduce it.  It's probably caused by a handle_drop() call
+ in combination with autocommands that invoke a ":redraw" command.
+ Another valgrind output Jun 30.
+ 
+-When reallocating cmdline xp_pattern becomes invalid.  Move expand_T xpc into
+-ccline?  (Dominique Pelle)
++":pedit %" with a BufReadPre autocommand causes the cursor to move to the
++first line. (Ingo Karkat, 2008 Jul 1)  Ian Kelling is working on this.
+ 
+ Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
+ laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1)
+ Works OK with Vim in an xterm.
+ 
++Cursor line moves in other window when using CTRL-W J that doesn't change
++anything.  (Dasn, 2009 Apr 7)
++
++On Unix "glob('does not exist~')" returns the string.  Without the "~" it
++doesn't. (John Little, 2008 Nov 9)
++Shell expansion returns unexpanded string?
++Don't use shell when "~" is not at the start?
++
++":unlet $VAR" doesn't work.
++
+ When using ":e ++enc=foo file" and the file is already loaded with
+ 'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the
+ fileencoding differs.  Reload the buffer in this situation?  Need to check for
+@@ -62,8 +376,24 @@
+ Unfinished patch by Ian Kelling, 2008 Jul 11.  Followup Jul 14, need to have
+ another look at it.
+ 
++Patch for c.vim and cpp.vim syntax files. (Chung-chieh Shan, 2008 Nov 26)
++
++c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
++(Ilya Dogolazky, 2009 Aug 7)
++
++Win32:  ":dis +" shows nothing, but "+p does insert text.  Problem with "* and
++"+ being the same thing?
++
++You can type ":w ++bad=x fname", but the ++bad argument is ignored.  Give an
++error message?  Or is this easy to implement?  (Nathan Stratton Treadway, 2008
++Aug 20)  This is in ucs2bytes(), search for 0xBF.  Using the ++bad argument is
++at the other match for 0xBF.
++
+ Fix for matchparen HL doesn't work.  beep.
+ 
++When adding "-complete=file" to a user command this also changes how the
++argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19)
++
+ Win32: associating a type with Vim doesn't take care of space after a
+ backslash? (Robert Vibrant, 2008 Jun 5)
+ 
+@@ -74,13 +404,25 @@
+ ":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
+ Chase)  Fix by Ian Kelling, 2008 Jul 14.
+ 
++Use "\U12345678" for 32 bit Unicode characters?  (Tony Mechelynck, 2009
++Apr 6)  Or use "\u(123456)", similar to Perl.
++
++When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
++either.  Matt Wozniski:  nv_at() calls do_execreg() which uses
++put_in_typebuf().  Char mapped twice?
++
++8   Some file systems are case-sensitive, some are not.  Turn
++    CASE_INSENSITIVE_FILENAME into an option, at least for completion.
++
+ Despite adding save_subexpr() this still doesn't work properly:
+ Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?')
+ Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', '']
+ Backreference not cleared when retrying after \@<= fails?
+ (Brett Stahlman, 2008 March 8)
+ 
+-Patch for 2html.vim to avoid "&amp;nbsp;". (Markus Heidelberg, 2008 Jul 19)
++Problem with remote_send(). (Charles Campbell, 2008 Aug 12)
++
++ftplugin for help file should set 'isk' to help file value.
+ 
+ Win32: remote editing fails when the current directory name contains "[".
+ (Ivan Tishchenko, Liu Yubao)  Suggested patch by Chris Lubinski: Avoid
+@@ -89,12 +431,14 @@
+ This also fails when the file or directory name contains "%". (Thoml, 2008
+ July 7)
+ 
++Win32: The "4913" file is sometimes not deleted.  Perhaps another program has
++opened it?  Use FILE_FLAG_DELETE_ON_CLOSE? (Craig Barkhouse, 2009 Nov 6)
++
+ The str2special() function doesn't handle multi-byte characters properly.
+ Patch from Vladimir Vichniakov, 2007 Apr 24.
+ Should clean up the whole function.  Also allow modifiers like <S-Char-32>?
+ find_special_key() also has this problem.
+ 
+-Problem with 'langmap' parsing. (James Vega, 2008 Jan 27)
+ Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
+ 2008 May 14)
+ 
+@@ -102,9 +446,14 @@
+ Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c".
+ 'lines' is 54. (2008 March 27)
+ 
++Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008
++Oct 19)  Check for "col" being "MAXCOL" separately?
++
+ Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23)
+ Works OK when 'cmdheight' is 2.
+ 
++Test54 should not use shell commands.  Make it portable.
++
+ The utf class table is missing some entries:
+ 	0x2212, minus sign 
+ 	0x2217, star
+@@ -117,6 +466,9 @@
+ GUI: In Normal mode can't yank the modeless selection.  Make "gy" do this?
+ Works like CTRL-Y in Command line mode.
+ 
++Mac: Move Carbon todo items to os_mac.txt.  Note that this version is frozen,
++try the Cocoa version.
++
+ Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
+ changed or the window is resized.
+ 
+@@ -126,20 +478,41 @@
+ Mac: trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug
+ 1)  Reply by Ben Schmidt.
+ 
+-":emenu" works with the translated menu name.  Should also work with the
+-untranslated name.  Would need to store both the English and the translated
+-name.  Patch by Bjorn Winckler, 2008 Mar 30.
+-
+ C't: On utf-8 system, editing file with umlaut through Gnome results in URL
+ with %nn%nn, which is taken as two characters instead of one.
+ Try to reproduce at work.
+ 
++Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19)
++Is there a way to list all the files first?
++
++When 'smartcase' is set and using CTRL-L to add to the search pattern it may
++result in no matches.  Convert chars to lower case? (Erik Wognsen, 2009 Apr
++16)
++
+ Patch for redo register. (Ben Schmidt, 2007 Oct 19)
+ Await response to question to make the register writable.
+ 
++src/testdir/Make_dos.mak: not all tests are included, e.g., test49, without a
++remark why.
++
+ Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct
+ 1)
+ 
++In the swapfile dialog, add a H(elp) option that gives more info about what
++each choice does.  Similar to  ":help swap-exists-choices"
++
++try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
++
++Recognize and ignore BOM in error file. (Aleksey Baibarin)
++
++":tab help" always opens a new tab, while ":help" re-uses an existing window.
++Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
++
++":tab drop filename" doesn't work nicely when "filename" is open in a window
++in another tab. (Tony Mechelynck, 2009 Feb 13)
++
++Add ":nofold".  Range will apply without expanding to closed fold.
++
+ Including NFA regexp code:
+ Use "\%#= to set the engine: 0 = automatic, 1 = backtracking, 2 = new.
+ Useful in tests.
+@@ -147,6 +520,7 @@
+ - ~/vim/test/veryslow.js (file from Daniel Fetchinson)
+ - ~/vim/test/slowsearch
+ - ~/vim/test/rgb.vim
++- ~/vim/text/FeiqCfg.xml (file from Netjune)
+ - search for  a.*e*exn  in the vim executable.  Go to last line to use
+   'hlsearch'.
+ 
+@@ -160,6 +534,9 @@
+ C syntax: {} inside () causes following {} to be highlighted as error.
+ (Michalis Giannakidis, 2006 Jun 1)
+ 
++Can't easily close the help window, like ":pc" closes the preview window and
++":ccl" closes the quickfix window.  Add ":hclose". (Chris Gaal)
++
+ When 'diffopt' has "context:0" a single deleted line causes two folds to merge
+ and mess up syncing. (Austin Jennings, 2008 Jan 31)
+ 
+@@ -171,10 +548,18 @@
+ 'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
+ Likonen, March 19)
+ 
++Test 54 uses shell commands, that doesn't work on non-Unix systems.  Use some
++other way to test buffer-local autocommands.
++
+ The documentation mentions the priority for ":2match" and ":3match", but it
+ appears the last one wins. (John Beckett, 2008 Jul 22)  Caused by adding
+ matchadd()?  Suggested patch by John, 2008 Jul 24.
+ 
++When 'encoding' is utf-8 the command line is redrawn as a whole on every
++character typed. (Tyler Spivey, 2008 Sep 3)  Only redraw cmdline for
++'arabicshape' when there is a character on the command line for which
++(ARABIC_CHAR(u8c)) is TRUE.
++
+ Replace ccomplete.vim by cppcomplete.vim from www.vim.org?  script 1520
+ by Vissale Neang.  (Martin Stubenschrott)
+ Asked Vissale to make the scripts more friendly for the Vim distribution.
+@@ -192,9 +577,6 @@
+ Problem with compound words?  (Bert, 2008 May 6)
+ No warning for when flags are defined after they are used in an affix.
+ 
+-With Visual selection, "r" and then CTRL-C  Visual mode is stopped but the
+-highlighting is not removed.
+-
+ Screen redrawing when continuously updating the buffer and resizing the
+ terminal. (Yakov Lerner, 2006 Sept 7)
+ 
+@@ -206,6 +588,9 @@
+ 
+ When opening quickfix window, disable spell checking?
+ 
++Problem with ".add" files when using two languages and restarting Vim. (Raul
++Coronado, 2008 Oct 30)
++
+ Popup menu redraw: Instead of first redrawing the text and then drawing the
+ popup menu over it, first draw the new popup menu, remember its position and
+ size and then redraw the text, skipping the characters under the popup menu.
+@@ -214,13 +599,13 @@
+ When the popup menu is close to the edge of the window it is truncated.  Patch
+ to anchor the popup menu in a different way. (James Vega, 2008 Jul 30)
+ 
+-Spell checking: Add a way to specify punctuation characters.  Add the
+-superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
+-
+ Windows 98: pasting from the clipboard with text from another application has
+ a trailing NUL.  (Joachim Hofmann)  Perhaps the length specified for CF_TEXT
+ isn't right?
+ 
++When a register contains illegal bytes, writing viminfo in utf-8 and reading
++it back doesn't result in utf-8. (Devin Bayer)
++
+ Command line completion: Scanning for tags doesn't check for typed key now and
+ then?  Hangs for about 5 seconds.  Appears to be caused by finding include
+ files with "foo/**" in 'path'.  (Kalisiak, 2006 July 15)
+@@ -239,6 +624,9 @@
+ However, for backwards compatibility escaping might be necessary.  Check if
+ the user put quotes around the expanded item?
+ 
++Error E324 can be given when a cron script has wiped out our temp directory.
++Give a clear error message about this (and tell them not to wipe out /tmp).
++
+ Color for cUserLabel should differ from case label, so that a mistake in a
+ switch list is noticed:
+     switch (i)
+@@ -254,23 +642,21 @@
+ go to Insert mode and add a few lines.  Then backspacing every other time
+ moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
+ 
+-Redraw problem when appending digraph causes line to wrap. (James Vega, 2007
+-Sep 18)  Patch by Ian Kelling, 2008 Aug 8.
+-
+ Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov,
+ 2007 Feb 8)
+ 
+ Patch for Win32 clipboard under Cygwin. (Frodak Baksik, Feb 15)
+     Sutcliffe says it works well.
+     Update 2007 May 22 for Vim 7.1
++    Update 2008 Dec 2008 for Vim 7.2.xx (Sharonov)
++
++Win32: Can't complete shell command names.  Why is setting xp_context in
++set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME?
+ 
+ Win32: Patch for convert_filterW(). (Taro Muraoka, 2007 Mar 2)
+ 
+ Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7)
+ 
+-":cscope find f  filename" doesn't work because of the extra space. (Ethan
+-Mallove)
+-
+ Win32: XPM support only works with path without spaces.  Patch by Mathias
+ Michaelis, 2006 Jun 9.  Another patch for more path names, 2006 May 31.
+ New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other
+@@ -292,9 +678,6 @@
+ Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages
+ label.  (Tsakiridis, 2007 Feb 18)  Patch from Ian Kelling, 2008 Aug 6.
+ 
+-When 'bomb' is changed the window title is updated to show/hide a "+", but the
+-tab page label isn't. (Patrick Texier, 2008 Jun 24)
+-
+ Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen
+ with the more prompt.  Caused by setting the guitablabel?  (Thomas Michael
+ Engelke, 2007 Dec 20 - 2008 Jan 17)
+@@ -307,9 +690,22 @@
+ 
+ Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
+ 
+-When file b is a link to file a and editing b twice you get the correct
+-warning for existing swap file, but when trying to recover it doesn't find the
+-swapfile. (Matt Wozniski, 2008 Aug 5)
++Win32: When 'shell' is cmd.exe this command fails:
++	echo system('"c:/path/echo.exe" "foo bar"')
++Should we set the default for 'shellxquote' to a double quote, when 'shell'
++contains "cmd" in the tail?  (Benjamin Fritz, 2008 Oct 13)
++Also set 'shellcmdflag' to include /s.
++
++Win32: When there is 4 Gbyte of memory mch_avail_mem() doesn't work properly.
++Unfinished patch by Jelle Geerts, 2008 Aug 24.
++Let mch_avail_mem() return Kbyte instead?
++
++Win32: With two monitors, gvim partly on both, and adding/removing a scrollbar
++Vim resizes and moves to one of the monitors. (Chris Monkiewicz, 2008 Oct)
++
++Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
++Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
++only takes 'shellslash' into account.
+ 
+ Pressing the 'pastetoggle' key doesn't update the statusline. (Jan Christoph
+ Ebersbach, 2008 Feb 1)
+@@ -327,12 +723,16 @@
+ 
+ If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
+ 
++Feature request: Command to go to previous tab, like what CTRL-W p does for
++windows. (Adam George)
++
++When using input() in a loop and then ":echo" the display column isn't right.
++(Benjamin Fritz, 2008 Aug 28)  Patch by Ben Schmidt, 2008 Sep 2.
++
+ F1 - F4 in an xterm produce a different escape sequence when used with a
+ modifier key.  Need to catch three different sequences.  Use K_ZF1, like
+ K_ZHOME? (Dickey, 2007 Dec 2)
+ 
+-Problem finding swap file for recovery. (Gautam Iyer, 2006 May 16)
+-
+ UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear
+ to work. (Tony Mechelynck, 2007 March 2)
+ 
+@@ -352,24 +752,25 @@
+ Check other interfaces for changing curbuf in a wrong way.  Patch like for
+ if_ruby.c.
+ 
+-Problem with cursorcolumn highlighting and folds. (John Mullin, 2008 Jul 18)
+-
+-Spell checking in popup menu: If the only problem is the case of the first
+-character, don't offer "ignore" and "add to word list".
+-
+ ":helpgrep" should use the directory from 'helpfile'.
+ 
++Patch to dynamically load Python on Solaris. (Danek Duvall, 2009 Feb 16)
++Needs more work.
++
+ The need_fileinfo flag is messy.  Instead make the message right away and put
+ it in keep_msg?
+ 
+ Editing a file remotely that matches 'wildignore' results in a "no match"
+-error.  Should only happen when there are wildards, not when giving the file
++error.  Should only happen when there are wildcards, not when giving the file
+ name literally, and esp. if there is only one name.
+ 
+ Test 61 fails sometimes.  This is a timing problem: "sleep 2" sometimes takes
+ longer than 2 seconds.
+ 
+-Changing 'guifont' in the console causes an unnecessary redraw.
++Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow.
++Can this be avoided? (Thomas Waba, 2008 Aug 24)
++Also for ":w" without a file name.
++The buffer has the full path in ffname, should pass this to the autocommand.
+ 
+ "vim -C" often has 'nocompatible', because it's set in some startup script.
+ Set 'compatible' after startup is done?  Patch by James Vega, 2008 Feb 7.
+@@ -393,11 +794,21 @@
+ Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\(" 
+ will be seen as a path separator plus "\(".
+ 
++gvim d:\path\path\(FILE).xml should not remove the \ before the (.
++This also fails with --remote.
++
++When doing ":quit" the Netbeans "killed" event isn't sent.  (Xavier de Gaye,
++2008 Nov 10)  call netbeans_file_closed() at the end of buf_freeall(), or in
++all places where buf_freeall() is called?
++
+ ":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye)
+ Check directory and call shorten_fnames()?
+ 
+ aucmd_prepbuf() should also use a window in another tab page.
+ 
++When unloading a buffer in a BufHidden autocommand the hidden flag is reset?
++(Bob Hiestand, 2008 Aug 26, Aug 27)
++
+ Substituting an area with a line break with almost the same area does change
+ the Visual area.  Can this be fixed? (James Vega, 2006 Sept 15)
+ 
+@@ -409,13 +820,33 @@
+ 
+ GUI: When combining fg en bg make sure they are not equal.
+ 
++Spell checking: Add a way to specify punctuation characters.  Add the
++superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
++
++Spell checking in popup menu: If the only problem is the case of the first
++character, don't offer "ignore" and "add to word list".
++
+ Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006
+ Jun 5)
+ 
++Use different romanian dictionary for spell checking. (Andrei Popescu, Nov
++2008)  Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip
++Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list.
++
++In a C file with spell checking, in "% integer" "nteger" is seen as an error,
++but "]s" doesn't find it.  "nteger" by itself is found. (Ralf Wildenhues, 2008
++Jul 22)
++
++There should be something about spell checking in the user manual.
++
++Spell menu: When using the Popup menu to select a replacement word,
++":spellrepeat" doesn't work.  SpellReplace() uses setline().  Can it use "z="
++somehow?  Or use a new function.
++
+ Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
+ 
+-When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a.  Compare with
+-using "ga" on a NUL when 'ff' is "unix". (Andy Wokula, 2008 Jul 16)
++Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument
++that breaks the build. (Brian Victor, 2008 Sep 1)
+ 
+ Add an option to specify the character to use when a double-width character is
+ moved to the next line.  Default '>', set to a space to blank it out.  Check
+@@ -423,14 +854,14 @@
+ 
+ The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3)
+ 
+-In a C file with spell checking, in "% integer" "nteger" is seen as an error,
+-but "]s" doesn't find it.  "nteger" by itself is found. (Ralf Wildenhues, 2008
+-Jul 22)
+-
+ Session file creation: 'autochdir' causes trouble.  Keep it off until after
+ loading all files.
+ 
+-When showing a diff between a non-existant file and an existing one, with the
++Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
++line are opened again, but from the wrong directory.  Apply 'autochdir' only
++after starting up?
++
++When showing a diff between a non-existent file and an existing one, with the
+ cursor in the empty buffer, the other buffer only shows the last line.  Change
+ the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
+ 
+@@ -443,10 +874,6 @@
+ background make.  ":bgcancel" interrupts it.
+ A.Politz may work on this.
+ 
+-The spellfile plugin checks for a writable "spell" directory.  A user may have
+-a writable runtime directory without a "spell" directory, it could be created
+-then.
+-
+ These two abbreviations don't give the same result:
+ 	let asdfasdf = "xyz\<Left>"
+ 	cabbr XXX <C-R>=asdfasdf<CR>
+@@ -489,6 +916,10 @@
+ 
+ Accessing file#var in a function should not need the g: prepended.
+ 
++When exiting detects a modified buffer, instead of opening the buffer in the
++current tab, use an existing tab, if possible.  Like finding a window where
++the buffer is displayed. (Antonios Tsakiridis)
++
+ When ":cn" moves to an error in the same line the message isn't shortened.
+ Only skip shortening for ":cc"?
+ 
+@@ -509,21 +940,9 @@
+ Problem with using :redir in user command completion function? (Hari Krishna
+ Dara, 2006 June 21)
+ 
+-GTK: When maximizing Vim the result is slightly smaller, the filler border is
+-not there, and the "maximize" button is still there.  Clicking it again does
+-give a maximized window. (Darren Hiebert)
+-Problem is that gui_mch_set_text_area_pos() is invoked to change the text area
+-size, which causes the toplevel window to resize.  When doing this while the
+-size is already right the filler remains there.
+-Detect using the maximize button (GdkWindowState bit
+-GDK_WINDOW_STATE_MAXIMIZED) and set it again?
+-
+ Another resizing problem when setting 'columns' and 'lines' to a very large
+ number. (Tony Mechelynck, 2007 Feb 6)
+ 
+-GTK: when using the -geom argument with an offset from the right edge and the
+-size is smaller than the default, the Vim window is not positioned properly.
+-
+ After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center
+ the cursor line.  It works OK after some other commands.
+ 
+@@ -531,8 +950,6 @@
+ Does multi-byte printing with ":hardcopy" work?  Add remark in documentation
+ about this.
+ 
+-There should be something about spell checking in the user manual.
+-
+ Check: Running Vim in a console and still having connect to the X server for
+ copy/paste: is stopping the X server handled gracefully?  Should catch the X
+ error and stop using the connection to the server.
+@@ -540,18 +957,35 @@
+ Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
+ Jul 26, Gary Johnson)
+ 
++Using UTF-8 character with ":command" does not work properly. (Matt Wozniski,
++2008 Sep 29)
++
+ In the Netbeans interface add a "vimeval" function, so that the other side can
+ check the result of has("patch13").
+ 
++Cursor line at bottom of window instead of halfway after saving view and
++restoring.  Only with 'nowrap'. (Robert Webb, 2008 Aug 25)
++
+ Add command modifier that skips wildcard expansion, so that you don't need to
+ put backslashes before special chars, only for white space.
+ 
++Syntax HL: open two windows on the same C code, delete a ")" in one window,
++resulting in highlighted "{" in that window, not in the other.
++
++In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way,
++can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects?
++
+ Win32: When the GUI tab pages line is displayed Vim jumps from the secondary
+ to the primary monitor. (Afton Lewis, 2007 Mar 9)  Old resizing problem?
+ 
+ GTK: when the Tab pages bar appears or disappears while the window is
+ maximized the window is no longer maximized.  Patch that has some idea but
+ doesn't work from Geoffrey Antos, 2008 May 5.
++Also: the window may no longer fit on the screen, thus the command line is not
++visible.
++
++GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
++the window isn't redrawn properly, see two vertical bars.
+ 
+ The magic clipboard format "VimClipboard2" appears in several places.  Should
+ be only one.
+@@ -576,7 +1010,7 @@
+ output should be converted.  Esp. when 'encoding' is "utf-8". (Yongwei Wu)
+ Should we use 'termencoding' for this?
+ 
+-Win32, NTFS: When editing an specific infostream directly and 'backupcopy' is
++Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is
+ "auto" should detect this situation and work like 'backupcopy' is "yes".  File
+ name is something like "c:\path\foo.txt:bar", includes a colon.  (Alex
+ Jakushev, 2008 Feb 1)
+@@ -610,10 +1044,6 @@
+ Syntax HL: When using "nextgroup" and the group has an empty match, there is
+ no search at that position for another match. (Lukas Mai, 2008 April 11)
+ 
+-Spell menu: When using the Popup menu to select a replacement word,
+-":spellrepeat" doesn't work.  SpellReplace() uses setline().  Can it use "z="
+-somehow?  Or use a new function.
+-
+ In gvim the backspace key produces a backspace character, but on Linux the
+ VERASE key is Delete.  Set VERASE to Backspace? (patch by Stephane Chazelas,
+ 2007 Oct 16)
+@@ -624,21 +1054,110 @@
+ TermResponse autocommand isn't always triggered when using vimdiff. (Aron
+ Griffis, 2007 Sep 19)
+ 
+-Patch for supporting #rrggbb in color terminals.  (Matt Wozniski)
+-
+ Create a gvimtutor.1 file and change Makefiles to install it.
+ 
++When 'encoding' is utf-8 typing text at the end of the line causes previously
++typed characters to be redrawn.  Caused by patch 7.1.329. (Tyler Spivey, 2008
++Sep 3, 11)
++
++When Vim in an xterm owns the selection and the user does ":shell" Vim doesn't
++respond to selection requests.  Invoking XtDisownSelection() before executing
++the shell doesn't help.  Would require forking and doing a message loop, like
++what happens for the GUI.
++
++X11: Putting more than about 262040 characters of text on the clipboard and
++pasting it in another Vim doesn't work.  (Dominique Pelle, 2008 Aug 21-23)
++clip_x11_request_selection_cb() is called with zero value and length.
++Also: Get an error message from free() in the process that owns the selection.
++Seems to happen when the selection is requested the second time, but before
++clip_x11_convert_selection_cb() is invoked, thus in X library code.
++
++Add 'lazysize' option: Above this size Vim doesn't load everything before
++starting to edit a file.  Things like 'fileencodings' only work up to this
++size, modelines only work at the top.  Useful for large log files where you
++only want to look at the first few pages.  Use zero to disable it.
++
++":vimgrep" does not recognize a recursive symlink.  Is it possible to detect
++this, at least for Unix (using device/inode)?
++
++When switching between windows the cursor is often put in the middle.
++Remember the relative position and restore that, just like lnum and col are
++restored. (Luc St-Louis)
++
++Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn Winckler,
++2010 Jun 30)
++
++
++Before (beta) release 7.3:
++- Add fixes for 7.2 to version7.txt
++- Add hg history to version7.txt
++- Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23)
+ 
+ Vim 7.3:
+--   Add patch for 'relativenumber' option?  Markus Heidelberg, 2008 Jun 27.
+--   Add blowfish encryption.  Openssl has an implementation.  Also by Paul
+-    Kocher (LGPL), close to original.  Mohsin also has some ideas.
+-    Take four bytes and turn them into unsigned to avoid byte-order problems.
+-    Need to buffer up to 7 bytes to align on 8 byte boundaries.
+--   ":{range}source": source the lines from the file.
++  configure: -pthread appears in cproto arguments, from GTK
++- Soon: remove UF_VERSION_CRYPT_PREV and UF_VERSION_PREV.
++- Conceal feature: no update when moving to another window. (Dominique Pelle,
++  2010 Jul 5)  Vince will look into it.
++Patches to possibly include:
++- Win32: patch for better font scaling. (George Reilly, 2009 Mar 26) 
++- Patch for completion of ":find" arguments. (Nazri Ramliy, 2009 Feb 22, 26)
++  8   For ":find" and ":sfind" expand files found in 'path'.
++  Update 2009 Mar 28.
++- Patch for vertical line at certain column position, 'guidecolumn' option.
++  (Pankaj Garg, 2009 Apr 14, aka Lone, Apr 15)
++  Update 2009 May 2, 'margincolumn'
++  Alternative patch. (2010 Feb 2, Gregor Uhlenheuer, update Apr 18 2010)
++  Fix by Lech Lorens, Apr 19
++- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
++  Needs a few tests.
++- Add different highlighting for a fold line depending on the fold level.
++  Patch. (Noel Henson, 2009 Sep 13)
++- Patch to make synIDattr() work for GUI attributes in Vim without GUI
++  feature.  (Matt Wozniski, 2009 Apr 15)
++  Patch go make gui highlight settings work in Vim without +gui feature.
++  (Matt Wozniski, 2009 Mar 27)
++- Patch for supporting #rrggbb in color terminals.  (Matt Wozniski)
++6   In the quickfix window statusline add the command used to get the list of
++    errors, e.g. ":make foo", ":grep something *.c".
++    Patch by Lech Lorens, 2009 Mar 23.
++    Comments from Andreas Bernauer 24th, Dominique Pelle 24th
++    Docs patch by Dominique Pelle, Mar 25
++    Update 2009 Mar 28.
++    Fix for invalid memory access. (Lech Lorens, 2009 Apr 17)
++- Fix for test29. (Milan Vancura, 2010 May 16)
++- Disable setting 'encoding' from a modeline?  It usually causes problems,
++  can't do any good.  (Patch from Patrick Texier, 2008 Dec 9)
++- Redraw problem when appending digraph causes line to wrap. (James Vega, 2007
++  Sep 18)  Patch by Ian Kelling, 2008 Aug 8.
++- Patch for colorscheme submenu. (Juergen Kraemer, 2008 Aug 20)
++- 9   Make it possible to drag a tab page label to another position with the
++    mouse.
++  Patch by Paul B. Mahol, 2008 Aug 29.
++- Mac: Patch to disable antialias. (LC Mi, 2008 Aug 23)  Tested on 10.5 and
++  10.4.
++- Patch for adding "J" flag to 'cinoptions': placement of jump label.  (Manuel
++  Konig, 2010 Feb 19)  Update by Lech Lorens, Feb 22.
++  Need another name, "J" is now used for Javascript.
++-   Add Lua interface? (Wolfgang Oertl) patch by Luis Carvalho, 2008 Sep 5
++	Patch for Make_ming.mak from Paul Moore (2008 Sep 1)
++      http://code.google.com/p/vim-iflua/  Download  vim72-lua-0.7.patch.gz
++Needs some work:
++- Have a look at patch to enable screen access from Python. (Marko Mahnic,
++  2010 Apr 12)
++- Patch for Python 3 support. (Roland Puntaier, 2009 Sep 22)
++  Includes changes for omnicompletion.
++  Needs some more testing.
++  Update 2010 Apr 20, patch by Andy Kittner, May 16
++  Build the MS-Windows version with Python 2.6.5 and 3.1.2?
++-   Easier/standard way to disable default plugins.
++-   ":{range}source": source the lines from the current file.
+ 	You can already yank lines and use :@" to execute them.
+ 	Most of do_source() would not be used, need a new function.
+ 	It's easy when not doing breakpoints or profiling.
++Probably not now:
++- Use timestamps for undo, so that a version a certain time ago can be found
++  and info before some time/date can be flushed. 'undopersist' gives maximum
++  time to keep undo: "3h", "1d", "2w", "1y", etc.
+ 
+ 
+ More patches:
+@@ -656,8 +1175,6 @@
+ -   ml_append_string(): efficiently append to an existing line. (Brad
+     Beveridge, 2006 Aug 26)  Use in some situations, e.g., when pasting a
+     character at a time?
+--   gettabvar() and settabvar() functions. (Yegappan Lakshmanan, 2007 Sep 13,
+-    2008 Jun 12)
+ -   recognize hex numbers better. (Mark Manning, 2006 Sep 13)
+ -   Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana
+     Natsuno, 2008 Jul 17)
+@@ -669,6 +1186,12 @@
+     vimtutor.vim. (Jan Minar, 2008 Jul 20)
+ -   When fsync() fails there is no hint about what went wrong.  Patch by Ben
+     Schmidt, 2008 Jul 22.
++-   testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008
++    Sep 13)
++-   Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29,
++    Docs patch Oct 30)
++-   Patch to support clipboard for Mac terminal. (Jjgod Jiang, 2009 Aug 1)
++    Needs to be updated for block-wise selection.
+ 
+ 
+ Awaiting updated patches:
+@@ -693,6 +1216,7 @@
+     How does this work?  Missing comments.
+ -   Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
+     Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30)
++    Version for latest MacVim: Tobia Conforto, 2009 Nov 23
+ 8   Add a few more command names to the menus.  Patch from Jiri Brezina
+     (28 feb 2002).  Will mess the translations...
+ 7   ATTENTION dialog choices are more logical when "Delete it' appears
+@@ -742,7 +1266,6 @@
+     to left as well?  See patch of Dec 26. (Nadim Shaikli)
+ 8   Option to lock all used memory so that it doesn't get swapped to disk
+     (uncrypted).  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
+     done for filetype detection.  Patch from Walter Briscoe, 2003 Jul 1.
+@@ -825,16 +1348,6 @@
+     thing.  (only repeat insert for the first line).
+ 
+ 
+-GTK+ 1 (OK in GTK 2):
+-8   When using "gvim -geom 40x30" or setting 'columns' in .gvimrc or with a
+-    GUIEnter autocommand, the width is still set to fit the toolbar.  Also
+-    happens when changing the font.  How to avoid that the toolbar specifies
+-    the minimal window width?
+-8   When using a theme with different scrollbars (gtkstep), the scrollbars can
+-    be too narrow. (Drazen Kacar)
+-8   Font "7x14" has a bold version "7x14bold".  Try to find the bold font by
+-    appending "bold" when there are not 14 dashes.
+-
+ GTK+ GUI known bugs:
+ 9   Crash with X command server over ssh. (Ciaran McCreesh, 2006 Feb 6)
+ 8   GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
+@@ -1156,7 +1669,7 @@
+ 
+ 
+ Windows 95:
+-8   Editing a file by it's short file name and writing it, makes the long file
++8   Editing a file by its short file name and writing it, makes the long file
+     name disappear.  Setting 'backupcopy' helps.
+     Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly).
+ 8   Doing wildcard expansion, will match the short filename, but result in the
+@@ -1220,8 +1733,6 @@
+ 8   ":gui" doesn't fork.  Enabling the code in gui.c to fork causes a SEGV.
+ 8   Define vim_mkdir() for Macintosh.
+ 8   Define mch_writable() for Macintosh.
+-8   Some file systems are case-sensitive, some are not.  Turn
+-    CASE_INSENSITIVE_FILENAME into an option, at least for completion.
+ 9   When DiskLock is running, using a swap file causes a crash.  Appears to be
+     a problem with writing a file that starts with a dot. (Giacalone)
+ 9   On G3 Mac, OS version 8, control strip causes characters messed up when
+@@ -1238,6 +1749,13 @@
+     CTRL-Q.  Add an option for it?
+ -   When using e_secure in do_one_cmd() mention the command being executed,
+     otherwise it's not clear where it comes from.
++-   When the quickfix window is open and executing ":echo 'hello'" using the
++    Command-line window, the text is immediately removed by the redrawing.
++    (Michael Henry, 2008 Nov 1)
++    Generic solution: When redrawing while there is a message on the
++    cmdline, don't erase the display but draw over the existing text.
++    Other solution, redraw after closing the cmdline window, before executing
++    the command.
+ 9   For Turkish vim_tolower() and vim_toupper() also need to use utf_
+     functions for characters below 0x80. (Sertacyildiz)
+ 9   When the last edited file is a help file, using '0 in a new Vim doesn't
+@@ -1360,7 +1878,7 @@
+     - Add a flag in 'printoptions' to add an empty page to make the total
+       number even.  "addempty"? (Mike Williams)
+     - Respect 'linebreak'.  Perhaps also 'showbreak'?
+-    - Should interpreted CTRL-L as a page break.
++    - Should interpret CTRL-L as a page break.
+     - Grey line numbers are not always readable.  Add field in 'printoptions'.
+       Default to black when no syntax highlighting.
+     - Be able to print a window in diff mode.
+@@ -1383,8 +1901,6 @@
+ 8   With 'virtualedit' set and 'selection' "exclusive", a Visual selection
+     that ends in or after a tab, "d" doesn't delete (part of) the tab.
+     (Helmut Stiegler)
+-8   With 'virtualedit' set, a blockwise Visual selection that starts and ends
+-    in a tab, "<" shifts too much. (Helmut Stiegler)
+ 9   When jumping to a tag, the search pattern is put in the history.  When
+     'magic' is on, the pattern may not work.  Translate the pattern depending
+     on p_magic when putting it in the history?  Alternative: Store value of
+@@ -1615,7 +2131,12 @@
+ ---------------------  extensions and improvements ----------------------
+ 						    *extensions-improvements*
+ 
+-Didn't make it into Vim 7.0:
++Most interesting new features to be added when all bugs have been fixed:
++-   Using ":exe edit fname" has escaping problems.  Use ":edit ++(fname)".
++    Thus use "++=" to give arguments as expressions, comma separated as if
++    calling a function.
++    With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)".
++    Alternative: Make a function for Ex commands: cmd_edit().
+ -   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.
+@@ -1640,10 +2161,11 @@
+ -   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.
++-   Scroll commands by screen line. g CTRL-E and g CTRL-Y ?  Requires the
++    first line to be able to start halfway.
+ -   Running a shell command from the GUI still has limitations.  Look into how
+     the terminal emulator of the Vim shell project can help:
+     http://vimshell.wana.at
+--   Add Lua interface? (Wolfgang Oertl)
+ 8   Add a command to jump to a certain kind of tag.  Allow the user to specify
+     values for the optional fields.  E.g., ":tag size type=m".
+     Also allow specifying the file and command, so that the result of
+@@ -1739,8 +2261,6 @@
+ 9   GUI implementation for the tab pages line for other systems.
+ 7   GUI: Control over the appearance of the text in the labels (bold, color,
+     font, etc.)
+-9   Make it possible to drag a tab page label to another position with the
+-    mouse.
+ 8   Make GUI menu in tab pages line configurable.  Like the popup menu.
+ 8   balloons for the tab page labels that are shortened to show the full path.
+ 8   :tabmove +N	 move tab page N pages forward
+@@ -1776,7 +2296,7 @@
+     Is COMPLEXPREFIXES necessary when we have flags for affixes?
+ -   Support spelling words in CamelCase as if they were two separate words.
+     Requires some option to enable it. (Timothy Knox)
+--   There is no Finnish spell checking file.  For openoffic Voikko is now
++-   There is no Finnish spell checking file.  For openoffice Voikko is now
+     used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
+     (Teemu Likonen)
+ 8   ":mkspell" still takes much too long in Hungarian dictionary from
+@@ -1790,7 +2310,6 @@
+     implement CHECKCOMPOUNDTRIPLE
+     Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
+     How is it supposed to work?
+-8   implement using CHECKCOMPOUNDPATTERN: match words with sl_comppat[].
+ -   Add a command the repeats ]s and z=, showing the misspelled word in its
+     context.  Thus to spell-check a whole file.
+ -   suggestion for "KG" to "kg" when it's keepcase.
+@@ -1813,8 +2332,6 @@
+     - PSEUDOROOT == NEEDAFFIX
+     - COMPOUNDROOT -> COMPOUNDED?  For a word that already is a compound word
+ 	    Or use COMPOUNDED2, COMPOUNDED3, etc.
+-8   Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
+-    obtain).  But new Myspell wordlist will come (Hagen)
+ -   CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then
+     the word must also have a suffix marked with the CIRCUMFIX flag.  It's a
+     bit primitive, since only one flag is used, which doesn't allow matching
+@@ -1874,8 +2391,6 @@
+ 8   Add "z/" and "z?" for searching in not folded text only.
+ 9   Add search pattern item to only match in closed or open fold and/or fold
+     with certain level.  Allows doing ":g/pat/cmd" to work on closed folds.
+-8   Add different highlighting for a fold line depending on the fold level.
+-    (Noel Henson)
+ 7   Use "++--", "+++--" for different levels instead of "+---" "+----".
+ 8   When a closed fold is displayed open because of 'foldminlines', the
+     behavior of commands is still like the fold is closed.  How to make the
+@@ -1900,8 +2415,6 @@
+ 	edit version.c
+     Can editing version.c twice be avoided?
+ -   'foldmethod' "textobject": fold on sections and paragraph text objects.
+--   Add 'hidecomment' option: don't display comments in /* */ and after //.
+-    Or is the conceal patch from Vince Negri a more generic solution?
+ -   "zuf": undo change in manual fold. "zUf" redo change in manual fold.  How
+     to implement this?
+ -   "zJ" command: add the line or fold below the fold in the fold under the
+@@ -1984,14 +2497,10 @@
+     Support CTRL-K _{mnemonic}_
+ 7   In "-- INSERT (lang) --" show the name of the keymap used instead of
+     "lang". (Ilya Dogolazky)
+--   Make 'langmap' accept multi-byte characters.
+-	Patch from Konstantin Korikov, 2006 Oct 15.
+ -   Make 'breakat' accept multi-byte characters.  Problem: can't use a lookup
+     table anymore (breakat_flags[]).
+     Simplistic solution: when 'formatoptions' contains "m" also break a line
+     at a multi-byte character >= 0x100.
+--   Do we need the reverse of 'keymap', like 'langmap' but with files and
+-    multi-byte characters?  E.g., when using a Russian keyboard.
+ -   Add the possibility to enter mappings which are used whenever normal text
+     could be entered.  E.g., for "f" command.  But not in Normal mode.  Sort
+     of opposite of 'langmap'.  Use ":tmap" command?
+@@ -2132,7 +2641,6 @@
+     words.
+ 8   Add more command line completion for :syntax.
+ 8   Add more command line completion for :highlight.
+-8   Add more command line completion for :sign.
+ 7   Should find a better way to parse the :syntax and :highlight commands.
+     Use tables or lists that can be shared by parsing for execution and
+     completion?
+@@ -2276,6 +2784,7 @@
+     option or environment variable.
+ 8   ":let &option" should list the value of the option.
+ 8   ":let Func().foo = value" should work, also when "foo" doesn't exist.
++    Also: ":let Func()[foo] = value" should work.  Same for a List.
+ 7   Add synIDlist(), making the whole list of syntax items on the syntax stack
+     available as a List.
+ 8   Add autocommand-event for when a variable is changed:
+@@ -2315,6 +2824,7 @@
+     buffer a lot slower than re-editing the file.  Can the memline be locked
+     so that we don't need to make a copy?  Or avoid invoking ml_updatechunk(),
+     that is taking a lot of time.  (Ralf Wildenhues, 2008 Jul 7)
++    With a patch, but does it work?
+ 8   Instead of loading rgb.txt every time a color wasn't recognized load it
+     once and keep it in memory.  Move the code to a common place to avoid
+     repeating it in various system files.
+@@ -2328,8 +2838,6 @@
+     when starting up in a color terminal.
+ 8   Avoid alloc() for scratch buffer use, esp. in syntax.c.  It's very slow on
+     Win16.
+-9   Setting GUI options in the console (e.g., 'guifont') should not cause a
+-    redraw.
+ 8   Profiling shows that in_id_list() is used very often for C code.  Can this
+     function be improved?
+ 8   For an existing file, the page size of the swap file is always the
+@@ -2541,6 +3049,9 @@
+ 8   Use a mechanism similar to omni completion to figure out the kind of tab
+     for CTRL-] and jump to the appropriate matching tag (if there are
+     several).
++    Alternative: be able to define a function that takes the tag name and uses
++    taglist() to find the right location.  With indication of using CTRL-] so
++    that the context can be taken into account. (Robert Webb)
+ 7   Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
+     number of possible matches? Check tags file for an item that has members.
+     (Flemming Madsen)
+@@ -2598,7 +3109,7 @@
+     gettext and menus work.
+ 8   Could keep console open to run multiple commands, to avoid the need to hit
+     return in every console.
+-    Also: Look at how Emacs does runs external commands:
++    Also: Look at how Emacs does run external commands:
+ 	http://www.cs.washington.edu/homes/voelker/ntemacs.html.
+ 8   Need a separate PopUp menu for modeless selection.  Need two new commands:
+     Copy selection to clipboard, Paste selection (as typed text).
+@@ -2700,6 +3211,12 @@
+ 
+ Autocommands:
+ -   Put autocommand event names in a hashtable for faster lookup?
++8   When the SwapExists event is triggered, provide information about the
++    swap file, e.g., whether the process is running, file was modified, etc.
++    Must be possible to check the situation that it's probably OK to delete
++    the swap file. (Marc Merlin)
++8   When all the patterns for an event are "*" there is no need to expand
++    buffer names to a full path.  This can be slow for NFS.
+ 7   For autocommand events that trigger multiple times per buffer (e.g.,
+     CursorHold), go through the list once and cache the result for a specific
+     buffer.  Invalidate the cache when adding/deleting autocommands or
+@@ -2712,8 +3229,6 @@
+ 8   Use another option than 'updatetime' for the CursorHold event.  The two
+     things are unrelated for the user (but the implementation is more
+     difficult).
+-8   Add an event like CursorHold that is triggered repeatedly, not just once
+-    after typing something.
+ 7   Add autocommand event for when a buffer cannot be abandoned.  So that the
+     user can define the action taking (autowrite, dialog, fail) based on the
+     kind of file. (Yakov Lerner)  Or is BufLeave sufficient?
+@@ -2782,7 +3297,7 @@
+     WinClose	    - Just before closing a window
+ -   Write the file now and then ('autosave'):
+ 				  *'autosave'* *'as'* *'noautosave'* *'noas'*
+-    'autosave' 'aw' number  (default 0)
++    'autosave' 'as' number  (default 0)
+ 	    Automatically write the current buffer to file N seconds after the
+ 	    last change has been made and when |'modified'| is still set.
+ 	    Default: 0 = do not autosave the buffer.
+@@ -2815,7 +3330,7 @@
+ 	    and http://stud4.tuwien.ac.at/~e0125672/icomplete/
+ 	http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
+ 	Ivan Villanueva has something for Java.
+-	Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
++	Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html
+ 	Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
+ -   Pre-expand abbreviations, show which abbrevs would match?
+ 
+@@ -2931,7 +3446,6 @@
+ -   For 'wildmenu': Simplify "../bar" when possible.
+ -   When using <Up> in wildmenu mode for a submenu, should go back to the
+     current menu, not the first one.  E.g., ":emenu File.Save<Up>".
+-8   For ":find" and ":sfind" expand files found in 'path'.
+ 8   When using backtick expansion, the external command may write a greeting
+     message.  Add an option or commands to remove lines that match a regexp?
+ 7   When listing matches of files, display the common path separately from the
+@@ -2999,6 +3513,8 @@
+         cout << "a"
+                 << ") :"
+                 << "y";
++9   "} else" causes following lines to be indented too much. (Rouben
++    Rostamian, 2008 Aug 30)
+ 8   Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17)
+ 8   Why are continuation lines outside of a {} block not indented?  E.g.:
+ 	long_type foo =
+@@ -3013,6 +3529,13 @@
+ 			    "asdf"
+ 			}
+ 		    );
++8   In C++ a function isn't recognized inside a namespace:
++    (Chow Loong Jin)
++	namespace {
++	    int
++		 func(int arg) {
++		 }
++	}
+ 6   Add 'cino' flag for this function argument layout: (Spencer Collyer)
+ 	    func( arg1
+ 	        , arg2
+@@ -3099,8 +3622,6 @@
+ 
+ Virtual edit:
+ 8   Make the horizontal scrollbar work to move the text further left.
+-7   Add a mode where the cursor is only allowed to go one character after the
+-    end of the line?
+ 7   Allow specifying it separately for Tabs and beyond end-of-line?
+ 
+ 
+@@ -3307,6 +3828,8 @@
+     The vis.vim script has a ":S" command that does something like this.
+     Can use "g/" in Normal mode, uses the '< to '> area.
+     Use "&/" for searching the text in the Visual area?
++9   Add "v" offset: "/pat/v": search for pattern and start Visual mode on the
++    matching text.
+ 8   Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)".  \@g stands
+     for "go recursive here" and \@( \) marks the recursive part.
+     Perl does it this way:
+@@ -3317,6 +3840,9 @@
+ 8   Show the progress every second.  Could use the code that checks for CTRL-C
+     to find out how much time has passed.  Or use SIGALRM.  Where to show the
+     number?
++8   When using an expression for ":s", set the match position in a v:
++    variable.  So that you can do ":%s/^/\=v:lnum/" to put a line number
++    before each line.
+ 7   Support for approximate-regexps to find similar words (agrep
+     http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
+ 8   Add an item for a big character range, so that one can search for a
+@@ -3328,7 +3854,7 @@
+ 7   Add an option to accept a match at the cursor position.  Also for
+     search(). (Brett)
+ 7   Add a flag to "/pat/" to discard an error.  Useful to continue a mapping
+-    when a search fails.  Could be "/pat/E" (e is already used for an offset).
++    when a search fails.  Could be "/pat/E" (e is already used for end offset).
+ 7   Add pattern item to use properties of Unicode characters.  In Perl it's
+     "\p{L}" for a letter.  See Regular Expression Pocket Reference.
+ 8   Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
+@@ -3440,11 +3966,6 @@
+     storing the differences.
+ 8   Search for pattern in undo tree, showing when it happened and the text
+     state, so that you can jump to it.
+--   Persistent undo: store undo in a file.
+-    Use timestamps, so that a version a certain time ago can be found and info
+-    before some time/date can be flushed. 'undopersist' gives maximum time to
+-    keep undo: "3h", "1d", "2w", "1y", etc.  For the file use dot and
+-    extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
+ -   Make it possible to undo all the commands from a mapping, including a
+     trailing unfinished command, e.g. for ":map K iX^[r".
+ -   When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
+@@ -3761,11 +4282,6 @@
+ -   When mouse click after 'r' command, get character that was pointed to.
+ 
+ 
+-Crypt and security:
+-8   Also crypt the swapfile, each block separately.  Change mf_write() and
+-    mf_read().  How to get b_p_key to these functions?
+-
+-
+ Argument list:
+ 6   Add command to put all filenames from the tag files in the argument list.
+     When given an argument, only use the files where that argument matches
+@@ -3831,16 +4347,15 @@
+     Govindachar)
+ 7   Add a command that goes back to the position from before jumping to the
+     first quickfix location.  ":cbefore"?
+-6   In the quickfix window statusline add the command used to get the list of
+-    errors, e.g. ":make foo", ":grep something *.c".
++7   Allow a window not to have a statusline.  Makes it possible to use a
++    window as a buffer-tab selection.
++8   Allow non-active windows to have a different statusline. (Yakov Lerner)
+ 6   Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
+ 7   Support using ":vert" with User commands.  Add expandable items <vert>.
+     Do the same for ":browse" and ":confirm"?
+     For ":silent" and ":debug" apply to the whole user command.
+     More general: need a way to access command modifiers in a user command.
+     Assign them to a v: variable?
+-7   Allow a window not to have a statusline.  Makes it possible to use a
+-    window as a buffer-tab selection.
+ 7   Add an invisible buffer which can be edited.  For use in scripts that want
+     to manipulate text without changing the window layout.
+ 8   Add a command to revert to the saved version of file; undo or redo until
+@@ -3865,7 +4380,6 @@
+     etc.  Combinations of Alt, Ctrl and Shift are also possible.  Recognize
+     these to avoid inserting the raw byte sequence, handle like the key
+     without modifier (unless mapped).
+-7   Support ":browse edit" in console, using explorer.vim?
+ 6   Add "gG": like what "gj" is to "j": go to the N'th window line.
+ 8   Add command like ":normal" that accepts <Key> notation like ":map".
+ 9   Support ACLs on more systems.
+@@ -3905,12 +4419,6 @@
+ 3   Make "2d%" work like "d%d%" instead of "d2%"?
+ 7   "g CTRL-O" jumps back to last used buffer.	Skip CTRL-O jumps in the same
+     buffer.  Make jumplist remember the last ten accessed buffers?
+--   Keep a list of most recently used files for each window, use "[o" to go
+-    back (older file) and "]n" to go forward (newer file) (like ^O and ^I for
+-    jumps). (Webb)  Use ":files" and ":ls" to list the files in history order.
+-7   Add a history of recently accessed buffer.	Maybe make "2 CTRL-^" jump to
+-    the 2nd previously visited buffer, "3 CTRL-^" to the third, etc.  Or use
+-    "3 g CTRL-^" for this?
+ -   Add code to disable the CAPS key when going from Insert to Normal mode.
+ -   Set date/protection/etc. of the patchfile the same as the original file.
+ -   Use growarray for termcodes[] in term.c
+@@ -4096,7 +4604,7 @@
+ -   Updatescript() can be done faster with a string instead of a char.
+ -   Screen updating is inefficient with CTRL-F and CTRL-B when there are long
+     lines.
+--   Uppercase characters in ex commands can be made lowercase?
++-   Uppercase characters in Ex commands can be made lowercase?
+ 8   Add option to show characters in text not as "|A" but as decimal ("^129"),
+     hex ("\x81") or octal ("\201") or meta (M-x).  Nvi has the 'octal' option
+     to switch from hex to octal.  Vile can show unprintable characters in hex
+@@ -4137,7 +4645,7 @@
+ -   Amiga: When 'r' protection bit is not set, file can still be opened but
+     gives read errors.  Check protection before opening.
+ -   When writing check for file exists but no permission, "Permission denied".
+--   If file does not exists, check if directory exists.
++-   If file does not exist, check if directory exists.
+ -   MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
+ -   Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
+     commands.
+@@ -4156,7 +4664,7 @@
+     for use in macro's and the like.
+ -   Keep output from listings in a window, so you can have a look at it while
+     working in another window.  Put cmdline in a separate window?
+--   Add possibility to put output of ex commands in a buffer or file, e.g. for
++-   Add possibility to put output of Ex commands in a buffer or file, e.g. for
+     ":set all".  ":r :set all"?
+ -   'edit' option: When off changing the buffer is not possible (Really
+     read-only mode).
+diff -Nur runtime/doc/uganda.txt runtime/doc/uganda.txt
+--- runtime/doc/uganda.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/uganda.txt	2011-04-03 09:27:21.392923292 -0700
+@@ -1,4 +1,4 @@
+-*uganda.txt*    For Vim version 7.2.  Last change: 2008 Jun 21
++*uganda.txt*    For Vim version 7.3a.  Last change: 2009 Dec 27
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -194,11 +194,12 @@
+ 
+ How do you know that the money will be spent right?  First of all you have my
+ personal guarantee as the author of Vim.  I trust the people that are working
+-at the centre, I know them personally.  Further more, the centre is
+-co-sponsored and inspected by World Vision, Save the Children Fund and
+-International Child Care Fund.  The centre is visited about once a year to
+-check the progress (at our own cost).  I have visited the centre myself in
+-1996, 1998, 2000, 2001 and 2003.  The visit reports are on the ICCF web site.
++at the centre, I know them personally.  Further more, the centre has been
++co-sponsored and inspected by World Vision, Save the Children Fund and is now
++under the supervision of Pacific Academy Outreach Society.  The centre is
++visited about once a year to check the progress (at our own cost).  I have
++visited the centre myself many times, starting in 1993.  The visit reports are
++on the ICCF web site.
+ 
+ If you have any further questions, send me e-mail: <[email protected]>.
+ 
+diff -Nur runtime/doc/undo.txt runtime/doc/undo.txt
+--- runtime/doc/undo.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/undo.txt	2011-04-03 09:27:21.393990110 -0700
+@@ -1,4 +1,4 @@
+-*undo.txt*      For Vim version 7.2.  Last change: 2006 Apr 30
++*undo.txt*      For Vim version 7.3a.  Last change: 2009 Apr 12
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -12,7 +12,8 @@
+ 2. Two ways of undo		|undo-two-ways|
+ 3. Undo blocks			|undo-blocks|
+ 4. Undo branches		|undo-branches|
+-5. Remarks about undo		|undo-remarks|
++5. Undo persistence		|undo-persistence|
++6. Remarks about undo		|undo-remarks|
+ 
+ ==============================================================================
+ 1. Undo and redo commands				*undo-commands*
+@@ -22,7 +23,7 @@
+ 
+ 							*:u* *:un* *:undo*
+ :u[ndo]			Undo one change.  {Vi: only one level}
+-
++								*E830*
+ :u[ndo] {N}		Jump to after change number {N}.  See |undo-branches|
+ 			for the meaning of {N}.  {not in Vi}
+ 
+@@ -106,6 +107,12 @@
+ After this an "u" command will undo the delete command and the previous
+ change.
+ 
++To do the opposite, break a change into two undo blocks, in Insert mode use
++CTRL-G u.  This is useful if you want an insert command to be undoable in
++parts.  E.g., for each sentence.  |i_CTRL-G_u|
++Setting the value of 'undolevels' also breaks undo.  Even when the new value
++is equal to the old value.
++
+ ==============================================================================
+ 4. Undo branches				*undo-branches* *undo-tree*
+ 
+@@ -128,6 +135,7 @@
+ 			The "changes" column is the number of changes to this
+ 			leaf from the root of the tree.
+ 			The "time" column is the time this change was made.
++			For more details use the |undotree()| function.
+ 
+ 							*g-*
+ g-			Go to older text state.  With a count repeat that many
+@@ -137,6 +145,16 @@
+ :earlier {N}s		Go to older text state about {N} seconds before.
+ :earlier {N}m		Go to older text state about {N} minutes before.
+ :earlier {N}h		Go to older text state about {N} hours before.
++:earlier {N}d		Go to older text state about {N} days before.
++
++:earlier {N}f		Go to older text state {N} file writes before.
++			When changes were made since the laste write
++			":earlier 1f" will revert the text to the state when
++			it was written.  Otherwise it will go to the write
++			before that.
++			When at the state of the first file write, or when
++			the file was not written, ":earlier 1f" will go to
++			before the first change.
+ 
+ 							*g+*
+ g+			Go to newer text state.  With a count repeat that many
+@@ -146,6 +164,11 @@
+ :later {N}s		Go to newer text state about {N} seconds later.
+ :later {N}m		Go to newer text state about {N} minutes later.
+ :later {N}h		Go to newer text state about {N} hours later.
++:later {N}d		Go to newer text state about {N} days later.
++
++:later {N}f		Go to newer text state {N} file writes later.
++			When at the state of the last file write, ":later 1f"
++			will go to the newest text state.
+ 
+ 
+ Note that text states will become unreachable when undo information is cleared
+@@ -197,12 +220,133 @@
+ while repeating "g-" and "g+" does.
+ 
+ ==============================================================================
+-5. Remarks about undo					*undo-remarks*
++5. Undo persistence		*undo-persistence* *persistent-undo*
++
++When unloading a buffer Vim normally destroys the tree of undos created for
++that buffer.  By setting the 'undofile' option, Vim will automatically save
++your undo history when you write a file and restore undo history when you edit
++the file again.
++
++The 'undofile' option is checked after writing a file, before the BufWritePost
++autocommands.  If you want to control what files to write undo information
++for, you can use a BufWritePre autocommand: >
++	au BufWritePre /tmp/* setlocal noundofile
++
++Vim saves undo trees in a separate undo file, one for each edited file, using
++a simple scheme that maps filesystem paths directly to undo files. Vim will
++detect if an undo file is no longer synchronized with the file it was written
++for (with a hash of the file contents) and ignore it when the file was changed
++after the undo file was written, to prevent corruption.
++
++Undo files are normally saved in the same directory as the file.  This can be
++changed with the 'undodir' option.
++
++When the file is encrypted, the text in the undo file is also crypted.  The
++same key and method is used. |encryption|
++
++You can also save and restore undo histories by using ":wundo" and ":rundo"
++respectively:
++							*:wundo* *:rundo*
++:wundo[!] {file}
++		Write undo history to {file}.
++		When {file} exists and it does not look like an undo file
++		(the magic number at the start of the file is wrong), then
++		this fails, unless the ! was added.
++		If it exists and does look like an undo file it is
++		overwritten.
++		{not in Vi}
++
++:rundo {file}	Read undo history from {file}.
++		{not in Vi}
++
++You can use these in autocommands to explicitly specify the name of the
++history file.  E.g.: >
++
++	au BufReadPost * call ReadUndo()
++	au BufWritePost * call WriteUndo()
++	func ReadUndo()
++	  if filereadable(expand('%:h'). '/UNDO/' . expand('%:t'))
++	    rundo %:h/UNDO/%:t
++	  endif
++	endfunc
++	func WriteUndo()
++	  let dirname = expand('%:h') . '/UNDO'
++	  if !isdirectory(dirname)
++	    call mkdir(dirname)
++	  endif
++	  wundo %:h/UNDO/%:t
++	endfunc
++
++You should keep 'undofile' off, otherwise you end up with two undo files for
++every write.
++
++You can use the |undofile()| function to find out the file name that Vim would
++use.
++
++Note that while reading/writing files and 'undofile' is set most errors will
++be silent, unless 'verbose' is set.  With :wundo and :rundo you will get more
++error messages, e.g., when the file cannot be read or written.
++
++NOTE: undo files are never deleted by Vim.  You need to delete them yourself.
++
++Reading an existing undo file may fail for several reasons:
++*E822*	It cannot be opened, because the file permissions don't allow it.
++*E823*	The magic number at the start of the file doesn't match.  This usually
++	means it is not an undo file.
++*E824*	The version number of the undo file indicates that it's written by a
++	newer version of Vim.  You need that newer version to open it.  Don't
++	write the buffer if you want to keep the undo info in the file.
++"File contents changed, cannot use undo info"
++	The file text differs from when the undo file was written.  This means
++	the undo file cannot be used, it would corrupt the text.  This also
++	happens when 'encoding' differs from when the undo file was written.
++*E825*  The undo file does not contain valid contents and cannot be used.
++*E826*  The undo file is encrypted but decryption failed.
++*E827*  The undo file is encrypted but this version of Vim does not support
++	encryption.  Open the file with another Vim.
++*E832*  The undo file is encrypted but 'key' is not set, the text file is not
++	encrypted.  This would happen if the text file was written by Vim
++	encrypted at first, and later overwritten by not encrypted text.
++	You probably want to delete this undo file.
++"Not reading undo file, owner differs"
++	The undo file is owned by someone else than the owner of the text
++	file.  For safety the undo file is not used.
++
++Writing an undo file may fail for these reasons:
++*E828*	The file to be written cannot be created.  Perhaps you do not have
++	write permissions in the directory.
++"Cannot write undo file in any directory in 'undodir'"
++	None of the directories in 'undodir' can be used.
++"Will not overwrite with undo file, cannot read"
++	A file exists with the name of the undo file to be written, but it
++	cannot be read.  You may want to delete this file or rename it.
++"Will not overwrite, this is not an undo file"
++	A file exists with the name of the undo file to be written, but it
++	does not start with the right magic number.  You may want to delete
++	this file or rename it.
++"Skipping undo file write, noting to undo"
++	There is no undo information not be written, nothing has been changed
++	or 'undolevels' is negative.
++*E829*	An error occurred while writing the undo file.  You may want to try
++	again.
++
++==============================================================================
++6. Remarks about undo					*undo-remarks*
+ 
+ The number of changes that are remembered is set with the 'undolevels' option.
+ If it is zero, the Vi-compatible way is always used.  If it is negative no
+ undo is possible.  Use this if you are running out of memory.
+ 
++							*clear-undo*
++When you set 'undolevels' to -1 the undo information is not immediately
++cleared, this happens at the next change.  To force clearing the undo
++information you can use these commands: >
++	:let old_undolevels = &undolevels
++	:set undolevels=-1
++	:exe "normal a \<BS>\<Esc>"
++	:let &undolevels = old_undolevels
++	:unlet old_undolevels
++
+ Marks for the buffer ('a to 'z) are also saved and restored, together with the
+ text.  {Vi does this a little bit different}
+ 
+diff -Nur runtime/doc/usr_01.txt runtime/doc/usr_01.txt
+--- runtime/doc/usr_01.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/usr_01.txt	2011-04-03 09:27:21.400173126 -0700
+@@ -1,4 +1,4 @@
+-*usr_01.txt*	For Vim version 7.2.  Last change: 2008 May 07
++*usr_01.txt*	For Vim version 7.3a.  Last change: 2008 May 07
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_02.txt runtime/doc/usr_02.txt
+--- runtime/doc/usr_02.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/usr_02.txt	2011-04-03 09:27:21.401098239 -0700
+@@ -1,4 +1,4 @@
+-*usr_02.txt*	For Vim version 7.2.  Last change: 2007 Feb 28
++*usr_02.txt*	For Vim version 7.3a.  Last change: 2007 Feb 28
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -302,7 +302,7 @@
+ 
+ The "U" command is a change by itself, which the "u" command undoes and CTRL-R
+ redoes.  This might be a bit confusing.  Don't worry, with "u" and CTRL-R you
+-can go to any of the situations you had.  More about that in section |32.1|.
++can go to any of the situations you had.  More about that in section |32.2|.
+ 
+ ==============================================================================
+ *02.6*	Other editing commands
+diff -Nur runtime/doc/usr_03.txt runtime/doc/usr_03.txt
+--- runtime/doc/usr_03.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/usr_03.txt	2011-04-03 09:27:21.402076815 -0700
+@@ -1,4 +1,4 @@
+-*usr_03.txt*	For Vim version 7.2.  Last change: 2006 Jun 21
++*usr_03.txt*	For Vim version 7.3a.  Last change: 2006 Jun 21
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_04.txt runtime/doc/usr_04.txt
+--- runtime/doc/usr_04.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/usr_04.txt	2011-04-03 09:27:21.408009314 -0700
+@@ -1,4 +1,4 @@
+-*usr_04.txt*	For Vim version 7.2.  Last change: 2006 Jun 21
++*usr_04.txt*	For Vim version 7.3a.  Last change: 2008 Sep 06
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -263,7 +263,7 @@
+ one of the other corners, diagonally.  Use "O" to move to the other corner in
+ the same line.
+ 
+-Note that "o" and "O" in Visual mode work very different from Normal mode,
++Note that "o" and "O" in Visual mode work very differently from Normal mode,
+ where they open a new line below or above the cursor.
+ 
+ ==============================================================================
+@@ -498,7 +498,7 @@
+ 	~	change case of the character under the cursor, and move the
+ 		cursor to the next character.  This is not an operator (unless
+ 		'tildeop' is set), thus you can't use it with a motion
+-		command.  It does works in Visual mode and changes case for
++		command.  It does work in Visual mode and changes case for
+ 		all the selected text then.
+ 
+ 	I	Start Insert mode after moving the cursor to the first
+diff -Nur runtime/doc/usr_05.txt runtime/doc/usr_05.txt
+--- runtime/doc/usr_05.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/usr_05.txt	2011-04-03 09:27:21.409070566 -0700
+@@ -1,4 +1,4 @@
+-*usr_05.txt*	For Vim version 7.2.  Last change: 2007 May 11
++*usr_05.txt*	For Vim version 7.3a.  Last change: 2009 Jun 04
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -205,8 +205,8 @@
+ 
+ 							*restore-cursor*  >
+ 	autocmd BufReadPost *
+-	    \ if line("'\"") > 0 && line("'\"") <= line("$") |
+-	    \   exe "normal g`\"" |
++	    \ if line("'\"") > 1 && line("'\"") <= line("$") |
++	    \   exe "normal! g`\"" |
+ 	    \ endif
+ 
+ Another autocommand.  This time it is used after reading any file.  The
+diff -Nur runtime/doc/usr_06.txt runtime/doc/usr_06.txt
+--- runtime/doc/usr_06.txt	2008-08-09 07:23:00.000000000 -0700
++++ runtime/doc/usr_06.txt	2011-04-03 09:27:21.419506606 -0700
+@@ -1,4 +1,4 @@
+-*usr_06.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_06.txt*	For Vim version 7.3a.  Last change: 2009 Oct 28
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -244,10 +244,14 @@
+ 
+ This also works on Unix, if you have a PostScript printer.  Otherwise, you
+ will have to do a bit more work.  You need to convert the text to HTML first,
+-and then print it from a web browser such as Netscape.
++and then print it from a web browser.
+ 
+ Convert the current file to HTML with this command: >
+ 
++	:TOhtml
++
++In case that doesn't work: >
++
+ 	:source $VIMRUNTIME/syntax/2html.vim
+ 
+ You will see it crunching away, this can take quite a while for a large file.
+diff -Nur runtime/doc/usr_07.txt runtime/doc/usr_07.txt
+--- runtime/doc/usr_07.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_07.txt	2011-04-03 09:27:21.420849696 -0700
+@@ -1,4 +1,4 @@
+-*usr_07.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_07.txt*	For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_08.txt runtime/doc/usr_08.txt
+--- runtime/doc/usr_08.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_08.txt	2011-04-03 09:27:21.421702423 -0700
+@@ -1,4 +1,4 @@
+-*usr_08.txt*	For Vim version 7.2.  Last change: 2006 Jul 18
++*usr_08.txt*	For Vim version 7.3a.  Last change: 2006 Jul 18
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_09.txt runtime/doc/usr_09.txt
+--- runtime/doc/usr_09.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_09.txt	2011-04-03 09:27:21.422426930 -0700
+@@ -1,4 +1,4 @@
+-*usr_09.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_09.txt*	For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_10.txt runtime/doc/usr_10.txt
+--- runtime/doc/usr_10.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_10.txt	2011-04-03 09:27:21.423339752 -0700
+@@ -1,4 +1,4 @@
+-*usr_10.txt*	For Vim version 7.2.  Last change: 2006 Nov 05
++*usr_10.txt*	For Vim version 7.3a.  Last change: 2006 Nov 05
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_11.txt runtime/doc/usr_11.txt
+--- runtime/doc/usr_11.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_11.txt	2011-04-03 09:27:21.430664606 -0700
+@@ -1,4 +1,4 @@
+-*usr_11.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_11.txt*	For Vim version 7.3a.  Last change: 2009 Oct 29
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -6,9 +6,9 @@
+ 
+ 
+ Did your computer crash?  And you just spent hours editing?  Don't panic!  Vim
+-keeps enough information on harddisk to be able to restore most of your work.
+-This chapter shows you how to get your work back and explains how the swap
+-file is used.
++stores enough information to be able to restore most of your work.  This
++chapter shows you how to get your work back and explains how the swap file is
++used.
+ 
+ |11.1|	Basic recovery
+ |11.2|	Where is the swap file?
+@@ -29,29 +29,45 @@
+ 	vim -r help.txt
+ 
+ Vim will read the swap file (used to store text you were editing) and may read
+-bits and pieces of the original file.  If all is well, you will see these
+-messages (with different file names, of course):
++bits and pieces of the original file.  If Vim recovered your changes you will
++see these messages (with different file names, of course):
+ 
+ 	Using swap file ".help.txt.swp" ~
+ 	Original file "~/vim/runtime/doc/help.txt" ~
+ 	Recovery completed. You should check if everything is OK. ~
+ 	(You might want to write out this file under another name ~
+ 	and run diff with the original file to check for changes) ~
+-	Delete the .swp file afterwards. ~
++	You may want to delete the .swp file now. ~
+ 
+ To be on the safe side, write this file under another name: >
+ 
+ 	:write help.txt.recovered
+ 
+ Compare the file with the original file to check if you ended up with what you
+-expected.  Vimdiff is very useful for this |08.7|.  Watch out for the original
+-file to contain a more recent version (you saved the file just before the
+-computer crashed).  And check that no lines are missing (something went wrong
+-that Vim could not recover).
++expected.  Vimdiff is very useful for this |08.7|.  For example: >
++
++	:write help.txt.recovered
++	:edit #
++	:diffsp help.txt
++
++Watch out for the original file to contain a more recent version (you saved
++the file just before the computer crashed).  And check that no lines are
++missing (something went wrong that Vim could not recover).
+    If Vim produces warning messages when recovering, read them carefully.
+ This is rare though.
+ 
+-It's normal that the last few changes can not be recovered.  Vim flushes the
++If the recovery resulted in text that is exactly the same as the file
++contents, you will get this message:
++
++	Using swap file ".help.txt.swp" ~
++	Original file "~/vim/runtime/doc/help.txt" ~
++	Recovery completed. Buffer contents equals file contents. ~
++	You may want to delete the .swp file now. ~
++
++This usually happens if you already recovered your changes, or you wrote the
++file after making changes.  It is safe to delete the swap file now.
++
++It is normal that the last few changes can not be recovered.  Vim flushes the
+ changes to disk when you don't type for about four seconds, or after typing
+ about two hundred characters.  This is set with the 'updatetime' and
+ 'updatecount' options.  Thus when Vim didn't get a chance to save itself when
+@@ -111,6 +127,8 @@
+ 	vim -r .help.txt.swo
+ 
+ This is also handy when the swap file is in another directory than expected.
++Vim recognizes files with the pattern *.s[uvw][a-z] as swap files.
++
+ If this still does not work, see what file names Vim reports and rename the
+ files accordingly.  Check the 'directory' option to see where Vim may have
+ put the swap file.
+@@ -214,7 +232,7 @@
+ that file, be prepared to redo your last changes.
+ 
+ 
+-WHAT TO DO?
++WHAT TO DO?					*swap-exists-choices*
+ 
+ If dialogs are supported you will be asked to select one of five choices:
+ 
+@@ -265,6 +283,8 @@
+ If you really don't want to see this message, you can add the 'A' flag to the
+ 'shortmess' option.  But it's very unusual that you need this.
+ 
++For remarks about encryption and the swap file, see |:recover-crypt|.
++
+ ==============================================================================
+ *11.4*	Further reading
+ 
+diff -Nur runtime/doc/usr_12.txt runtime/doc/usr_12.txt
+--- runtime/doc/usr_12.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_12.txt	2011-04-03 09:27:21.431538766 -0700
+@@ -1,4 +1,4 @@
+-*usr_12.txt*	For Vim version 7.2.  Last change: 2007 May 11
++*usr_12.txt*	For Vim version 7.3a.  Last change: 2007 May 11
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_20.txt runtime/doc/usr_20.txt
+--- runtime/doc/usr_20.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_20.txt	2011-04-03 09:27:21.432440470 -0700
+@@ -1,4 +1,4 @@
+-*usr_20.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_20.txt*	For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_21.txt runtime/doc/usr_21.txt
+--- runtime/doc/usr_21.txt	2011-04-03 13:03:28.279772637 -0700
++++ runtime/doc/usr_21.txt	2011-04-03 09:27:21.433362514 -0700
+@@ -1,4 +1,4 @@
+-*usr_21.txt*	For Vim version 7.2.  Last change: 2008 Nov 09
++*usr_21.txt*	For Vim version 7.3a.  Last change: 2008 Nov 09
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_21.txt.~1~ runtime/doc/usr_21.txt.~1~
+diff -Nur runtime/doc/usr_22.txt runtime/doc/usr_22.txt
+--- runtime/doc/usr_22.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_22.txt	2011-04-03 09:27:21.434301397 -0700
+@@ -1,4 +1,4 @@
+-*usr_22.txt*	For Vim version 7.2.  Last change: 2007 Aug 14
++*usr_22.txt*	For Vim version 7.3a.  Last change: 2010 Feb 21
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -54,7 +54,7 @@
+     *.c files, etc)
+ 5.  How to get help (use the <F1> key), and an abbreviated listing
+     of available commands
+-6.  A listing of files, including "../", which allows one to to list
++6.  A listing of files, including "../", which allows one to list
+     the parent directory.
+ 
+ If you have syntax highlighting enabled, the different parts are highlighted
+@@ -98,7 +98,7 @@
+ <    	(etc)
+ 
+ The <F1> key thus brings you to a netrw directory browsing contents help page.
+-Its a regular help page; use the usual |CTRL-]| to jump to tagged help items
++It's a regular help page; use the usual |CTRL-]| to jump to tagged help items
+ and |CTRL-O| to jump back.
+ 
+ To select files for display and editing: (with the cursor is atop a filename)
+@@ -358,7 +358,7 @@
+ 
+ 	:buffer help
+ 
+-Vim will find a best match for the name you type.  If there is only one
++Vim will find the best match for the name you type.  If there is only one
+ buffer that matches the name, it will be used.  In this case "help.txt".
+    To open a buffer in a new window: >
+ 
+diff -Nur runtime/doc/usr_23.txt runtime/doc/usr_23.txt
+--- runtime/doc/usr_23.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_23.txt	2011-04-03 09:27:21.435058456 -0700
+@@ -1,4 +1,4 @@
+-*usr_23.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_23.txt*	For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_24.txt runtime/doc/usr_24.txt
+--- runtime/doc/usr_24.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_24.txt	2011-04-03 09:27:21.435958235 -0700
+@@ -1,4 +1,4 @@
+-*usr_24.txt*	For Vim version 7.2.  Last change: 2006 Jul 23
++*usr_24.txt*	For Vim version 7.3a.  Last change: 2006 Jul 23
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_25.txt runtime/doc/usr_25.txt
+--- runtime/doc/usr_25.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_25.txt	2011-04-03 09:27:21.447693489 -0700
+@@ -1,4 +1,4 @@
+-*usr_25.txt*	For Vim version 7.2.  Last change: 2007 May 11
++*usr_25.txt*	For Vim version 7.3a.  Last change: 2007 May 11
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -304,7 +304,7 @@
+ One horizontal scrollbar will appear at the bottom of the Vim window.
+ 
+ If you don't have a scrollbar or don't want to use it, use these commands to
+-scroll the text.  The cursor will stay in the same place, but it's move back
++scroll the text.  The cursor will stay in the same place, but it's moved back
+ into the visible text if necessary.
+ 
+ 	zh		scroll right
+@@ -547,7 +547,7 @@
+ What happens is that the "gr" command makes sure the new character takes the
+ right amount of screen space.  Extra spaces or tabs are inserted to fill the
+ gap.  Thus what actually happens is that a tab is replaced by "x" and then
+-blanks added to make the text after it keep it's place.  In this case a
++blanks added to make the text after it keep its place.  In this case a
+ tab is inserted.
+    When you need to replace more than one character, you use the "R" command
+ to go to Replace mode (see |04.9|).  This messes up the layout and replaces
+diff -Nur runtime/doc/usr_26.txt runtime/doc/usr_26.txt
+--- runtime/doc/usr_26.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_26.txt	2011-04-03 09:27:21.456134528 -0700
+@@ -1,4 +1,4 @@
+-*usr_26.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_26.txt*	For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_27.txt runtime/doc/usr_27.txt
+--- runtime/doc/usr_27.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_27.txt	2011-04-03 09:27:21.464320220 -0700
+@@ -1,4 +1,4 @@
+-*usr_27.txt*	For Vim version 7.2.  Last change: 2007 Nov 10
++*usr_27.txt*	For Vim version 7.3a.  Last change: 2010 Mar 28
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -40,7 +40,7 @@
+ 
+ 	:set noignorecase
+ 
+-But lets keep it set, and search for "INCLUDE".  It will match exactly the
++But let's keep it set, and search for "INCLUDE".  It will match exactly the
+ same text as "include" did.  Now set the 'smartcase' option: >
+ 
+ 	:set ignorecase smartcase
+@@ -77,7 +77,7 @@
+ 
+ 	Note:
+ 	The use of "\" items in search patterns depends on the 'magic' option.
+-	In this chapters we will assume 'magic' is on, because that is the
++	In this chapter we will assume 'magic' is on, because that is the
+ 	standard and recommended setting.  If you would change 'magic', many
+ 	search patterns would suddenly become invalid.
+ 
+diff -Nur runtime/doc/usr_28.txt runtime/doc/usr_28.txt
+--- runtime/doc/usr_28.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_28.txt	2011-04-03 09:27:21.465144878 -0700
+@@ -1,4 +1,4 @@
+-*usr_28.txt*	For Vim version 7.2.  Last change: 2008 Jun 14
++*usr_28.txt*	For Vim version 7.3a.  Last change: 2008 Jun 14
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -389,7 +389,7 @@
+ ==============================================================================
+ *28.10* Which fold method to use?
+ 
+-All these possibilities make you wonder which method you should chose.
++All these possibilities make you wonder which method you should choose.
+ Unfortunately, there is no golden rule.  Here are some hints.
+ 
+ If there is a syntax file with folding for the language you are editing, that
+diff -Nur runtime/doc/usr_29.txt runtime/doc/usr_29.txt
+--- runtime/doc/usr_29.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_29.txt	2011-04-03 09:27:21.465962599 -0700
+@@ -1,4 +1,4 @@
+-*usr_29.txt*	For Vim version 7.2.  Last change: 2008 Jun 28
++*usr_29.txt*	For Vim version 7.3a.  Last change: 2008 Jun 28
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_30.txt runtime/doc/usr_30.txt
+--- runtime/doc/usr_30.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_30.txt	2011-04-03 09:27:21.466850993 -0700
+@@ -1,4 +1,4 @@
+-*usr_30.txt*	For Vim version 7.2.  Last change: 2007 Nov 10
++*usr_30.txt*	For Vim version 7.3a.  Last change: 2007 Nov 10
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -362,7 +362,7 @@
+ 	   echo "-------" ~
+ 	fi ~
+ 
+-Start off by setting these option: >
++Start off by setting these options: >
+ 
+ 	:set autoindent shiftwidth=3
+ 
+diff -Nur runtime/doc/usr_31.txt runtime/doc/usr_31.txt
+--- runtime/doc/usr_31.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_31.txt	2011-04-03 09:27:21.477818418 -0700
+@@ -1,4 +1,4 @@
+-*usr_31.txt*	For Vim version 7.2.  Last change: 2007 May 08
++*usr_31.txt*	For Vim version 7.3a.  Last change: 2007 May 08
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -245,7 +245,7 @@
+ 
+ 	:set lines=55
+ 
+-You don't want to do this in a terminal, since it's size is fixed (except for
++You don't want to do this in a terminal, since its size is fixed (except for
+ an xterm that supports resizing).
+    The gvimrc file is searched for in the same locations as the vimrc file.
+ Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows.
+diff -Nur runtime/doc/usr_32.txt runtime/doc/usr_32.txt
+--- runtime/doc/usr_32.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_32.txt	2011-04-03 09:27:21.478517948 -0700
+@@ -1,4 +1,4 @@
+-*usr_32.txt*	For Vim version 7.2.  Last change: 2006 Apr 30
++*usr_32.txt*	For Vim version 7.3a.  Last change: 2006 Apr 30
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -9,16 +9,40 @@
+ change you create a branch in the undo tree.  This text is about moving
+ through the branches.
+ 
+-|32.1|	Numbering changes
+-|32.2|	Jumping around the tree
+-|32.3|	Time travelling
++|32.1|	Undo up to a file write
++|32.2|	Numbering changes
++|32.3|	Jumping around the tree
++|32.4|	Time travelling
+ 
+      Next chapter: |usr_40.txt|  Make new commands
+  Previous chapter: |usr_31.txt|  Exploiting the GUI
+ Table of contents: |usr_toc.txt|
+ 
+ ==============================================================================
+-*32.1*	Numbering changes
++*32.1*	Undo up to a file write
++
++Sometimes you make several changes, and then discover you want to go back to
++when you have last written the file.  You can do that with this command: >
++
++	:earlier 1f
++
++The "f" stands for "file" here.
++
++You can repeat this command to go further back in the past.  Or use a count
++diferent from 1 to go back faster.
++
++If you go back too far, go forward again with: >
++
++	:later 1f
++
++Note that these commands really work in time sequence.  This matters if you
++made changes after undoing some changes.  It's explained in the next section.
++
++Also note that we are talking about text writes here.  For writing the undo
++information in a file see |undo-persistence|.
++
++==============================================================================
++*32.2*	Numbering changes
+ 
+ In section |02.5| we only discussed one line of undo/redo.  But it is also
+ possible to branch off.  This happens when you undo a few changes and then
+@@ -66,7 +90,7 @@
+ when moving up in the tree, so that you know which change was just undone.
+ 
+ ==============================================================================
+-*32.2*	Jumping around the tree
++*32.3*	Jumping around the tree
+ 
+ So how do you get to "one two" now?  You can use this command: >
+ 
+@@ -114,7 +138,7 @@
+ You can type a count before |g-| and |g+| to repeat them.
+ 
+ ==============================================================================
+-*32.3*	Time travelling
++*32.4*	Time travelling
+ 
+ When you have been working on text for a while the tree grows to become big.
+ Then you may want to go to the text of some minutes ago.
+@@ -133,10 +157,10 @@
+ 	:earlier 10s
+ 
+ Depending on how much time you took for the changes you end up at a certain
+-position in the tree.  The |:earlier| command argument can be "m" for minutes
+-and "h" for hours.  To go all the way back use a big number: >
++position in the tree.  The |:earlier| command argument can be "m" for minutes,
++"h" for hours and "d" for days.  To go all the way back use a big number: >
+ 
+-	:earlier 10h
++	:earlier 100d
+ 
+ To travel forward in time again use the |:later| command: >
+ 
+@@ -144,6 +168,11 @@
+ 
+ The arguments are "s", "m" and "h", just like with |:earlier|.
+ 
++If you want even more details, or want to manipulate the information, you can
++use the |undotree()| function.  To see what it returns: >
++
++	:echo undotree()
++
+ ==============================================================================
+ 
+ Next chapter: |usr_40.txt|  Make new commands
+diff -Nur runtime/doc/usr_40.txt runtime/doc/usr_40.txt
+--- runtime/doc/usr_40.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_40.txt	2011-04-03 09:27:21.479411643 -0700
+@@ -1,4 +1,4 @@
+-*usr_40.txt*	For Vim version 7.2.  Last change: 2006 Jun 21
++*usr_40.txt*	For Vim version 7.3a.  Last change: 2006 Jun 21
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -24,8 +24,8 @@
+ sequence of key strokes is translated into another sequence of key strokes.
+ This is a simple, yet powerful mechanism.
+    The simplest form is that one key is mapped to a sequence of keys.  Since
+-the function keys, except <F1>, have no predefined meaning in Vim, these are a
+-good choice to map.  Example: >
++the function keys, except <F1>, have no predefined meaning in Vim, these are
++good choices to map.  Example: >
+ 
+ 	:map <F2> GoDate: <Esc>:read !date<CR>kJ
+ 
+diff -Nur runtime/doc/usr_41.txt runtime/doc/usr_41.txt
+--- runtime/doc/usr_41.txt	2011-04-03 13:03:30.532999339 -0700
++++ runtime/doc/usr_41.txt	2011-04-03 09:27:21.481101644 -0700
+@@ -1,4 +1,4 @@
+-*usr_41.txt*	For Vim version 7.2.  Last change: 2008 Jun 21
++*usr_41.txt*	For Vim version 7.3a.  Last change: 2008 Jun 21
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -576,7 +576,7 @@
+ used for.  You can find an alphabetical list here: |functions|.  Use CTRL-] on
+ the function name to jump to detailed help on it.
+ 
+-String manipulation:
++String manipulation:					*string-functions*
+ 	nr2char()		get a character by its ASCII value
+ 	char2nr()		get ASCII value of a character
+ 	str2nr()		convert a string to a Number
+@@ -605,7 +605,7 @@
+ 	repeat()		repeat a string multiple times
+ 	eval()			evaluate a string expression
+ 
+-List manipulation:
++List manipulation:					*list-functions*
+ 	get()			get an item without error for wrong index
+ 	len()			number of items in a List
+ 	empty()			check if List is empty
+@@ -630,7 +630,7 @@
+ 	count()			count number of times a value appears in a List
+ 	repeat()		repeat a List multiple times
+ 
+-Dictionary manipulation:
++Dictionary manipulation:				*dict-functions*
+ 	get()			get an entry without an error for a wrong key
+ 	len()			number of entries in a Dictionary
+ 	has_key()		check whether a key appears in a Dictionary
+@@ -649,7 +649,7 @@
+ 	min()			minimum value in a Dictionary
+ 	count()			count number of times a value appears
+ 
+-Floating point computation:
++Floating point computation:				*float-functions*
+ 	float2nr()		convert Float to Number
+ 	abs()			absolute value (also works for Number)
+ 	round()			round off
+@@ -663,19 +663,21 @@
+ 	cos()			cosine
+ 	atan()			arc tangent
+ 
+-Variables:
++Variables:						*var-functions*
+ 	type()			type of a variable
+ 	islocked()		check if a variable is locked
+ 	function()		get a Funcref for a function name
+ 	getbufvar()		get a variable value from a specific buffer
+ 	setbufvar()		set a variable in a specific buffer
+ 	getwinvar()		get a variable from specific window
++	gettabvar()		get a variable from specific tab page
+ 	gettabwinvar()		get a variable from specific window & tab page
+ 	setwinvar()		set a variable in a specific window
++	settabvar()		set a variable in a specific tab page
+ 	settabwinvar()		set a variable in a specific window & tab page
+ 	garbagecollect()	possibly free memory
+ 
+-Cursor and mark position:
++Cursor and mark position:		*cursor-functions* *mark-functions*
+ 	col()			column number of the cursor or a mark
+ 	virtcol()		screen column of the cursor or a mark
+ 	line()			line number of the cursor or mark
+@@ -688,7 +690,7 @@
+ 	line2byte()		byte count at a specific line
+ 	diff_filler()		get the number of filler lines above a line
+ 
+-Working with text in the current buffer:
++Working with text in the current buffer:		*text-functions*
+ 	getline()		get a line or list of lines from the buffer
+ 	setline()		replace a line in the buffer
+ 	append()		append line or list of lines in the buffer
+@@ -703,6 +705,7 @@
+ 	searchpairpos()		find the other end of a start/skip/end
+ 	searchdecl()		search for the declaration of a name
+ 
++					*system-functions* *file-functions*
+ System functions and manipulation of files:
+ 	glob()			expand wildcards
+ 	globpath()		expand wildcards in a number of directories
+@@ -730,13 +733,14 @@
+ 	readfile()		read a file into a List of lines
+ 	writefile()		write a List of lines into a file
+ 
+-Date and Time:
++Date and Time:				*date-functions* *time-functions*
+ 	getftime()		get last modification time of a file
+ 	localtime()		get current time in seconds
+ 	strftime()		convert time to a string
+ 	reltime()		get the current or elapsed time accurately
+ 	reltimestr()		convert reltime() result to a string
+ 
++			*buffer-functions* *window-functions* *arg-functions*
+ Buffers, windows and the argument list:
+ 	argc()			number of entries in the argument list
+ 	argidx()		current position in the argument list
+@@ -754,32 +758,32 @@
+ 	winbufnr()		get the buffer number of a specific window
+ 	getbufline()		get a list of lines from the specified buffer
+ 
+-Command line:
++Command line:					*command-line-functions*
+ 	getcmdline()		get the current command line
+ 	getcmdpos()		get position of the cursor in the command line
+ 	setcmdpos()		set position of the cursor in the command line
+ 	getcmdtype()		return the current command-line type
+ 
+-Quickfix and location lists:
++Quickfix and location lists:			*quickfix-functions*
+ 	getqflist()		list of quickfix errors
+ 	setqflist()		modify a quickfix list
+ 	getloclist()		list of location list items
+ 	setloclist()		modify a location list
+ 
+-Insert mode completion:
++Insert mode completion:				*completion-functions*
+ 	complete()		set found matches
+ 	complete_add()		add to found matches
+ 	complete_check()	check if completion should be aborted
+ 	pumvisible()		check if the popup menu is displayed
+ 
+-Folding:
++Folding:					*folding-functions*
+ 	foldclosed()		check for a closed fold at a specific line
+ 	foldclosedend()		like foldclosed() but return the last line
+ 	foldlevel()		check for the fold level at a specific line
+ 	foldtext()		generate the line displayed for a closed fold
+ 	foldtextresult()	get the text displayed for a closed fold
+ 
+-Syntax and highlighting:
++Syntax and highlighting:	  *syntax-functions* *highlighting-functions*
+ 	clearmatches()		clear all matches defined by |matchadd()| and
+ 				the |:match| commands
+ 	getmatches()		get all matches defined by |matchadd()| and
+@@ -797,18 +801,18 @@
+ 	setmatches()		restore a list of matches saved by
+ 				|getmatches()|
+ 
+-Spelling:
++Spelling:					*spell-functions*
+ 	spellbadword()		locate badly spelled word at or after cursor
+ 	spellsuggest()		return suggested spelling corrections
+ 	soundfold()		return the sound-a-like equivalent of a word
+ 
+-History:
++History:					*history-functions*
+ 	histadd()		add an item to a history
+ 	histdel()		delete an item from a history
+ 	histget()		get an item from a history
+ 	histnr()		get highest index of a history list
+ 
+-Interactive:
++Interactive:					*interactive-functions*
+ 	browse()		put up a file requester
+ 	browsedir()		put up a directory requester
+ 	confirm()		let the user make a choice
+@@ -822,12 +826,12 @@
+ 	inputsave()		save and clear typeahead
+ 	inputrestore()		restore typeahead
+ 
+-GUI:
++GUI:						*gui-functions*
+ 	getfontname()		get name of current font being used
+ 	getwinposx()		X position of the GUI Vim window
+ 	getwinposy()		Y position of the GUI Vim window
+ 
+-Vim server:
++Vim server:					*server-functions*
+ 	serverlist()		return the list of server names
+ 	remote_send()		send command characters to a Vim server
+ 	remote_expr()		evaluate an expression in a Vim server
+@@ -837,14 +841,14 @@
+ 	foreground()		move the Vim window to the foreground
+ 	remote_foreground()	move the Vim server window to the foreground
+ 
+-Window size and position:
++Window size and position:			*window-size-functions*
+ 	winheight()		get height of a specific window
+ 	winwidth()		get width of a specific window
+ 	winrestcmd()		return command to restore window sizes
+ 	winsaveview()		get view of current window
+ 	winrestview()		restore saved view of current window
+ 
+-Various:
++Various:					*various-functions*
+ 	mode()			get current editing mode
+ 	visualmode()		last visual mode used
+ 	hasmapto()		check if a mapping exists
+@@ -2152,7 +2156,7 @@
+ 
+ When defining a function, this only needs to be done once.  But the filetype
+ plugin will be sourced every time a file with this filetype will be opened.
+-This construct make sure the function is only defined once: >
++This construct makes sure the function is only defined once: >
+ 
+ 	:if !exists("*s:Func")
+ 	:  function s:Func(arg)
+diff -Nur runtime/doc/usr_41.txt.~1~ runtime/doc/usr_41.txt.~1~
+diff -Nur runtime/doc/usr_42.txt runtime/doc/usr_42.txt
+--- runtime/doc/usr_42.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_42.txt	2011-04-03 09:27:21.481902913 -0700
+@@ -1,4 +1,4 @@
+-*usr_42.txt*	For Vim version 7.2.  Last change: 2008 May 05
++*usr_42.txt*	For Vim version 7.3a.  Last change: 2008 May 05
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+diff -Nur runtime/doc/usr_43.txt runtime/doc/usr_43.txt
+--- runtime/doc/usr_43.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_43.txt	2011-04-03 09:27:21.482601729 -0700
+@@ -1,4 +1,4 @@
+-*usr_43.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_43.txt*	For Vim version 7.3a.  Last change: 2008 Dec 28
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -57,7 +57,8 @@
+ Likewise, the mapping for "\c" will disappear when editing another buffer.
+ The ":map <buffer>" command creates a mapping that is local to the current
+ buffer.  This works with any mapping command: ":map!", ":vmap", etc.  The
+-|<LocalLeader>| in the mapping is replaced with the value of "maplocalleader".
++|<LocalLeader>| in the mapping is replaced with the value of the
++"maplocalleader" variable.
+ 
+ You can find examples for filetype plugins in this directory: >
+ 
+diff -Nur runtime/doc/usr_44.txt runtime/doc/usr_44.txt
+--- runtime/doc/usr_44.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_44.txt	2011-04-03 09:27:21.483569220 -0700
+@@ -1,4 +1,4 @@
+-*usr_44.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_44.txt*	For Vim version 7.3a.  Last change: 2008 Dec 28
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -493,9 +493,9 @@
+ 	:runtime! syntax/c.vim
+ 
+ The ":runtime!" command searches 'runtimepath' for all "syntax/c.vim" files.
+-This makes the C syntax be defined like for C files.  If you have replaced the
+-c.vim syntax file, or added items with an extra file, these will be loaded as
+-well.
++This makes the C parts of the C++ syntax be defined like for C files.  If you
++have replaced the c.vim syntax file, or added items with an extra file, these
++will be loaded as well.
+    After loading the C syntax items the specific C++ items can be defined.
+ For example, add keywords that are not used in C: >
+ 
+@@ -503,8 +503,8 @@
+ 
+ This works just like in any other syntax file.
+ 
+-Now consider the Perl language.  It consists of two distinct parts: a
+-documentation section in POD format, and a program written in Perl itself.
++Now consider the Perl language.  A Perl script consists of two distinct parts:
++a documentation section in POD format, and a program written in Perl itself.
+ The POD section starts with "=head" and ends with "=cut".
+    You want to define the POD syntax in one file, and use it from the Perl
+ syntax file.  The ":syntax include" command reads in a syntax file and stores
+@@ -663,7 +663,7 @@
+ 
+ Choose a good, descriptive name for your syntax file.  Use lowercase letters
+ and digits.  Don't make it too long, it is used in many places: The name of
+-the syntax file "name.vim", 'filetype', b:current_syntax the start of each
++the syntax file "name.vim", 'filetype', b:current_syntax and the start of each
+ syntax group (nameType, nameStatement, nameString, etc).
+ 
+ Start with a check for "b:current_syntax".  If it is defined, some other
+diff -Nur runtime/doc/usr_45.txt runtime/doc/usr_45.txt
+--- runtime/doc/usr_45.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_45.txt	2011-04-03 09:27:21.484369912 -0700
+@@ -1,4 +1,4 @@
+-*usr_45.txt*	For Vim version 7.2.  Last change: 2008 Apr 30
++*usr_45.txt*	For Vim version 7.3a.  Last change: 2008 Nov 15
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -265,7 +265,7 @@
+ 
+ Suppose you have setup Vim to use Unicode, and you want to edit a file that is
+ in 16-bit Unicode.  Sounds simple, right?  Well, Vim actually uses utf-8
+-encoding internally, thus the 16-bit encoding must be converted.  Thus there
++encoding internally, thus the 16-bit encoding must be converted, since there
+ is a difference between the character set (Unicode) and the encoding (utf-8 or
+ 16-bit).
+    Vim will try to detect what kind of file you are editing.  It uses the
+@@ -283,7 +283,7 @@
+ When you start editing that 16-bit Unicode file, and it has a BOM, Vim will
+ detect this and convert the file to utf-8 when reading it.  The 'fileencoding'
+ option (without s at the end) is set to the detected value.  In this case it
+-is "ucs-2le".  That means it's Unicode, two bytes and little-endian.  This
++is "utf-16le".  That means it's Unicode, 16-bit and little-endian.  This
+ file format is common on MS-Windows (e.g., for registry files).
+    When writing the file, Vim will compare 'fileencoding' with 'encoding'.  If
+ they are different, the text will be converted.
+diff -Nur runtime/doc/usr_90.txt runtime/doc/usr_90.txt
+--- runtime/doc/usr_90.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_90.txt	2011-04-03 09:27:21.485155068 -0700
+@@ -1,4 +1,4 @@
+-*usr_90.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_90.txt*	For Vim version 7.3a.  Last change: 2008 Sep 10
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -126,12 +126,12 @@
+ 	test results: ~
+ 	ALL DONE ~
+ 
+-If there are one or two messages about failed tests, Vim might still work, but
+-not perfectly.  If you see a lot of error messages or Vim doesn't finish until
+-the end, there must be something wrong.  Either try to find out yourself, or
+-find someone who can solve it.  You could look in the |maillist-archive| for a
+-solution.  If everything else fails, you could ask in the vim |maillist| if
+-someone can help you.
++If you get "TEST FAILURE" some test failed.  If there are one or two messages
++about failed tests, Vim might still work, but not perfectly.  If you see a lot
++of error messages or Vim doesn't finish until the end, there must be something
++wrong.  Either try to find out yourself, or find someone who can solve it.
++You could look in the |maillist-archive| for a solution.  If everything else
++fails, you could ask in the vim |maillist| if someone can help you.
+ 
+ 
+ INSTALLING
+diff -Nur runtime/doc/usr_toc.txt runtime/doc/usr_toc.txt
+--- runtime/doc/usr_toc.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/usr_toc.txt	2011-04-03 09:27:21.491797636 -0700
+@@ -1,4 +1,4 @@
+-*usr_toc.txt*	For Vim version 7.2.  Last change: 2006 Apr 24
++*usr_toc.txt*	For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 		     VIM USER MANUAL - by Bram Moolenaar
+ 
+@@ -273,9 +273,10 @@
+ 		|31.5|	Various
+ 
+ |usr_32.txt|  The undo tree
+-		|32.1|	Numbering changes
+-		|32.2|	Jumping around the tree
+-		|32.3|	Time travelling
++		|32.1|	Undo up to a file write
++		|32.2|	Numbering changes
++		|32.3|	Jumping around the tree
++		|32.4|	Time travelling
+ 
+ ==============================================================================
+ Tuning Vim ~
+diff -Nur runtime/doc/various.txt runtime/doc/various.txt
+--- runtime/doc/various.txt	2011-04-03 13:03:30.156074477 -0700
++++ runtime/doc/various.txt	2011-04-03 09:27:21.493304027 -0700
+@@ -1,4 +1,4 @@
+-*various.txt*   For Vim version 7.2.  Last change: 2008 Aug 06
++*various.txt*   For Vim version 7.3a.  Last change: 2010 May 13
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -7,8 +7,7 @@
+ Various commands					*various*
+ 
+ 1. Various commands		|various-cmds|
+-2. Online help			|online-help|
+-3. Using Vim like less or more	|less|
++2. Using Vim like less or more	|less|
+ 
+ ==============================================================================
+ 1. Various commands					*various-cmds*
+@@ -179,8 +178,8 @@
+ 			(to start Insert mode, see |:startinsert|).  A ":"
+ 			command must be completed as well.  And you can't use
+ 			"Q" or "gQ" to start Ex mode.
+-			{commands} cannot start with a space.  Put a 1 (one)
+-			before it, 1 space is one space.
++			{commands} cannot start with a space.  Put a count of
++			1 (one) before it, "1 " is one space.
+ 			The 'insertmode' option is ignored for {commands}.
+ 			This command cannot be followed by another command,
+ 			since any '|' is considered part of the command.
+@@ -190,7 +189,8 @@
+ 			mapping |:noremap|, the argument can be mapped anyway.
+ 			An alternative is to use |:execute|, which uses an
+ 			expression as argument.  This allows the use of
+-			printable characters.  Example: >
++			printable characters to represent special characters.
++			Example: >
+ 				:exe "normal \<c-w>\<c-w>"
+ <			{not in Vi, of course}
+ 			{not available when the |+ex_extra| feature was
+@@ -294,8 +294,10 @@
+ N  *+cmdline_hist*	command line history |cmdline-history|
+ N  *+cmdline_info*	|'showcmd'| and |'ruler'|
+ N  *+comments*		|'comments'| support
++m  *+conceal*		"conceal" support, see ||conceal|| |:syn-conceal| etc.
+ N  *+cryptv*		encryption support |encryption|
+ B  *+cscope*		|cscope| support
++m  *+cursorbind*	|'cursorbind'| support
+ m  *+cursorshape*	|termcap-cursor-shape| support
+ m  *+debug*		Compiled for debugging.
+ N  *+dialog_gui*	Support for |:confirm| with GUI dialog.
+@@ -347,7 +349,7 @@
+ N  *+mouse_pterm*	QNX only: pterm mouse handling |qnx-terminal|
+ N  *+mouse_sysmouse*	Unix only: *BSD console mouse handling |sysmouse|
+ N  *+mouse_xterm*	Unix only: xterm mouse handling |xterm-mouse|
+-B  *+multi_byte*	Korean and other languages |multibyte|
++B  *+multi_byte*	16 and 32 bit characters |multibyte|
+    *+multi_byte_ime*	Win32 input method for multibyte chars |multibyte-ime|
+ N  *+multi_lang*	non-English language support |multi-lang|
+ m  *+mzscheme*		Mzscheme interface |mzscheme|
+@@ -359,6 +361,7 @@
+ N  *+path_extra*	Up/downwards search in 'path' and 'tags'
+ m  *+perl*		Perl interface |perl|
+ m  *+perl/dyn*		Perl interface |perl-dynamic| |/dyn|
++H  *+persistent_undo*	Persistent undo |undo-persistence|
+    *+postscript*	|:hardcopy| writes a PostScript file
+ N  *+printer*		|:hardcopy| command
+ H  *+profile*		|:profile| command
+@@ -602,265 +605,6 @@
+ 			Only useful for debugging Vim.
+ 
+ ==============================================================================
+-2. Online help						*online-help*
+-
+-			*help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>*
+-<Help>		or
+-:h[elp]			Open a window and display the help file in read-only
+-			mode.  If there is a help window open already, use
+-			that one.  Otherwise, if the current window uses the
+-			full width of the screen or is at least 80 characters
+-			wide, the help window will appear just above the
+-			current window.  Otherwise the new window is put at
+-			the very top.
+-			The 'helplang' option is used to select a language, if
+-			the main help file is available in several languages.
+-			{not in Vi}
+-
+-						*{subject}* *E149* *E661*
+-:h[elp] {subject}	Like ":help", additionally jump to the tag {subject}.
+-			{subject} can include wildcards like "*", "?" and
+-			"[a-z]":
+-			   :help z?	jump to help for any "z" command
+-			   :help z.	jump to the help for "z."
+-			If there is no full match for the pattern, or there
+-			are several matches, the "best" match will be used.
+-			A sophisticated algorithm is used to decide which
+-			match is better than another one.  These items are
+-			considered in the computation:
+-			- A match with same case is much better than a match
+-			  with different case.
+-			- A match that starts after a non-alphanumeric
+-			  character is better than a match in the middle of a
+-			  word.
+-			- A match at or near the beginning of the tag is
+-			  better than a match further on.
+-			- The more alphanumeric characters match, the better.
+-			- The shorter the length of the match, the better.
+-
+-			The 'helplang' option is used to select a language, if
+-			the {subject} is available in several languages.
+-			To find a tag in a specific language, append "@ab",
+-			where "ab" is the two-letter language code.  See
+-			|help-translated|.
+-
+-			Note that the longer the {subject} you give, the less
+-			matches will be found.  You can get an idea how this
+-			all works by using commandline completion (type CTRL-D
+-			after ":help subject").
+-			If there are several matches, you can have them listed
+-			by hitting CTRL-D.  Example: >
+-				:help cont<Ctrl-D>
+-<			To use a regexp |pattern|, first do ":help" and then
+-			use ":tag {pattern}" in the help window.  The
+-			":tnext" command can then be used to jump to other
+-			matches, "tselect" to list matches and choose one. >
+-				:help index| :tse z.
+-<			When there is no argument you will see matches for
+-			"help", to avoid listing all possible matches (that
+-			would be very slow).
+-			The number of matches displayed is limited to 300.
+-
+-			This command can be followed by '|' and another
+-			command, but you don't need to escape the '|' inside a
+-			help command.  So these both work: >
+-				:help |
+-				:help k| only
+-<			Note that a space before the '|' is seen as part of
+-			the ":help" argument.
+-			You can also use <LF> or <CR> to separate the help
+-			command from a following command.  You need to type
+-			CTRL-V first to insert the <LF> or <CR>.  Example: >
+-				:help so<C-V><CR>only
+-<			{not in Vi}
+-
+-:h[elp]! [subject]	Like ":help", but in non-English help files prefer to
+-			find a tag in a file with the same language as the
+-			current file.  See |help-translated|.
+-
+-							*:helpg* *:helpgrep*
+-:helpg[rep] {pattern}[@xx]
+-			Search all help text files and make a list of lines
+-			in which {pattern} matches.  Jumps to the first match.
+-			The optional [@xx] specifies that only matches in the
+-			"xx" language are to be found.
+-			You can navigate through the matches with the
+-			|quickfix| commands, e.g., |:cnext| to jump to the
+-			next one.  Or use |:cwindow| to get the list of
+-			matches in the quickfix window.
+-			{pattern} is used as a Vim regexp |pattern|.
+-			'ignorecase' is not used, add "\c" to ignore case.
+-			Example for case sensitive search: >
+-				:helpgrep Uganda
+-<			Example for case ignoring search: >
+-				:helpgrep uganda\c
+-<			Example for searching in French help: >
+-				:helpgrep backspace@fr
+-<			The pattern does not support line breaks, it must
+-			match within one line.  You can use |:grep| instead,
+-			but then you need to get the list of help files in a
+-			complicated way.
+-			Cannot be followed by another command, everything is
+-			used as part of the pattern.  But you can use
+-			|:execute| when needed.
+-			Compressed help files will not be searched (Fedora
+-			compresses the help files).
+-			{not in Vi}
+-
+-							*:lh* *:lhelpgrep*
+-:lh[elpgrep] {pattern}[@xx]
+-			Same as ":helpgrep", except the location list is used
+-			instead of the quickfix list. If the help window is
+-			already opened, then the location list for that window
+-			is used. Otherwise, a new help window is opened and
+-			the location list for that window is set.  The
+-			location list for the current window is not changed.
+-
+-							*:exu* *:exusage*
+-:exu[sage]		Show help on Ex commands.  Added to simulate the Nvi
+-			command. {not in Vi}
+-
+-							*:viu* *:viusage*
+-:viu[sage]		Show help on Normal mode commands.  Added to simulate
+-			the Nvi command. {not in Vi}
+-
+-When no argument is given to |:help| the file given with the 'helpfile' option
+-will be opened.  Otherwise the specified tag is searched for in all "doc/tags"
+-files in the directories specified in the 'runtimepath' option.
+-
+-The initial height of the help window can be set with the 'helpheight' option
+-(default 20).
+-
+-Jump to specific subjects by using tags.  This can be done in two ways:
+-- Use the "CTRL-]" command while standing on the name of a command or option.
+-  This only works when the tag is a keyword.  "<C-Leftmouse>" and
+-  "g<LeftMouse>" work just like "CTRL-]".
+-- use the ":ta {subject}" command.  This also works with non-keyword
+-  characters.
+-
+-Use CTRL-T or CTRL-O to jump back.
+-Use ":q" to close the help window.
+-
+-If there are several matches for an item you are looking for, this is how you
+-can jump to each one of them:
+-1. Open a help window
+-2. Use the ":tag" command with a slash prepended to the tag.  E.g.: >
+-	:tag /min
+-3. Use ":tnext" to jump to the next matching tag.
+-
+-It is possible to add help files for plugins and other items.  You don't need
+-to change the distributed help files for that.  See |add-local-help|.
+-
+-To write a local help file, see |write-local-help|.
+-
+-Note that the title lines from the local help files are automagically added to
+-the "LOCAL ADDITIONS" section in the "help.txt" help file |local-additions|.
+-This is done when viewing the file in Vim, the file itself is not changed.  It
+-is done by going through all help files and obtaining the first line of each
+-file.  The files in $VIMRUNTIME/doc are skipped.
+-
+-							*help-xterm-window*
+-If you want to have the help in another xterm window, you could use this
+-command: >
+-	:!xterm -e vim +help &
+-<
+-
+-			*:helpfind* *:helpf*
+-:helpf[ind]		Like |:help|, but use a dialog to enter the argument.
+-			Only for backwards compatibility.  It now executes the
+-			ToolBar.FindHelp menu entry instead of using a builtin
+-			dialog.  {only when compiled with |+GUI_GTK|}
+-<			{not in Vi}
+-
+-					*:helpt* *:helptags*
+-				*E154* *E150* *E151* *E152* *E153* *E670*
+-:helpt[ags] [++t] {dir}
+-			Generate the help tags file(s) for directory {dir}.
+-			All "*.txt" and "*.??x" files in the directory are
+-			scanned for a help tag definition in between stars.
+-			The "*.??x" files are for translated docs, they
+-			generate the "tags-??" file, see |help-translated|.
+-			The generated tags files are sorted.
+-			When there are duplicates an error message is given.
+-			An existing tags file is silently overwritten.
+-			The optional "++t" argument forces adding the
+-			"help-tags" tag.  This is also done when the {dir} is
+-			equal to $VIMRUNTIME/doc.
+-			To rebuild the help tags in the runtime directory
+-			(requires write permission there): >
+-				:helptags $VIMRUNTIME/doc
+-<			{not in Vi}
+-
+-
+-TRANSLATED HELP						*help-translated*
+-
+-It is possible to add translated help files, next to the original English help
+-files.  Vim will search for all help in "doc" directories in 'runtimepath'.
+-This is only available when compiled with the |+multi_lang| feature.
+-
+-At this moment translations are available for:
+-	Chinese - multiple authors
+-	French  - translated by David Blanchet
+-	Italian - translated by Antonio Colombo
+-	Polish  - translated by Mikolaj Machowski
+-	Russian - translated by Vassily Ragosin
+-See the Vim website to find them: http://www.vim.org/translations.php
+-
+-A set of translated help files consists of these files:
+-
+-	help.abx
+-	howto.abx
+-	...
+-	tags-ab
+-
+-"ab" is the two-letter language code.  Thus for Italian the names are:
+-
+-	help.itx
+-	howto.itx
+-	...
+-	tags-it
+-
+-The 'helplang' option can be set to the preferred language(s).  The default is
+-set according to the environment.  Vim will first try to find a matching tag
+-in the preferred language(s).  English is used when it cannot be found.
+-
+-To find a tag in a specific language, append "@ab" to a tag, where "ab" is the
+-two-letter language code.  Example: >
+-	:he user-manual@it
+-	:he user-manual@en
+-The first one finds the Italian user manual, even when 'helplang' is empty.
+-The second one finds the English user manual, even when 'helplang' is set to
+-"it".
+-
+-When using command-line completion for the ":help" command, the "@en"
+-extension is only shown when a tag exists for multiple languages.  When the
+-tag only exists for English "@en" is omitted.
+-
+-When using |CTRL-]| or ":help!" in a non-English help file Vim will try to
+-find the tag in the same language.  If not found then 'helplang' will be used
+-to select a language.
+-
+-Help files must use latin1 or utf-8 encoding.  Vim assumes the encoding is
+-utf-8 when finding non-ASCII characters in the first line.  Thus you must
+-translate the header with "For Vim version".
+-
+-The same encoding must be used for the help files of one language in one
+-directory.  You can use a different encoding for different languages and use
+-a different encoding for help files of the same language but in a different
+-directory.
+-
+-Hints for translators:
+-- Do not translate the tags.  This makes it possible to use 'helplang' to
+-  specify the preferred language.  You may add new tags in your language.
+-- When you do not translate a part of a file, add tags to the English version,
+-  using the "tag@en" notation.
+-- Make a package with all the files and the tags file available for download.
+-  Users can drop it in one of the "doc" directories and start use it.
+-  Report this to Bram, so that he can add a link on www.vim.org.
+-- Use the |:helptags| command to generate the tags files.  It will find all
+-  languages in the specified directory.
+-
+-==============================================================================
+ 3. Using Vim like less or more					*less*
+ 
+ If you use the less or more program to view a file, you don't get syntax
+diff -Nur runtime/doc/various.txt.~1~ runtime/doc/various.txt.~1~
+diff -Nur runtime/doc/various.txt.~2~ runtime/doc/various.txt.~2~
+diff -Nur runtime/doc/version4.txt runtime/doc/version4.txt
+--- runtime/doc/version4.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/version4.txt	2011-04-03 09:27:21.494064391 -0700
+@@ -1,4 +1,4 @@
+-*version4.txt*  For Vim version 7.2.  Last change: 2006 Apr 24
++*version4.txt*  For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/version5.txt runtime/doc/version5.txt
+--- runtime/doc/version5.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/version5.txt	2011-04-03 09:27:21.508125205 -0700
+@@ -1,4 +1,4 @@
+-*version5.txt*  For Vim version 7.2.  Last change: 2008 Jun 28
++*version5.txt*  For Vim version 7.3a.  Last change: 2008 Dec 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -460,10 +460,10 @@
+ Regular expression patterns				*added-regexp*
+ ---------------------------
+ 
+-Added specifying a range for the number of matches of a atom: "\{a,b}". |/\{|
++Added specifying a range for the number of matches of an atom: "\{a,b}". |/\{|
+ Added the "shortest match" regexp "\{-}" (Webb).
+-Added "\s", matches a white character.  Can replace "[ \t]".		|/\s|
+-Added "\S", matches a non-white character.  Can replace "[^ \t]".	|/\S|
++Added "\s", matches a white character.  Can replace "[ \t]".		 |/\s|
++Added "\S", matches a non-white character.  Can replace "[^ \t]".	 |/\S|
+ 
+ 
+ Overloaded tags						*tag-overloaded*
+@@ -1500,7 +1500,7 @@
+ 
+ "r<CR>" didn't work correctly on the last char of a line.
+ 
+-sometimes a window resize or other signal caused an endless loop, involving
++Sometimes a window resize or other signal caused an endless loop, involving
+ set_winsize().
+ 
+ "vim -r" didn't work, it would just hang (using tgetent() while 'term' is
+@@ -7149,7 +7149,7 @@
+ Patch 5.6.060
+ Problem:    Some bold characters spill over to the cell on the left, that
+ 	    spill-over can remain sometimes.
+-Solution:   Redraw a characters when the next character was bold and needs
++Solution:   Redraw a character when the next character was bold and needs
+ 	    redrawing. (Robert Webb)
+ Files:	    src/screen.c
+ 
+diff -Nur runtime/doc/version6.txt runtime/doc/version6.txt
+--- runtime/doc/version6.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/version6.txt	2011-04-03 09:27:21.544741940 -0700
+@@ -1,4 +1,4 @@
+-*version6.txt*  For Vim version 7.2.  Last change: 2008 Aug 06
++*version6.txt*  For Vim version 7.3a.  Last change: 2008 Aug 06
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -11170,7 +11170,7 @@
+ 	    runtime/menu.vim, src/version.c
+ 
+ Patch 6.2.192
+-Problem:    Using CTRL-T and CTRL-D with "gR" messes up the text.  (Jonahtan
++Problem:    Using CTRL-T and CTRL-D with "gR" messes up the text.  (Jonathan
+ 	    Hankins)
+ Solution:   Avoid calling change_indent() recursively.
+ Files:	    src/edit.c
+diff -Nur runtime/doc/version7.txt runtime/doc/version7.txt
+--- runtime/doc/version7.txt	2008-08-09 09:28:51.000000000 -0700
++++ runtime/doc/version7.txt	2011-04-03 09:27:21.584210364 -0700
+@@ -1,9 +1,9 @@
+-*version7.txt*  For Vim version 7.2.  Last change: 2008 Aug 09
++*version7.txt*  For Vim version 7.3a.  Last change: 2010 May 14
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+ 
+-									*vim7*
++					*vim7* *version-7.0* *version7.0*
+ Welcome to Vim 7!  A large number of features has been added.  This file
+ mentions all the new items, changes to existing features and bug fixes
+ since Vim 6.x.  Use this command to see the version you are using: >
+@@ -56,6 +56,11 @@
+ Added					|added-7.2|
+ Fixed					|fixed-7.2|
+ 
++VERSION 7.3			|version-7.3|
++Changed					|changed-7.3|
++Added					|added-7.3|
++Fixed					|fixed-7.3|
++
+ ==============================================================================
+ INCOMPATIBLE CHANGES				*incompatible-7*
+ 
+@@ -224,7 +229,7 @@
+ The 'spellfile'    option specifies where new words are added
+ The 'spellsuggest' option specifies the methods used for making suggestions
+ 
+-The |[s| and |]s| commands can be used to move to the next or previous error
++The |]s| and |[s| commands can be used to move to the next or previous error
+ The |zg| and |zw| commands can be used to add good and wrong words
+ The |z=|	  command can be used to list suggestions and correct the word
+ The |:mkspell|    command is used to generate a Vim spell file from word lists
+@@ -638,8 +643,8 @@
+ 'maxmempattern'		maximum amount of memory to use for pattern matching
+ 'mkspellmem'		parameters for |:mkspell| memory use
+ 'mzquantum'		Time in msec to schedule MzScheme threads.
+-'numberwidth'		Minimal width of the space used for the 'number'
+-			option. (Emmanuel Renieris)
++'numberwidth'		Minimal width of the space used for the 'number' and
++			'relativenumber' option. (Emmanuel Renieris)
+ 'omnifunc'		The name of the function used for omni completion.
+ 'operatorfunc'		function to be called for |g@| operator
+ 'printmbcharset'	CJK character set to be used for :hardcopy
+@@ -1238,7 +1243,7 @@
+ 'scrolljump' can be set to a negative number to scroll a percentage of the
+ window height.
+ 
+-The |v:scrollstart| variable has been added to help finding the location in
++The |v:scrollstart| variable has been added to help find the location in
+ your script that causes the hit-enter prompt.
+ 
+ To make it possible to handle the situation that a file is being edited that
+@@ -1868,7 +1873,7 @@
+ Win32: Cannot edit a file starting with # with --remote.  Do escape % and #
+ when building the ":drop" command.
+ 
+-A comment or | just after a expression-backtick argument was not recognized.
++A comment or | just after an expression-backtick argument was not recognized.
+ E.g. in :e `="foo"`"comment.
+ 
+ "(" does not stop at an empty sentence (single dot and white space) while ")"
+@@ -2979,7 +2984,7 @@
+ 
+ 
+ ==============================================================================
+-VERSION 7.1						*version-7.1*
++VERSION 7.1					*version-7.1* *version7.1*
+ 
+ This section is about improvements made between version 7.0 and 7.1.
+ 
+@@ -4621,7 +4626,7 @@
+ Files:	    src/memfile.c
+ 
+ ==============================================================================
+-VERSION 7.2						*version-7.2*
++VERSION 7.2					*version-7.2* *version7.2*
+ 
+ This section is about improvements made between version 7.1 and 7.2.
+ 
+@@ -4734,14 +4739,14 @@
+ Other new runtime files:
+ 	Esperanto menu and message translations. (Dominique Pelle)
+ 	Finnish menu and message translations. (Flammie Pirinen)
+-	Brazilian Portugese message translations. (Eduardo Dobay)
++	Brazilian Portuguese message translations. (Eduardo Dobay)
+ 
+ Added floating point support. |Float|
+ 
+ Added argument to mode() to return a bit more detail about the current mode.
+ (Ben Schmidt)
+ 
+-Added support for BSD console mouse: |sysmouse|.  (Paul Mahol)
++Added support for BSD console mouse: |sysmouse|.  (Paul B. Mahol)
+ 
+ Added the "newtab" value for the 'switchbuf' option.  (partly by Yegappan
+ Lakshmanan)
+@@ -4925,7 +4930,7 @@
+ 
+ Patch 7.1.028
+ Problem:    Can't use last search pattern for ":sort". (Brian McKee)
+-Solution:   When the pattern is emtpy use the last search pattern. (Martin
++Solution:   When the pattern is empty use the last search pattern. (Martin
+ 	    Toft)
+ Files:	    runtime/doc/change.txt, src/ex_cmds.c
+ 
+@@ -5463,7 +5468,7 @@
+ Files:	    src/screen.c
+ 
+ Patch 7.1.117
+-Problem:    Can't check wether Vim was compiled with Gnome. (Tony Mechelynck)
++Problem:    Can't check whether Vim was compiled with Gnome. (Tony Mechelynck)
+ Solution:   Add gui_gnome to the has() list.
+ Files:	    src/eval.c
+ 
+@@ -5903,7 +5908,7 @@
+ 
+ Patch 7.1.188
+ Problem:    When 'showmode' is off the message for changing a readonly file is
+-	    given in the second column instead of the first.  (Payl B.  Mahol)
++	    given in the second column instead of the first.  (Payl B. Mahol)
+ Solution:   Put the W10 message in the first column.
+ Files:	    src/edit.c
+ 
+@@ -6720,8 +6725,7 @@
+ 
+ Patch 7.1.326
+ Problem:    ":s!from!to!" works, but ":smagic!from!to!" doesn't.  It sees the
+-	    "!" as a flag to to the command.  Same for ":snomagic". (Johan
+-	    Spetz)
++	    "!" as a flag to the command.  Same for ":snomagic". (Johan Spetz)
+ Solution:   When checking for a forced command also ignore ":smagic" and
+ 	    ":snomagic". (Ian Kelling)
+ Files:	    src/ex_docmd.c
+@@ -7142,5 +7146,94 @@
+ 
+ Mac: Could not build with Perl interface.
+ 
++==============================================================================
++VERSION 7.3					*version-7.3* *version7.3*
++
++This section is about improvements made between version 7.2 and 7.3.
++
++This is a bug-fix release and there are a few new features.
++
++
++Changed							*changed-7.3*
++-------
++
++The extra and language files are no longer distributed separately.
++The files for all systems are included in one distribution.
++
++After using ":recover" or recovering a file in another way, ":x" and "ZZ"
++don't save what you see.  This could result in work being lost.  Now the text
++after recovery is compared to the original file contents.  When they differ
++the buffer is marked as modified.
++
++When Vim is exiting because of a deadly signal, when v:dying is 2 or more,
++VimLeavePre, VimLeave, BufWinLeave and BufUnload autocommands are not
++executed.
++
++Removed support for GTK 1.  It was no longer maintained and required a lot of
++#ifdefs in the source code.  GTK 2 should be available for every system.
++
++
++Added							*added-7.3*
++-----
++
++Persistent undo: store undo information in a file.  Can undo to before when
++the file was read, also for unloaded buffers. |undo-persistence|
++(partly by Jordan Lewis)
++
++Added the 'relativenumber' option. (Markus Heidelberg)
++
++Support for Blowfish encryption.  Added the 'cryptmethod' option.
++Mostly by Moshin Ahmed.  Also encrypt the text in the swap file and the undo
++file.
++
++Added the |+conceal| feature.  (Vince Negri)
++
++Added support for NetBeans in a terminal.  Added |:nbstart| and |:nbclose|.
++(Xavier de Gaye)
++
++More floating point functions: acos(), asin(), atan2(), cosh(), exp(), fmod(),
++log(), sinh(), tan(), tanh().  (Bill McCarthy)
++
++gettabvar() and settabvar() functions. (Yegappan Lakshmanan)
++
++New syntax files:
++TODO
++
++New filetype plugins:
++TODO
++
++New spell files:
++TODO
++Breton. (Dominique Pelle)
++
++
++Support GDK_SUPER_MASK for GTK on Mac. (Stephan Schulz)
++
++
++Fixed							*fixed-7.3*
++-----
++
++When writing a file, switching tab pages and selecting a word the file write
++message would be displayed again.  This in Insert mode and with 'cmdheight'
++set to 2.
++
++When using ":lang" to set a locale that uses a comma for decimal separator and
++using GTK floating point numbers stop working.  Use gtk_disable_setlocale().
++(James Vega)
++
++"g8" didn't produce the right value on a NUL. (Dominique Pelle)
++
++Use BASEMODLIBS instead of MODLIBS for Python configuration to pick up the
++right compiler flags. (Michael Bienia)
++
++Window title is not updated after dropping a file on Vim. (Hari G)
++
++MS-Windows: The self-installing executable now also works on 64-bit systems.
++The gvim executable is 32 bits, the installed gvimext.dll is either a 32 or 64
++bit version. (George Reilly)
++
++synstack() did not return anything when just past the end of the line.  Useful
++when using the cursor position in Insert mode.
++
+ 
+  vim:tw=78:ts=8:ft=help:norl:
+diff -Nur runtime/doc/vi_diff.txt runtime/doc/vi_diff.txt
+--- runtime/doc/vi_diff.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/vi_diff.txt	2011-04-03 09:27:21.585655333 -0700
+@@ -1,4 +1,4 @@
+-*vi_diff.txt*   For Vim version 7.2.  Last change: 2008 Jun 28
++*vi_diff.txt*   For Vim version 7.3a.  Last change: 2008 Jun 28
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+diff -Nur runtime/doc/vim-fr.1 runtime/doc/vim-fr.1
+--- runtime/doc/vim-fr.1	2008-07-21 13:17:34.000000000 -0700
++++ runtime/doc/vim-fr.1	2011-01-18 10:40:55.756264600 -0800
+@@ -2,6 +2,8 @@
+ .\" ([email protected])
+ .\" Mise � jour de la traduction par David Blanchet
+ .\" ([email protected]) 2006-06-10
++.\" Mise � jour de la traduction par Dominique Pell�
++.\" ([email protected]) 2008-11-29
+ .\"
+ .TH VIM 1 "22 F�vrier 2002"
+ .SH NOM
+@@ -194,7 +196,7 @@
+ .TP
+ \-d
+ D�marre en mode Diff.
+-Deux ou trois noms de fichiers doivent �tre sp�cifi�s.
++Deux, trois ou quatre noms de fichiers doivent �tre sp�cifi�s.
+ .B Vim
+ ouvrira alors tous les fichiers et affichera leurs diff�rences.
+ Fonctionne comme vimdiff(1).
+diff -Nur runtime/doc/vim-fr.UTF-8.1 runtime/doc/vim-fr.UTF-8.1
+--- runtime/doc/vim-fr.UTF-8.1	2008-07-21 13:17:40.000000000 -0700
++++ runtime/doc/vim-fr.UTF-8.1	2011-01-18 10:40:55.756821236 -0800
+@@ -2,6 +2,8 @@
+ .\" ([email protected])
+ .\" Mise à jour de la traduction par David Blanchet
+ .\" ([email protected]) 2006-06-10
++.\" Mise à jour de la traduction par Dominique Pellé
++.\" ([email protected]) 2008-11-29
+ .\"
+ .TH VIM 1 "22 Février 2002"
+ .SH NOM
+@@ -194,7 +196,7 @@
+ .TP
+ \-d
+ Démarre en mode Diff.
+-Deux ou trois noms de fichiers doivent être spécifiés.
++Deux, trois ou quatre noms de fichiers doivent être spécifiés.
+ .B Vim
+ ouvrira alors tous les fichiers et affichera leurs différences.
+ Fonctionne comme vimdiff(1).
+diff -Nur runtime/doc/vim-it.1 runtime/doc/vim-it.1
+--- runtime/doc/vim-it.1	2008-07-21 13:17:47.000000000 -0700
++++ runtime/doc/vim-it.1	2011-04-03 09:27:21.586394061 -0700
+@@ -427,7 +427,7 @@
+ Solo con GUI GTK: Visualizza Window ID su "stdout".
+ .TP
+ \-\-help
+-Vim d� un messaggio ed esce, come con l'argomento "-h".
++Vim d� un messaggio ed esce, come con l'argomento "\-h".
+ .TP
+ \-\-literal
+ Considera i nomi passati come argomenti letterai, senza espandere
+diff -Nur runtime/doc/vim-it.UTF-8.1 runtime/doc/vim-it.UTF-8.1
+--- runtime/doc/vim-it.UTF-8.1	2008-07-21 13:17:51.000000000 -0700
++++ runtime/doc/vim-it.UTF-8.1	2011-04-03 09:27:21.587161190 -0700
+@@ -427,7 +427,7 @@
+ Solo con GUI GTK: Visualizza Window ID su "stdout".
+ .TP
+ \-\-help
+-Vim dà un messaggio ed esce, come con l'argomento "-h".
++Vim dà un messaggio ed esce, come con l'argomento "\-h".
+ .TP
+ \-\-literal
+ Considera i nomi passati come argomenti letterai, senza espandere
+diff -Nur runtime/doc/vim-pl.1 runtime/doc/vim-pl.1
+--- runtime/doc/vim-pl.1	2008-07-31 13:22:18.000000000 -0700
++++ runtime/doc/vim-pl.1	2011-01-18 10:40:55.758697779 -0800
+@@ -1,4 +1,4 @@
+-.TH VIM 1 "2002 Lut 22"
++.TH VIM 1 "2006 kwi 11"
+ .SH NAME
+ vim \- Vi rozbudowany, edytor tekstu dla programisty
+ .SH SYNOPSIS
+@@ -13,7 +13,7 @@
+ [opcje] \-t znacznik
+ .br
+ .B vim
+-[opcje] \-q [plik b��du]
++[opcje] \-q [plik_b��du]
+ .PP
+ .br
+ .B ex
+@@ -35,10 +35,10 @@
+ u�ywany do edycji wszelkiego rodzaju plik�w tekstowych.
+ U�yteczny zw�aszcza przy edycji program�w.
+ .PP
+-Posiada wiele usprawnie� w por�wnaniu z Vi: wielo poziomowe cofanie zmian,
++Posiada wiele usprawnie� w por�wnaniu z Vi: wielopoziomowe cofanie zmian,
+ wiele okien i bufor�w, pod�wietlanie sk�adni, edycja linii polece�,
+ uzupe�nianie nazw plik�w, pomoc on-line, wizualna selekcja, itd.
+-Zobacz ":help vi_diff.txt" dla podsumowania r�ni� pomi�dzy
++Zobacz ":help vi_diff.txt" dla podsumowania r�nic pomi�dzy
+ .B Vimem
+ i Vi.
+ .PP
+@@ -82,7 +82,7 @@
+ {znacznika} szuka si� w pliku tags, zwi�zany z nim plik staje si�
+ plikiem bie��cym i wykonuje si� powi�zane polecenie.
+ Zazwyczaj u�ywa si� tego sposobu dla program�w w C, w kt�rych wypadku
+-{znacznik} powinien by� nazw� funkcji.
++{znacznik} mo�e by� nazw� funkcji.
+ W efekcie plik zawieraj�cy okre�lon� funkcj� staje si� plikiem
+ bie��cym a kursor jest umieszczony na pocz�tku funkcji.
+ Zobacz ":help tag-commands".
+@@ -91,7 +91,7 @@
+ Zacznij w trybie quickFix.
+ Plik [plik_b��d�w] zostaje zinterpretowany i poka�e si� pierwszy b��d.
+ Je�li brak opcji [plik_b��d�w] nazwa pliku zostanie pobrana z opcji
+-'errorfile' (domy�lnie "AztecC.Err" dla Amigi, "errros.err" dla innych
++\&'errorfile' (domy�lnie "AztecC.Err" dla Amigi, "errros.err" dla innych
+ system�w.
+ Do kolejnych b��d�w mo�na przeskoczy� dzi�ki poleceniu ":cn".
+ Zobacz ":help quickfix".
+@@ -140,8 +140,8 @@
+ +/{wz�r}
+ W pierwszym pliku kursor zostanie umieszczony na pierwszym wyst�pieniu
+ {wz�r}.
+-Zobacz ":help search-pattern" by dowiedzie� si� jakie s� mo�liwo�ci
+-wzor�w wyszukiwania.
++Zobacz ":help search-pattern" by dowiedzie� si� jakie s� mo�liwe
++wzorce wyszukiwania.
+ .TP
+ +{polecenie}
+ .TP
+@@ -164,7 +164,7 @@
+ \-\-cmd {polecenie}
+ Podobne do "\-c", ale polecenie jest wykonywane tu� przed
+ interpretacj� jakiegokolwiek pliku vimrc.
+-Mo�na u�y� do 10 takich polece�, niezale�ni od polece� od "\-c"
++Mo�na u�y� do 10 takich polece�, niezale�nie od polece� od "\-c"
+ .TP
+ \-A
+ Je�li
+@@ -190,7 +190,7 @@
+ .TP
+ \-d
+ Uruchom w trybie diff.
+-Powinno by� dwa lub trzy nazwy plik�w jako argumenty.
++Powinno si� u�y� dw�ch, trzech lub czterech nazwy plik�w jako argument�w.
+ .B Vim
+ otworzy wszystkie te pliki i poka�e r�nice mi�dzy nimi.
+ Dzia�a jak vimdiff(1).
+@@ -283,18 +283,18 @@
+ \-m
+ Zmiana pliku jest niemo�liwa.
+ Przestawia opcj� 'write'.
+-Mo�na ca�y czas zmieni� zawarto�� bufora, ale zapisanie pliku nie jest
+-mo�liwa.
++Mo�na zmienia� zawarto�� bufora, ale zapisanie pliku nie jest
++mo�liwe.
+ .TP
+ \-M
+ Opcje 'modifiable' i 'write' zostan� wy��czone, tak wi�c zmiany
+-w pliku oraz ich zapisanie nie s� mo�liwe. Mo�na warto�� tych opcji
++w pliku oraz ich zapisanie nie s� mo�liwe. Warto�� tych opcji mo�na
+ zmieni�.
+ .TP
+ \-N
+-Tryb niekompatibylny. Przestawia opcj� 'compatible'. Dzi�ki temu
++Tryb niekompatybilny. Przestawia opcj� 'compatible'. Dzi�ki temu
+ .B Vim
+-b�dzie zachowywa� si� odrobin� lepiej, ale mniej zgodznie z Vi nawet
++b�dzie zachowywa� si� odrobin� lepiej, ale mniej zgodnie z Vi nawet
+ je�li nie istnieje plik .vimrc.
+ .TP
+ \-n
+@@ -323,8 +323,8 @@
+ \-R
+ Tryb tylko do odczytu.
+ Zostanie ustawiona opcja 'readonly'.
+-Ca�y czas mo�na zmienia� bufor, ale b�dzie istnia�a blokada przed przypadkowym
+-zapisaniem pliku.
++Ca�y czas mo�na zmienia� bufor, ale b�dzie istnia�a blokada by chroni�
++przed przypadkowym zapisaniem pliku.
+ Je�li chcesz zapisa� plik dodaj wykrzyknik do polecenia Ex, np. ":w!".
+ Opcja \-R implikuje opcj� \-n (zobacz poni�ej).
+ Opcja 'readonly' mo�e zosta� przestawiona poprzez ":set noro".
+@@ -427,15 +427,15 @@
+ .TP
+ \-\-literal
+ Potraktuj nazwy plik�w dos�ownie i nie rozwi�zuj kwantyfikator�w. Nie
+-ma znaczenia na Uniksach gdzie pow�oka rozwi�zuje kwantyfikator�w
++ma znaczenia na Uniksach gdzie pow�oka rozwi�zuje kwantyfikatory.
+ .TP
+ \-\-noplugin
+ Pomi� �adowanie wtyczek. Implikowane przy \-u NONE.
+ .TP
+ \-\-remote
+-Po��cz si� z serwerem Vima i edytuj w nim reszt� argument�w. Je�li nie
+-znaleziono serwera zostanie zg�oszony b��d a pliki b�d� otwarte
+-w bie��cym Vimie.
++Po��cz si� z serwerem Vima i edytuj w nim reszt� plik�w podanych jako
++argumenty. Je�li nie znaleziono serwera zostanie zg�oszony b��d a pliki zostan�
++otwarte w bie��cym Vimie.
+ .TP
+ \-\-remote\-expr {wyra�enie}
+ Po��cz z serwerem Vima, rozwi�� w nim {wyra�enie} i wypisz rozwi�zanie
+@@ -449,7 +449,7 @@
+ serwera.
+ .TP
+ \-\-remote\-wait
+-Tak samo jak \-remote, ale Vim nie zako�czy dop�ki pliki nie zostan�
++Tak samo jak \-remote, ale Vim nie zako�czy dop�ki pliki pozostan�
+ otwarte.
+ .TP
+ \-\-remote\-wait\-silent
+@@ -487,6 +487,9 @@
+ .B Vima
+ U�yj ":help doc\-file\-list" aby uzyska� pe�n� list�.
+ .TP
++/usr/local/lib/vim/doc/tags
++Plik znacznik�w s�u�y do znajdowania informacji w plikach dokumentacji.
++.TP
+ /usr/local/lib/vim/syntax/syntax.vim
+ Globalne uruchamianie pod�wietlania sk�adni.
+ .TP
+diff -Nur runtime/doc/vim-pl.UTF-8.1 runtime/doc/vim-pl.UTF-8.1
+--- runtime/doc/vim-pl.UTF-8.1	2008-07-31 13:22:45.000000000 -0700
++++ runtime/doc/vim-pl.UTF-8.1	2011-01-18 10:40:55.759202551 -0800
+@@ -1,4 +1,4 @@
+-.TH VIM 1 "2002 Lut 22"
++.TH VIM 1 "2006 kwi 11"
+ .SH NAME
+ vim \- Vi rozbudowany, edytor tekstu dla programisty
+ .SH SYNOPSIS
+@@ -13,7 +13,7 @@
+ [opcje] \-t znacznik
+ .br
+ .B vim
+-[opcje] \-q [plik błędu]
++[opcje] \-q [plik_błędu]
+ .PP
+ .br
+ .B ex
+@@ -35,10 +35,10 @@
+ używany do edycji wszelkiego rodzaju plików tekstowych.
+ Użyteczny zwłaszcza przy edycji programów.
+ .PP
+-Posiada wiele usprawnień w porównaniu z Vi: wielo poziomowe cofanie zmian,
++Posiada wiele usprawnień w porównaniu z Vi: wielopoziomowe cofanie zmian,
+ wiele okien i buforów, podświetlanie składni, edycja linii poleceń,
+ uzupełnianie nazw plików, pomoc on-line, wizualna selekcja, itd.
+-Zobacz ":help vi_diff.txt" dla podsumowania różnić pomiędzy
++Zobacz ":help vi_diff.txt" dla podsumowania różnic pomiędzy
+ .B Vimem
+ i Vi.
+ .PP
+@@ -82,7 +82,7 @@
+ {znacznika} szuka się w pliku tags, związany z nim plik staje się
+ plikiem bieżącym i wykonuje się powiązane polecenie.
+ Zazwyczaj używa się tego sposobu dla programów w C, w których wypadku
+-{znacznik} powinien być nazwą funkcji.
++{znacznik} może być nazwą funkcji.
+ W efekcie plik zawierający określoną funkcję staje się plikiem
+ bieżącym a kursor jest umieszczony na początku funkcji.
+ Zobacz ":help tag-commands".
+@@ -91,7 +91,7 @@
+ Zacznij w trybie quickFix.
+ Plik [plik_błędów] zostaje zinterpretowany i pokaże się pierwszy błąd.
+ Jeśli brak opcji [plik_błędów] nazwa pliku zostanie pobrana z opcji
+-'errorfile' (domyślnie "AztecC.Err" dla Amigi, "errros.err" dla innych
++\&'errorfile' (domyślnie "AztecC.Err" dla Amigi, "errros.err" dla innych
+ systemów.
+ Do kolejnych błędów można przeskoczyć dzięki poleceniu ":cn".
+ Zobacz ":help quickfix".
+@@ -140,8 +140,8 @@
+ +/{wzór}
+ W pierwszym pliku kursor zostanie umieszczony na pierwszym wystąpieniu
+ {wzór}.
+-Zobacz ":help search-pattern" by dowiedzieć się jakie są możliwości
+-wzorów wyszukiwania.
++Zobacz ":help search-pattern" by dowiedzieć się jakie są możliwe
++wzorce wyszukiwania.
+ .TP
+ +{polecenie}
+ .TP
+@@ -164,7 +164,7 @@
+ \-\-cmd {polecenie}
+ Podobne do "\-c", ale polecenie jest wykonywane tuż przed
+ interpretacją jakiegokolwiek pliku vimrc.
+-Można użyć do 10 takich poleceń, niezależni od poleceń od "\-c"
++Można użyć do 10 takich poleceń, niezależnie od poleceń od "\-c"
+ .TP
+ \-A
+ Jeśli
+@@ -190,7 +190,7 @@
+ .TP
+ \-d
+ Uruchom w trybie diff.
+-Powinno być dwa lub trzy nazwy plików jako argumenty.
++Powinno się użyć dwóch, trzech lub czterech nazwy plików jako argumentów.
+ .B Vim
+ otworzy wszystkie te pliki i pokaże różnice między nimi.
+ Działa jak vimdiff(1).
+@@ -283,18 +283,18 @@
+ \-m
+ Zmiana pliku jest niemożliwa.
+ Przestawia opcję 'write'.
+-Można cały czas zmienić zawartość bufora, ale zapisanie pliku nie jest
+-możliwa.
++Można zmieniać zawartość bufora, ale zapisanie pliku nie jest
++możliwe.
+ .TP
+ \-M
+ Opcje 'modifiable' i 'write' zostaną wyłączone, tak więc zmiany
+-w pliku oraz ich zapisanie nie są możliwe. Można wartość tych opcji
++w pliku oraz ich zapisanie nie są możliwe. Wartość tych opcji można
+ zmienić.
+ .TP
+ \-N
+-Tryb niekompatibylny. Przestawia opcję 'compatible'. Dzięki temu
++Tryb niekompatybilny. Przestawia opcję 'compatible'. Dzięki temu
+ .B Vim
+-będzie zachowywał się odrobinę lepiej, ale mniej zgodznie z Vi nawet
++będzie zachowywał się odrobinę lepiej, ale mniej zgodnie z Vi nawet
+ jeśli nie istnieje plik .vimrc.
+ .TP
+ \-n
+@@ -323,8 +323,8 @@
+ \-R
+ Tryb tylko do odczytu.
+ Zostanie ustawiona opcja 'readonly'.
+-Cały czas można zmieniać bufor, ale będzie istniała blokada przed przypadkowym
+-zapisaniem pliku.
++Cały czas można zmieniać bufor, ale będzie istniała blokada by chronić
++przed przypadkowym zapisaniem pliku.
+ Jeśli chcesz zapisać plik dodaj wykrzyknik do polecenia Ex, np. ":w!".
+ Opcja \-R implikuje opcję \-n (zobacz poniżej).
+ Opcja 'readonly' może zostać przestawiona poprzez ":set noro".
+@@ -427,15 +427,15 @@
+ .TP
+ \-\-literal
+ Potraktuj nazwy plików dosłownie i nie rozwiązuj kwantyfikatorów. Nie
+-ma znaczenia na Uniksach gdzie powłoka rozwiązuje kwantyfikatorów
++ma znaczenia na Uniksach gdzie powłoka rozwiązuje kwantyfikatory.
+ .TP
+ \-\-noplugin
+ Pomiń ładowanie wtyczek. Implikowane przy \-u NONE.
+ .TP
+ \-\-remote
+-Połącz się z serwerem Vima i edytuj w nim resztę argumentów. Jeśli nie
+-znaleziono serwera zostanie zgłoszony błąd a pliki będą otwarte
+-w bieżącym Vimie.
++Połącz się z serwerem Vima i edytuj w nim resztę plików podanych jako
++argumenty. Jeśli nie znaleziono serwera zostanie zgłoszony błąd a pliki zostaną
++otwarte w bieżącym Vimie.
+ .TP
+ \-\-remote\-expr {wyrażenie}
+ Połącz z serwerem Vima, rozwiąż w nim {wyrażenie} i wypisz rozwiązanie
+@@ -449,7 +449,7 @@
+ serwera.
+ .TP
+ \-\-remote\-wait
+-Tak samo jak \-remote, ale Vim nie zakończy dopóki pliki nie zostaną
++Tak samo jak \-remote, ale Vim nie zakończy dopóki pliki pozostaną
+ otwarte.
+ .TP
+ \-\-remote\-wait\-silent
+@@ -487,6 +487,9 @@
+ .B Vima
+ Użyj ":help doc\-file\-list" aby uzyskać pełną listę.
+ .TP
++/usr/local/lib/vim/doc/tags
++Plik znaczników służy do znajdowania informacji w plikach dokumentacji.
++.TP
+ /usr/local/lib/vim/syntax/syntax.vim
+ Globalne uruchamianie podświetlania składni.
+ .TP
+diff -Nur runtime/doc/vim-ru.1 runtime/doc/vim-ru.1
+--- runtime/doc/vim-ru.1	2008-07-21 13:18:09.000000000 -0700
++++ runtime/doc/vim-ru.1	2011-01-18 10:40:55.759694047 -0800
+@@ -7,7 +7,7 @@
+ [�����] [���� ..]
+ .br
+ .B vim
+-[�����] -
++[�����] \-
+ .br
+ .B vim
+ [�����] \-t �����
+@@ -69,12 +69,12 @@
+ ������ ������� ":next". ����� ������� ����, ��� �������� ���������� � �������
+ "�����" (-), ����� ������� ������ ���������� ��������� "--".
+ .TP
+--
++\-
+ ���� ����� �������� �� ������ ������������ �����. ������� ����� �����������
+ �� ������������ ������ ����������� (stderr), ������� ������ ���� 
+ ����������.
+ .TP
+--t {�����}
++\-t {�����}
+ ��� ����� � ��������� ������� ������� ������� �� "�����", ������� �� ����� goto.
+ {�����} ������ � ����� �����, ��������������� ���� ���������� ��������, � 
+ ��������������� ������� �����������.
+@@ -83,7 +83,7 @@
+ ����, ���������� �������, ���������� ��������, � ������ ���������� � ������ �������.
+ ��. ":help tag-commands".
+ .TP
+--q [���� ������]
++\-q [���� ������]
+ ������ ������ � ������ �������� �����������.
+ ��� ���� ����������� [���� ������] � ������ ������ ��������� �� �����.
+ ���� [���� ������] �� ������, ��� ����� ��ң��� �� �������� ����� 'errorfile'
+@@ -101,21 +101,21 @@
+ ex
+ ������ � ������ Ex. ��� �������� � ���������� �����
+ ���������� ��������� ������� ":vi". ����� Ex ��������
+-����� ���� "-e".
++����� ���� "\-e".
+ .TP
+ view
+ ������ � ������ "������ ��� ������". �� ������ �������� �� ��������� ������ 
+-�����. �� �� ����� ����� ������� ������ "-R".
++�����. �� �� ����� ����� ������� ������ "\-R".
+ .TP
+ gvim gview
+ ������ � ����������� �����������. ����������� � ����� ����.
+-�� �� ����� ����� ������� ��� ������� � ������ "-g".
++�� �� ����� ����� ������� ��� ������� � ������ "\-g".
+ .TP
+ rvim rview rgvim rgview
+ ��� � ���������� �������, �� � �������������. ������ ��������� ������� ��������
+ ��� ���������������� ������
+ .B Vim.
+-������ ��������� "r" ����� ������������ ���� "-Z".
++������ ��������� "r" ����� ������������ ���� "\-Z".
+ .SH �����
+ ����� ����� ���� ������� � ����� �������, �� ��� ����� �ͣ�
+ ������. ����� ��� ���������� ����� ���� ���������� ��� �����
+@@ -132,21 +132,21 @@
+ .TP
+ +{�������}
+ .TP
+--c {�������}
++\-c {�������}
+ {�������} ����������� ����� �������� ������� ����� ��� ������� Ex.
+ ���� {�������} �������� �������, �� ��� ������ ���� ��������� �
+ ������� ������� (� ����������� �� ������������ ��������).
+ ������: vim "+set si" main.c
+ .br
+-����������: ����� ��������� �� ������ ������ "+" ��� "-c".
++����������: ����� ��������� �� ������ ������ "+" ��� "\-c".
+ .TP
+---cmd {�������}
+-��� "-c", �� ������� ����������� ����� ���������� ������ �����
++\-\-cmd {�������}
++��� "\-c", �� ������� ����������� ����� ���������� ������ �����
+ �������� (vimrc).
+ ����� ��������� �� ������ ����� ������, ���������� �� ����������
+-������ "-c".
++������ "\-c".
+ .TP
+--A
++\-A
+ ����
+ .B Vim
+ ��� ������ � ���������� ��������� ����� ��� ������ ������,
+@@ -158,34 +158,34 @@
+ .B Vim
+ ��������� ������ � �������.
+ .TP
+--b
++\-b
+ �������� �����.
+ ������������ ��������� ��������� �����, �������� ��������� ������
+ ��������� ��� ������������ �����.
+ .TP
+--C
++\-C
+ ����� �������������. �������� ����� 'compatible'.
+ .B Vim
+ ����� �������� ����� ��� Vi, ���� ���� ���������� ���� .vimrc.
+ .TP
+--d
++\-d
+ ����� ������ ��������.
+ ������ ���� ������� ��� ��� ��� ����� �����.
+ .B Vim
+ ������� ��� ����� � ������� �������� ����� ����
+ (��� vimdiff(1)).
+ .TP
+--d {����������}
++\-d {����������}
+ ������� {����������} ��� ������������� � �������� ��������� (������ �� Amiga).
+ ������:
+ "\-d con:20/30/600/150".
+ .TP
+--e
++\-e
+ ���������
+ .B Vim
+ � ������ Ex, ��� ����� ����������� ���� ����� ��� "ex".
+ .TP
+--f
++\-f
+ ����� ��������� ����������. ������
+ .B Vim
+ � ����������� ����������� �� ����� ��������� � �����������
+@@ -198,25 +198,25 @@
+ ������ ������ (��������, ��������� ��� ������ � ����������� ������).
+ �� ��������� Amiga ������� ":sh" � ":!" �� ����� ��������.
+ .TP
+---nofork
++\-\-nofork
+ ����� ��������� ����������. ������
+ .B Vim
+ � ����������� ����������� �� ����� ��������� � �����������
+ �� ����������� ţ ��������.
+ .TP
+--F
++\-F
+ ����
+ .B Vim
+ ��� ������ � ���������� FKMAP ��� ������ ������ ������ ������
+ � �������� ���������� ��� ����� �����, ���� ���� ���������
+ .B Vim
+ � ������ �����, ����� ������, � ����ޣ����� ������� 
+-'fkmap' � 'rightleft'.
++\&'fkmap' � 'rightleft'.
+ � ��������� ������
+ .B Vim
+ ��������� ������ � ���������� �� ������.
+ .TP
+--g
++\-g
+ ����
+ .B Vim
+ ��� ������ � ���������� ������������ ����������, ���� ����
+@@ -224,13 +224,13 @@
+ .B Vim
+ ��������� ������ � ���������� �� ������.
+ .TP
+--h
++\-h
+ ������� ������� ���������� �� ���������� � ������ ��������� ������.
+ ����� �����
+ .B Vim
+ ��������� ������.
+ .TP
+--H
++\-H
+ ����
+ .B Vim
+ ��� ������ � ���������� ������ ������ ������ ������
+@@ -241,69 +241,69 @@
+ .B Vim
+ ��������� ������ � ���������� �� ������.
+ .TP
+--i {viminfo}
++\-i {viminfo}
+ ���� ������������ ���� viminfo, �� ���� ���� ������ ��� ������ ����� (������
+ "~/.viminfo" �� ���������). ����� ����� �������� ������������� ����� viminfo
+ ��ԣ� �������� ����� "NONE".
+ .TP
+--L
+-�� ��, ��� � -r.
++\-L
++�� ��, ��� � \-r.
+ .TP
+--l
++\-l
+ ����� Lisp. ���������� ����� 'lisp' � 'showmatch'.
+ .TP
+--m
++\-m
+ ��������� ������ ���������. ��� ���� ����������� ����� 'write', �������
+ ������ ������ ���������� �����������.
+ .TP
+--N
++\-N
+ ����� �������� �������������. ����������� 'compatible'.
+ .B Vim
+ ����� �������� �����, �� �� ����� ��������� ��������� � Vi, ���� ����
+ ����������� ���� �������� �������� (.vimrc).
+ .TP
+--n
++\-n
+ �� ������������ ����-����. �������������� ��� ���� � ������ ����� ����������.
+ ������ ��� ������ ����� �� ����� ��������� �������� (��������, ������ �����).
+ �� �� ����� ����� ������� �������� ":set uc=0". ������ -- ":set uc=200".
+ .TP
+--o[N]
++\-o[N]
+ ������� N ����, �����̣���� �� �����������. ���� N �� �������, �� ����������� 
+ �� ������ ���� �� ������ ����.
+ .TP
+--O[N]
++\-O[N]
+ ������� N ����, �����̣���� �� ���������. ���� N �� �������, �� ����������� 
+ �� ������ ���� �� ������ ����.
+ .TP
+--R
++\-R
+ ����� "������ ��� ������". ���������� ����� 'readonly'.
+ ���� � ������ �������� ��� ��������������, �� ��� ����� �� ����� ������
+ �������� ������������. ��� ���������� ����� ���������� �������� ���������������
+ ���� � ��������������� ������� Ex (��������, ":w!").
+-���� "-R" ������������� �����, ��� ������������ � ���� "-n" (��. ����).
++���� "\-R" ������������� �����, ��� ������������ � ���� "\-n" (��. ����).
+ ����� 'readonly' ����� ���� ��������� �� ������� ":set noro".
+ ��. ":help 'readonly'".
+ .TP
+--r
++\-r
+ ������� ������ ����-������ � ���������� �� �� ������������� ��� �������������� ����� ����.
+ .TP
+--r {����}
++\-r {����}
+ ����� ��������������.
+ ��� �������������� ����� ���� ����� ����������� ����-����.
+ ����-���� ����� �� �� ���, ��� � ��������� ����, �� � ����������� ���������� ".swp".
+ ��. ":help recovery".
+ .TP
+--s
+-����� �����. ������ ��� ������� ��� "Ex" ��� ���� ����� "-s" ������ ���� "-e".
++\-s
++����� �����. ������ ��� ������� ��� "Ex" ��� ���� ����� "\-s" ������ ���� "\-e".
+ .TP
+--s {scriptin}
++\-s {scriptin}
+ ����������� ���� �������� {scriptin}. ��� ����, ���������� ����� ��������������
+ � ���� ������, ��� ���� �� ��� ���� ������� �� �������. 
+ �� �� ����� ����������� �������� ":source! {scriptin}".
+ ���� ����� ����� ����������� �� ���������� ������ ���������, �� � ���������� 
+ ���� �������������� � ����������.
+ .TP
+--T {terminal}
++\-T {terminal}
+ ��������
+ .B Vim
+ ��� ������������� ���������. ���������� ������ � ��� ���������, ����� 
+@@ -312,96 +312,96 @@
+ .B Vim
+ (�������� � ����) ��� ���������� � ������ termcap ��� terminfo.
+ .TP
+--u {vimrc}
++\-u {vimrc}
+ ������������ ������� �� ����� �������� {vimrc} ��� ���������.
+ ��� ��������� ����� �������� ������������.
+ ������ ��� �������������� ����������� ����� ������.
+ ����� �������� ������������� ��������� �������� ������, ����� ������������
+ ��� "NONE". ��. ":help initialization".
+ .TP
+--U {gvimrc}
++\-U {gvimrc}
+ ������������ ������� �� ����� �������� {gvimrc} ��� ��������� ������������ 
+ ����������.
+ ��� ��������� ����� �������� ��� ������������ ���������� ������������.
+ ����� �������� ������������� ��������� �������� ������������ ���������� ������, 
+ ����� ������������ ��� "NONE". ��. ":help gui-init".
+ .TP
+--V
++\-V
+ "���������" �����. �������� ��������� � ���, ����� ����� ��������, � �
+ ������-������ ����� viminfo.
+ .TP
+--v
++\-v
+ ���������
+ .B Vim
+ � ������ Vi, ��� ����� ����������� ���� ����� ��� "vi". ����� ����� ������ ����
+ ����������� ���� ����� ��� "ex".
+ .TP
+--w {scriptout}
++\-w {scriptout}
+ ��� �������, ���ģ���� � ���������� ������ �� ������� ���������� ������, 
+ ������������ � ���� {scriptout}.
+ ������ � ��� ������, ����� �� ������ ������� ���� �������� ��� ������������ 
+-������������� � "vim -s" ��� ":source!". ���� ���� {scriptout} ��� ����������, 
++������������� � "vim \-s" ��� ":source!". ���� ���� {scriptout} ��� ����������, 
+ �� ����� ������� ����� ����������� � ����� �����.
+ .TP
+--W {scriptout}
+-��� "-w", �� ��� ������������ ���� ����� �����������.
++\-W {scriptout}
++��� "\-w", �� ��� ������������ ���� ����� �����������.
+ .TP
+--x
++\-x
+ ��������� ������������ �����. ����� ������ ����������� ������ ������.
+ .TP
+--X
++\-X
+ �� ������������ � X-�������. �������� �������� �� �������, �� ������ �����������
+ ������������� ��������� ���� � ������ ������.
+ .TP
+--Z
++\-Z
+ ������������ �����. �������� ��� ��, ��� � ���������, ������������ � "r".
+ .TP
+---
++\-\-
+ ����� ������. ��� ��������� ��������� ��������������� ��� ����� ������.
+ ����� ���� ������������ ��� ������ ������, ����� ������� ���������� � ������.
+ .TP
+---help
+-������� ������� ������� � ��������� ������. �� ��, ��� � "-h".
++\-\-help
++������� ������� ������� � ��������� ������. �� ��, ��� � "\-h".
+ .TP
+---version
++\-\-version
+ ������� ���������� � ������ ��������� � ��������� ������.
+ .TP
+---remote
++\-\-remote
+ ������������ � ������� Vim � ��������� ��� ������� �����, ��������� �
+ ����������� ����������. ���� ������ �� ������, ��������� ��������������,
+ � ����� �������� � ������� ����� Vim.
+ .TP
+---remote-expr {���������}
++\-\-remote\-expr {���������}
+ ������������ � ������� Vim � ��������� �� � ��������� {���������}. 
+ ��������� ���������� ����� ������� � ����� ������������ ������ (stdout).
+ .TP
+---remote-send {�����}
++\-\-remote\-send {�����}
+ ������������ � ������� Vim � �������� ��� ��������� {�����}.
+ .TP
+---remote-silent
+-��� "--remote", �� ��� ������ ��������������, ���� ������ �� ������.
++\-\-remote\-silent
++��� "\-\-remote", �� ��� ������ ��������������, ���� ������ �� ������.
+ .TP
+---remote-wait
+-��� "--remote", �� Vim �� ����� ��������� ������ �� ��� ���, ���� �� ����� 
++\-\-remote\-wait
++��� "\-\-remote", �� Vim �� ����� ��������� ������ �� ��� ���, ���� �� ����� 
+ ��������� ������ ���� ������.
+ .TP
+---remote-wait-silent
+-��� "--remote-wait", �� ��� ������ ��������������, ���� ������ �� ������.
++\-\-remote\-wait\-silent
++��� "\-\-remote\-wait", �� ��� ������ ��������������, ���� ������ �� ������.
+ .TP
+---serverlist
++\-\-serverlist
+ ������� ������ ���� ��������� �������� Vim.
+ .TP
+---servername {���}
++\-\-servername {���}
+ ������������ ��������� {���} � �������� ����� �������. ���� ���� 
+-"--remote" �� ������, �� {���} ������������� ������ ����� Vim, 
++"\-\-remote" �� ������, �� {���} ������������� ������ ����� Vim, 
+ � ��������� ������ ��������� �� ��� �������, � �������� ������� 
+ ������������.
+ .TP
+---socketid {id}
++\-\-socketid {id}
+ ������ ��� ������������ ���������� GTK: ������������ �������� GtkPlug ���
+ ������� gvim � ��������� ����.
+ .TP
+---echo-wid
++\-\-echo\-wid
+ ������ ��� ������������ ���������� GTK: ������� ������������� ���� (Window ID)
+ � ����� ������������ ������ (stdout).
+ .SH ���������� �������
+diff -Nur runtime/doc/vim-ru.UTF-8.1 runtime/doc/vim-ru.UTF-8.1
+--- runtime/doc/vim-ru.UTF-8.1	2008-07-21 13:18:14.000000000 -0700
++++ runtime/doc/vim-ru.UTF-8.1	2011-01-18 10:40:55.760428109 -0800
+@@ -7,7 +7,7 @@
+ [ключи] [файл ..]
+ .br
+ .B vim
+-[ключи] -
++[ключи] \-
+ .br
+ .B vim
+ [ключи] \-t метка
+@@ -69,12 +69,12 @@
+ помощи команды ":next". Чтобы править файл, имя которого начинается с символа
+ "дефис" (-), перед списком файлов необходимо поставить "--".
+ .TP
+--
++\-
+ Файл будет прочитан из потока стандартного ввода. Команды будут считываться
+ из стандартного потока диагностики (stderr), который должен быть 
+ терминалом.
+ .TP
+--t {метка}
++\-t {метка}
+ Имя файла и начальная позиция курсора зависят от "метки", похожей на метку goto.
+ {метка} ищется в файле меток, соответствующий файл становится активным, а 
+ соответствующая команда исполняется.
+@@ -83,7 +83,7 @@
+ Файл, содержащий функцию, становится активным, а курсор помещается в начало функции.
+ См. ":help tag-commands".
+ .TP
+--q [файл ошибок]
++\-q [файл ошибок]
+ Начать работу в режиме быстрого исправления.
+ При этом считывается [файл ошибок] и первая ошибка выводится на экран.
+ Если [файл ошибок] не указан, имя файла берётся из значения опции 'errorfile'
+@@ -101,21 +101,21 @@
+ ex
+ Запуск в режиме Ex. Для перехода в нормальный режим
+ необходимо выполнить команду ":vi". Режим Ex включает
+-также ключ "-e".
++также ключ "\-e".
+ .TP
+ view
+ Запуск в режиме "только для чтения". Вы будете защищены от случайной записи 
+-файла. То же самое можно сделать ключом "-R".
++файла. То же самое можно сделать ключом "\-R".
+ .TP
+ gvim gview
+ Версия с графическим интерфейсом. Запускается в новом окне.
+-То же самое можно сделать при запуске с ключом "-g".
++То же самое можно сделать при запуске с ключом "\-g".
+ .TP
+ rvim rview rgvim rgview
+ Как и предыдущие команды, но с ограничениями. Нельзя запускать команды оболочки
+ или приостанавливать работу
+ .B Vim.
+-Вместо приставки "r" можно использовать ключ "-Z".
++Вместо приставки "r" можно использовать ключ "\-Z".
+ .SH КЛЮЧИ
+ Ключи могут быть указаны в любом порядке, до или после имён
+ файлов. Ключи без аргументов могут быть объединены под одним
+@@ -132,21 +132,21 @@
+ .TP
+ +{команда}
+ .TP
+--c {команда}
++\-c {команда}
+ {команда} исполняется после загрузки первого файла как команда Ex.
+ Если {команда} содержит пробелы, то она должна быть заключена в
+ двойные кавычки (в зависимости от используемой оболочки).
+ Пример: vim "+set si" main.c
+ .br
+-Примечание: Можно указывать до десяти команд "+" или "-c".
++Примечание: Можно указывать до десяти команд "+" или "\-c".
+ .TP
+---cmd {команда}
+-Как "-c", но команда исполняется перед обработкой любого файла
++\-\-cmd {команда}
++Как "\-c", но команда исполняется перед обработкой любого файла
+ настроек (vimrc).
+ Можно указывать до десяти таких команд, независимо от количества
+-команд "-c".
++команд "\-c".
+ .TP
+--A
++\-A
+ Если
+ .B Vim
+ был собран с поддержкой арабского языка для правки файлов,
+@@ -158,34 +158,34 @@
+ .B Vim
+ завершает работу с ошибкой.
+ .TP
+--b
++\-b
+ Двоичный режим.
+ Производится настройка некоторых опций, делающих возможной правку
+ двоичного или исполняемого файла.
+ .TP
+--C
++\-C
+ Режим совместимости. Включает опцию 'compatible'.
+ .B Vim
+ будет работать почти как Vi, даже если существует файл .vimrc.
+ .TP
+--d
++\-d
+ Режим поиска различий.
+ Должно быть указано два или три имени файла.
+ .B Vim
+ откроет все файлы и покажет различия между ними
+ (как vimdiff(1)).
+ .TP
+--d {устройство}
++\-d {устройство}
+ Открыть {устройство} для использования в качестве терминала (только на Amiga).
+ Пример:
+ "\-d con:20/30/600/150".
+ .TP
+--e
++\-e
+ Запустить
+ .B Vim
+ в режиме Ex, как будто исполняемый файл имеет имя "ex".
+ .TP
+--f
++\-f
+ Режим активного приложения. Версия
+ .B Vim
+ с графическим интерфейсом не будет ветвиться и отключаться
+@@ -198,25 +198,25 @@
+ сеанса правки (например, программа для работы с электронной почтой).
+ На платформе Amiga команды ":sh" и ":!" не будут работать.
+ .TP
+---nofork
++\-\-nofork
+ Режим активного приложения. Версия
+ .B Vim
+ с графическим интерфейсом не будет ветвиться и отключаться
+ от запустившей её оболочки.
+ .TP
+--F
++\-F
+ Если
+ .B Vim
+ был собран с поддержкой FKMAP для правки текста справа налево
+ и настроек клавиатуры для языка фарси, этот ключ запускает
+ .B Vim
+ в режиме фарси, иначе говоря, с включёнными опциями 
+-'fkmap' и 'rightleft'.
++\&'fkmap' и 'rightleft'.
+ В противном случае
+ .B Vim
+ завершает работу с сообщением об ошибке.
+ .TP
+--g
++\-g
+ Если
+ .B Vim
+ был собран с поддержкой графического интерфейса, этот ключ
+@@ -224,13 +224,13 @@
+ .B Vim
+ завершает работу с сообщением об ошибке.
+ .TP
+--h
++\-h
+ Выводит краткую информацию об аргументах и ключах командной строки.
+ После этого
+ .B Vim
+ завершает работу.
+ .TP
+--H
++\-H
+ Если
+ .B Vim
+ был собран с поддержкой правки текста справа налево
+@@ -241,69 +241,69 @@
+ .B Vim
+ завершает работу с сообщением об ошибке.
+ .TP
+--i {viminfo}
++\-i {viminfo}
+ Если используется файл viminfo, то этот ключ задаёт имя такого файла (вместо
+ "~/.viminfo" по умолчанию). Можно также избежать использования файла viminfo
+ путём указания имени "NONE".
+ .TP
+--L
+-То же, что и -r.
++\-L
++То же, что и \-r.
+ .TP
+--l
++\-l
+ Режим Lisp. Включаются опции 'lisp' и 'showmatch'.
+ .TP
+--m
++\-m
+ Изменение файлов запрещено. При этом отключается опция 'write', поэтому
+ запись файлов становится невозможной.
+ .TP
+--N
++\-N
+ Режим неполной совместимости. Отключается 'compatible'.
+ .B Vim
+ будет работать лучше, но не будет полностью совместим с Vi, даже если
+ отсутствует файл сценария настроек (.vimrc).
+ .TP
+--n
++\-n
+ Не использовать своп-файл. Восстановление при сбое в работе будет невозможно.
+ Удобно для правки файла на очень медленном носителе (например, гибком диске).
+ То же самое можно сделать командой ":set uc=0". Отмена -- ":set uc=200".
+ .TP
+--o[N]
++\-o[N]
+ Открыть N окон, разделённых по горизонтали. Если N не указано, то открывается 
+ по одному окну на каждый файл.
+ .TP
+--O[N]
++\-O[N]
+ Открыть N окон, разделённых по вертикали. Если N не указано, то открывается 
+ по одному окну на каждый файл.
+ .TP
+--R
++\-R
+ Режим "только для чтения". Включается опция 'readonly'.
+ Файл в буфере доступен для редактирования, но его копию на диске нельзя
+ случайно перезаписать. Для сохранения файла необходимо добавить восклицательный
+ знак к соответствующей команде Ex (например, ":w!").
+-Ключ "-R" подразумевает также, что используется и ключ "-n" (см. выше).
++Ключ "\-R" подразумевает также, что используется и ключ "\-n" (см. выше).
+ Опция 'readonly' может быть выключена по команде ":set noro".
+ См. ":help 'readonly'".
+ .TP
+--r
++\-r
+ Вывести список своп-файлов и информацию об их использовании для восстановления после сбоя.
+ .TP
+--r {файл}
++\-r {файл}
+ Режим восстановления.
+ Для восстановления после сбоя будет использован своп-файл.
+ Своп-файл имеет то же имя, что и текстовый файл, но с добавлением расширения ".swp".
+ См. ":help recovery".
+ .TP
+--s
+-Тихий режим. Только при запуске как "Ex" или если перед "-s" указан ключ "-e".
++\-s
++Тихий режим. Только при запуске как "Ex" или если перед "\-s" указан ключ "\-e".
+ .TP
+--s {scriptin}
++\-s {scriptin}
+ Считывается файл сценария {scriptin}. При этом, содержимое файла воспринимается
+ в виде команд, как если бы они были набраны на консоли. 
+ То же самое достигается командой ":source! {scriptin}".
+ Если конец файла считывается до завершения работы редактора, то в дальнейшем 
+ ввод осуществляется с клавиатуры.
+ .TP
+--T {terminal}
++\-T {terminal}
+ Сообщает
+ .B Vim
+ тип используемого терминала. Необходимо только в тех ситуациях, когда 
+@@ -312,96 +312,96 @@
+ .B Vim
+ (встроено в него) или определено в файлах termcap или terminfo.
+ .TP
+--u {vimrc}
++\-u {vimrc}
+ Использовать команды из файла сценария {vimrc} для настройки.
+ Все остальные файлы настроек пропускаются.
+ Удобно для редактирования специальных типов файлов.
+ Чтобы избежать использования сценариев настроек вообще, можно использовать
+ имя "NONE". См. ":help initialization".
+ .TP
+--U {gvimrc}
++\-U {gvimrc}
+ Использовать команды из файла сценария {gvimrc} для настройки графического 
+ интерфейса.
+ Все остальные файлы настроек для графического интерфейса пропускаются.
+ Чтобы избежать использования сценариев настроек графического интерфейса вообще, 
+ можно использовать имя "NONE". См. ":help gui-init".
+ .TP
+--V
++\-V
+ "Болтливый" режим. Выводить сообщения о том, какие файлы читаются, и о
+ чтении-записи файла viminfo.
+ .TP
+--v
++\-v
+ Запустить
+ .B Vim
+ в режиме Vi, как будто исполняемый файл имеет имя "vi". Имеет смысл только если
+ исполняемый файл имеет имя "ex".
+ .TP
+--w {scriptout}
++\-w {scriptout}
+ Все символы, введённые с клавиатуры вплоть до момента завершения работы, 
+ записываются в файл {scriptout}.
+ Удобно в том случае, когда вы хотите создать файл сценария для последующего 
+-использования с "vim -s" или ":source!". Если файл {scriptout} уже существует, 
++использования с "vim \-s" или ":source!". Если файл {scriptout} уже существует, 
+ то новые символы будут добавляются в конец файла.
+ .TP
+--W {scriptout}
+-Как "-w", но уже существующий файл будет перезаписан.
++\-W {scriptout}
++Как "\-w", но уже существующий файл будет перезаписан.
+ .TP
+--x
++\-x
+ Шифровать записываемые файлы. Будет выдано приглашение ввести пароль.
+ .TP
+--X
++\-X
+ Не подключаться к X-серверу. Ускоряет загрузку на консоли, но делает невозможным
+ использование заголовка окна и буфера обмена.
+ .TP
+--Z
++\-Z
+ Ограниченный режим. Работает так же, как и программы, начинающиеся с "r".
+ .TP
+---
++\-\-
+ Конец ключей. Все остальные аргументы рассматриваются как имена файлов.
+ Может быть использовано для правки файлов, имена которых начинаются с дефиса.
+ .TP
+---help
+-Вывести краткую справку и завершить работу. То же, что и "-h".
++\-\-help
++Вывести краткую справку и завершить работу. То же, что и "\-h".
+ .TP
+---version
++\-\-version
+ Вывести информацию о версии программы и завершить работу.
+ .TP
+---remote
++\-\-remote
+ Подключиться к серверу Vim и заставить его править файлы, указанные в
+ последующих аргументах. Если сервер не найден, выводится предупреждение,
+ а файлы правятся в местной копии Vim.
+ .TP
+---remote-expr {выражение}
++\-\-remote\-expr {выражение}
+ Подключиться к серверу Vim и вычислить на нём указанное {выражение}. 
+ Результат вычисления будет выведен в поток стандартного вывода (stdout).
+ .TP
+---remote-send {ключи}
++\-\-remote\-send {ключи}
+ Подключиться к серверу Vim и передать ему указанные {ключи}.
+ .TP
+---remote-silent
+-Как "--remote", но без вывода предупреждения, если сервер не найден.
++\-\-remote\-silent
++Как "\-\-remote", но без вывода предупреждения, если сервер не найден.
+ .TP
+---remote-wait
+-Как "--remote", но Vim не будет завершать работу до тех пор, пока не будет 
++\-\-remote\-wait
++Как "\-\-remote", но Vim не будет завершать работу до тех пор, пока не будет 
+ выполнена правка всех файлов.
+ .TP
+---remote-wait-silent
+-Как "--remote-wait", но без вывода предупреждения, если сервер не найден.
++\-\-remote\-wait\-silent
++Как "\-\-remote\-wait", но без вывода предупреждения, если сервер не найден.
+ .TP
+---serverlist
++\-\-serverlist
+ Вывести список всех доступных серверов Vim.
+ .TP
+---servername {имя}
++\-\-servername {имя}
+ Использовать указанное {имя} в качестве имени сервера. Если ключ 
+-"--remote" не указан, то {имя} присваивается данной копии Vim, 
++"\-\-remote" не указан, то {имя} присваивается данной копии Vim, 
+ в противном случае указывает на имя сервера, к которому следует 
+ подключиться.
+ .TP
+---socketid {id}
++\-\-socketid {id}
+ Только для графического интерфейса GTK: использовать механизм GtkPlug для
+ запуска gvim в отдельном окне.
+ .TP
+---echo-wid
++\-\-echo\-wid
+ Только для графического интерфейса GTK: вывести идентификатор окна (Window ID)
+ в поток стандартного вывода (stdout).
+ .SH ВСТРОЕННАЯ СПРАВКА
+diff -Nur runtime/doc/vim.man runtime/doc/vim.man
+--- runtime/doc/vim.man	1969-12-31 16:00:00.000000000 -0800
++++ runtime/doc/vim.man	2011-01-18 10:40:55.761914429 -0800
+@@ -0,0 +1,428 @@
++VIM(1)                                                                  VIM(1)
++
++
++
++NAME
++       vim - Vi IMproved, a programmers text editor
++
++SYNOPSIS
++       vim [options] [file ..]
++       vim [options] -
++       vim [options] -t tag
++       vim [options] -q [errorfile]
++
++       ex
++       view
++       gvim gview evim eview
++       rvim rview rgvim rgview
++
++DESCRIPTION
++       Vim  is a text editor that is upwards compatible to Vi.  It can be used
++       to edit all kinds of plain text.  It is especially useful  for  editing
++       programs.
++
++       There  are a lot of enhancements above Vi: multi level undo, multi win-
++       dows and buffers, syntax highlighting, command line  editing,  filename
++       completion,   on-line   help,   visual  selection,  etc..   See  ":help
++       vi_diff.txt" for a summary of the differences between Vim and Vi.
++
++       While running Vim a lot of help can be obtained from the  on-line  help
++       system,  with the ":help" command.  See the ON-LINE HELP section below.
++
++       Most often Vim is started to edit a single file with the command
++
++            vim file
++
++       More generally Vim is started with:
++
++            vim [options] [filelist]
++
++       If the filelist is missing, the editor will start with an empty buffer.
++       Otherwise  exactly  one out of the following four may be used to choose
++       one or more files to be edited.
++
++       file ..     A list of filenames.  The first one  will  be  the  current
++                   file  and  read  into the buffer.  The cursor will be posi-
++                   tioned on the first line of the buffer.  You can get to the
++                   other  files with the ":next" command.  To edit a file that
++                   starts with a dash, precede the filelist with "--".
++
++       -           The file to edit is read from  stdin.   Commands  are  read
++                   from stderr, which should be a tty.
++
++       -t {tag}    The file to edit and the initial cursor position depends on
++                   a "tag", a sort of goto label.  {tag} is looked up  in  the
++                   tags file, the associated file becomes the current file and
++                   the associated command is executed.  Mostly  this  is  used
++                   for  C  programs,  in  which case {tag} could be a function
++                   name.  The effect is that the file containing that function
++                   becomes  the  current  file and the cursor is positioned on
++                   the start of the function.  See ":help tag-commands".
++
++       -q [errorfile]
++                   Start in quickFix mode.  The file [errorfile] is  read  and
++                   the  first  error is displayed.  If [errorfile] is omitted,
++                   the  filename  is  obtained  from  the  'errorfile'  option
++                   (defaults  to  "AztecC.Err"  for the Amiga, "errors.err" on
++                   other systems).  Further errors can be jumped to  with  the
++                   ":cn" command.  See ":help quickfix".
++
++       Vim behaves differently, depending on the name of the command (the exe-
++       cutable may still be the same file).
++
++       vim       The "normal" way, everything is default.
++
++       ex        Start in Ex mode.  Go to Normal mode with the ":vi"  command.
++                 Can also be done with the "-e" argument.
++
++       view      Start  in read-only mode.  You will be protected from writing
++                 the files.  Can also be done with the "-R" argument.
++
++       gvim gview
++                 The GUI version.  Starts a new window.  Can also be done with
++                 the "-g" argument.
++
++       evim eview
++                 The GUI version in easy mode.  Starts a new window.  Can also
++                 be done with the "-y" argument.
++
++       rvim rview rgvim rgview
++                 Like the above, but with restrictions.  It will not be possi-
++                 ble  to  start  shell  commands, or suspend Vim.  Can also be
++                 done with the "-Z" argument.
++
++OPTIONS
++       The options may be given in  any  order,  before  or  after  filenames.
++       Options without an argument can be combined after a single dash.
++
++       +[num]      For  the  first  file the cursor will be positioned on line
++                   "num".  If "num" is missing, the cursor will be  positioned
++                   on the last line.
++
++       +/{pat}     For  the  first  file  the cursor will be positioned on the
++                   first occurrence of {pat}.  See ":help search-pattern"  for
++                   the available search patterns.
++
++       +{command}
++
++       -c {command}
++                   {command}  will  be  executed after the first file has been
++                   read.  {command} is interpreted as an Ex command.   If  the
++                   {command}  contains  spaces  it  must be enclosed in double
++                   quotes (this depends on the shell that is used).   Example:
++                   Vim "+set si" main.c
++                   Note: You can use up to 10 "+" or "-c" commands.
++
++       -S {file}   {file}  will be sourced after the first file has been read.
++                   This is equivalent to -c "source  {file}".   {file}  cannot
++                   start with '-'.  If {file} is omitted "Session.vim" is used
++                   (only works when -S is the last argument).
++
++       --cmd {command}
++                   Like using "-c", but the command is  executed  just  before
++                   processing  any  vimrc file.  You can use up to 10 of these
++                   commands, independently from "-c" commands.
++
++       -A          If Vim has been compiled with ARABIC  support  for  editing
++                   right-to-left  oriented  files and Arabic keyboard mapping,
++                   this option starts Vim in Arabic  mode,  i.e.  'arabic'  is
++                   set.  Otherwise an error message is given and Vim aborts.
++
++       -b          Binary  mode.  A few options will be set that makes it pos-
++                   sible to edit a binary or executable file.
++
++       -C          Compatible.  Set the 'compatible' option.  This  will  make
++                   Vim  behave  mostly  like  Vi,  even  though  a .vimrc file
++                   exists.
++
++       -d          Start in diff mode.  There should be  two,  three  or  four
++                   file  name arguments.  Vim will open all the files and show
++                   differences between them.  Works like vimdiff(1).
++
++       -d {device} Open {device} for use as a terminal.  Only  on  the  Amiga.
++                   Example: "-d con:20/30/600/150".
++
++       -D          Debugging.   Go  to debugging mode when executing the first
++                   command from a script.
++
++       -e          Start Vim in Ex mode, just like the executable  was  called
++                   "ex".
++
++       -E          Start Vim in improved Ex mode, just like the executable was
++                   called "exim".
++
++       -f          Foreground.  For the GUI version, Vim  will  not  fork  and
++                   detach from the shell it was started in.  On the Amiga, Vim
++                   is not restarted to open a new window.  This option  should
++                   be  used  when  Vim is executed by a program that will wait
++                   for the edit session to finish (e.g. mail).  On  the  Amiga
++                   the ":sh" and ":!" commands will not work.
++
++       --nofork    Foreground.   For  the  GUI  version, Vim will not fork and
++                   detach from the shell it was started in.
++
++       -F          If Vim has been compiled with  FKMAP  support  for  editing
++                   right-to-left  oriented  files  and Farsi keyboard mapping,
++                   this option starts Vim in  Farsi  mode,  i.e.  'fkmap'  and
++                   'rightleft'  are  set.  Otherwise an error message is given
++                   and Vim aborts.
++
++       -g          If Vim has been compiled  with  GUI  support,  this  option
++                   enables  the  GUI.   If  no GUI support was compiled in, an
++                   error message is given and Vim aborts.
++
++       -h          Give a bit of help about the  command  line  arguments  and
++                   options.  After this Vim exits.
++
++       -H          If Vim has been compiled with RIGHTLEFT support for editing
++                   right-to-left oriented files and Hebrew  keyboard  mapping,
++                   this  option  starts  Vim  in Hebrew mode, i.e. 'hkmap' and
++                   'rightleft' are set.  Otherwise an error message  is  given
++                   and Vim aborts.
++
++       -i {viminfo}
++                   When  using  the  viminfo file is enabled, this option sets
++                   the filename to use, instead of the  default  "~/.viminfo".
++                   This can also be used to skip the use of the .viminfo file,
++                   by giving the name "NONE".
++
++       -L          Same as -r.
++
++       -l          Lisp mode.  Sets the 'lisp' and 'showmatch' options on.
++
++       -m          Modifying files is disabled.  Resets  the  'write'  option.
++                   You  can still modify the buffer, but writing a file is not
++                   possible.
++
++       -M          Modifications not allowed.  The  'modifiable'  and  'write'
++                   options  will be unset, so that changes are not allowed and
++                   files can not be written.  Note that these options  can  be
++                   set to enable making modifications.
++
++       -N          No-compatible  mode.   Reset the 'compatible' option.  This
++                   will make Vim behave a bit better, but less Vi  compatible,
++                   even though a .vimrc file does not exist.
++
++       -n          No  swap file will be used.  Recovery after a crash will be
++                   impossible.  Handy if you want to edit a  file  on  a  very
++                   slow  medium  (e.g.  floppy).   Can also be done with ":set
++                   uc=0".  Can be undone with ":set uc=200".
++
++       -nb         Become an editor server for NetBeans.   See  the  docs  for
++                   details.
++
++       -o[N]       Open N windows stacked.  When N is omitted, open one window
++                   for each file.
++
++       -O[N]       Open N windows side by side.  When N is omitted,  open  one
++                   window for each file.
++
++       -p[N]       Open N tab pages.  When N is omitted, open one tab page for
++                   each file.
++
++       -R          Read-only mode.  The 'readonly' option will  be  set.   You
++                   can still edit the buffer, but will be prevented from acci-
++                   dently overwriting a file.  If you do want to  overwrite  a
++                   file,  add  an  exclamation  mark  to the Ex command, as in
++                   ":w!".  The -R option  also  implies  the  -n  option  (see
++                   below).   The  'readonly'  option  can  be reset with ":set
++                   noro".  See ":help 'readonly'".
++
++       -r          List swap files, with  information  about  using  them  for
++                   recovery.
++
++       -r {file}   Recovery  mode.  The swap file is used to recover a crashed
++                   editing session.  The swap file is a  file  with  the  same
++                   filename as the text file with ".swp" appended.  See ":help
++                   recovery".
++
++       -s          Silent mode.  Only when started as "Ex" or  when  the  "-e"
++                   option was given before the "-s" option.
++
++       -s {scriptin}
++                   The  script file {scriptin} is read.  The characters in the
++                   file are interpreted as if you had typed  them.   The  same
++                   can be done with the command ":source! {scriptin}".  If the
++                   end of the file is reached before the editor exits, further
++                   characters are read from the keyboard.
++
++       -T {terminal}
++                   Tells  Vim  the  name  of the terminal you are using.  Only
++                   required when the automatic way doesn't work.  Should be  a
++                   terminal  known  to Vim (builtin) or defined in the termcap
++                   or terminfo file.
++
++       -u {vimrc}  Use the commands in the file {vimrc}  for  initializations.
++                   All  the  other  initializations  are skipped.  Use this to
++                   edit a special kind of files.  It can also be used to  skip
++                   all  initializations by giving the name "NONE".  See ":help
++                   initialization" within vim for more details.
++
++       -U {gvimrc} Use the commands in the file {gvimrc} for  GUI  initializa-
++                   tions.   All the other GUI initializations are skipped.  It
++                   can also be used to skip all GUI initializations by  giving
++                   the  name "NONE".  See ":help gui-init" within vim for more
++                   details.
++
++       -V[N]       Verbose.  Give messages about which files are  sourced  and
++                   for  reading and writing a viminfo file.  The optional num-
++                   ber N is the value for 'verbose'.  Default is 10.
++
++       -v          Start Vim in Vi mode, just like the executable  was  called
++                   "vi".   This  only has effect when the executable is called
++                   "ex".
++
++       -w {scriptout}
++                   All the characters that you type are recorded in  the  file
++                   {scriptout},  until  you  exit  Vim.  This is useful if you
++                   want to create a script file to be used with  "vim  -s"  or
++                   ":source!".  If the {scriptout} file exists, characters are
++                   appended.
++
++       -W {scriptout}
++                   Like -w, but an existing file is overwritten.
++
++       -x          Use encryption when writing files.  Will prompt for a crypt
++                   key.
++
++       -X          Don't  connect to the X server.  Shortens startup time in a
++                   terminal, but the window title and clipboard  will  not  be
++                   used.
++
++       -y          Start Vim in easy mode, just like the executable was called
++                   "evim" or "eview".  Makes Vim behave like a  click-and-type
++                   editor.
++
++       -Z          Restricted  mode.   Works  like  the executable starts with
++                   "r".
++
++       --          Denotes the end of the options.  Arguments after this  will
++                   be  handled  as  a  file  name.  This can be used to edit a
++                   filename that starts with a '-'.
++
++       --echo-wid  GTK GUI only: Echo the Window ID on stdout.
++
++       --help      Give a help message and exit, just like "-h".
++
++       --literal   Take file name arguments literally,  do  not  expand  wild-
++                   cards.   This has no effect on Unix where the shell expands
++                   wildcards.
++
++       --noplugin  Skip loading plugins.  Implied by -u NONE.
++
++       --remote    Connect to a Vim server and make it edit the files given in
++                   the rest of the arguments.  If no server is found a warning
++                   is given and the files are edited in the current Vim.
++
++       --remote-expr {expr}
++                   Connect to a Vim server, evaluate {expr} in  it  and  print
++                   the result on stdout.
++
++       --remote-send {keys}
++                   Connect to a Vim server and send {keys} to it.
++
++       --remote-silent
++                   As  --remote,  but  without  the  warning when no server is
++                   found.
++
++       --remote-wait
++                   As --remote, but Vim does not exit  until  the  files  have
++                   been edited.
++
++       --remote-wait-silent
++                   As --remote-wait, but without the warning when no server is
++                   found.
++
++       --serverlist
++                   List the names of all Vim servers that can be found.
++
++       --servername {name}
++                   Use {name} as the server name.  Used for the  current  Vim,
++                   unless used with a --remote argument, then it's the name of
++                   the server to connect to.
++
++       --socketid {id}
++                   GTK GUI only: Use the GtkPlug  mechanism  to  run  gvim  in
++                   another window.
++
++       --version   Print version information and exit.
++
++ON-LINE HELP
++       Type  ":help"  in Vim to get started.  Type ":help subject" to get help
++       on a specific subject.  For example: ":help ZZ" to  get  help  for  the
++       "ZZ"  command.   Use <Tab> and CTRL-D to complete subjects (":help cmd-
++       line-completion").  Tags are present to jump from one place to  another
++       (sort of hypertext links, see ":help").  All documentation files can be
++       viewed in this way, for example ":help syntax.txt".
++
++FILES
++       /usr/local/lib/vim/doc/*.txt
++                      The Vim documentation files.  Use ":help  doc-file-list"
++                      to get the complete list.
++
++       /usr/local/lib/vim/doc/tags
++                      The  tags file used for finding information in the docu-
++                      mentation files.
++
++       /usr/local/lib/vim/syntax/syntax.vim
++                      System wide syntax initializations.
++
++       /usr/local/lib/vim/syntax/*.vim
++                      Syntax files for various languages.
++
++       /usr/local/lib/vim/vimrc
++                      System wide Vim initializations.
++
++       ~/.vimrc       Your personal Vim initializations.
++
++       /usr/local/lib/vim/gvimrc
++                      System wide gvim initializations.
++
++       ~/.gvimrc      Your personal gvim initializations.
++
++       /usr/local/lib/vim/optwin.vim
++                      Script used for the ":options" command, a  nice  way  to
++                      view and set options.
++
++       /usr/local/lib/vim/menu.vim
++                      System wide menu initializations for gvim.
++
++       /usr/local/lib/vim/bugreport.vim
++                      Script to generate a bug report.  See ":help bugs".
++
++       /usr/local/lib/vim/filetype.vim
++                      Script  to  detect  the type of a file by its name.  See
++                      ":help 'filetype'".
++
++       /usr/local/lib/vim/scripts.vim
++                      Script to detect the type of a  file  by  its  contents.
++                      See ":help 'filetype'".
++
++       /usr/local/lib/vim/print/*.ps
++                      Files used for PostScript printing.
++
++       For recent info read the VIM home page:
++       <URL:http://www.vim.org/>
++
++SEE ALSO
++       vimtutor(1)
++
++AUTHOR
++       Most of Vim was made by Bram Moolenaar, with a lot of help from others.
++       See ":help credits" in Vim.
++       Vim is based on Stevie, worked on by: Tim Thompson,  Tony  Andrews  and
++       G.R.  (Fred) Walter.  Although hardly any of the original code remains.
++
++BUGS
++       Probably.  See ":help todo" for a list of known problems.
++
++       Note that a number of things that may be regarded as bugs by some,  are
++       in  fact  caused by a too-faithful reproduction of Vi's behaviour.  And
++       if you think other things are bugs "because Vi  does  it  differently",
++       you  should  take  a closer look at the vi_diff.txt file (or type :help
++       vi_diff.txt when in Vim).  Also have a look  at  the  'compatible'  and
++       'cpoptions' options.
++
++
++
++                                  2006 Apr 11                           VIM(1)
+Files vim72/runtime/doc/vim.man.info and ../../../vim-hg/runtime/doc/vim.man.info differ
+diff -Nur runtime/doc/vimdiff-fr.1 runtime/doc/vimdiff-fr.1
+--- runtime/doc/vimdiff-fr.1	2005-04-01 03:23:37.000000000 -0800
++++ runtime/doc/vimdiff-fr.1	2011-01-18 10:40:55.763019234 -0800
+@@ -1,18 +1,18 @@
+ .TH VIMDIFF 1 "30 mars 2001"
+ .SH NOM
+-vimdiff \- ouvre deux ou trois versions d'un fichier dans Vim et affiche
+-leurs diff�rences
++vimdiff \- ouvre deux, trois ou quatre versions d'un fichier dans Vim et
++affiche leurs diff�rences
+ .SH SYNOPSIS
+ .br
+ .B vimdiff
+-[options] fichier1 fichier2 [fichier3]
++[options] fichier1 fichier2 [fichier3 [fichier4]]
+ .PP
+ .B gvimdiff
+ .SH DESCRIPTION
+ .B Vimdiff
+ d�marre
+ .B Vim
+-avec deux (ou trois) fichiers.
++avec deux (ou trois ou quatre) fichiers.
+ Chaque fichier est ouvert dans sa propre fen�tre.
+ Les diff�rences entres ces fichiers sont mises en surbrillance.
+ C'est un outil tr�s pratique pour visualiser et reporter les
+diff -Nur runtime/doc/vimdiff-fr.UTF-8.1 runtime/doc/vimdiff-fr.UTF-8.1
+--- runtime/doc/vimdiff-fr.UTF-8.1	2005-04-01 03:25:59.000000000 -0800
++++ runtime/doc/vimdiff-fr.UTF-8.1	2011-01-18 10:40:55.763346702 -0800
+@@ -1,18 +1,18 @@
+ .TH VIMDIFF 1 "30 mars 2001"
+ .SH NOM
+-vimdiff \- ouvre deux ou trois versions d'un fichier dans Vim et affiche
+-leurs différences
++vimdiff \- ouvre deux, trois ou quatre versions d'un fichier dans Vim et
++affiche leurs différences
+ .SH SYNOPSIS
+ .br
+ .B vimdiff
+-[options] fichier1 fichier2 [fichier3]
++[options] fichier1 fichier2 [fichier3 [fichier4]]
+ .PP
+ .B gvimdiff
+ .SH DESCRIPTION
+ .B Vimdiff
+ démarre
+ .B Vim
+-avec deux (ou trois) fichiers.
++avec deux (ou trois ou quatre) fichiers.
+ Chaque fichier est ouvert dans sa propre fenêtre.
+ Les différences entres ces fichiers sont mises en surbrillance.
+ C'est un outil très pratique pour visualiser et reporter les
+diff -Nur runtime/doc/vimdiff-pl.1 runtime/doc/vimdiff-pl.1
+--- runtime/doc/vimdiff-pl.1	2006-03-26 06:48:37.000000000 -0800
++++ runtime/doc/vimdiff-pl.1	2011-01-18 10:40:55.772710917 -0800
+@@ -1,17 +1,17 @@
+ .TH VIMDIFF 1 "2001 Mar 30"
+ .SH NAZWA
+-vimdiff \- edytuj dwie lub trzy wersje pliku w Vimie i zobacz r�nice
++vimdiff \- edytuj dwie, trzy lub cztery wersje pliku w Vimie i zobacz r�nice
+ .SH SYNOPSIS
+ .br
+ .B vimdiff
+-[opcje] plik1 plik2 [plik3]
++[opcje] plik1 plik2 [plik3 [plik4]]
+ .PP
+ .B gvimdiff
+ .SH OPIS
+ .B Vimdiff
+ uruchomi
+ .B Vima
+-z dwoma (lub trzema plikami), ka�dy z nich we w�asnym oknie.
++z dwoma (trzema lub czterema plikami), ka�dy z nich we w�asnym oknie.
+ R�nice mi�dzy plikami zostan� pod�wietlone.
+ Jest to dobry spos�b by przeanalizowa� r�nice i przenie�� zmiany z jednej
+ wersji pliku do innej.
+@@ -25,14 +25,14 @@
+ W ka�dym oknie zostanie ustawiona opcja 'diff', kt�ra spowoduje
+ pod�wietlenie r�nic.
+ .br
+-Opcje 'wrap' i 'scrollbind' zostan� ustawione by tekst dobrze si�
+-przegl�da�o.
++Opcje 'wrap' i 'scrollbind' zostan� ustawione by tekst si�
++wygodnie przegl�da�o.
+ .br
+-Opcja 'foldmethod' zostanie ustawiona na "diff", dzi�ki temu
++Opcja 'foldmethod' zostanie ustawiona na "diff", dzi�ki czemu
+ niezmienione linie zostan� zwini�te. 'foldcolumn' b�dzie r�wne 2 aby
+ �atwo wyszukiwa�, otwiera� i zamyka� zwini�cia.
+ .SH OPCJE
+-Pionowy podzia� jest u�yty do wyr�wnania linii, tak jakby u�yto
++Pionowy podzia� zostanie u�yty do wyr�wnania linii, tak jakby u�yto
+ opcji "\-O". Aby uzyska� poziomy podzia� u�yj opcji "\-o".
+ .PP
+ Aby pozna� inne opcje zobacz vim(1).
+diff -Nur runtime/doc/vimdiff-pl.UTF-8.1 runtime/doc/vimdiff-pl.UTF-8.1
+--- runtime/doc/vimdiff-pl.UTF-8.1	2006-03-26 09:01:30.000000000 -0800
++++ runtime/doc/vimdiff-pl.UTF-8.1	2011-01-18 10:40:55.773140061 -0800
+@@ -1,17 +1,17 @@
+ .TH VIMDIFF 1 "2001 Mar 30"
+ .SH NAZWA
+-vimdiff \- edytuj dwie lub trzy wersje pliku w Vimie i zobacz różnice
++vimdiff \- edytuj dwie, trzy lub cztery wersje pliku w Vimie i zobacz różnice
+ .SH SYNOPSIS
+ .br
+ .B vimdiff
+-[opcje] plik1 plik2 [plik3]
++[opcje] plik1 plik2 [plik3 [plik4]]
+ .PP
+ .B gvimdiff
+ .SH OPIS
+ .B Vimdiff
+ uruchomi
+ .B Vima
+-z dwoma (lub trzema plikami), każdy z nich we własnym oknie.
++z dwoma (trzema lub czterema plikami), każdy z nich we własnym oknie.
+ Różnice między plikami zostaną podświetlone.
+ Jest to dobry sposób by przeanalizować różnice i przenieść zmiany z jednej
+ wersji pliku do innej.
+@@ -25,14 +25,14 @@
+ W każdym oknie zostanie ustawiona opcja 'diff', która spowoduje
+ podświetlenie różnic.
+ .br
+-Opcje 'wrap' i 'scrollbind' zostaną ustawione by tekst dobrze się
+-przeglądało.
++Opcje 'wrap' i 'scrollbind' zostaną ustawione by tekst się
++wygodnie przeglądało.
+ .br
+-Opcja 'foldmethod' zostanie ustawiona na "diff", dzięki temu
++Opcja 'foldmethod' zostanie ustawiona na "diff", dzięki czemu
+ niezmienione linie zostaną zwinięte. 'foldcolumn' będzie równe 2 aby
+ łatwo wyszukiwać, otwierać i zamykać zwinięcia.
+ .SH OPCJE
+-Pionowy podział jest użyty do wyrównania linii, tak jakby użyto
++Pionowy podział zostanie użyty do wyrównania linii, tak jakby użyto
+ opcji "\-O". Aby uzyskać poziomy podział użyj opcji "\-o".
+ .PP
+ Aby poznać inne opcje zobacz vim(1).
+diff -Nur runtime/doc/vimdiff-ru.1 runtime/doc/vimdiff-ru.1
+--- runtime/doc/vimdiff-ru.1	2005-03-11 01:50:21.000000000 -0800
++++ runtime/doc/vimdiff-ru.1	2011-01-18 10:40:55.773468722 -0800
+@@ -36,8 +36,8 @@
+ ��������, ��������� � ��������� ����� �������.
+ .SH ����� �������
+ ��� ������������ ����� ����� ������ ������������ ������������ ���������� ����,
+-��� ���� �� ������������� ���� "-O". ��� ����, ����� ������������ ����������
+-���� �� �����������, ������� ������� � ��������� ������ ���� "-o".
++��� ���� �� ������������� ���� "\-O". ��� ����, ����� ������������ ����������
++���� �� �����������, ������� ������� � ��������� ������ ���� "\-o".
+ .PP
+ ��������� ����� ��������� ������ ��������������� �� �������� ����������� vim(1).
+ .SH ������ �����
+diff -Nur runtime/doc/vimdiff-ru.UTF-8.1 runtime/doc/vimdiff-ru.UTF-8.1
+--- runtime/doc/vimdiff-ru.UTF-8.1	2005-03-18 07:27:03.000000000 -0800
++++ runtime/doc/vimdiff-ru.UTF-8.1	2011-01-18 10:40:55.773917926 -0800
+@@ -36,8 +36,8 @@
+ находить, открывать и закрывать такие складки.
+ .SH КЛЮЧИ ЗАПУСКА
+ Для выравнивания строк между окнами используется вертикальное разделение окон,
+-как если бы использовался ключ "-O". Для того, чтобы использовать разделение
+-окон по горизонтали, следует указать в командной строке ключ "-o".
++как если бы использовался ключ "\-O". Для того, чтобы использовать разделение
++окон по горизонтали, следует указать в командной строке ключ "\-o".
+ .PP
+ Остальные ключи командной строки рассматриваются на странице справочника vim(1).
+ .SH СМОТРИ ТАКЖЕ
+diff -Nur runtime/doc/vimdiff.man runtime/doc/vimdiff.man
+--- runtime/doc/vimdiff.man	1969-12-31 16:00:00.000000000 -0800
++++ runtime/doc/vimdiff.man	2011-01-18 10:40:55.785749525 -0800
+@@ -0,0 +1,46 @@
++VIMDIFF(1)                                                          VIMDIFF(1)
++
++
++
++NAME
++       vimdiff  - edit two, three or four versions of a file with Vim and show
++       differences
++
++SYNOPSIS
++       vimdiff [options] file1 file2 [file3 [file4]]
++
++       gvimdiff
++
++DESCRIPTION
++       Vimdiff starts Vim on two (or three or four) files.  Each file gets its
++       own  window.   The differences between the files are highlighted.  This
++       is a nice way to inspect changes and to move changes from  one  version
++       to another version of the same file.
++
++       See vim(1) for details about Vim itself.
++
++       When started as gvimdiff the GUI will be started, if available.
++
++       In  each window the 'diff' option will be set, which causes the differ-
++       ences to be highlighted.
++       The 'wrap' and 'scrollbind' options are set to make the text look good.
++       The  'foldmethod'  option  is set to "diff", which puts ranges of lines
++       without changes in a fold.  'foldcolumn' is set to two to make it  easy
++       to spot the folds and open or close them.
++
++OPTIONS
++       Vertical  splits  are  used to align the lines, as if the "-O" argument
++       was used.  To use horizontal splits instead, use the "-o" argument.
++
++       For all other arguments see vim(1).
++
++SEE ALSO
++       vim(1)
++
++AUTHOR
++       Most of Vim was made by Bram Moolenaar, with a lot of help from others.
++       See ":help credits" in Vim.
++
++
++
++                                 2001 March 30                      VIMDIFF(1)
+diff -Nur runtime/doc/vimtutor-fr.1 runtime/doc/vimtutor-fr.1
+--- runtime/doc/vimtutor-fr.1	2006-04-30 09:20:32.000000000 -0700
++++ runtime/doc/vimtutor-fr.1	2011-01-18 10:40:55.794974144 -0800
+@@ -3,7 +3,7 @@
+ vimtutor \- tutoriel Vim
+ .SH SYNOPSIS
+ .br
+-.B vimtutor [langue]
++.B vimtutor [-g] [langue]
+ .SH DESCRIPTION
+ .B Vimtutor
+ lance le tutoriel
+@@ -17,6 +17,10 @@
+ .B Vim
+ \.
+ .PP
++L'argument optionnel -g lance vimtutor avec gvim plut�t qu'avec vim, si l'IHM
++graphique de vim est disponible, ou le lance avec vim si gvim n'est pas
++disponible.
++.PP
+ L'argument optionnel [langue] est le nom d'une langue, sp�cifi�e par son
+ symbole � deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis,
+ la langue de la r�gion linguistique actuelle sera retenue. Si le tutoriel est
+diff -Nur runtime/doc/vimtutor-fr.UTF-8.1 runtime/doc/vimtutor-fr.UTF-8.1
+--- runtime/doc/vimtutor-fr.UTF-8.1	2006-04-30 09:20:41.000000000 -0700
++++ runtime/doc/vimtutor-fr.UTF-8.1	2011-01-18 10:40:55.795308882 -0800
+@@ -3,7 +3,7 @@
+ vimtutor \- tutoriel Vim
+ .SH SYNOPSIS
+ .br
+-.B vimtutor [langue]
++.B vimtutor [-g] [langue]
+ .SH DESCRIPTION
+ .B Vimtutor
+ lance le tutoriel
+@@ -17,6 +17,10 @@
+ .B Vim
+ \.
+ .PP
++L'argument optionnel -g lance vimtutor avec gvim plutôt qu'avec vim, si l'IHM
++graphique de vim est disponible, ou le lance avec vim si gvim n'est pas
++disponible.
++.PP
+ L'argument optionnel [langue] est le nom d'une langue, spécifiée par son
+ symbole à deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis,
+ la langue de la région linguistique actuelle sera retenue. Si le tutoriel est
+diff -Nur runtime/doc/vimtutor-pl.1 runtime/doc/vimtutor-pl.1
+--- runtime/doc/vimtutor-pl.1	2006-03-26 06:57:05.000000000 -0800
++++ runtime/doc/vimtutor-pl.1	2011-01-18 10:40:55.796494245 -0800
+@@ -3,10 +3,10 @@
+ vimtutor \- nauczyciel Vima
+ .SH SYNOPSIS
+ .br
+-.B vimtutor [j�zyk]
++.B vimtutor -g [j�zyk]
+ .SH OPIS
+ .B Vimtutor
+-uruchamia nauczycie
++uruchamia nauczyciela
+ .B Vima.
+ Najpierw kopiuje w�a�ciwy plik, dzi�ki temu mo�na go zmienia� bez obaw
+ utraty tre�ci.
+@@ -15,6 +15,9 @@
+ przyda si� ludziom, kt�rzy chc� si� nauczy� pierwszych polece�
+ .B Vima
+ .PP
++Opcjonalny argument \-g uruchamia vimtutor w gvimie a nie w Vimie je�li
++graficzna wersja Vima jest dost�pna, je�li nie zostanie uruchomiony Vim.
++.PP
+ Opcjonalny argument [j�zyk] jest dwu literowym kodem j�zyka, tak jak
+ "it" lub "es".
+ Je�li brak argumentu [j�zyk] zostanie u�yty j�zyk bie��cej
+@@ -26,7 +29,7 @@
+ jest uruchamiany zawsze w trybie kompatybilno�ci z Vi
+ .SH PLIKI
+ .TP 15
+-/usr/local/lib/vim/tutor/tutor[.languague]
++/usr/local/lib/vim/tutor/tutor[.j�zyk]
+ Tekstowe pliki
+ .B Vimtutora.
+ .TP 15
+@@ -35,7 +38,7 @@
+ .B Vimtutora.
+ .SH AUTOR
+ .B Vimtutor
+-zosta� pocz�tkowo napisany dla Vim przez Michaela C. Pierce'a
++zosta� pocz�tkowo napisany dla Vi przez Michaela C. Pierce'a
+ i Roberta K. Ware'a z Colorado School of Mines zainspirowani przez
+ Charlesa Smitha z Colorado State University.
+ E-mail: [email protected]
+diff -Nur runtime/doc/vimtutor-pl.UTF-8.1 runtime/doc/vimtutor-pl.UTF-8.1
+--- runtime/doc/vimtutor-pl.UTF-8.1	2006-03-26 09:01:45.000000000 -0800
++++ runtime/doc/vimtutor-pl.UTF-8.1	2011-01-18 10:40:55.796800649 -0800
+@@ -3,10 +3,10 @@
+ vimtutor \- nauczyciel Vima
+ .SH SYNOPSIS
+ .br
+-.B vimtutor [język]
++.B vimtutor -g [język]
+ .SH OPIS
+ .B Vimtutor
+-uruchamia nauczycie
++uruchamia nauczyciela
+ .B Vima.
+ Najpierw kopiuje właściwy plik, dzięki temu można go zmieniać bez obaw
+ utraty treści.
+@@ -15,6 +15,9 @@
+ przyda się ludziom, którzy chcą się nauczyć pierwszych poleceń
+ .B Vima
+ .PP
++Opcjonalny argument \-g uruchamia vimtutor w gvimie a nie w Vimie jeśli
++graficzna wersja Vima jest dostępna, jeśli nie zostanie uruchomiony Vim.
++.PP
+ Opcjonalny argument [język] jest dwu literowym kodem języka, tak jak
+ "it" lub "es".
+ Jeśli brak argumentu [język] zostanie użyty język bieżącej
+@@ -26,7 +29,7 @@
+ jest uruchamiany zawsze w trybie kompatybilności z Vi
+ .SH PLIKI
+ .TP 15
+-/usr/local/lib/vim/tutor/tutor[.languague]
++/usr/local/lib/vim/tutor/tutor[.język]
+ Tekstowe pliki
+ .B Vimtutora.
+ .TP 15
+@@ -35,7 +38,7 @@
+ .B Vimtutora.
+ .SH AUTOR
+ .B Vimtutor
+-został początkowo napisany dla Vim przez Michaela C. Pierce'a
++został początkowo napisany dla Vi przez Michaela C. Pierce'a
+ i Roberta K. Ware'a z Colorado School of Mines zainspirowani przez
+ Charlesa Smitha z Colorado State University.
+ E-mail: [email protected]
+diff -Nur runtime/doc/vimtutor.1 runtime/doc/vimtutor.1
+--- runtime/doc/vimtutor.1	2008-04-05 03:21:11.000000000 -0700
++++ runtime/doc/vimtutor.1	2011-01-18 10:40:55.797854568 -0800
+@@ -3,7 +3,7 @@
+ vimtutor \- the Vim tutor
+ .SH SYNOPSIS
+ .br
+-.B vimtutor [-g] [language]
++.B vimtutor [\-g] [language]
+ .SH DESCRIPTION
+ .B Vimtutor
+ starts the
+@@ -18,7 +18,7 @@
+ .B Vim
+ commands.
+ .PP
+-The optional argument -g starts vimtutor with gvim rather than vim, if the
++The optional argument \-g starts vimtutor with gvim rather than vim, if the
+ GUI version of vim is available, or falls back to Vim if gvim is not found.
+ .PP
+ The optional [language] argument is the two-letter name of a language, like
+diff -Nur runtime/doc/vimtutor.man runtime/doc/vimtutor.man
+--- runtime/doc/vimtutor.man	1969-12-31 16:00:00.000000000 -0800
++++ runtime/doc/vimtutor.man	2011-01-18 10:40:55.798212743 -0800
+@@ -0,0 +1,50 @@
++VIMTUTOR(1)                                                        VIMTUTOR(1)
++
++
++
++NAME
++       vimtutor - the Vim tutor
++
++SYNOPSIS
++       vimtutor [-g] [language]
++
++DESCRIPTION
++       Vimtutor starts the Vim tutor.  It copies the tutor file first, so that
++       it can be modified without changing the original file.
++
++       The Vimtutor is useful for people that want to learn  their  first  Vim
++       commands.
++
++       The  optional argument -g starts vimtutor with gvim rather than vim, if
++       the GUI version of vim is available, or falls back to Vim  if  gvim  is
++       not found.
++
++       The  optional [language] argument is the two-letter name of a language,
++       like "it" or "es".  If the [language] argument is missing, the language
++       of  the  current  locale  will be used.  If a tutor in this language is
++       available, it will be used.  Otherwise  the  English  version  will  be
++       used.
++
++       Vim is always started in Vi compatible mode.
++
++FILES
++       /usr/local/lib/vim/tutor/tutor[.language]
++                      The Vimtutor text file(s).
++
++       /usr/local/lib/vim/tutor/tutor.vim
++                      The Vim script used to copy the Vimtutor text file.
++
++AUTHOR
++       The  Vimtutor  was  originally  written for Vi by Michael C. Pierce and
++       Robert K. Ware, Colorado  School  of  Mines  using  ideas  supplied  by
++       Charles  Smith,  Colorado  State  University.  E-mail: [email protected]
++       orado.edu.
++       It was modified for Vim by Bram Moolenaar.  For the names of the trans‐
++       lators see the tutor files.
++
++SEE ALSO
++       vim(1)
++
++
++
++                                 2001 April 2                      VIMTUTOR(1)
+diff -Nur runtime/doc/visual.txt runtime/doc/visual.txt
+--- runtime/doc/visual.txt	2008-08-09 07:23:01.000000000 -0700
++++ runtime/doc/visual.txt	2011-04-03 09:27:21.598373860 -0700
+@@ -1,4 +1,4 @@
+-*visual.txt*    For Vim version 7.2.  Last change: 2006 Sep 26
++*visual.txt*    For Vim version 7.3a.  Last change: 2010 Feb 17
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -211,13 +211,21 @@
+ 	ib	inner () block					|v_ib|
+ 	aB	a {} block (with braces)			|v_aB|
+ 	iB	inner {} block					|v_iB|
++	at	a <tag> </tag> block (with tags)		|v_at|
++	it	inner <tag> </tag> block			|v_it|
+ 	a<	a <> block (with <>)				|v_a<|
+ 	i<	inner <> block					|v_i<|
+ 	a[	a [] block (with [])				|v_a[|
+ 	i[	inner [] block					|v_i[|
++	a"	a double quoted string (with quotes)		|v_aquote|
++	i"	inner double quoted string			|v_iquote|
++	a'	a single quoted string (with quotes)		|v_a'|
++	i'	inner simple quoted string			|v_i'|
++	a`	a string in backticks (with backticks)		|v_a`|
++	i`	inner string in backticks			|v_i`|
+ 
+ Additionally the following commands can be used:
+-	:	start ex command for highlighted lines (1)	|v_:|
++	:	start Ex command for highlighted lines (1)	|v_:|
+ 	r	change (4)					|v_r|
+ 	s	change						|v_s|
+ 	C	change (2)(4)					|v_C|
+@@ -309,8 +317,6 @@
+ LHS of the block determines the point from which to apply a right shift, and
+ padding includes TABs optimally according to 'ts' and 'et'.  The LHS of the
+ block determines the point upto which to shift left.
+-    Note: v_< padding is buggy if the Visual Block starts and ends in the same
+-    TAB. (Vim 5.4c)
+ See |v_b_>_example|.
+ See |v_b_<_example|.
+ 
+@@ -465,6 +471,10 @@
+ mode Vim automatically switches to Visual mode, so that the same behavior as
+ in Visual mode is effective.  If you don't want this use |:xmap| or |:smap|.
+ 
++Users will expect printable characters to replace the selected area.
++Therefore avoid mapping printable characters in Select mode.  Or use
++|:sunmap|  after |:map| and |:vmap| to remove it for Select mode.
++
+ After the mapping or menu finishes, the selection is enabled again and Select
+ mode entered, unless the selected area was deleted, another buffer became
+ the current one or the window layout was changed.
+diff -Nur runtime/doc/windows.txt runtime/doc/windows.txt
+--- runtime/doc/windows.txt	2008-08-09 07:23:02.000000000 -0700
++++ runtime/doc/windows.txt	2011-04-03 09:27:21.599812092 -0700
+@@ -1,4 +1,4 @@
+-*windows.txt*   For Vim version 7.2.  Last change: 2008 Aug 09
++*windows.txt*   For Vim version 7.3a.  Last change: 2010 Apr 12
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Bram Moolenaar
+@@ -35,6 +35,11 @@
+ ==============================================================================
+ 1. Introduction					*windows-intro* *window*
+ 
++Summary:
++   A buffer is the in-memory text of a file.
++   A window is a viewport on a buffer.
++   A tab page is a collection of windows.
++
+ A window is a viewport onto a buffer.  You can use multiple windows on one
+ buffer, or several windows on different buffers.
+ 
+@@ -342,13 +347,13 @@
+ 		top-left window.
+ 		With count: go to Nth window (windows are numbered from
+ 		top-left to bottom-right).  To obtain the window number see
+-		|bufwinnr()| and |winnr()|.
++		|bufwinnr()| and |winnr()|.  When N is larger than the number
++		of windows go to the last window.
+ 
+ 						*CTRL-W_W*
+ CTRL-W W	Without count: move cursor to window above/left of current
+ 		one.  If there is no window above or left, go to bottom-right
+-		window.  With count: go to Nth window (windows are numbered
+-		from top-left to bottom-right).
++		window.  With count: go to Nth window, like with CTRL-W w.
+ 
+ CTRL-W t					*CTRL-W_t* *CTRL-W_CTRL-T*
+ CTRL-W CTRL-T	Move cursor to top-left window.
+@@ -462,11 +467,11 @@
+ 
+ :res[ize] -N					*:res* *:resize* *CTRL-W_-*
+ CTRL-W -	Decrease current window height by N (default 1).
+-		If used after 'vertical': decrease width by N.
++		If used after |:vertical|: decrease width by N.
+ 
+ :res[ize] +N					*CTRL-W_+*
+ CTRL-W +	Increase current window height by N (default 1).
+-		If used after 'vertical': increase width by N.
++		If used after |:vertical|: increase width by N.
+ 
+ :res[ize] [N]
+ CTRL-W CTRL-_					*CTRL-W_CTRL-_* *CTRL-W__*
+@@ -1175,7 +1180,8 @@
+ 			:setlocal buftype=nofile
+ 			:setlocal bufhidden=hide
+ 			:setlocal noswapfile
+-<		The buffer name can be used to identify the buffer.
++<		The buffer name can be used to identify the buffer, if you
++		give it a meaningful name.
+ 
+ 						*unlisted-buffer*
+ unlisted	The buffer is not in the buffer list.  It is not used for
+diff -Nur runtime/doc/workshop.txt runtime/doc/workshop.txt
+--- runtime/doc/workshop.txt	2008-08-09 07:23:02.000000000 -0700
++++ runtime/doc/workshop.txt	2011-04-03 09:27:21.600507120 -0700
+@@ -1,4 +1,4 @@
+-*workshop.txt*  For Vim version 7.2.  Last change: 2006 Apr 24
++*workshop.txt*  For Vim version 7.3a.  Last change: 2006 Apr 24
+ 
+ 
+ 		  VIM REFERENCE MANUAL    by Gordon Prieur
+@@ -87,12 +87,12 @@
+ The XPM library is required to show images within Vim with Motif or Athena.
+ Without it the toolbar and signs will be disabled.
+ 
+-The XPM library is provide by Arnaud Le Hors of the French National Institute
++The XPM library is provided by Arnaud Le Hors of the French National Institute
+ for Research in Computer Science and Control.  It can be downloaded from
+-http://koala.ilog.fr/ftp/pub/xpm.  The current release, as of this writing, is
+-xpm-3.4k-solaris.tgz, which is a gzip'ed tar file.  If you create the directory
+-/usr/local/xpm and untar the file there you can use the uncommented lines in
+-the Makefile without changing them.  If you use another xpm directory you will
+-need to change the XPM_DIR in src/Makefile.
++http://cgit.freedesktop.org/xorg/lib/libXpm.  The current release, as of this
++writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file.  If you create
++the directory /usr/local/xpm and untar the file there you can use the
++uncommented lines in the Makefile without changing them.  If you use another
++xpm directory you will need to change the XPM_DIR in src/Makefile.
+ 
+  vim:tw=78:ts=8:ft=help:norl:
+diff -Nur runtime/doc/xxd-fr.1 runtime/doc/xxd-fr.1
+--- runtime/doc/xxd-fr.1	2006-04-30 09:20:38.000000000 -0700
++++ runtime/doc/xxd-fr.1	2011-01-18 10:40:55.801603914 -0800
+@@ -135,7 +135,7 @@
+ D�bute au
+ .RI < d�calage >
+ absolu ou relatif dans fichier_entree.
+-\fI+ fRindique que le d�calage est relatif � la position courante dans
++\fI+ \fRindique que le d�calage est relatif � la position courante dans
+ l'entr�e standard (sans effet si la lecture n'a pas lieu sur l'entr�e
+ standard). \fI\- \fRindique un d�calage en caract�res depuis la fin de
+ l'entr�e (utilis� avec \fI+\fR, d�signe la position avant la position
+@@ -308,7 +308,7 @@
+ .PP
+ Cr�er un fichier d'un octet, contenant seulement le caract�re 'A'.
+ Les nombres apr�s '\-r \-s' s'ajoutent au num�ros de lignes trouv�es dans le
+-fichier ; XXX in effects, les octets initiaux sont supprim�s.
++fichier ; les octets initiaux sont supprim�s.
+ .br
+ \fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR
+ .PP
+diff -Nur runtime/doc/xxd-fr.UTF-8.1 runtime/doc/xxd-fr.UTF-8.1
+--- runtime/doc/xxd-fr.UTF-8.1	2006-04-30 09:20:45.000000000 -0700
++++ runtime/doc/xxd-fr.UTF-8.1	2011-01-18 10:40:55.802055180 -0800
+@@ -135,7 +135,7 @@
+ Débute au
+ .RI < décalage >
+ absolu ou relatif dans fichier_entree.
+-\fI+ fRindique que le décalage est relatif à la position courante dans
++\fI+ \fRindique que le décalage est relatif à la position courante dans
+ l'entrée standard (sans effet si la lecture n'a pas lieu sur l'entrée
+ standard). \fI\- \fRindique un décalage en caractères depuis la fin de
+ l'entrée (utilisé avec \fI+\fR, désigne la position avant la position
+@@ -308,7 +308,7 @@
+ .PP
+ Créer un fichier d'un octet, contenant seulement le caractère 'A'.
+ Les nombres après '\-r \-s' s'ajoutent au numéros de lignes trouvées dans le
+-fichier ; XXX in effects, les octets initiaux sont supprimés.
++fichier ; les octets initiaux sont supprimés.
+ .br
+ \fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR
+ .PP
+diff -Nur runtime/doc/xxd-it.UTF-8.1 runtime/doc/xxd-it.UTF-8.1
+--- runtime/doc/xxd-it.UTF-8.1	2006-09-26 13:17:19.000000000 -0700
++++ runtime/doc/xxd-it.UTF-8.1	2011-04-03 09:27:21.611986446 -0700
+@@ -169,7 +169,7 @@
+ dati esadecimali (vedere opzione \-c). Ciò implica pure che le modifiche alle
+ colonne di caratteri stampabili ascii (o ebcdic) sono sempre ignorate.
+ La ricostruzione da un file immagine esadecimale in stile semplice
+-(postscript) con xxd \-r \-p non dipende dal numero corrretto di colonne.
++(postscript) con xxd \-r \-p non dipende dal numero corrretto di colonne. 
+ IN questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali
+ è interpretata [e utilizzata].
+ .PP
+diff -Nur runtime/doc/xxd-pl.1 runtime/doc/xxd-pl.1
+--- runtime/doc/xxd-pl.1	2006-09-26 13:17:26.000000000 -0700
++++ runtime/doc/xxd-pl.1	2011-01-18 10:40:55.803784648 -0800
+@@ -18,7 +18,7 @@
+ \-r[evert] [opcje] [plik_we [plik_wy]]
+ .SH OPIS
+ .I xxd
+-tworzy zrzut heksowy podanego pliku na standardowe wyj�cie.
++tworzy zrzut heksowy podanego pliku lub standardowego wej�cia.
+ Mo�e tak�e przetworzy� zrzut heksowy z powrotem do oryginalnej,
+ binarnej formy.
+ Podobnie jak
+@@ -27,13 +27,13 @@
+ .BR uudecode (1)
+ pozwala na przekazanie danych binarnych w bezpiecznej w poczcie formie
+ ASCII, ale ma zalety dekodowania na standardowe wyj�cie.
+-Ponadto mo�na go u�y� do przeprowadzenia �atania plik�w binarnych.
++Ponadto mo�na go u�y� do binarnego �atania plik�w.
+ .SH OPCJE
+ Je�li nie podano
+ .I plik_we
+-xxd czyta ze standardowego wej�cie.
++xxd czyta ze standardowego wej�cia.
+ Je�li okre�lono
+-.I plik_wy
++.I plik_we
+ jako znak
+ .RB \` \- '
+ wtedy dane wej�ciowe czytane s� ze standardowego wej�cia.
+@@ -63,9 +63,9 @@
+ .TP
+ .IR \-b " | " \-bits
+ Prze��cza do zrzutu bitowego (cyfr binarnych) zamiast heksowego.
+-Opcja ta zapisuje oktety ajko osiem cyfr 1 lub 0 zamias normalnego
++Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego
+ zrzutu heksowego. Ka�da linia jest poprzedzona przez
+-heksadecymalny numer linii a za nim jego reprezentacja w ascii (lub
++heksadecymalny numer linii a po nim jego reprezentacj� w ascii (lub
+ ebcdic). Opcje linii polece� \-r, \-p, \-i nie dzia�aj� w tym
+ trybie.
+ .TP
+@@ -103,7 +103,7 @@
+ .TP
+ .IR "\-l len " | "\-len len"
+ zako�cz po wypisaniu
+-.RI < len>
++.RI < len >
+ oktet�w.
+ .TP
+ .IR \-p " | " \-ps " | " \-postscript " | " \-plain
+@@ -117,7 +117,7 @@
+ .I \-r \-p
+ by odczyta� zwyk�y zrzut heksadecymalny bez numer�w linii
+ i okre�lonego uk�adu kolumn. Dodatkowe bia�e znaki i �amanie wierszy
+-s� dozwolone wsz�dzie.
++s� wsz�dzie dozwolone.
+ .TP
+ .I \-seek offset
+ Kiedy u�yty po
+@@ -129,11 +129,11 @@
+ .I \-s [+][\-]seek
+ zaczyna na
+ .RI < seek >
+-bajt�w abs. (lub wzg.) offsecie pliku wej�ciowego.
+-\fI+ fRwskazuje, �e seek jest wzgl�dne do bie��cej pozycji pliku (bez
++bajt�w bezwgl�dnego (lub wzgl�dnego) offsetu pliku wej�ciowego.
++\fI+ \fRwskazuje, �e seek jest wzgl�dne do bie��cej pozycji pliku (bez
+ znaczenia je�li nie wczytuje ze standardowego wej�cia). \fI\- \fRwskazuje
+ �e seek powinno by� o tyle znak�w od ko�ca wej�cia (lub je�li
+-po��czone z \fI+\fR: przezhd bie��c� pozycj� pliku na standardowym
++po��czone z \fI+\fR: przed bie��c� pozycj� pliku na standardowym
+ wej�ciu).
+ Bez opcji \-s xxd zaczyna od bie��cej pozycji w pliku.
+ .TP
+@@ -153,7 +153,7 @@
+ s� tylko przerwy, kt�re zostan� wype�nione bajtami null.
+ .PP
+ .I xxd \-r
+-nigdy nie podaje b��d�w analizy. �mieci s� ignorowane.
++nigdy nie podaje b��d�w analizy. �mieci s� po cichu ignorowane.
+ .PP
+ W czasie edycji zrzut�w heksowych, prosz� zauwa�y� �e
+ .I xxd \-r
+@@ -161,8 +161,8 @@
+ kolumn danych heksadecymalnych (zobacz opcj� \-c). Oznacza to tak�e,
+ �e zmiany w drukowanych kolumnach ascii (lub ebcdic) s� zawsze
+ ignorowane. Odwr�cenie zwyk�ego (lub postscriptowego) stylu zrzutu
+-poprzez xxd \-r \-p nie zale�y od kolejno�ci kolumn. Tutaj cokolwiej
+-co wygl�da jak para cyfr heks jest interpretowane.
++poprzez xxd \-r \-p nie zale�y od kolejno�ci kolumn. Tutaj cokolwiek
++co wygl�da jak para znak�w heks jest interpretowane.
+ .PP
+ Zauwa� r�nic� mi�dzy
+ .br
+@@ -175,7 +175,7 @@
+ .I xxd \-s \+seek
+ mo�e by� r�ne od
+ .IR "xxd \-s seek" ,
+-poniewa� lseek(2) jest u�yty do "przewini�cie" wej�cia. '+' robi
++poniewa� lseek(2) jest u�yty do "przewini�cie" wej�cia. '+' stanowi
+ r�nic� je�li �r�d�em wej�cia jest standardowe wej�cie i je�li pozycja
+ w pliku ze standardowego wej�cia nie jest pocz�tkiem pliku w chwili
+ uruchomienia xxd. Nast�puj�ce przyk�ady mog� wyja�ni� (lub bardziej
+@@ -184,17 +184,17 @@
+ Przewi� standardowe wej�cie przed przeczytaniem; potrzebne poniewa�
+ `cat' ju� odczyta� do ko�ca standardowego wej�cia.
+ .br
+-\fI% sh \-c 'cat > zwyk�a_kopia; xxd \-s 0 > hex_kopia' < plik
++\fI% sh \-c 'cat > zwyk�a_kopia; xxd \-s 0 > hex_kopia' < plik\fR
+ .PP
+ Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w prz�d.
+ Znak `+' oznacza "wzgl�dny wobec bie��cej pozycji", st�d `128' dodaje
+ do 1k gdzie zako�czy� dd.
+ .br
+-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
++\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file\fR
+ .PP
+ Zrzut heksowy od pozycji pliku 0x100 ( = 1024\-768) dalej.
+ .br
+-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
++\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file\fR
+ .PP
+ Jakkolwiek, jest to rzadka sytuacja i u�ycie `+' jest rzadko
+ potrzebne.
+@@ -206,14 +206,14 @@
+ .B pliku
+ \.
+ .br
+-\fI% xxd \-s 0x30 plik
++\fI% xxd \-s 0x30 plik\fR
+ .PP
+ .br
+ Wypisz trzy linie (heksowe 0x30 bajt�w) z ko�ca
+ .B pliku
+ \.
+ .br
+-\fI% xxd \-s \-0x30 plik
++\fI% xxd \-s \-0x30 plik\fR
+ .PP
+ .br
+ Wypisz 120 bajt�w jako ci�g�y zrzut heksowy z 20 oktetami na lini�.
+diff -Nur runtime/doc/xxd-pl.UTF-8.1 runtime/doc/xxd-pl.UTF-8.1
+--- runtime/doc/xxd-pl.UTF-8.1	2006-09-26 13:17:31.000000000 -0700
++++ runtime/doc/xxd-pl.UTF-8.1	2011-01-18 10:40:55.804233953 -0800
+@@ -18,7 +18,7 @@
+ \-r[evert] [opcje] [plik_we [plik_wy]]
+ .SH OPIS
+ .I xxd
+-tworzy zrzut heksowy podanego pliku na standardowe wyjście.
++tworzy zrzut heksowy podanego pliku lub standardowego wejścia.
+ Może także przetworzyć zrzut heksowy z powrotem do oryginalnej,
+ binarnej formy.
+ Podobnie jak
+@@ -27,13 +27,13 @@
+ .BR uudecode (1)
+ pozwala na przekazanie danych binarnych w bezpiecznej w poczcie formie
+ ASCII, ale ma zalety dekodowania na standardowe wyjście.
+-Ponadto można go użyć do przeprowadzenia łatania plików binarnych.
++Ponadto można go użyć do binarnego łatania plików.
+ .SH OPCJE
+ Jeśli nie podano
+ .I plik_we
+-xxd czyta ze standardowego wejście.
++xxd czyta ze standardowego wejścia.
+ Jeśli określono
+-.I plik_wy
++.I plik_we
+ jako znak
+ .RB \` \- '
+ wtedy dane wejściowe czytane są ze standardowego wejścia.
+@@ -63,9 +63,9 @@
+ .TP
+ .IR \-b " | " \-bits
+ Przełącza do zrzutu bitowego (cyfr binarnych) zamiast heksowego.
+-Opcja ta zapisuje oktety ajko osiem cyfr 1 lub 0 zamias normalnego
++Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego
+ zrzutu heksowego. Każda linia jest poprzedzona przez
+-heksadecymalny numer linii a za nim jego reprezentacja w ascii (lub
++heksadecymalny numer linii a po nim jego reprezentacją w ascii (lub
+ ebcdic). Opcje linii poleceń \-r, \-p, \-i nie działają w tym
+ trybie.
+ .TP
+@@ -103,7 +103,7 @@
+ .TP
+ .IR "\-l len " | "\-len len"
+ zakończ po wypisaniu
+-.RI < len>
++.RI < len >
+ oktetów.
+ .TP
+ .IR \-p " | " \-ps " | " \-postscript " | " \-plain
+@@ -117,7 +117,7 @@
+ .I \-r \-p
+ by odczytać zwykły zrzut heksadecymalny bez numerów linii
+ i określonego układu kolumn. Dodatkowe białe znaki i łamanie wierszy
+-są dozwolone wszędzie.
++są wszędzie dozwolone.
+ .TP
+ .I \-seek offset
+ Kiedy użyty po
+@@ -129,11 +129,11 @@
+ .I \-s [+][\-]seek
+ zaczyna na
+ .RI < seek >
+-bajtów abs. (lub wzg.) offsecie pliku wejściowego.
+-\fI+ fRwskazuje, że seek jest względne do bieżącej pozycji pliku (bez
++bajtów bezwględnego (lub względnego) offsetu pliku wejściowego.
++\fI+ \fRwskazuje, że seek jest względne do bieżącej pozycji pliku (bez
+ znaczenia jeśli nie wczytuje ze standardowego wejścia). \fI\- \fRwskazuje
+ że seek powinno być o tyle znaków od końca wejścia (lub jeśli
+-połączone z \fI+\fR: przezhd bieżącą pozycją pliku na standardowym
++połączone z \fI+\fR: przed bieżącą pozycją pliku na standardowym
+ wejściu).
+ Bez opcji \-s xxd zaczyna od bieżącej pozycji w pliku.
+ .TP
+@@ -153,7 +153,7 @@
+ są tylko przerwy, które zostaną wypełnione bajtami null.
+ .PP
+ .I xxd \-r
+-nigdy nie podaje błędów analizy. Śmieci są ignorowane.
++nigdy nie podaje błędów analizy. Śmieci są po cichu ignorowane.
+ .PP
+ W czasie edycji zrzutów heksowych, proszę zauważyć że
+ .I xxd \-r
+@@ -161,8 +161,8 @@
+ kolumn danych heksadecymalnych (zobacz opcję \-c). Oznacza to także,
+ że zmiany w drukowanych kolumnach ascii (lub ebcdic) są zawsze
+ ignorowane. Odwrócenie zwykłego (lub postscriptowego) stylu zrzutu
+-poprzez xxd \-r \-p nie zależy od kolejności kolumn. Tutaj cokolwiej
+-co wygląda jak para cyfr heks jest interpretowane.
++poprzez xxd \-r \-p nie zależy od kolejności kolumn. Tutaj cokolwiek
++co wygląda jak para znaków heks jest interpretowane.
+ .PP
+ Zauważ różnicę między
+ .br
+@@ -175,7 +175,7 @@
+ .I xxd \-s \+seek
+ może być różne od
+ .IR "xxd \-s seek" ,
+-ponieważ lseek(2) jest użyty do "przewinięcie" wejścia. '+' robi
++ponieważ lseek(2) jest użyty do "przewinięcie" wejścia. '+' stanowi
+ różnicę jeśli źródłem wejścia jest standardowe wejście i jeśli pozycja
+ w pliku ze standardowego wejścia nie jest początkiem pliku w chwili
+ uruchomienia xxd. Następujące przykłady mogą wyjaśnić (lub bardziej
+@@ -184,17 +184,17 @@
+ Przewiń standardowe wejście przed przeczytaniem; potrzebne ponieważ
+ `cat' już odczytał do końca standardowego wejścia.
+ .br
+-\fI% sh \-c 'cat > zwykła_kopia; xxd \-s 0 > hex_kopia' < plik
++\fI% sh \-c 'cat > zwykła_kopia; xxd \-s 0 > hex_kopia' < plik\fR
+ .PP
+ Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w przód.
+ Znak `+' oznacza "względny wobec bieżącej pozycji", stąd `128' dodaje
+ do 1k gdzie zakończył dd.
+ .br
+-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file
++\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file\fR
+ .PP
+ Zrzut heksowy od pozycji pliku 0x100 ( = 1024\-768) dalej.
+ .br
+-\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file
++\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file\fR
+ .PP
+ Jakkolwiek, jest to rzadka sytuacja i użycie `+' jest rzadko
+ potrzebne.
+@@ -206,14 +206,14 @@
+ .B pliku
+ \.
+ .br
+-\fI% xxd \-s 0x30 plik
++\fI% xxd \-s 0x30 plik\fR
+ .PP
+ .br
+ Wypisz trzy linie (heksowe 0x30 bajtów) z końca
+ .B pliku
+ \.
+ .br
+-\fI% xxd \-s \-0x30 plik
++\fI% xxd \-s \-0x30 plik\fR
+ .PP
+ .br
+ Wypisz 120 bajtów jako ciągły zrzut heksowy z 20 oktetami na linię.
+diff -Nur runtime/doc/xxd.man runtime/doc/xxd.man
+--- runtime/doc/xxd.man	1969-12-31 16:00:00.000000000 -0800
++++ runtime/doc/xxd.man	2011-01-18 10:40:55.810483903 -0800
+@@ -0,0 +1,262 @@
++XXD(1)                                                                  XXD(1)
++
++
++
++NAME
++       xxd - make a hexdump or do the reverse.
++
++SYNOPSIS
++       xxd -h[elp]
++       xxd [options] [infile [outfile]]
++       xxd -r[evert] [options] [infile [outfile]]
++
++DESCRIPTION
++       xxd  creates a hex dump of a given file or standard input.  It can also
++       convert a hex dump back to its original binary form.  Like  uuencode(1)
++       and  uudecode(1)  it allows the transmission of binary data in a `mail-
++       safe' ASCII representation, but has the advantage of decoding to  stan-
++       dard output.  Moreover, it can be used to perform binary file patching.
++
++OPTIONS
++       If no infile is given, standard input is read.  If infile is  specified
++       as  a  `-'  character,  then input is taken from standard input.  If no
++       outfile is given (or a `-' character is in its place), results are sent
++       to standard output.
++
++       Note  that  a  "lazy" parser is used which does not check for more than
++       the first option letter, unless the option is followed by a  parameter.
++       Spaces  between  a single option letter and its parameter are optional.
++       Parameters to options can be specified in decimal, hexadecimal or octal
++       notation.  Thus -c8, -c 8, -c 010 and -cols 8 are all equivalent.
++
++
++       -a | -autoskip
++              toggle  autoskip: A single '*' replaces nul-lines.  Default off.
++
++       -b | -bits
++              Switch to bits (binary digits) dump, rather than hexdump.   This
++              option  writes octets as eight digits "1"s and "0"s instead of a
++              normal hexadecimal dump. Each line is preceded by a line  number
++              in  hexadecimal and followed by an ascii (or ebcdic) representa-
++              tion. The command line switches -r, -p, -i do not work with this
++              mode.
++
++       -c cols | -cols cols
++              format  <cols> octets per line. Default 16 (-i: 12, -ps: 30, -b:
++              6). Max 256.
++
++       -E | -EBCDIC
++              Change the character encoding in the righthand column from ASCII
++              to EBCDIC.  This does not change the hexadecimal representation.
++              The option is meaningless in combinations with -r, -p or -i.
++
++       -g bytes | -groupsize bytes
++              separate the output of every <bytes> bytes (two  hex  characters
++              or eight bit-digits each) by a whitespace.  Specify -g 0 to sup-
++              press grouping.  <Bytes> defaults to 2 in normal mode and  1  in
++              bits  mode.   Grouping  does  not apply to postscript or include
++              style.
++
++       -h | -help
++              print a summary of available commands and exit.  No hex  dumping
++              is performed.
++
++       -i | -include
++              output  in C include file style. A complete static array defini-
++              tion is written (named after the input file), unless  xxd  reads
++              from stdin.
++
++       -l len | -len len
++              stop after writing <len> octets.
++
++       -p | -ps | -postscript | -plain
++              output  in  postscript  continuous  hexdump style. Also known as
++              plain hexdump style.
++
++       -r | -revert
++              reverse operation: convert (or patch) hexdump into  binary.   If
++              not  writing  to stdout, xxd writes into its output file without
++              truncating it. Use the combination -r -p to read plain hexadeci-
++              mal dumps without line number information and without a particu-
++              lar column layout. Additional  Whitespace  and  line-breaks  are
++              allowed anywhere.
++
++       -seek offset
++              When used after -r: revert with <offset> added to file positions
++              found in hexdump.
++
++       -s [+][-]seek
++              start at <seek> bytes abs. (or rel.) infile offset.  + indicates
++              that  the  seek  is  relative to the current stdin file position
++              (meaningless when not reading from stdin).  - indicates that the
++              seek  should  be  that many characters from the end of the input
++              (or if combined with +: before the current stdin file position).
++              Without -s option, xxd starts at the current file position.
++
++       -u     use upper case hex letters. Default is lower case.
++
++       -v | -version
++              show version string.
++
++CAVEATS
++       xxd -r has some builtin magic while evaluating line number information.
++       If the output file is seekable, then the linenumbers at  the  start  of
++       each  hexdump  line may be out of order, lines may be missing, or over-
++       lapping. In these cases xxd will lseek(2) to the next position. If  the
++       output  file  is  not  seekable,  only  gaps are allowed, which will be
++       filled by null-bytes.
++
++       xxd -r never generates parse errors. Garbage is silently skipped.
++
++       When editing hexdumps, please note that xxd -r skips everything on  the
++       input line after reading enough columns of hexadecimal data (see option
++       -c). This also means, that changes to the printable ascii  (or  ebcdic)
++       columns  are  always  ignored.  Reverting a plain (or postscript) style
++       hexdump with xxd -r -p does not depend on the correct  number  of  col-
++       umns.  Here  anything  that  looks  like a pair of hex-digits is inter-
++       preted.
++
++       Note the difference between
++       % xxd -i file
++       and
++       % xxd -i < file
++
++       xxd -s +seek may be different from xxd -s seek, as lseek(2) is used  to
++       "rewind" input.  A '+' makes a difference if the input source is stdin,
++       and if stdin's file position is not at the start of  the  file  by  the
++       time  xxd  is  started and given its input.  The following examples may
++       help to clarify (or further confuse!)...
++
++       Rewind stdin before reading; needed because the `cat' has already  read
++       to the end of stdin.
++       % sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file
++
++       Hexdump  from  file  position  0x480 (=1024+128) onwards.  The `+' sign
++       means "relative to the current position", thus the `128' adds to the 1k
++       where dd left off.
++       %  sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet"
++       < file
++
++       Hexdump from file position 0x100 ( = 1024-768) on.
++       % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet"
++       < file
++
++       However,  this is a rare situation and the use of `+' is rarely needed.
++       The author prefers to monitor the  effect  of  xxd  with  strace(1)  or
++       truss(1), whenever -s is used.
++
++EXAMPLES
++       Print everything but the first three lines (hex 0x30 bytes) of file.
++       % xxd -s 0x30 file
++
++       Print 3 lines (hex 0x30 bytes) from the end of file.
++       % xxd -s -0x30 file
++
++       Print 120 bytes as continuous hexdump with 20 octets per line.
++       % xxd -l 120 -ps -c 20 xxd.1
++       2e54482058584420312022417567757374203139
++       39362220224d616e75616c207061676520666f72
++       20787864220a2e5c220a2e5c222032317374204d
++       617920313939360a2e5c22204d616e2070616765
++       20617574686f723a0a2e5c2220202020546f6e79
++       204e7567656e74203c746f6e79407363746e7567
++
++       Hexdump the first 120 bytes of this man page with 12 octets per line.
++       % xxd -l 120 -c 12 xxd.1
++       0000000: 2e54 4820 5858 4420 3120 2241  .TH XXD 1 "A
++       000000c: 7567 7573 7420 3139 3936 2220  ugust 1996"
++       0000018: 224d 616e 7561 6c20 7061 6765  "Manual page
++       0000024: 2066 6f72 2078 7864 220a 2e5c   for xxd"..\
++       0000030: 220a 2e5c 2220 3231 7374 204d  "..\" 21st M
++       000003c: 6179 2031 3939 360a 2e5c 2220  ay 1996..\"
++       0000048: 4d61 6e20 7061 6765 2061 7574  Man page aut
++       0000054: 686f 723a 0a2e 5c22 2020 2020  hor:..\"
++       0000060: 546f 6e79 204e 7567 656e 7420  Tony Nugent
++       000006c: 3c74 6f6e 7940 7363 746e 7567  <tony@sctnug
++
++       Display just the date from the file xxd.1
++       % xxd -s 0x36 -l 13 -c 13 xxd.1
++       0000036: 3231 7374 204d 6179 2031 3939 36  21st May 1996
++
++       Copy input_file to output_file and prepend 100 bytes of value 0x00.
++       % xxd input_file | xxd -r -s 100 > output_file
++
++       Patch the date in the file xxd.1
++       % echo "0000037: 3574 68" | xxd -r - xxd.1
++       % xxd -s 0x36 -l 13 -c 13 xxd.1
++       0000036: 3235 7468 204d 6179 2031 3939 36  25th May 1996
++
++       Create  a  65537 byte file with all bytes 0x00, except for the last one
++       which is 'A' (hex 0x41).
++       % echo "010000: 41" | xxd -r > file
++
++       Hexdump this file with autoskip.
++       % xxd -a -c 12 file
++       0000000: 0000 0000 0000 0000 0000 0000  ............
++       *
++       000fffc: 0000 0000 40                   ....A
++
++       Create a 1 byte file containing a single  'A'  character.   The  number
++       after '-r -s' adds to the linenumbers found in the file; in effect, the
++       leading bytes are suppressed.
++       % echo "010000: 41" | xxd -r -s -0x10000 > file
++
++       Use xxd as a filter within an editor such as vim(1) to hexdump a region
++       marked between `a' and `z'.
++       :'a,'z!xxd
++
++       Use xxd as a filter within an editor such as vim(1) to recover a binary
++       hexdump marked between `a' and `z'.
++       :'a,'z!xxd -r
++
++       Use xxd as a filter within an editor such as vim(1) to recover one line
++       of a hexdump.  Move the cursor over the line and type:
++       !!xxd -r
++
++       Read single characters from a serial line
++       % xxd -c1 < /dev/term/b &
++       % stty < /dev/term/b -echo -opost -isig -icanon min 1
++       % echo -n foo > /dev/term/b
++
++
++RETURN VALUES
++       The following error values are returned:
++
++       0      no errors encountered.
++
++       -1     operation not supported ( xxd -r -i still impossible).
++
++       1      error while parsing options.
++
++       2      problems with input file.
++
++       3      problems with output file.
++
++       4,5    desired seek position is unreachable.
++
++SEE ALSO
++       uuencode(1), uudecode(1), patch(1)
++
++WARNINGS
++       The  tools  weirdness matches its creators brain.  Use entirely at your
++       own risk. Copy files. Trace it. Become a wizard.
++
++VERSION
++       This manual page documents xxd version 1.7
++
++AUTHOR
++       (c) 1990-1997 by Juergen Weigert
++       <[email protected]>
++
++       Distribute freely and credit me,
++       make money and share with me,
++       lose money and don't ask me.
++
++       Manual page started by Tony Nugent
++       <[email protected]> <[email protected]>
++       Small changes by Bram Moolenaar.  Edited by Juergen Weigert.
++
++
++
++
++Manual page for xxd               August 1996                           XXD(1)
+Files vim72/runtime/doc.info and ../../../vim-hg/runtime/doc.info differ
+diff -Nur runtime/evim.vim runtime/evim.vim
+--- runtime/evim.vim	2006-03-29 04:09:20.000000000 -0800
++++ runtime/evim.vim	2011-01-18 10:40:55.810809460 -0800
+@@ -15,15 +15,15 @@
+ set hidden
+ 
+ " Make cursor keys ignore wrapping
+-inoremap <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
+-inoremap <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
++inoremap <silent> <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
++inoremap <silent> <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
+ 
+ " CTRL-F does Find dialog instead of page forward
+-noremap <C-F> :promptfind<CR>
+-vnoremap <C-F> y:promptfind <C-R>"<CR>
+-onoremap <C-F> <C-C>:promptfind<CR>
+-inoremap <C-F> <C-O>:promptfind<CR>
+-cnoremap <C-F> <C-C>:promptfind<CR>
++noremap <silent> <C-F> :promptfind<CR>
++vnoremap <silent> <C-F> y:promptfind <C-R>"<CR>
++onoremap <silent> <C-F> <C-C>:promptfind<CR>
++inoremap <silent> <C-F> <C-O>:promptfind<CR>
++cnoremap <silent> <C-F> <C-C>:promptfind<CR>
+ 
+ 
+ set backspace=2		" allow backspacing over everything in insert mode
+diff -Nur runtime/filetype.vim runtime/filetype.vim
+--- runtime/filetype.vim	2011-04-03 13:03:30.329354612 -0700
++++ runtime/filetype.vim	2011-04-03 09:27:21.613935150 -0700
+@@ -1,7 +1,7 @@
+ " Vim support file to detect file types
+ "
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2008 Aug 03
++" Last Change:	2010 May 14
+ 
+ " Listen very carefully, I will say this only once
+ if exists("did_load_filetypes")
+@@ -110,12 +110,15 @@
+ au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
+ 
+ " Apache config file
+-au BufNewFile,BufRead .htaccess			 setf apache
+-au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache')
++au BufNewFile,BufRead .htaccess,/etc/httpd/*.conf		 setf apache
++au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,/etc/httpd/conf.d/*.conf* call s:StarSetf('apache')
+ 
+ " XA65 MOS6510 cross assembler
+ au BufNewFile,BufRead *.a65			setf a65
+ 
++" Applescript
++au BufNewFile,BufRead *.scpt			setf applescript
++
+ " Applix ELF
+ au BufNewFile,BufRead *.am
+ 	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
+@@ -321,6 +324,9 @@
+ " C#
+ au BufNewFile,BufRead *.cs			setf cs
+ 
++" Cabal
++au BufNewFile,BufRead *.cabal       		setf cabal
++
+ " Cdrdao TOC
+ au BufNewFile,BufRead *.toc			setf cdrtoc
+ 
+@@ -330,6 +336,9 @@
+ " Cfengine
+ au BufNewFile,BufRead cfengine.conf		setf cfengine
+ 
++" ChaiScript
++au BufRead,BufNewFile *.chai			setf chaiscript
++
+ " Comshare Dimension Definition Language
+ au BufNewFile,BufRead *.cdl			setf cdl
+ 
+@@ -350,10 +359,9 @@
+ 	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
+ 
+ " C++
++au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp
+ if has("fname_case")
+-  au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
+-else
+-  au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
++  au BufNewFile,BufRead *.C,*.H setf cpp
+ endif
+ 
+ " .h files can be C, Ch C++, ObjC or ObjC++.
+@@ -364,9 +372,9 @@
+ func! s:FTheader()
+   if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
+     setf objc
+-  elseif exists("c_syntax_for_h")
++  elseif exists("g:c_syntax_for_h")
+     setf c
+-  elseif exists("ch_syntax_for_h")
++  elseif exists("g:ch_syntax_for_h")
+     setf ch
+   else
+     setf cpp
+@@ -527,6 +535,9 @@
+ " Configure files
+ au BufNewFile,BufRead *.cfg			setf cfg
+ 
++" Cucumber
++au BufNewFile,BufRead *.feature 		setf cucumber
++
+ " Communicating Sequential Processes
+ au BufNewFile,BufRead *.csp,*.fdr		setf csp
+ 
+@@ -663,14 +674,18 @@
+ " Exports
+ au BufNewFile,BufRead exports			setf exports
+ 
++" Fantom
++au BufNewFile,BufRead *.fan,*.fwt		setf fan
++
+ " Factor
+ au BufNewFile,BufRead *.factor			setf factor
+ 
+ " Fetchmail RC file
+ au BufNewFile,BufRead .fetchmailrc		setf fetchmail
+ 
+-" FlexWiki
+-au BufNewFile,BufRead *.wiki			setf flexwiki
++" FlexWiki - disabled, because it has side effects when a .wiki file
++" is not actually FlexWiki
++"au BufNewFile,BufRead *.wiki			setf flexwiki
+ 
+ " Focus Executable
+ au BufNewFile,BufRead *.fex,*.focexec		setf focexec
+@@ -704,12 +719,12 @@
+ au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
+ 
+ " Gedcom
+-au BufNewFile,BufRead *.ged			setf gedcom
++au BufNewFile,BufRead *.ged,lltxxxxx.txt	setf gedcom
+ 
+ " Git
+-autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
+-autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
+-autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
++autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit
++autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig
++autocmd BufNewFile,BufRead git-rebase-todo      setf gitrebase
+ autocmd BufNewFile,BufRead .msg.[0-9]*
+       \ if getline(1) =~ '^From.*# This line is ignored.$' |
+       \   setf gitsendemail |
+@@ -758,7 +773,7 @@
+ au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
+ 
+ " Haskell
+-au BufNewFile,BufRead *.hs			setf haskell
++au BufNewFile,BufRead *.hs,*.hs-boot 		setf haskell
+ au BufNewFile,BufRead *.lhs			setf lhaskell
+ au BufNewFile,BufRead *.chs			setf chaskell
+ 
+@@ -896,7 +911,7 @@
+ au BufNewFile,BufRead *.jj,*.jjt		setf javacc
+ 
+ " JavaScript, ECMAScript
+-au BufNewFile,BufRead *.js,*.javascript,*.es	setf javascript
++au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx	setf javascript
+ 
+ " Java Server Pages
+ au BufNewFile,BufRead *.jsp			setf jsp
+@@ -969,6 +984,9 @@
+ " SBCL implementation of Common Lisp
+ au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
+ 
++" Liquid
++au BufNewFile,BufRead *.liquid			setf liquid
++
+ " Lite
+ au BufNewFile,BufRead *.lite,*.lt		setf lite
+ 
+@@ -1033,6 +1051,9 @@
+ " Map (UMN mapserver config file)
+ au BufNewFile,BufRead *.map			setf map
+ 
++" Markdown
++au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown
++
+ " Mason
+ au BufNewFile,BufRead *.mason,*.mhtml		setf mason
+ 
+@@ -1043,7 +1064,7 @@
+   let n = 1
+   while n < 10
+     let line = getline(n)
+-    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
++    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)'
+       setf objc
+       return
+     endif
+@@ -1070,6 +1091,9 @@
+ " Maya Extension Language
+ au BufNewFile,BufRead *.mel			setf mel
+ 
++" Mercurial config (looks like generic config file)
++au BufNewFile,BufRead *.hgrc,*hgrc		setf cfg
++
+ " Messages
+ au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9]  setf messages
+ 
+@@ -1260,7 +1284,7 @@
+ else
+   au BufNewFile,BufRead *.pl			call s:FTpl()
+ endif
+-au BufNewFile,BufRead *.plx			setf perl
++au BufNewFile,BufRead *.plx,*.al		setf perl
+ 
+ func! s:FTpl()
+   if exists("g:filetype_pl")
+@@ -1372,6 +1396,10 @@
+ " PPWizard
+ au BufNewFile,BufRead *.it,*.ih			setf ppwiz
+ 
++" Obj 3D file format
++" TODO: is there a way to avoid MS-Windows Object files?
++au BufNewFile,BufRead *.obj         		setf obj
++
+ " Oracle Pro*C/C++
+ au BufNewFile,BufRead *.pc			setf proc
+ 
+@@ -1552,6 +1580,7 @@
+ 
+ " Remind
+ au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
++au BufNewFile,BufRead *.remind,*.rem		setf remind
+ 
+ " Resolv.conf
+ au BufNewFile,BufRead resolv.conf		setf resolv
+@@ -1586,7 +1615,7 @@
+ " Rantfile and Rakefile is like Ruby
+ au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
+ 
+-" S-lang (or shader language!)
++" S-lang (or shader language, or SmallLisp)
+ au BufNewFile,BufRead *.sl			setf slang
+ 
+ " Samba config
+@@ -1685,7 +1714,15 @@
+   if expand("<amatch>") =~ g:ft_ignore_pat
+     return
+   endif
+-  if a:name =~ '\<ksh\>'
++  if a:name =~ '\<csh\>'
++    " Some .sh scripts contain #!/bin/csh.
++    call SetFileTypeShell("csh")
++    return
++  elseif a:name =~ '\<tcsh\>'
++    " Some .sh scripts contain #!/bin/tcsh.
++    call SetFileTypeShell("tcsh")
++    return
++  elseif a:name =~ '\<ksh\>'
+     let b:is_kornshell = 1
+     if exists("b:is_bash")
+       unlet b:is_bash
+@@ -1823,10 +1860,15 @@
+ 
+ let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
+ func! s:FTRules()
+-  if expand('<amatch>:p') =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$'
++  let path = expand('<amatch>:p')
++  if path =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$'
+     setf udevrules
+     return
+   endif
++  if path =~ '^/etc/ufw/'
++    setf conf  " Better than hog
++    return
++  endif
+   try
+     let config_lines = readfile('/etc/udev/udev.conf')
+   catch /^Vim\%((\a\+)\)\=:E484/
+@@ -1909,9 +1951,15 @@
+ " Sysctl
+ au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
+ 
++" Synopsys Design Constraints
++au BufNewFile,BufRead *.sdc			setf sdc
++
+ " Sudoers
+ au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
+ 
++" SVG (Scalable Vector Graphics)
++au BufNewFile,BufRead *.svg			setf svg
++
+ " If the file has an extension of 't' and is in a directory 't' then it is
+ " almost certainly a Perl test file.
+ " If the first line starts with '#' and contains 'perl' it's probably a Perl
+@@ -1944,6 +1992,10 @@
+ " TAK
+ au BufNewFile,BufRead *.tak			setf tak
+ 
++" Task
++au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
++au BufRead,BufNewFile *.task                    setf taskedit
++
+ " Tcl (JACL too)
+ au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
+ 
+@@ -2079,8 +2131,13 @@
+ " Viminfo file
+ au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
+ 
+-" Virata Config Script File
+-au BufRead,BufNewFile *.hw,*.module,*.pkg	setf virata
++" Virata Config Script File or Drupal module
++au BufRead,BufNewFile *.hw,*.module,*.pkg
++	\ if getline(1) =~ '<?php' |
++	\   setf php |
++	\ else |
++	\   setf virata |
++	\ endif
+ 
+ " Visual Basic (also uses *.bas) or FORM
+ au BufNewFile,BufRead *.frm			call s:FTVB("form")
+@@ -2325,6 +2382,9 @@
+ 	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
+ 	\|endif
+ 
++" Gedcom
++au BufNewFile,BufRead /tmp/lltmp*		call s:StarSetf('gedcom')
++
+ " GTK RC
+ au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
+ 
+diff -Nur runtime/filetype.vim.~1~ runtime/filetype.vim.~1~
+diff -Nur runtime/ftplugin/abaqus.vim runtime/ftplugin/abaqus.vim
+--- runtime/ftplugin/abaqus.vim	2004-07-06 11:28:08.000000000 -0700
++++ runtime/ftplugin/abaqus.vim	2011-01-18 10:40:55.814945349 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin file
+ " Language:     Abaqus finite element input file (www.abaqus.com)
+ " Maintainer:   Carl Osterwisch <[email protected]>
+-" Last Change:  2004 Jul 06
++" Last Change:  2008 Oct 5
+ 
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin") | finish | endif
+@@ -13,13 +13,6 @@
+ let s:cpo_save = &cpoptions
+ set cpoptions&vim
+ 
+-" Folding
+-if version >= 600
+-    " Fold all lines that do not begin with *
+-    setlocal foldexpr=getline(v:lnum)[0]!=\"\*\"
+-    setlocal foldmethod=expr
+-endif
+-
+ " Set the format of the include file specification for Abaqus
+ " Used in :check gf ^wf [i and other commands
+ setlocal include=\\<\\cINPUT\\s*=
+@@ -42,29 +35,43 @@
+ " Abaqus keywords and identifiers may include a - character
+ setlocal iskeyword+=-
+ 
++let b:undo_ftplugin = "setlocal include< includeexpr< isfname<"
++    \ . " comments< commentstring< define< iskeyword<"
++
++if has("folding")
++    " Fold all lines that do not begin with *
++    setlocal foldexpr=getline(v:lnum)[0]!=\"\*\"
++    setlocal foldmethod=expr
++    let b:undo_ftplugin .= " foldexpr< foldmethod<"
++endif
++
+ " Set the file browse filter (currently only supported under Win32 gui)
+ if has("gui_win32") && !exists("b:browsefilter")
+     let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" .
+     \ "Abaqus Results (*.dat)\t*.dat\n" .
+     \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" .
+     \ "All Files (*.*)\t*.*\n"
++    let b:undo_ftplugin .= "|unlet b:browsefilter"
+ endif
+ 
+-" Define keys used to move [count] sections backward or forward.
+-" TODO: Make this do something intelligent in visual mode.
+-nnoremap <silent> <buffer> [[ :call <SID>Abaqus_Jump('?^\*\a?')<CR>
+-nnoremap <silent> <buffer> ]] :call <SID>Abaqus_Jump('/^\*\a/')<CR>
+-function! <SID>Abaqus_Jump(motion) range
+-    let s:count = v:count1
+-    mark '
+-    while s:count > 0
+-        silent! execute a:motion
+-        let s:count = s:count - 1
+-    endwhile
+-endfunction
++" Define patterns for the matchit plugin
++if exists("loaded_matchit") && !exists("b:match_words")
++    let b:match_ignorecase = 1
++    let b:match_words = 
++    \ '\*part:\*end\s*part,' .
++    \ '\*assembly:\*end\s*assembly,' .
++    \ '\*instance:\*end\s*instance,' .
++    \ '\*step:\*end\s*step'
++    let b:undo_ftplugin .= "|unlet b:match_ignorecase b:match_words"
++endif
++
++" Define keys used to move [count] keywords backward or forward.
++noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR>
++noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR>
+ 
+ " Define key to toggle commenting of the current line or range
+-noremap <silent> <buffer> <m-c> :call <SID>Abaqus_ToggleComment()<CR>j
++noremap <silent><buffer> <LocalLeader><LocalLeader> 
++    \ :call <SID>Abaqus_ToggleComment()<CR>j
+ function! <SID>Abaqus_ToggleComment() range
+     if strpart(getline(a:firstline), 0, 2) == "**"
+         " Un-comment all lines in range
+@@ -75,5 +82,8 @@
+     endif
+ endfunction
+ 
++let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]"
++    \ . "|unmap <buffer> <LocalLeader><LocalLeader>"
++
+ " Restore saved compatibility options
+ let &cpoptions = s:cpo_save
+diff -Nur runtime/ftplugin/ant.vim runtime/ftplugin/ant.vim
+--- runtime/ftplugin/ant.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/ant.vim	2011-01-18 10:40:55.816180448 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	ant
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/aspvbs.vim runtime/ftplugin/aspvbs.vim
+--- runtime/ftplugin/aspvbs.vim	2004-06-28 08:27:17.000000000 -0700
++++ runtime/ftplugin/aspvbs.vim	2011-01-18 10:40:55.817102616 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	aspvbs
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2004 Jun 28
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/changelog.vim runtime/ftplugin/changelog.vim
+--- runtime/ftplugin/changelog.vim	2007-05-21 11:25:11.000000000 -0700
++++ runtime/ftplugin/changelog.vim	2011-04-03 09:27:21.620554106 -0700
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin file
+ " Language:         generic Changelog file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2007-05-21
++" Latest Revision:  2009-05-25
+ " Variables:
+ "   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
+ "       description: the timeformat used in ChangeLog entries.
+@@ -46,73 +46,78 @@
+     endif
+   endif
+ 
+-  " Try to figure out a reasonable username of the form:
+-  "   Full Name <user@host>.
+-  if !exists('g:changelog_username')
+-    if exists('$EMAIL') && $EMAIL != ''
+-      let g:changelog_username = $EMAIL
+-    elseif exists('$EMAIL_ADDRESS') && $EMAIL_ADDRESS != ''
+-      " This is some Debian junk if I remember correctly.
+-      let g:changelog_username = $EMAIL_ADDRESS
+-    else
+-      " Get the users login name.
+-      let login = system('whoami')
+-      if v:shell_error
+-        let login = 'unknown'
+-      else
+-        let newline = stridx(login, "\n")
+-        if newline != -1
+-          let login = strpart(login, 0, newline)
+-        endif
+-      endif
++  function! s:username()
++    if exists('g:changelog_username')
++      return g:changelog_username
++    elseif $EMAIL != ""
++      return $EMAIL
++    elseif $EMAIL_ADDRESS != ""
++      return $EMAIL_ADDRESS
++    endif
++    
++    let login = s:login()
++    return printf('%s <%s@%s>', s:name(login), login, s:hostname())
++  endfunction
+ 
+-      " Try to get the full name from gecos field in /etc/passwd.
+-      if filereadable('/etc/passwd')
+-        for line in readfile('/etc/passwd')
+-          if line =~ '^' . login
+-            let name = substitute(line,'^\%([^:]*:\)\{4}\([^:]*\):.*$','\1','')
+-            " Only keep stuff before the first comma.
+-            let comma = stridx(name, ',')
+-            if comma != -1
+-              let name = strpart(name, 0, comma)
+-            endif
+-            " And substitute & in the real name with the login of our user.
+-            let amp = stridx(name, '&')
+-            if amp != -1
+-              let name = strpart(name, 0, amp) . toupper(login[0]) .
+-                       \ strpart(login, 1) . strpart(name, amp + 1)
+-            endif
+-          endif
+-        endfor
+-      endif
++  function! s:login()
++    return s:trimmed_system_with_default('whoami', 'unknown')
++  endfunction
+ 
+-      " If we haven't found a name, try to gather it from other places.
+-      if !exists('name')
+-        " Maybe the environment has something of interest.
+-        if exists("$NAME")
+-          let name = $NAME
+-        else
+-          " No? well, use the login name and capitalize first
+-          " character.
+-          let name = toupper(login[0]) . strpart(login, 1)
+-        endif
++  function! s:trimmed_system_with_default(command, default)
++    return s:first_line(s:system_with_default(a:command, a:default))
++  endfunction
++
++  function! s:system_with_default(command, default)
++    let output = system(a:command)
++    if v:shell_error
++      return default
++    endif
++    return output
++  endfunction
++
++  function! s:first_line(string)
++    return substitute(a:string, '\n.*$', "", "")
++  endfunction
++
++  function! s:name(login)
++    for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)]
++      if name != ""
++        return name
+       endif
++    endfor
++  endfunction
+ 
+-      " Get our hostname.
+-      let hostname = system('hostname')
+-      if v:shell_error
+-        let hostname = 'localhost'
+-      else
+-        let newline = stridx(hostname, "\n")
+-        if newline != -1
+-          let hostname = strpart(hostname, 0, newline)
+-        endif
++  function! s:gecos_name(login)
++    for line in s:try_reading_file('/etc/passwd')
++      if line =~ '^' . a:login . ':'
++        return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "")
+       endif
++    endfor
++    return ""
++  endfunction
+ 
+-      " And finally set the username.
+-      let g:changelog_username = name . '  <' . login . '@' . hostname . '>'
++  function! s:try_reading_file(path)
++    try
++      return readfile(a:path)
++    endtry
++    return []
++  endfunction
++
++  function! s:passwd_field(line, field)
++    let fields = split(a:line, ':', 1)
++    if len(fields) < field
++      return ""
+     endif
+-  endif
++    return fields[field - 1]
++  endfunction
++
++  function! s:capitalize(word)
++    return toupper(a:word[0]) . strpart(a:word, 1)
++  endfunction
++
++  function! s:hostname()
++    return s:trimmed_system_with_default('hostname', 'localhost')
++  endfunction
+ 
+   " Format used for new date entries.
+   if !exists('g:changelog_new_date_format')
+@@ -178,7 +183,7 @@
+       " Ok, now we look for the end of the date entry, and add an entry.
+       call cursor(nextnonblank(line('.') + 1), 1)
+       if search(g:changelog_date_end_entry_search, 'W') > 0
+-        let p = line('.') - 1
++	let p = (line('.') == line('$')) ? line('.') : line('.') - 1
+       else
+         let p = line('.')
+       endif
+@@ -217,7 +222,7 @@
+   endfunction
+ 
+   if exists(":NewChangelogEntry") != 2
+-    map <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR>
++    noremap <buffer> <silent> <Leader>o <Esc>:call <SID>new_changelog_entry()<CR>
+     command! -nargs=0 NewChangelogEntry call s:new_changelog_entry()
+   endif
+ 
+@@ -236,14 +241,48 @@
+   let &cpo = s:cpo_save
+   unlet s:cpo_save
+ else
++  let s:cpo_save = &cpo
++  set cpo&vim
++
+   " Add the Changelog opening mapping
+-  nmap <silent> <Leader>o :call <SID>open_changelog()<CR>
++  nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR>
+ 
+   function! s:open_changelog()
+-    if !filereadable('ChangeLog')
++    let path = expand('%:p:h')
++    if exists('b:changelog_path')
++      let changelog = b:changelog_path
++    else
++      if exists('b:changelog_name')
++        let name = b:changelog_name
++      else
++        let name = 'ChangeLog'
++      endif
++      while isdirectory(path)
++        let changelog = path . '/' . name
++        if filereadable(changelog)
++          break
++        endif
++        let parent = substitute(path, '/\+[^/]*$', "", "")
++        if path == parent
++          break
++        endif
++        let path = parent
++      endwhile
++    endif
++    if !filereadable(changelog)
+       return
+     endif
+-    let buf = bufnr('ChangeLog')
++
++    if exists('b:changelog_entry_prefix')
++      let prefix = call(b:changelog_entry_prefix, [])
++    else
++      let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") . ':'
++    endif
++    if !empty(prefix)
++      let prefix = ' ' . prefix
++    endif
++
++    let buf = bufnr(changelog)
+     if buf != -1
+       if bufwinnr(buf) != -1
+         execute bufwinnr(buf) . 'wincmd w'
+@@ -251,9 +290,12 @@
+         execute 'sbuffer' buf
+       endif
+     else
+-      split ChangeLog
++      execute 'split' fnameescape(changelog)
+     endif
+ 
+-    call s:new_changelog_entry()
++    call s:new_changelog_entry(prefix)
+   endfunction
++
++  let &cpo = s:cpo_save
++  unlet s:cpo_save
+ endif
+diff -Nur runtime/ftplugin/config.vim runtime/ftplugin/config.vim
+--- runtime/ftplugin/config.vim	2004-07-09 11:26:18.000000000 -0700
++++ runtime/ftplugin/config.vim	2011-01-18 10:40:55.832875756 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	config
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2004 Jul 08
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/csc.vim runtime/ftplugin/csc.vim
+--- runtime/ftplugin/csc.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/csc.vim	2011-01-18 10:40:55.834673574 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	csc
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/csh.vim runtime/ftplugin/csh.vim
+--- runtime/ftplugin/csh.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/csh.vim	2011-01-18 10:40:55.834978941 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	csh
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/cucumber.vim runtime/ftplugin/cucumber.vim
+--- runtime/ftplugin/cucumber.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/ftplugin/cucumber.vim	2011-04-03 09:27:21.625495610 -0700
+@@ -0,0 +1,132 @@
++" Vim filetype plugin
++" Language:	Cucumber
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
++
++" Only do this when not done yet for this buffer
++if (exists("b:did_ftplugin"))
++  finish
++endif
++let b:did_ftplugin = 1
++
++setlocal formatoptions-=t formatoptions+=croql
++setlocal comments=:# commentstring=#\ %s
++setlocal omnifunc=CucumberComplete
++
++let b:undo_ftplugin = "setl fo< com< cms< ofu<"
++
++let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
++
++if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
++  nmap <silent><buffer> <C-]>       :<C-U>exe <SID>jump('edit',v:count)<CR>
++  nmap <silent><buffer> <C-W>]      :<C-U>exe <SID>jump('split',v:count)<CR>
++  nmap <silent><buffer> <C-W><C-]>  :<C-U>exe <SID>jump('split',v:count)<CR>
++  nmap <silent><buffer> <C-W>}      :<C-U>exe <SID>jump('pedit',v:count)<CR>
++  let b:undo_ftplugin .= "| sil! iunmap! <C-]>| sil! iunmap! <C-W>]| sil! iunmap! <C-W><C-]>| sil! iunmap! <C-W>}"
++endif
++
++function! s:jump(command,count)
++  let steps = s:steps('.')
++  if len(steps) == 0 || len(steps) < a:count
++    return 'echoerr "No matching step found"'
++  elseif len(steps) > 1 && !a:count
++    return 'echoerr "Multiple matching steps found"'
++  else
++    let c = a:count ? a:count-1 : 0
++    return a:command.' +'.steps[c][1].' '.escape(steps[c][0],' %#')
++  endif
++endfunction
++
++function! s:allsteps()
++  let step_pattern = '\C^\s*\K\k*\>\s*\zs\S.\{-\}\ze\s*\%(do\|{\)\s*\%(|[^|]*|\s*\)\=\%($\|#\)'
++  let steps = []
++  for file in split(glob(b:cucumber_root.'/**/*.rb'),"\n")
++    let lines = readfile(file)
++    let num = 0
++    for line in lines
++      let num += 1
++      if line =~ step_pattern
++        let type = matchstr(line,'\w\+')
++        let steps += [[file,num,type,matchstr(line,step_pattern)]]
++      endif
++    endfor
++  endfor
++  return steps
++endfunction
++
++function! s:steps(lnum)
++  let c = indent(a:lnum) + 1
++  while synIDattr(synID(a:lnum,c,1),'name') !~# '^$\|Region$'
++    let c = c + 1
++  endwhile
++  let step = matchstr(getline(a:lnum)[c-1 : -1],'^\s*\zs.\{-\}\ze\s*$')
++  return filter(s:allsteps(),'s:stepmatch(v:val[3],step)')
++endfunction
++
++function! s:stepmatch(receiver,target)
++  if a:receiver =~ '^[''"].*[''"]$'
++    let pattern = '^'.escape(substitute(a:receiver[1:-2],'$\w\+','(.*)','g'),'/').'$'
++  elseif a:receiver =~ '^/.*/$'
++    let pattern = a:receiver[1:-2]
++  elseif a:receiver =~ '^%r..*.$'
++    let pattern = escape(a:receiver[3:-2],'/')
++  else
++    return 0
++  endif
++  try
++    let vimpattern = substitute(substitute(pattern,'\\\@<!(?:','%(','g'),'\\\@<!\*?','{-}','g')
++    if a:target =~# '\v'.vimpattern
++      return 1
++    endif
++  catch
++  endtry
++  if has("ruby")
++    ruby VIM.command("return #{if (begin; Kernel.eval('/'+VIM.evaluate('pattern')+'/'); rescue SyntaxError; end) === VIM.evaluate('a:target') then 1 else 0 end}")
++  else
++    return 0
++  endif
++endfunction
++
++function! s:bsub(target,pattern,replacement)
++  return  substitute(a:target,'\C\\\@<!'.a:pattern,a:replacement,'g')
++endfunction
++
++function! CucumberComplete(findstart,base) abort
++  let indent = indent('.')
++  let group = synIDattr(synID(line('.'),indent+1,1),'name')
++  let type = matchstr(group,'\Ccucumber\zs\%(Given\|When\|Then\)')
++  let e = matchend(getline('.'),'^\s*\S\+\s')
++  if type == '' || col('.') < col('$') || e < 0
++    return -1
++  endif
++  if a:findstart
++    return e
++  endif
++  let steps = []
++  for step in s:allsteps()
++    if step[2] ==# type
++      if step[3] =~ '^[''"]'
++        let steps += [step[3][1:-2]]
++      elseif step[3] =~ '^/\^.*\$/$'
++        let pattern = step[3][2:-3]
++        let pattern = substitute(pattern,'\C^(?:|I )','I ','')
++        let pattern = s:bsub(pattern,'\\[Sw]','w')
++        let pattern = s:bsub(pattern,'\\d','1')
++        let pattern = s:bsub(pattern,'\\[sWD]',' ')
++        let pattern = s:bsub(pattern,'\[\^\\\="\]','_')
++        let pattern = s:bsub(pattern,'[[:alnum:]. _-][?*]?\=','')
++        let pattern = s:bsub(pattern,'\[\([^^]\).\{-\}\]','\1')
++        let pattern = s:bsub(pattern,'+?\=','')
++        let pattern = s:bsub(pattern,'(\([[:alnum:]. -]\{-\}\))','\1')
++        let pattern = s:bsub(pattern,'\\\([[:punct:]]\)','\1')
++        if pattern !~ '[\\()*?]'
++          let steps += [pattern]
++        endif
++      endif
++    endif
++  endfor
++  call filter(steps,'strpart(v:val,0,strlen(a:base)) ==# a:base')
++  return sort(steps)
++endfunction
++
++" vim:set sts=2 sw=2:
+diff -Nur runtime/ftplugin/debchangelog.vim runtime/ftplugin/debchangelog.vim
+--- runtime/ftplugin/debchangelog.vim	2008-07-06 10:51:40.000000000 -0700
++++ runtime/ftplugin/debchangelog.vim	2011-04-03 09:27:21.626251656 -0700
+@@ -1,14 +1,14 @@
+ " Vim filetype plugin file (GUI menu, folding and completion)
+-" Language:	Debian Changelog
+-" Maintainer:	Debian Vim Maintainers <[email protected]>
+-" Former Maintainers:	Michael Piefel <[email protected]>
+-"			Stefano Zacchiroli <[email protected]>
+-" Last Change:	2008-03-08
+-" License:	GNU GPL, version 2.0 or later
+-" URL:		http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debchangelog.vim;hb=debian
++" Language:     Debian Changelog
++" Maintainer:   Debian Vim Maintainers <[email protected]>
++" Former Maintainers:   Michael Piefel <[email protected]>
++"                       Stefano Zacchiroli <[email protected]>
++" Last Change:  2010-04-29
++" License:      GNU GPL, version 2.0 or later
++" URL:          http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debchangelog.vim
+ 
+ " Bug completion requires apt-listbugs installed for Debian packages or
+-" python-launchpad-bugs installed for Ubuntu packages
++" python-launchpadlib installed for Ubuntu packages
+ 
+ if exists("b:did_ftplugin")
+   finish
+@@ -329,17 +329,26 @@
+       python << EOF
+ import vim
+ try:
+-    from launchpadbugs import connector
+-    buglist = connector.ConnectBugList()
+-    bl = list(buglist('https://bugs.launchpad.net/ubuntu/+source/%s' % vim.eval('pkgsrc')))
+-    bl.sort(None, int)
+-    liststr = '['
+-    for bug in bl:
+-        liststr += "'#%d - %s'," % (int(bug), bug.summary.replace('\'', '\'\''))
+-    liststr += ']'
+-    vim.command('silent let bug_lines = %s' % liststr)
++    from launchpadlib.launchpad import Launchpad
++    from lazr.restfulclient.errors import HTTPError
++    # login anonymously
++    lp = Launchpad.login_anonymously('debchangelog.vim', 'production')
++    ubuntu = lp.distributions['ubuntu']
++    try:
++        sp = ubuntu.getSourcePackage(name=vim.eval('pkgsrc'))
++        status = ('New', 'Incomplete', 'Confirmed', 'Triaged',
++                  'In Progress', 'Fix Committed')
++        tasklist = sp.searchTasks(status=status, order_by='id')
++        liststr = '['
++        for task in tasklist:
++            bug = task.bug
++            liststr += "'#%d - %s'," % (bug.id, bug.title.replace('\'', '\'\''))
++        liststr += ']'
++        vim.command('silent let bug_lines = %s' % liststr.encode('utf-8'))
++    except HTTPError:
++        pass
+ except ImportError:
+-    vim.command('echoerr \'python-launchpad-bugs needs to be installed to use Launchpad bug completion\'')
++    vim.command('echoerr \'python-launchpadlib >= 1.5.4 needs to be installed to use Launchpad bug completion\'')
+ EOF
+     else
+       if ! filereadable('/usr/sbin/apt-listbugs')
+diff -Nur runtime/ftplugin/debcontrol.vim runtime/ftplugin/debcontrol.vim
+--- runtime/ftplugin/debcontrol.vim	2008-06-20 08:34:16.000000000 -0700
++++ runtime/ftplugin/debcontrol.vim	2011-01-18 10:40:55.837036201 -0800
+@@ -1,9 +1,9 @@
+ " Vim filetype plugin file (GUI menu and folding)
+-" Language:	Debian control files
+-" Maintainer:	Debian Vim Maintainers <[email protected]>
+-" Former Maintainer:	Pierre Habouzit <[email protected]>
+-" Last Change:	2008-03-08
+-" URL:		http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
++" Language:     Debian control files
++" Maintainer:   Debian Vim Maintainers <[email protected]>
++" Former Maintainer:    Pierre Habouzit <[email protected]>
++" Last Change:  2008-03-08
++" URL:          http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debcontrol.vim
+ 
+ " Do these settings once per buffer
+ if exists("b:did_ftplugin")
+diff -Nur runtime/ftplugin/dosbatch.vim runtime/ftplugin/dosbatch.vim
+--- runtime/ftplugin/dosbatch.vim	2004-07-06 09:39:15.000000000 -0700
++++ runtime/ftplugin/dosbatch.vim	2011-01-18 10:40:55.839507317 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin file
+ " Language:    MS-DOS .bat files
+ " Maintainer:  Mike Williams <[email protected]>
+-" Last Change: 5th February 2003
++" Last Change: 27th May 2009
+ 
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+@@ -12,10 +12,10 @@
+ let b:did_ftplugin = 1
+ 
+ " BAT comment formatting
+-setlocal comments=b:rem,b:@rem,b:REM,b:@REM,b:::
++setlocal comments=b:rem,b:@rem,b:REM,b:@REM,:::
+ setlocal formatoptions-=t formatoptions+=rol
+ 
+ " Define patterns for the browse file filter
+ if has("gui_win32") && !exists("b:browsefilter")
+-  let b:browsefilter = "DOS Batch Files (*.bat, *.btm, *.cmd)\t*.bat;*.btm;*.cmd\nAll Files (*.*)\t*.*\n"
++  let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n"
+ endif
+diff -Nur runtime/ftplugin/dtd.vim runtime/ftplugin/dtd.vim
+--- runtime/ftplugin/dtd.vim	2008-07-18 04:28:26.000000000 -0700
++++ runtime/ftplugin/dtd.vim	2011-01-18 10:40:55.840235662 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	dtd
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 30 Jun 2008
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/eruby.vim runtime/ftplugin/eruby.vim
+--- runtime/ftplugin/eruby.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/ftplugin/eruby.vim	2011-01-18 10:40:55.841366021 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin
+ " Language:		eRuby
+-" Maintainer:		Tim Pope <[email protected]>
+-" Info:			$Id: eruby.vim,v 1.12 2008/06/29 04:18:43 tpope Exp $
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2010 Apr 15
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+@@ -27,7 +27,10 @@
+   let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+   let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
+   if b:eruby_subtype == ''
+-    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\)\+$','',''),'\.\zs\w\+$')
++    let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+')
++  endif
++  if b:eruby_subtype == ''
++    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$')
+   endif
+   if b:eruby_subtype == 'rhtml'
+     let b:eruby_subtype = 'html'
+diff -Nur runtime/ftplugin/git.vim runtime/ftplugin/git.vim
+--- runtime/ftplugin/git.vim	2008-07-31 13:07:24.000000000 -0700
++++ runtime/ftplugin/git.vim	2011-01-18 10:40:55.844100304 -0800
+@@ -1,33 +1,36 @@
+ " Vim filetype plugin
+ " Language:	generic git output
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2008 Jul 30
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
+ 
+ " Only do this when not done yet for this buffer
+ if (exists("b:did_ftplugin"))
+-    finish
++  finish
+ endif
+ let b:did_ftplugin = 1
+ 
+ if !exists('b:git_dir')
+-    if expand('%:p') =~# '\.git\>'
+-        let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
+-    elseif $GIT_DIR != ''
+-        let b:git_dir = $GIT_DIR
+-    endif
+-    if (has('win32') || has('win64')) && exists('b:git_dir')
+-        let b:git_dir = substitute(b:git_dir,'\\','/','g')
+-    endif
++  if expand('%:p') =~# '\.git\>'
++    let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
++  elseif $GIT_DIR != ''
++    let b:git_dir = $GIT_DIR
++  endif
++  if (has('win32') || has('win64')) && exists('b:git_dir')
++    let b:git_dir = substitute(b:git_dir,'\\','/','g')
++  endif
+ endif
+ 
+ if exists('*shellescape') && exists('b:git_dir') && b:git_dir != ''
+-    if b:git_dir =~# '/\.git$' " Not a bare repository
+-        let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path
+-    endif
+-    let &l:path = escape(b:git_dir,'\, ').','.&l:path
+-    let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'
++  if b:git_dir =~# '/\.git$' " Not a bare repository
++    let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path
++  endif
++  let &l:path = escape(b:git_dir,'\, ').','.&l:path
++  let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'
+ else
+-    setlocal keywordprg=git\ show
++  setlocal keywordprg=git\ show
++endif
++if has('gui_running')
++  let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','')
+ endif
+ 
+ setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
+diff -Nur runtime/ftplugin/gitcommit.vim runtime/ftplugin/gitcommit.vim
+--- runtime/ftplugin/gitcommit.vim	2008-06-04 08:39:49.000000000 -0700
++++ runtime/ftplugin/gitcommit.vim	2011-01-18 10:40:55.844561839 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin
+-" Language:	git config file
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2008 Jun 04
++" Language:	git commit file
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
+ 
+ " Only do this when not done yet for this buffer
+ if (exists("b:did_ftplugin"))
+@@ -15,7 +15,7 @@
+   " make sure that log messages play nice with git-log on standard terminals
+   setlocal textwidth=72
+   if !exists("b:undo_ftplugin")
+-      let b:undo_ftplugin = ""
++    let b:undo_ftplugin = ""
+   endif
+   let b:undo_ftplugin = b:undo_ftplugin . "|setl tw<"
+ endif
+@@ -25,7 +25,7 @@
+ endif
+ 
+ if !exists("b:git_dir")
+-    let b:git_dir = expand("%:p:h")
++  let b:git_dir = expand("%:p:h")
+ endif
+ 
+ " Automatically diffing can be done with:
+@@ -33,36 +33,36 @@
+ command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+ 
+ function! s:diffcomplete(A,L,P)
+-    let args = ""
+-    if a:P <= match(a:L." -- "," -- ")+3
+-        let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
+-    end
+-    if exists("b:git_dir") && a:A !~ '^-'
+-        let tree = fnamemodify(b:git_dir,':h')
+-        if strpart(getcwd(),0,strlen(tree)) == tree
+-            let args = args."\n".system("git diff --cached --name-only")
+-        endif
++  let args = ""
++  if a:P <= match(a:L." -- "," -- ")+3
++    let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
++  end
++  if exists("b:git_dir") && a:A !~ '^-'
++    let tree = fnamemodify(b:git_dir,':h')
++    if strpart(getcwd(),0,strlen(tree)) == tree
++      let args = args."\n".system("git diff --cached --name-only")
+     endif
+-    return args
++  endif
++  return args
+ endfunction
+ 
+ function! s:gitdiffcached(bang,gitdir,...)
+-    let tree = fnamemodify(a:gitdir,':h')
+-    let name = tempname()
+-    let git = "git"
+-    if strpart(getcwd(),0,strlen(tree)) != tree
+-        let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
+-    endif
+-    if a:0
+-        let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
+-    else
+-        let extra = "-p --stat=".&columns
+-    endif
+-    call system(git." diff --cached --no-color ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
+-    exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
+-    wincmd P
+-    let b:git_dir = a:gitdir
+-    command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+-    nnoremap <silent> q :q<CR>
+-    setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
++  let tree = fnamemodify(a:gitdir,':h')
++  let name = tempname()
++  let git = "git"
++  if strpart(getcwd(),0,strlen(tree)) != tree
++    let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
++  endif
++  if a:0
++    let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
++  else
++    let extra = "-p --stat=".&columns
++  endif
++  call system(git." diff --cached --no-color ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
++  exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
++  wincmd P
++  let b:git_dir = a:gitdir
++  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
++  nnoremap <silent> q :q<CR>
++  setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
+ endfunction
+diff -Nur runtime/ftplugin/gitconfig.vim runtime/ftplugin/gitconfig.vim
+--- runtime/ftplugin/gitconfig.vim	2007-12-16 20:45:14.000000000 -0800
++++ runtime/ftplugin/gitconfig.vim	2011-01-18 10:40:55.844854522 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin
+ " Language:	git config file
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2007 Dec 16
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2009 Dec 24
+ 
+ " Only do this when not done yet for this buffer
+ if (exists("b:did_ftplugin"))
+diff -Nur runtime/ftplugin/gitrebase.vim runtime/ftplugin/gitrebase.vim
+--- runtime/ftplugin/gitrebase.vim	2008-04-16 01:12:25.000000000 -0700
++++ runtime/ftplugin/gitrebase.vim	2011-01-18 10:40:55.845192754 -0800
+@@ -1,11 +1,11 @@
+ " Vim filetype plugin
+ " Language:	git rebase --interactive
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2008 Apr 16
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
+ 
+ " Only do this when not done yet for this buffer
+ if (exists("b:did_ftplugin"))
+-    finish
++  finish
+ endif
+ 
+ runtime! ftplugin/git.vim
+@@ -13,27 +13,29 @@
+ 
+ setlocal comments=:# commentstring=#\ %s formatoptions-=t
+ if !exists("b:undo_ftplugin")
+-    let b:undo_ftplugin = ""
++  let b:undo_ftplugin = ""
+ endif
+ let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo<"
+ 
+ function! s:choose(word)
+-    s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
++  s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
+ endfunction
+ 
+ function! s:cycle()
+-    call s:choose(get({'s':'edit','p':'squash'},getline('.')[0],'pick'))
++  call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick'))
+ endfunction
+ 
+ command! -buffer -bar Pick   :call s:choose('pick')
+ command! -buffer -bar Squash :call s:choose('squash')
+ command! -buffer -bar Edit   :call s:choose('edit')
++command! -buffer -bar Reword :call s:choose('reword')
++command! -buffer -bar Fixup  :call s:choose('fixup')
+ command! -buffer -bar Cycle  :call s:cycle()
+ " The above are more useful when they are mapped; for example:
+ "nnoremap <buffer> <silent> S :Cycle<CR>
+ 
+ if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
+-    finish
++  finish
+ endif
+ 
+ nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
+diff -Nur runtime/ftplugin/gitsendemail.vim runtime/ftplugin/gitsendemail.vim
+--- runtime/ftplugin/gitsendemail.vim	2007-12-16 20:45:20.000000000 -0800
++++ runtime/ftplugin/gitsendemail.vim	2011-01-18 10:40:55.845612189 -0800
+@@ -1,6 +1,6 @@
+ " Vim filetype plugin
+ " Language:	git send-email message
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2007 Dec 16
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2009 Dec 24
+ 
+ runtime! ftplugin/mail.vim
+diff -Nur runtime/ftplugin/haml.vim runtime/ftplugin/haml.vim
+--- runtime/ftplugin/haml.vim	2008-07-03 13:03:41.000000000 -0700
++++ runtime/ftplugin/haml.vim	2011-01-18 10:40:55.846844973 -0800
+@@ -1,6 +1,7 @@
+ " Vim filetype plugin
+ " Language:		Haml
+-" Maintainer:		Tim Pope <[email protected]>
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2010 May 21
+ 
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+@@ -56,7 +57,7 @@
+   let b:match_words = s:match_words
+ endif
+ 
+-setlocal commentstring=-#\ %s
++setlocal comments= commentstring=-#\ %s
+ 
+ let b:undo_ftplugin = "setl cms< com< "
+       \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
+diff -Nur runtime/ftplugin/html.vim runtime/ftplugin/html.vim
+--- runtime/ftplugin/html.vim	2008-07-18 04:29:43.000000000 -0700
++++ runtime/ftplugin/html.vim	2011-01-18 10:40:55.849053405 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	html
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2007 Nov 20
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/java.vim runtime/ftplugin/java.vim
+--- runtime/ftplugin/java.vim	2005-03-28 10:41:45.000000000 -0800
++++ runtime/ftplugin/java.vim	2011-01-18 10:40:55.851015698 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	Java
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Change:  2005 Mar 28
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Change:  20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/jsp.vim runtime/ftplugin/jsp.vim
+--- runtime/ftplugin/jsp.vim	2005-10-11 02:24:29.000000000 -0700
++++ runtime/ftplugin/jsp.vim	2011-01-18 10:40:55.851678577 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	jsp
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2005 Oct 10
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/liquid.vim runtime/ftplugin/liquid.vim
+--- runtime/ftplugin/liquid.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/ftplugin/liquid.vim	2011-01-18 10:40:55.854060071 -0800
+@@ -0,0 +1,61 @@
++" Vim filetype plugin
++" Language:     Liquid
++" Maintainer:   Tim Pope <[email protected]>
++" Last Change:	2010 May 21
++
++if exists('b:did_ftplugin')
++  finish
++endif
++
++if !exists('g:liquid_default_subtype')
++  let g:liquid_default_subtype = 'html'
++endif
++
++if !exists('b:liquid_subtype')
++  let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
++  let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+')
++  if b:liquid_subtype == ''
++    let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+')
++  endif
++  if b:liquid_subtype == ''
++    let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$')
++  endif
++  if b:liquid_subtype == ''
++    let b:liquid_subtype = g:liquid_default_subtype
++  endif
++endif
++
++if exists('b:liquid_subtype') && b:liquid_subtype != ''
++  exe 'runtime! ftplugin/'.b:liquid_subtype.'.vim ftplugin/'.b:liquid_subtype.'_*.vim ftplugin/'.b:liquid_subtype.'/*.vim'
++else
++  runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
++endif
++let b:did_ftplugin = 1
++
++if exists('b:undo_ftplugin')
++  let b:undo_ftplugin .= '|'
++else
++  let b:undo_ftplugin = ''
++endif
++if exists('b:browsefilter')
++  let b:browsefilter = "\n".b:browsefilter
++else
++  let b:browsefilter = ''
++endif
++if exists('b:match_words')
++  let b:match_words .= ','
++elseif exists('loaded_matchit')
++  let b:match_words = ''
++endif
++
++if has('gui_win32')
++  let b:browsefilter="Liquid Files (*.liquid)\t*.liquid" . b:browsefilter
++endif
++
++if exists('loaded_matchit')
++  let b:match_words .= '\<\%(if\w*\|unless\|case\)\>:\<\%(elsif\|else\|when\)\>:\<end\%(if\w*\|unless\|case\)\>,\<\%(for\|tablerow\)\>:\%({%\s*\)\@<=empty\>:\<end\%(for\|tablerow\)\>,<\(capture\|comment\|highlight\)\>:\<end\1\>'
++endif
++
++setlocal commentstring={%\ comment\ %}%s{%\ endcomment\ %}
++
++let b:undo_ftplugin .= 'setl cms< | unlet! b:browsefilter b:match_words'
+diff -Nur runtime/ftplugin/mail.vim runtime/ftplugin/mail.vim
+--- runtime/ftplugin/mail.vim	2007-04-30 13:27:38.000000000 -0700
++++ runtime/ftplugin/mail.vim	2011-01-18 10:40:55.857276801 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin file
+ " Language:	Mail
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2007 Apr 30
++" Last Change:	2009 Jun 03
+ 
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+@@ -23,7 +23,7 @@
+ " Set 'formatoptions' to break text lines and keep the comment leader ">".
+ setlocal fo+=tcql
+ 
+-" Add mappings, unless the user didn't want this.
++" Add mappings, unless the user doesn't want this.
+ if !exists("no_plugin_maps") && !exists("no_mail_maps")
+   " Quote text by inserting "> "
+   if !hasmapto('<Plug>MailQuote')
+diff -Nur runtime/ftplugin/man.vim runtime/ftplugin/man.vim
+--- runtime/ftplugin/man.vim	2007-11-30 11:52:58.000000000 -0800
++++ runtime/ftplugin/man.vim	2011-04-03 09:27:21.627763282 -0700
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin file
+ " Language:	man
+-" Maintainer:	Nam SungHyun <[email protected]>
+-" Last Change:	2007 Nov 30
++" Maintainer:	SungHyun Nam <[email protected]>
++" Last Change:	2008 Sep 17
+ 
+ " To make the ":Man" command available before editing a manual page, source
+ " this script from your startup vimrc file.
+diff -Nur runtime/ftplugin/markdown.vim runtime/ftplugin/markdown.vim
+--- runtime/ftplugin/markdown.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/ftplugin/markdown.vim	2011-01-18 10:40:55.859543519 -0800
+@@ -0,0 +1,19 @@
++" Vim filetype plugin
++" Language:		Markdown
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2010 May 21
++
++if exists("b:did_ftplugin")
++  finish
++endif
++
++runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
++unlet! b:did_ftplugin
++
++setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
++setlocal formatoptions+=tcqln
++setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+
++
++let b:undo_ftplugin .= "|setl cms< com< fo<"
++
++" vim:set sw=2:
+diff -Nur runtime/ftplugin/ocaml.vim runtime/ftplugin/ocaml.vim
+--- runtime/ftplugin/ocaml.vim	2008-08-04 14:24:54.000000000 -0700
++++ runtime/ftplugin/ocaml.vim	2011-01-18 10:40:55.864303027 -0800
+@@ -5,7 +5,8 @@
+ "              Stefano Zacchiroli  <[email protected]>
+ "              Vincent Aravantinos <[email protected]>
+ " URL:         http://www.ocaml.info/vim/ftplugin/ocaml.vim
+-" Last Change: 2008 Jul 17 - Bugfix related to fnameescape (VA)
++" Last Change: 2010 Jul 10 - Bugfix, thanks to Pat Rondon
++"              2008 Jul 17 - Bugfix related to fnameescape (VA)
+ "              2007 Sep 09 - Added .annot support for ocamlbuild, python not 
+ "                            needed anymore (VA)
+ "              2006 May 01 - Added .annot support for file.whateverext (SZ)
+@@ -292,10 +293,6 @@
+     " - b:_build_path: 
+     "                       path to the build directory even if this one is
+     "                       not named '_build'
+-    " - b:source_file_relative_path :
+-    "                       relative path of the source file *in* the build
+-    "                       directory ; this is how it is reffered to in the
+-    "                       .annot file
+   function! s:Locate_annotation()
+     if !b:annotation_file_located
+ 
+@@ -308,7 +305,6 @@
+       if b:annot_file_path != ''
+         let b:annot_file_path = getcwd().'/'.b:annot_file_path
+         let b:_build_path = ''
+-        let b:source_file_relative_path = s:Fnameescape(expand('%'))
+       else
+         " 2nd case : the buffer and the _build directory are in the same directory
+         "      ..
+@@ -323,7 +319,6 @@
+           if b:annot_file_path != ''
+             let b:annot_file_path = getcwd().'/'.b:annot_file_path
+           endif
+-          let b:source_file_relative_path = s:Fnameescape(expand('%'))
+         else
+           " 3rd case : the _build directory is in a directory higher in the file hierarchy 
+           "            (it can't be deeper by ocamlbuild requirements)
+@@ -340,7 +335,6 @@
+             let project_path                = substitute(b:_build_path,'/_build$','','')
+             let path_relative_to_project    = s:Fnameescape(substitute(expand('%:p:h'),project_path.'/','',''))
+             let b:annot_file_path           = findfile(annot_file_name,project_path.'/_build/'.path_relative_to_project)
+-            let b:source_file_relative_path = s:Fnameescape(substitute(expand('%:p'),project_path.'/','',''))
+           else
+             let b:annot_file_path = findfile(annot_file_name,'**')
+             "4th case : what if the user decided to change the name of the _build directory ?
+@@ -352,7 +346,6 @@
+                 let b:annot_file_path = getcwd().'/'.b:annot_file_path
+                 let b:_build_path     = getcwd().'/'.b:_build_path
+               endif
+-              let b:source_file_relative_path = s:Fnameescape(expand('%'))
+             else
+               " 4b. anarchy : the renamed _build directory may be higher in the hierarchy
+               " this will work if the file for which we are looking annotations has a unique name in the whole project
+@@ -360,7 +353,6 @@
+               let b:annot_file_path = findfile(annot_file_name,'**;')
+               let project_path      = s:Find_common_path(b:annot_file_path,expand('%:p:h'))
+               let b:_build_path       = matchstr(b:annot_file_path,project_path.'/[^/]*')
+-              let b:source_file_relative_path = substitute(expand('%:p'),project_path.'/','','')
+             endif
+           endif
+         endif
+@@ -438,11 +430,12 @@
+       let start_num1 = a:lin1
+       let start_num2 = line2byte(a:lin1) - 1
+       let start_num3 = start_num2 + a:col1
+-      let start_pos  = '"'.b:source_file_relative_path.'" '.start_num1.' '.start_num2.' '.start_num3
++      let path       = '"\(\\"\|[^"]\)\+"'
++      let start_pos  = path.' '.start_num1.' '.start_num2.' '.start_num3
+       let end_num1   = a:lin2
+       let end_num2   = line2byte(a:lin2) - 1
+       let end_num3   = end_num2 + a:col2
+-      let end_pos    = '"'.b:source_file_relative_path.'" '.end_num1.' '.end_num2.' '.end_num3
++      let end_pos    = path.' '.end_num1.' '.end_num2.' '.end_num3
+       return '^'.start_pos.' '.end_pos."$"
+       " rq: the '^' here is not totally correct regarding the annot file "grammar"
+       " but currently the annotation file respects this, and it's a little bit faster with the '^';
+diff -Nur runtime/ftplugin/pascal.vim runtime/ftplugin/pascal.vim
+--- runtime/ftplugin/pascal.vim	2005-09-06 01:24:59.000000000 -0700
++++ runtime/ftplugin/pascal.vim	2011-01-18 10:40:55.865241738 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	pascal
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2005 Sep 05
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/perl.vim runtime/ftplugin/perl.vim
+--- runtime/ftplugin/perl.vim	2008-07-18 04:29:05.000000000 -0700
++++ runtime/ftplugin/perl.vim	2011-04-03 09:27:21.641505638 -0700
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	Perl
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Change:  17 Jul 2008
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Change:  20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/php.vim runtime/ftplugin/php.vim
+--- runtime/ftplugin/php.vim	2007-11-11 13:23:33.000000000 -0800
++++ runtime/ftplugin/php.vim	2011-01-18 10:40:55.866908162 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	php
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2007 Nov 10
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/ruby.vim runtime/ftplugin/ruby.vim
+--- runtime/ftplugin/ruby.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/ftplugin/ruby.vim	2011-01-18 10:40:55.878824442 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin
+ " Language:		Ruby
+ " Maintainer:		Gavin Sinclair <gsinclair at gmail.com>
+-" Info:			$Id: ruby.vim,v 1.40 2008/06/29 04:18:43 tpope Exp $
++" Last Change:		2010 Mar 15
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:  Doug Kearns <[email protected]>
+@@ -69,26 +69,28 @@
+ setlocal comments=:#
+ setlocal commentstring=#\ %s
+ 
+-if !exists("s:rubypath")
+-  if has("ruby") && has("win32")
+-    ruby VIM::command( 'let s:rubypath = "%s"' % ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) )
+-    let s:rubypath = '.,' . substitute(s:rubypath, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
++if !exists("s:ruby_path")
++  if exists("g:ruby_path")
++    let s:ruby_path = g:ruby_path
++  elseif has("ruby") && has("win32")
++    ruby VIM::command( 'let s:ruby_path = "%s"' % ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) )
++    let s:ruby_path = '.,' . substitute(s:ruby_path, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
+   elseif executable("ruby")
+     let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
+     if &shellxquote == "'"
+-      let s:rubypath = system('ruby -e "' . s:code . '"')
++      let s:ruby_path = system('ruby -e "' . s:code . '"')
+     else
+-      let s:rubypath = system("ruby -e '" . s:code . "'")
++      let s:ruby_path = system("ruby -e '" . s:code . "'")
+     endif
+-    let s:rubypath = '.,' . substitute(s:rubypath, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
++    let s:ruby_path = '.,' . substitute(s:ruby_path, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
+   else
+     " If we can't call ruby to get its path, just default to using the
+     " current directory and the directory of the current file.
+-    let s:rubypath = ".,,"
++    let s:ruby_path = ".,,"
+   endif
+ endif
+ 
+-let &l:path = s:rubypath
++let &l:path = s:ruby_path
+ 
+ if has("gui_win32") && !exists("b:browsefilter")
+   let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" .
+@@ -102,19 +104,44 @@
+ 
+ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
+ 
+-  noremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b')<CR>
+-  noremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','')<CR>
+-  noremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b')<CR>
+-  noremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','')<CR>
+-
+-  noremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b')<CR>
+-  noremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','')<CR>
+-  noremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b')<CR>
+-  noremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','')<CR>
++  nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','n')<CR>
++  nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','n')<CR>
++  nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','n')<CR>
++  nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','n')<CR>
++  xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','v')<CR>
++  xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','v')<CR>
++  xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','v')<CR>
++  xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','v')<CR>
++
++  nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','n')<CR>
++  nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','n')<CR>
++  nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','n')<CR>
++  nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','n')<CR>
++  xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','v')<CR>
++  xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','v')<CR>
++  xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','v')<CR>
++  xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','v')<CR>
+ 
+   let b:undo_ftplugin = b:undo_ftplugin
+         \."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
+         \."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'"
++
++  if maparg("\<C-]>",'n') == ''
++    nnoremap <silent> <buffer> <C-]>       :<C-U>exe  v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> g<C-]>      :<C-U>exe         "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> g]          :<C-U>exe       "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> <C-W>]      :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> <C-W><C-]>  :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe        "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> <C-W>g]     :<C-U>exe      "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> <C-W>}      :<C-U>exe          "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    nnoremap <silent> <buffer> <C-W>g}     :<C-U>exe        "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
++    let b:undo_ftplugin = b:undo_ftplugin
++          \."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'"
++          \."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'"
++          \."| sil! exe 'nunmap <buffer> <C-W>g<C-]>'| sil! exe 'nunmap <buffer> <C-W>g]'"
++          \."| sil! exe 'nunmap <buffer> <C-W>}'| sil! exe 'nunmap <buffer> <C-W>g}'"
++  endif
+ endif
+ 
+ let &cpo = s:cpo_save
+@@ -174,8 +201,11 @@
+   endif
+ endfunction
+ 
+-function! s:searchsyn(pattern,syn,flags)
++function! s:searchsyn(pattern,syn,flags,mode)
+     norm! m'
++    if a:mode ==# 'v'
++      norm! gv
++    endif
+     let i = 0
+     let cnt = v:count ? v:count : 1
+     while i < cnt
+@@ -197,6 +227,20 @@
+     return synIDattr(synID(line('.'),col('.'),0),'name')
+ endfunction
+ 
++function! RubyCursorIdentifier()
++  let asciicode    = '\%(\w\|[]})\"'."'".']\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)'
++  let number       = '\%(\%(\w\|[]})\"'."'".']\s*\)\@<!-\)\=\%(\<[[:digit:]_]\+\%(\.[[:digit:]_]\+\)\=\%([Ee][[:digit:]_]\+\)\=\>\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode
++  let operator     = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)'
++  let method       = '\%(\<[_a-zA-Z]\w*\>\%([?!]\|\s*=>\@!\)\=\)'
++  let global       = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)'
++  let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)'
++  let pattern      = '\C\s*\%('.number.'\|\%(:\@<!:\)\='.symbolizable.'\)'
++  let [lnum, col]  = searchpos(pattern,'bcn',line('.'))
++  let raw          = matchstr(getline('.')[col-1 : ],pattern)
++  let stripped     = substitute(substitute(raw,'\s\+=$','=',''),'^\s*:\=','','')
++  return stripped == '' ? expand("<cword>") : stripped
++endfunction
++
+ "
+ " Instructions for enabling "matchit" support:
+ "
+diff -Nur runtime/ftplugin/sass.vim runtime/ftplugin/sass.vim
+--- runtime/ftplugin/sass.vim	2008-07-03 12:57:57.000000000 -0700
++++ runtime/ftplugin/sass.vim	2011-04-03 09:27:21.646306594 -0700
+@@ -1,6 +1,7 @@
+ " Vim filetype plugin
+ " Language:		Sass
+-" Maintainer:		Tim Pope <[email protected]>
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2010 May 21
+ 
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+diff -Nur runtime/ftplugin/sgml.vim runtime/ftplugin/sgml.vim
+--- runtime/ftplugin/sgml.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/sgml.vim	2011-01-18 10:40:55.881765333 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	sgml
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 30
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/sh.vim runtime/ftplugin/sh.vim
+--- runtime/ftplugin/sh.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/sh.vim	2011-01-18 10:40:55.882176915 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	sh
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/sql.vim runtime/ftplugin/sql.vim
+--- runtime/ftplugin/sql.vim	2008-02-27 08:35:22.000000000 -0800
++++ runtime/ftplugin/sql.vim	2011-04-03 09:27:21.646921282 -0700
+@@ -1,8 +1,8 @@
+ " SQL filetype plugin file
+ " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
+-" Version:     4.0
++" Version:     6.0
+ " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
+-" Last Change: Wed 27 Feb 2008 04:35:21 PM Eastern Standard Time
++" Last Change: 2009 Aug 04
+ " Download:    http://vim.sourceforge.net/script.php?script_id=454
+ 
+ " For more details please use:
+@@ -29,6 +29,27 @@
+ "
+ " To change the default dialect, add the following to your vimrc:
+ "    let g:sql_type_default = 'sqlanywhere'
++"
++" This file also creates a command, SQLGetType, which allows you to 
++" determine what the current dialect is in use.
++"     :SQLGetType
++"
++" History
++"
++" Version 6.0
++" 
++" NF: Adds the command SQLGetType
++"
++" Version 5.0
++" 
++" NF: Adds the ability to choose the keys to control SQL completion, just add 
++"     the following to your .vimrc:
++"    let g:ftplugin_sql_omni_key       = '<C-C>'
++"    let g:ftplugin_sql_omni_key_right = '<Right>'
++"    let g:ftplugin_sql_omni_key_left  = '<Left>'
++"
++" BF: format-options - Auto-wrap comments using textwidth was turned off 
++"                      by mistake.
+ 
+ 
+ " Only do this when not done yet for this buffer
+@@ -44,7 +65,7 @@
+ " c     Auto-wrap comments using textwidth, inserting the current comment
+ "       leader automatically.
+ setlocal formatoptions-=t
+-setlocal formatoptions-=c
++setlocal formatoptions+=c
+ 
+ " Functions/Commands to allow the user to change SQL syntax dialects
+ " through the use of :SQLSetType <tab> for completion.
+@@ -154,6 +175,20 @@
+ 
+ endif
+ 
++" Functions/Commands to allow the user determine current SQL syntax dialect
++" This works with both Vim 6 and 7.
++
++if !exists("*SQL_GetType")
++    function SQL_GetType()
++        if exists('b:sql_type_override') 
++            echomsg "Current SQL dialect in use:".b:sql_type_override
++        else
++            echomsg "Current SQL dialect in use:".g:sql_type_default        
++        endif
++    endfunction
++    command! -nargs=0 SQLGetType :call SQL_GetType()
++endif
++
+ if exists("b:sql_type_override")
+     " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim'
+     if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != ''
+@@ -311,6 +346,19 @@
+                 \ ',index,subscription,synchronization,view,variable'
+ endif
+ 
++" Key to trigger SQL completion
++if !exists('g:ftplugin_sql_omni_key')
++    let g:ftplugin_sql_omni_key = '<C-C>'
++endif
++" Key to trigger drill into column list
++if !exists('g:ftplugin_sql_omni_key_right')
++    let g:ftplugin_sql_omni_key_right = '<Right>'
++endif
++" Key to trigger drill out of column list
++if !exists('g:ftplugin_sql_omni_key_left')
++    let g:ftplugin_sql_omni_key_left = '<Left>'
++endif
++
+ " Replace all ,'s with bars, except ones with numbers after them.
+ " This will most likely be a \{,1} string.
+ let s:ftplugin_sql_objects = 
+@@ -382,32 +430,32 @@
+     if !exists('g:omni_sql_no_default_maps')
+         " Static maps which use populate the completion list
+         " using Vim's syntax highlighting rules
+-        imap <buffer> <c-c>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O>
+-        imap <buffer> <c-c>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
+-        imap <buffer> <c-c>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O>
+-        imap <buffer> <c-c>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
+-        imap <buffer> <c-c>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
+-        imap <buffer> <c-c>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>'
+         " Dynamic maps which use populate the completion list
+         " using the dbext.vim plugin
+-        imap <buffer> <c-c>t <C-\><C-O>:call sqlcomplete#Map('table')<CR><C-X><C-O>
+-        imap <buffer> <c-c>p <C-\><C-O>:call sqlcomplete#Map('procedure')<CR><C-X><C-O>
+-        imap <buffer> <c-c>v <C-\><C-O>:call sqlcomplete#Map('view')<CR><C-X><C-O>
+-        imap <buffer> <c-c>c <C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
+-        imap <buffer> <c-c>l <C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O>
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
+         " The next 3 maps are only to be used while the completion window is
+         " active due to the <CR> at the beginning of the map
+-        imap <buffer> <c-c>L <C-Y><C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O>
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
+         " <C-Right> is not recognized on most Unix systems, so only create
+         " these additional maps on the Windows platform.
+         " If you would like to use these maps, choose a different key and make
+         " the same map in your vimrc.
+-        if has('win32')
+-            imap <buffer> <c-right>  <C-R>=sqlcomplete#DrillIntoTable()<CR>
+-            imap <buffer> <c-left>  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>
+-        endif
++        " if has('win32')
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>'
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key_left.'  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>'
++        " endif
+         " Remove any cached items useful for schema changes
+-        imap <buffer> <c-c>R <C-\><C-O>:call sqlcomplete#Map('resetCache')<CR><C-X><C-O>
++        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>'
+     endif
+ 
+     if b:sql_compl_savefunc != ""
+diff -Nur runtime/ftplugin/svg.vim runtime/ftplugin/svg.vim
+--- runtime/ftplugin/svg.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/svg.vim	2011-01-18 10:40:55.886783187 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	svg
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/tcl.vim runtime/ftplugin/tcl.vim
+--- runtime/ftplugin/tcl.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/ftplugin/tcl.vim	2011-01-18 10:40:55.887584906 -0800
+@@ -0,0 +1,36 @@
++" Vim filetype plugin file
++" Language:         Tcl
++" Maintainer:       Robert L Hicks <[email protected]>
++" Latest Revision:  2009-05-01
++
++if exists("b:did_ftplugin")
++  finish
++endif
++let b:did_ftplugin = 1
++
++" Make sure the continuation lines below do not cause problems in
++" compatibility mode.
++let s:cpo_save = &cpo
++set cpo-=C
++
++setlocal comments=:#
++setlocal commentstring=#%s
++setlocal formatoptions+=croql
++
++" Change the browse dialog on Windows to show mainly Tcl-related files
++if has("gui_win32")
++    let b:browsefilter = "Tcl Source Files (.tcl)\t*.tcl\n" .
++                \ "Tcl Test Files (.test)\t*.test\n" .
++                \ "All Files (*.*)\t*.*\n"
++endif
++
++"-----------------------------------------------------------------------------
++
++" Undo the stuff we changed.
++let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp<" .
++	    \	      " | unlet! b:browsefilter"
++
++" Restore the saved compatibility options.
++let &cpo = s:cpo_save
++
++" vim: set et ts=4 sw=4 tw=78:
+diff -Nur runtime/ftplugin/tcsh.vim runtime/ftplugin/tcsh.vim
+--- runtime/ftplugin/tcsh.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/tcsh.vim	2011-01-18 10:40:55.887991876 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	tcsh
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/verilog.vim runtime/ftplugin/verilog.vim
+--- runtime/ftplugin/verilog.vim	2006-04-30 14:41:53.000000000 -0700
++++ runtime/ftplugin/verilog.vim	2011-01-18 10:40:55.890729351 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin file
+ " Language:	Verilog HDL
+ " Maintainer:	Chih-Tsun Huang <[email protected]>
+-" Last Change:	Mon Sep  5 11:05:54 CST 2005 and 2006 April 30
++" Last Change:	Wed Sep  3 15:24:49 CST 2008
+ " URL:		http://larc.ee.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim
+ 
+ " Only do this when not done yet for this buffer
+@@ -12,6 +12,10 @@
+ " Don't load another plugin for this buffer
+ let b:did_ftplugin = 1
+ 
++" Set 'cpoptions' to allow line continuations
++let s:cpo_save = &cpo
++set cpo&vim
++
+ " Undo the plugin effect
+ let b:undo_ftplugin = "setlocal fo< com< tw<"
+     \ . "| unlet! b:browsefilter b:match_ignorecase b:match_words"
+@@ -28,8 +32,6 @@
+   setlocal tw=78
+ endif
+ 
+-set cpo-=C
+-
+ " Win32 can filter files in the browse dialog
+ if has("gui_win32") && !exists("b:browsefilter")
+   let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" .
+@@ -49,3 +51,7 @@
+     \ '\<task\>:\<endtask\>,' .
+     \ '\<specify\>:\<endspecify\>'
+ endif
++
++" Reset 'cpoptions' back to the user's setting
++let &cpo = s:cpo_save
++unlet s:cpo_save
+diff -Nur runtime/ftplugin/vim.vim runtime/ftplugin/vim.vim
+--- runtime/ftplugin/vim.vim	2008-02-27 07:36:46.000000000 -0800
++++ runtime/ftplugin/vim.vim	2011-01-18 10:40:55.891452917 -0800
+@@ -1,7 +1,7 @@
+ " Vim filetype plugin
+ " Language:	Vim
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2008 Feb 27
++" Last Change:	2009 Jan 22
+ 
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+@@ -11,16 +11,20 @@
+ " Don't load another plugin for this buffer
+ let b:did_ftplugin = 1
+ 
+-let cpo_save = &cpo
++let s:cpo_save = &cpo
+ set cpo-=C
+ 
+-let b:undo_ftplugin = "setl fo< com< tw< commentstring<"
++let b:undo_ftplugin = "setl fo< isk< com< tw< commentstring<"
+ 	\ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
+ 
+ " Set 'formatoptions' to break comment lines but not other lines,
+ " and insert the comment leader when hitting <CR> or using "o".
+ setlocal fo-=t fo+=croql
+ 
++" To allow tag lookup via CTRL-] for autoload functions, '#' must be a
++" keyword character.  E.g., for netrw#Nread().
++setlocal isk+=#
++
+ " Set 'comments' to format dashed lists in comments
+ setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
+ 
+@@ -53,8 +57,7 @@
+   let b:match_ignorecase = 0
+   let b:match_words =
+ 	\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
+-	\ '\<wh\%[ile]\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endw\%[hile]\>,' .
+-	\ '\<for\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<endfo\%[r]\>,' .
++ 	\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
+ 	\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
+ 	\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' .
+ 	\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' .
+@@ -64,7 +67,8 @@
+ 	\ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"'
+ endif
+ 
+-let &cpo = cpo_save
++let &cpo = s:cpo_save
++unlet s:cpo_save
+ 
+ " removed this, because 'cpoptions' is a global option.
+ " setlocal cpo+=M		" makes \%( match \)
+diff -Nur runtime/ftplugin/xhtml.vim runtime/ftplugin/xhtml.vim
+--- runtime/ftplugin/xhtml.vim	2005-09-13 06:25:56.000000000 -0700
++++ runtime/ftplugin/xhtml.vim	2011-01-18 10:40:55.892532712 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	xhtml
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2004 Jul 08
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/xml.vim runtime/ftplugin/xml.vim
+--- runtime/ftplugin/xml.vim	2008-07-18 04:27:49.000000000 -0700
++++ runtime/ftplugin/xml.vim	2011-01-18 10:40:55.893194134 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	xml
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 30 Jun 2008
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ let b:did_ftplugin = 1
+diff -Nur runtime/ftplugin/xsd.vim runtime/ftplugin/xsd.vim
+--- runtime/ftplugin/xsd.vim	2004-06-07 07:32:41.000000000 -0700
++++ runtime/ftplugin/xsd.vim	2011-01-18 10:40:55.894218904 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	xsd
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2003 Sep 29
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/ftplugin/xslt.vim runtime/ftplugin/xslt.vim
+--- runtime/ftplugin/xslt.vim	2004-07-09 11:27:53.000000000 -0700
++++ runtime/ftplugin/xslt.vim	2011-01-18 10:40:55.894527478 -0800
+@@ -1,8 +1,8 @@
+ " Vim filetype plugin file
+ " Language:	xslt
+-" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
+-" Last Changed: 2004 Jul 08
+-" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
++" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
++" Last Changed: 20 Jan 2009
++" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
+ 
+ if exists("b:did_ftplugin") | finish | endif
+ 
+diff -Nur runtime/icons/README.txt runtime/icons/README.txt
+--- runtime/icons/README.txt	1969-12-31 16:00:00.000000000 -0800
++++ runtime/icons/README.txt	2011-01-18 10:40:55.897163726 -0800
+@@ -0,0 +1,35 @@
++Choose your preferred icon and replace the standard Vim icon with it.
++[This is for the Amiga]
++
++When started from Workbench, Vim opens a window of standard terminal size
++(80 x 25). Trying to change this by adding a tool type results in a window
++that disappears before Vim comes up in its own window.
++If you want Vim to start with another size, it can be done using
++IconX.
++
++Follow these steps:
++
++1. Create a script file called e.g. Vim.WB, with a single line in which the
++   Vim executable is started:
++      Echo "Vim" > Vim.WB
++      Protect Vim.WB +s
++
++2. Rename the Vim icon to Vim.WB.
++
++3. By default, the Vim icon is a program icon.
++   Change the icon type from "program" to "project" using IconEdit from the
++   "Tools" directory.
++
++4. Change the icon settings using "information" from the WorkBench's "icon"
++   menu:
++   - The default program, of course, is "IconX".
++   - A stack size of 4096 should be sufficient.
++   - Create a WINDOW tooltype of the desired size.
++     The appropriate values depend on your WB font.
++
++   Example:
++   On a standard non-interlaced WB screen with full overscan resolution
++   (724 x 283 ), the WINDOW tooltype "CON:30/10/664/273" results in a
++   horizontally centered window with 80 columns and 32 lines.
++
++Now Vim comes up with the new window size.
+Files vim72/runtime/icons/README.txt.info and ../../../vim-hg/runtime/icons/README.txt.info differ
+Files vim72/runtime/icons/Vim_32Colors.info and ../../../vim-hg/runtime/icons/Vim_32Colors.info differ
+Files vim72/runtime/icons/Vim_4ColorsLace.info and ../../../vim-hg/runtime/icons/Vim_4ColorsLace.info differ
+Files vim72/runtime/icons/Vim_8Colors.info and ../../../vim-hg/runtime/icons/Vim_8Colors.info differ
+Files vim72/runtime/icons/Vim_8ColorsLace.info and ../../../vim-hg/runtime/icons/Vim_8ColorsLace.info differ
+Files vim72/runtime/icons.info and ../../../vim-hg/runtime/icons.info differ
+diff -Nur runtime/indent/chaiscript.vim runtime/indent/chaiscript.vim
+--- runtime/indent/chaiscript.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/chaiscript.vim	2011-01-18 10:40:55.903614850 -0800
+@@ -0,0 +1,50 @@
++" Vim indent file
++" Language:     ChaiScript
++" Maintainer:	Jason Turner <lefticus 'at' gmail com>
++
++" Only load this indent file when no other was loaded.
++if exists("b:did_indent")
++  finish
++endif
++let b:did_indent = 1
++
++setlocal indentexpr=GetChaiScriptIndent()
++setlocal autoindent
++
++" Only define the function once.
++if exists("*GetChaiScriptIndent")
++  finish
++endif
++
++function! GetChaiScriptIndent()
++  " Find a non-blank line above the current line.
++  let lnum = prevnonblank(v:lnum - 1)
++
++  " Hit the start of the file, use zero indent.
++  if lnum == 0
++    return 0
++  endif
++
++  " Add a 'shiftwidth' after lines that start a block:
++  " lines containing a {
++  let ind = indent(lnum)
++  let flag = 0
++  let prevline = getline(lnum)
++  if prevline =~ '^.*{.*'
++    let ind = ind + &shiftwidth
++    let flag = 1
++  endif
++
++  " Subtract a 'shiftwidth' after lines containing a { followed by a }
++  " to keep it balanced
++  if flag == 1 && prevline =~ '.*{.*}.*'
++    let ind = ind - &shiftwidth
++  endif
++
++  " Subtract a 'shiftwidth' on lines ending with }
++  if getline(v:lnum) =~ '^\s*\%(}\)'
++    let ind = ind - &shiftwidth
++  endif
++
++  return ind
++endfunction
+diff -Nur runtime/indent/cmake.vim runtime/indent/cmake.vim
+--- runtime/indent/cmake.vim	2007-11-18 07:21:01.000000000 -0800
++++ runtime/indent/cmake.vim	2011-01-18 10:40:55.904271765 -0800
+@@ -1,19 +1,11 @@
+-" =============================================================================
+-" 
+-"   Program:   CMake - Cross-Platform Makefile Generator
+-"   Module:    $RCSfile: cmake-indent.vim,v $
+-"   Language:  VIM
+-"   Date:      $Date: 2006/09/23 21:09:08 $
+-"   Version:   $Revision: 1.7 $
+-" 
+-" =============================================================================
+-
+ " Vim indent file
++" Program:      CMake - Cross-Platform Makefile Generator
++" Module:       $RCSfile: cmake-indent.vim,v $
+ " Language:     CMake (ft=cmake)
+ " Author:       Andy Cedilnik <[email protected]>
+-" Maintainer:   Andy Cedilnik <[email protected]>
+-" Last Change:  $Date: 2006/09/23 21:09:08 $
+-" Version:      $Revision: 1.7 $
++" Maintainer:   Karthik Krishnan <[email protected]>
++" Last Change:  $Date: 2008-01-16 16:53:53 $
++" Version:      $Revision: 1.9 $
+ "
+ " Licence:      The CMake license applies to this file. See
+ "               http://www.cmake.org/HTML/Copyright.html
+@@ -25,6 +17,7 @@
+ let b:did_indent = 1
+ 
+ setlocal indentexpr=CMakeGetIndent(v:lnum)
++setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE(
+ 
+ " Only define the function once.
+ if exists("*CMakeGetIndent")
+@@ -65,8 +58,8 @@
+                     \            ')\s*' .
+                     \            '\(' . cmake_regex_comment . '\)\?$'
+ 
+-  let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\)\s*('
+-  let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\)\s*('
++  let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\|FUNCTION\)\s*('
++  let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\|ENDFUNCTION\)\s*('
+ 
+   " Add
+   if previous_line =~? cmake_indent_comment_line " Handle comments
+diff -Nur runtime/indent/cpp.vim runtime/indent/cpp.vim
+--- runtime/indent/cpp.vim	2004-06-07 07:32:33.000000000 -0700
++++ runtime/indent/cpp.vim	2011-01-18 10:40:55.905337250 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+ " Language:	C++
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2001 Jun 12
++" Last Change:	2008 Nov 29
+ 
+ " Only load this indent file when no other was loaded.
+ if exists("b:did_indent")
+@@ -11,3 +11,5 @@
+ 
+ " C++ indenting is built-in, thus this is very simple
+ setlocal cindent
++
++let b:undo_indent = "setl cin<"
+diff -Nur runtime/indent/cucumber.vim runtime/indent/cucumber.vim
+--- runtime/indent/cucumber.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/cucumber.vim	2011-01-18 10:40:55.914073544 -0800
+@@ -0,0 +1,60 @@
++" Vim indent file
++" Language:	Cucumber
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
++
++if exists("b:did_indent")
++  finish
++endif
++let b:did_indent = 1
++
++setlocal autoindent
++setlocal indentexpr=GetCucumberIndent()
++setlocal indentkeys=o,O,*<Return>,<:>,0<Bar>,0#,=,!^F
++
++" Only define the function once.
++if exists("*GetCucumberIndent")
++  finish
++endif
++
++function! s:syn(lnum)
++  return synIDattr(synID(a:lnum,1+indent(a:lnum),1),'name')
++endfunction
++
++function! GetCucumberIndent()
++  let line  = getline(prevnonblank(v:lnum-1))
++  let cline = getline(v:lnum)
++  let syn = s:syn(prevnonblank(v:lnum-1))
++  let csyn = s:syn(v:lnum)
++  if csyn ==# 'cucumberFeature' || cline =~# '^\s*Feature:'
++    return 0
++  elseif csyn ==# 'cucumberExamples' || cline =~# '^\s*\%(Examples\|Scenarios\):'
++    return 2 * &sw
++  elseif csyn =~# '^cucumber\%(Background\|Scenario\|ScenarioOutline\)$' || cline =~# '^\s*\%(Background\|Scenario\|Scenario Outline\):'
++    return &sw
++  elseif syn ==# 'cucumberFeature' || line =~# '^\s*Feature:'
++    return &sw
++  elseif syn ==# 'cucumberExamples' || line =~# '^\s*\%(Examples\|Scenarios\):'
++    return 3 * &sw
++  elseif syn =~# '^cucumber\%(Background\|Scenario\|ScenarioOutline\)$' || line =~# '^\s*\%(Background\|Scenario\|Scenario Outline\):'
++    return 2 * &sw
++  elseif cline =~# '^\s*@' && (s:syn(nextnonblank(v:lnum+1)) == 'cucumberFeature' || getline(nextnonblank(v:lnum+1)) =~# '^\s*Feature:' || indent(prevnonblank(v:lnum-1)) <= 0)
++    return 0
++  elseif line =~# '^\s*@'
++    return &sw
++  elseif cline =~# '^\s*|' && line =~# '^\s*|'
++    return indent(prevnonblank(v:lnum-1))
++  elseif cline =~# '^\s*|' && line =~# '^\s*[^|#]'
++    return indent(prevnonblank(v:lnum-1)) + &sw
++  elseif cline =~# '^\s*[^|# \t]' && line =~# '^\s*|'
++    return indent(prevnonblank(v:lnum-1)) - &sw
++  elseif cline =~# '^\s*$' && line =~# '^\s*|'
++    let in = indent(prevnonblank(v:lnum-1))
++    return in == indent(v:lnum) ? in : in - &sw
++  elseif cline =~# '^\s*#' && getline(v:lnum-1) =~ '^\s*$' && getline(v:lnum+1) =~# '\S'
++    return indent(getline(v:lnum+1))
++  endif
++  return indent(prevnonblank(v:lnum-1))
++endfunction
++
++" vim:set sts=2 sw=2:
+diff -Nur runtime/indent/cuda.vim runtime/indent/cuda.vim
+--- runtime/indent/cuda.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/cuda.vim	2011-01-18 10:40:55.914491068 -0800
+@@ -0,0 +1,15 @@
++" Vim indent file
++" Language:	CUDA
++" Maintainer:	Bram Moolenaar <[email protected]>
++" Last Change:	2008 Nov 29
++
++" Only load this indent file when no other was loaded.
++if exists("b:did_indent")
++   finish
++endif
++let b:did_indent = 1
++
++" It's just like C indenting
++setlocal cindent
++
++let b:undo_indent = "setl cin<"
+diff -Nur runtime/indent/eruby.vim runtime/indent/eruby.vim
+--- runtime/indent/eruby.vim	2008-06-29 07:00:30.000000000 -0700
++++ runtime/indent/eruby.vim	2011-01-18 10:40:55.922488870 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+ " Language:		eRuby
+-" Maintainer:		Tim Pope <[email protected]>
+-" Info:			$Id: eruby.vim,v 1.16 2008/06/29 04:18:43 tpope Exp $
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2010 May 28
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+@@ -58,7 +58,10 @@
+   let lnum = prevnonblank(v:lnum-1)
+   let line = getline(lnum)
+   let cline = getline(v:lnum)
+-  if cline =~# '<%-\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%(-\=%>\|$\)'
++  if cline =~# '^\s*<%-\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%(-\=%>\|$\)'
++    let ind = ind - &sw
++  endif
++  if line =~# '\S\s*<%-\=\s*\%(}\|end\).\{-\}\s*\%(-\=%>\|$\)'
+     let ind = ind - &sw
+   endif
+   if line =~# '\%({\|\<do\)\%(\s*|[^|]*|\)\=\s*-\=%>'
+diff -Nur runtime/indent/gitconfig.vim runtime/indent/gitconfig.vim
+--- runtime/indent/gitconfig.vim	2008-06-04 08:44:21.000000000 -0700
++++ runtime/indent/gitconfig.vim	2011-01-18 10:40:55.924281200 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+ " Language:	git config file
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2008 Jun 04
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
+ 
+ if exists("b:did_indent")
+   finish
+@@ -18,18 +18,18 @@
+ endif
+ 
+ function! GetGitconfigIndent()
+-    let line  = getline(prevnonblank(v:lnum-1))
+-    let cline = getline(v:lnum)
+-    if line =~  '\\\@<!\%(\\\\\)*\\$'
+-        " odd number of slashes, in a line continuation
+-        return 2 * &sw
+-    elseif cline =~ '^\s*\['
+-        return 0
+-    elseif cline =~ '^\s*\a'
+-        return &sw
+-    elseif cline == ''       && line =~ '^\['
+-        return &sw
+-    else
+-        return -1
+-    endif
++  let line  = getline(prevnonblank(v:lnum-1))
++  let cline = getline(v:lnum)
++  if line =~  '\\\@<!\%(\\\\\)*\\$'
++    " odd number of slashes, in a line continuation
++    return 2 * &sw
++  elseif cline =~ '^\s*\['
++    return 0
++  elseif cline =~ '^\s*\a'
++    return &sw
++  elseif cline == ''       && line =~ '^\['
++    return &sw
++  else
++    return -1
++  endif
+ endfunction
+diff -Nur runtime/indent/haml.vim runtime/indent/haml.vim
+--- runtime/indent/haml.vim	2008-06-19 10:32:03.000000000 -0700
++++ runtime/indent/haml.vim	2011-04-03 09:27:21.671545872 -0700
+@@ -1,7 +1,7 @@
+ " Vim indent file
+-" Language:	HAML
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2007 Dec 16
++" Language:	Haml
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2008 Sep 11
+ 
+ if exists("b:did_indent")
+   finish
+@@ -44,8 +44,6 @@
+   if indent == indent(lnum)
+     let indent = cindent <= indent ? -1 : increase
+   endif
+-  "let indent = indent == indent(lnum) ? -1 : indent
+-  "let indent = indent > indent(lnum) + &sw ? indent(lnum) + &sw : indent
+ 
+   let group = synIDattr(synID(lnum,lastcol,1),'name')
+ 
+@@ -53,9 +51,11 @@
+     return indent
+   elseif line =~ '^/\%(\[[^]]*\]\)\=$'
+     return increase
+-  elseif line =~ '^:'
++  elseif group == 'hamlFilter'
+     return increase
+-  elseif line =~ '^'.s:tag.'[=~-]\s*\%(\%(if\|else\|elsif\|unless\|case\|when\|while\|until\|for\|begin\|module\|class\|def\)\>\%(.*\<end\>\)\@!\|.*do |[^|]*|\s*$\)'
++  elseif line =~ '^'.s:tag.'[&!]\=[=~-]\s*\%(\%(if\|else\|elsif\|unless\|case\|when\|while\|until\|for\|begin\|module\|class\|def\)\>\%(.*\<end\>\)\@!\|.*do\%(\s*|[^|]*|\)\=\s*$\)'
++    return increase
++  elseif line =~ '^'.s:tag.'[&!]\=[=~-].*,\s*$'
+     return increase
+   elseif line == '-#'
+     return increase
+diff -Nur runtime/indent/javascript.vim runtime/indent/javascript.vim
+--- runtime/indent/javascript.vim	2007-01-22 11:47:30.000000000 -0800
++++ runtime/indent/javascript.vim	2011-01-18 10:40:55.927401696 -0800
+@@ -11,5 +11,6 @@
+ 
+ " C indenting is not too bad.
+ setlocal cindent
++setlocal cinoptions+=j1,J1
+ 
+ let b:undo_indent = "setl cin<"
+diff -Nur runtime/indent/lifelines.vim runtime/indent/lifelines.vim
+--- runtime/indent/lifelines.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/lifelines.vim	2011-01-18 10:40:55.928570499 -0800
+@@ -0,0 +1,24 @@
++" Vim indent file
++" Language:	LifeLines
++" Maintainer:	Patrick Texier <[email protected]>
++" Location:	<http://patrick.texier.free.fr/vim/indent/lifelines.vim>
++" Last Change:	2010 May 7
++
++" Only load this indent file when no other was loaded.
++if exists("b:did_indent")
++    finish
++endif
++let b:did_indent = 1
++
++" LifeLines uses cindent without ; line terminator, C functions
++" declarations, C keywords, C++ formating
++setlocal cindent
++setlocal cinwords=""
++setlocal cinoptions+=+0
++setlocal cinoptions+=p0
++setlocal cinoptions+=i0
++setlocal cinoptions+=t0
++setlocal cinoptions+=*500
++
++let b:undo_indent = "setl cin< cino< cinw<"
++" vim: ts=8 sw=4
+diff -Nur runtime/indent/liquid.vim runtime/indent/liquid.vim
+--- runtime/indent/liquid.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/liquid.vim	2011-01-18 10:40:55.929076565 -0800
+@@ -0,0 +1,63 @@
++" Vim indent file
++" Language:     Liquid
++" Maintainer:   Tim Pope <[email protected]>
++" Last Change:	2010 May 21
++
++if exists('b:did_indent')
++  finish
++endif
++
++set indentexpr=
++if exists('b:liquid_subtype')
++  exe 'runtime! indent/'.b:liquid_subtype.'.vim'
++else
++  runtime! indent/html.vim
++endif
++unlet! b:did_indent
++
++if &l:indentexpr == ''
++  if &l:cindent
++    let &l:indentexpr = 'cindent(v:lnum)'
++  else
++    let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
++  endif
++endif
++let b:liquid_subtype_indentexpr = &l:indentexpr
++
++let b:did_indent = 1
++
++setlocal indentexpr=GetLiquidIndent()
++setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=endif,=endunless,=endifchanged,=endcase,=endfor,=endtablerow,=endcapture,=else,=elsif,=when,=empty
++
++" Only define the function once.
++if exists('*GetLiquidIndent')
++  finish
++endif
++
++function! s:count(string,pattern)
++  let string = substitute(a:string,'\C'.a:pattern,"\n",'g')
++  return strlen(substitute(string,"[^\n]",'','g'))
++endfunction
++
++function! GetLiquidIndent(...)
++  if a:0 && a:1 == '.'
++    let v:lnum = line('.')
++  elseif a:0 && a:1 =~ '^\d'
++    let v:lnum = a:1
++  endif
++  let vcol = col('.')
++  call cursor(v:lnum,1)
++  exe "let ind = ".b:liquid_subtype_indentexpr
++  let lnum = prevnonblank(v:lnum-1)
++  let line = getline(lnum)
++  let cline = getline(v:lnum)
++  let line  = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
++  let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
++  let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
++  let ind += &sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|tablerow\|capture\)\>')
++  let ind -= &sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
++  let ind += &sw * s:count(line,'{%\s*\%(elsif\|else\|when\|empty\)\>')
++  let ind -= &sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
++  let ind -= &sw * s:count(cline,'{%\s*end\w*$')
++  return ind
++endfunction
+diff -Nur runtime/indent/mail.vim runtime/indent/mail.vim
+--- runtime/indent/mail.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/mail.vim	2011-01-18 10:40:55.930747474 -0800
+@@ -0,0 +1,13 @@
++" Vim indent file
++" Language:	Mail
++" Maintainer:	Bram Moolenaar
++" Last Change:	2009 Jun 03
++
++if exists("b:did_indent")
++  finish
++endif
++let b:did_indent = 1
++
++" What works best is auto-indenting, disable other indenting.
++" For formatting see the ftplugin.
++setlocal autoindent nosmartindent nocindent indentexpr=
+diff -Nur runtime/indent/perl6.vim runtime/indent/perl6.vim
+--- runtime/indent/perl6.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/indent/perl6.vim	2011-01-18 10:40:55.934706560 -0800
+@@ -0,0 +1,136 @@
++" Vim indent file
++" Language:     Perl 6
++" Maintainer:   Andy Lester <[email protected]>
++" URL:          http://github.com/petdance/vim-perl/tree/master
++" Last Change:  2009-07-04
++" Contributors: Andy Lester <[email protected]>
++"               Hinrik Örn Sigurðsson <[email protected]>
++"
++" Adapted from Perl indent file by Rafael Garcia-Suarez <[email protected]>
++
++" Suggestions and improvements by :
++"   Aaron J. Sherman (use syntax for hints)
++"   Artem Chuprina (play nice with folding)
++" TODO:
++" This file still relies on stuff from the Perl 5 syntax file, which Perl 6
++" does not use.
++"
++" Things that are not or not properly indented (yet) :
++" - Continued statements
++"     print "foo",
++"       "bar";
++"     print "foo"
++"       if bar();
++" - Multiline regular expressions (m//x)
++" (The following probably needs modifying the perl syntax file)
++" - qw() lists
++" - Heredocs with terminators that don't match \I\i*
++
++" Only load this indent file when no other was loaded.
++if exists("b:did_indent")
++    finish
++endif
++let b:did_indent = 1
++
++" Is syntax highlighting active ?
++let b:indent_use_syntax = has("syntax")
++
++setlocal indentexpr=GetPerl6Indent()
++
++" we reset it first because the Perl 5 indent file might have been loaded due
++" to a .pl/pm file extension, and indent files don't clean up afterwards
++setlocal indentkeys&
++
++setlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and
++if !b:indent_use_syntax
++    setlocal indentkeys+=0=EO
++endif
++
++" Only define the function once.
++if exists("*GetPerl6Indent")
++    finish
++endif
++
++let s:cpo_save = &cpo
++set cpo-=C
++
++function GetPerl6Indent()
++
++    " Get the line to be indented
++    let cline = getline(v:lnum)
++
++    " Indent POD markers to column 0
++    if cline =~ '^\s*=\L\@!'
++        return 0
++    endif
++
++    " Don't reindent coments on first column
++    if cline =~ '^#'
++        return 0
++    endif
++
++    " Get current syntax item at the line's first char
++    let csynid = ''
++    if b:indent_use_syntax
++        let csynid = synIDattr(synID(v:lnum,1,0),"name")
++    endif
++
++    " Don't reindent POD and heredocs
++    if csynid =~ "^p6Pod"
++        return indent(v:lnum)
++    endif
++
++
++    " Now get the indent of the previous perl line.
++
++    " Find a non-blank line above the current line.
++    let lnum = prevnonblank(v:lnum - 1)
++    " Hit the start of the file, use zero indent.
++    if lnum == 0
++        return 0
++    endif
++    let line = getline(lnum)
++    let ind = indent(lnum)
++    " Skip heredocs, POD, and comments on 1st column
++    if b:indent_use_syntax
++        let skippin = 2
++        while skippin
++            let synid = synIDattr(synID(lnum,1,0),"name")
++            if (synid =~ "^p6Pod" || synid =~ "p6Comment")
++                let lnum = prevnonblank(lnum - 1)
++                if lnum == 0
++                    return 0
++                endif
++                let line = getline(lnum)
++                let ind = indent(lnum)
++                let skippin = 1
++            else
++                let skippin = 0
++            endif
++        endwhile
++    endif
++
++        if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
++            let ind = ind + &sw
++        endif
++        if cline =~ '^\s*[)}\]»>]'
++            let ind = ind - &sw
++        endif
++
++    " Indent lines that begin with 'or' or 'and'
++    if cline =~ '^\s*\(or\|and\)\>'
++        if line !~ '^\s*\(or\|and\)\>'
++            let ind = ind + &sw
++        endif
++    elseif line =~ '^\s*\(or\|and\)\>'
++        let ind = ind - &sw
++    endif
++
++    return ind
++
++endfunction
++
++let &cpo = s:cpo_save
++unlet s:cpo_save
++
++" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
+diff -Nur runtime/indent/php.vim runtime/indent/php.vim
+--- runtime/indent/php.vim	2008-06-25 14:10:32.000000000 -0700
++++ runtime/indent/php.vim	2011-04-03 09:27:21.674374861 -0700
+@@ -2,17 +2,10 @@
+ " Language:	PHP
+ " Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>
+ " URL:		http://www.2072productions.com/vim/indent/php.vim
+-" Last Change:  2008 June 7th
++" Last Change:  2008 November 22nd
+ " Newsletter:   http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php
+-" Version:	1.28
++" Version:	1.30
+ "
+-"  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.
+-"
+-"  ---> 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.
+ "
+ "  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.
+@@ -24,7 +17,7 @@
+ " NOTE: This script must be used with PHP syntax ON and with the php syntax
+ "	script by Lutz Eymers (http://www.isp.de/data/php.vim ) or with the
+ "	script by Peter Hodge (http://www.vim.org/scripts/script.php?script_id=1571 )
+-"	the later is bunbdled by default with vim 7.
++"	the later is bunbdled by default with Vim 7.
+ "
+ "
+ "	In the case you have syntax errors in your script such as HereDoc end
+@@ -33,50 +26,19 @@
+ "	they are followed by a ';').
+ "
+ "
+-" 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
+-" '\s*$' correctly.
+-" So you have to remove those useless characters first with a command like:
+-"
+-" :%s /\r$//g
+-"
+-" 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.
+-"
+-" 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!
+-"
+-" 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)
+-"					{
+-"					foo();
+-"					}
++" NOTE: If you are editing files 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
++"	'\s*$' correctly.
++"	So you have to remove those useless characters first with a command like:
+ "
+-"			NOTE: The script will be a bit slower if you use this option because
+-"			some optimizations won't be available.
++"	:%s /\r$//g
+ "
+-" Options: PHP_vintage_case_default_indent = 1 (defaults to 0) to add a meaningless indent
+-"		    befaore 'case:' and 'default":' statement in switch block
++"	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: See :help php-indent for available options.
++
+ 
+ if exists("b:did_indent")
+     finish
+@@ -145,6 +107,7 @@
+ endif
+ 
+ if exists("*GetPhpIndent")
++    call ResetPhpOptions()
+     finish " XXX
+ endif
+ 
+@@ -317,14 +280,13 @@
+ let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|else\)'
+ let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|try\>\|catch\>\)'
+ 
+-let s:autorestoptions = 0
+-if ! s:autorestoptions
+-    au BufWinEnter,Syntax	*.php,*.php3,*.php4,*.php5	call ResetOptions()
+-    let s:autorestoptions = 1
++let s:autoresetoptions = 0
++if ! s:autoresetoptions
++    let s:autoresetoptions = 1
+ endif
+ 
+-function! ResetOptions()
+-    if ! b:optionsset
++function! ResetPhpOptions()
++    if ! b:optionsset && &filetype == "php" 
+ 	if b:PHP_autoformatcomment
+ 
+ 	    setlocal comments=s1:/*,mb:*,ex:*/,://,:#
+@@ -341,6 +303,8 @@
+     endif
+ endfunc
+ 
++call ResetPhpOptions()
++
+ function! GetPhpIndent()
+ 
+     let b:GetLastRealCodeLNum_ADD = 0
+@@ -360,7 +324,7 @@
+     if !b:PHP_indentinghuge && b:PHP_lastindented > b:PHP_indentbeforelast
+ 	if b:PHP_indentbeforelast
+ 	    let b:PHP_indentinghuge = 1
+-	    echom 'Large indenting detected, speed optimizations engaged (v1.28)'
++	    echom 'Large indenting detected, speed optimizations engaged (v1.30)'
+ 	endif
+ 	let b:PHP_indentbeforelast = b:PHP_lastindented
+     endif
+@@ -693,6 +657,7 @@
+ 
+     if !LastLineClosed
+ 
++
+ 	if last_line =~# '[{(]'.endline || last_line =~? '\h\w*\s*(.*,$' && pline !~ '[,(]'.endline
+ 
+ 	    if !b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{'
+@@ -715,11 +680,11 @@
+ 	elseif last_line =~ '^\s*'.s:blockstart
+ 	    let ind = ind + &sw
+ 
+-	elseif last_line =~# defaultORcase
++	elseif last_line =~# defaultORcase && cline !~# defaultORcase
+ 	    let ind = ind + &sw
+ 
+ 
+-	elseif pline =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . defaultORcase
++	elseif pline =~ '\%(;\%(\s*?>\)\=\|<<<''\=\a\w*''\=$\|^\s*}\|{\)'.endline . '\|' . defaultORcase && cline !~# defaultORcase
+ 
+ 	    let ind = ind + &sw
+ 	endif
+diff -Nur runtime/indent/ruby.vim runtime/indent/ruby.vim
+--- runtime/indent/ruby.vim	2008-06-29 07:00:31.000000000 -0700
++++ runtime/indent/ruby.vim	2011-01-18 10:40:55.939870943 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+ " Language:		Ruby
+ " Maintainer:		Nikolai Weibull <now at bitwi.se>
+-" Info:			$Id: ruby.vim,v 1.47 2008/06/29 04:18:43 tpope Exp $
++" Last Change:		2009 Dec 17
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+@@ -178,7 +178,7 @@
+ endfunction
+ 
+ function s:Match(lnum, regex)
+-  let col = match(getline(a:lnum), a:regex) + 1
++  let col = match(getline(a:lnum), '\C'.a:regex) + 1
+   return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
+ endfunction
+ 
+diff -Nur runtime/indent/sass.vim runtime/indent/sass.vim
+--- runtime/indent/sass.vim	2008-07-03 11:33:09.000000000 -0700
++++ runtime/indent/sass.vim	2011-01-18 10:40:55.940214584 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+-" Language:	SASS
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2007 Dec 16
++" Language:	Sass
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
+ 
+ if exists("b:did_indent")
+   finish
+@@ -17,7 +17,7 @@
+   finish
+ endif
+ 
+-let s:property = '^\s*:\|^\s*[[:alnum:]-]\+:'
++let s:property = '^\s*:\|^\s*[[:alnum:]-]\+\%(:\|\s*=\)'
+ 
+ function! GetSassIndent()
+   let lnum = prevnonblank(v:lnum-1)
+diff -Nur runtime/indent/sh.vim runtime/indent/sh.vim
+--- runtime/indent/sh.vim	2006-04-30 08:50:51.000000000 -0700
++++ runtime/indent/sh.vim	2011-01-18 10:40:55.941512152 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+-" Language:	    Shell Script
++" Language:         Shell Script
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-04-19
++" Latest Revision:  2010-01-06
+ 
+ if exists("b:did_indent")
+   finish
+@@ -9,8 +9,10 @@
+ let b:did_indent = 1
+ 
+ setlocal indentexpr=GetShIndent()
+-setlocal indentkeys+==then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done
++setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,),0=;;,0=;&
++setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix
+ setlocal indentkeys-=:,0#
++setlocal nosmartindent
+ 
+ if exists("*GetShIndent")
+   finish
+@@ -19,34 +21,138 @@
+ let s:cpo_save = &cpo
+ set cpo&vim
+ 
+-function GetShIndent()
++function s:buffer_shiftwidth()
++  return &shiftwidth
++endfunction
++
++let s:sh_indent_defaults = {
++      \ 'default': function('s:buffer_shiftwidth'),
++      \ 'continuation-line': function('s:buffer_shiftwidth'),
++      \ 'case-labels': function('s:buffer_shiftwidth'),
++      \ 'case-statements': function('s:buffer_shiftwidth'),
++      \ 'case-breaks': 0 }
++
++function! s:indent_value(option)
++  let Value = exists('b:sh_indent_options')
++            \ && has_key(b:sh_indent_options, a:option) ?
++            \ b:sh_indent_options[a:option] :
++            \ s:sh_indent_defaults[a:option]
++  if type(Value) == type(function('type'))
++    return Value()
++  endif
++  return Value
++endfunction
++
++function! GetShIndent()
+   let lnum = prevnonblank(v:lnum - 1)
+   if lnum == 0
+     return 0
+   endif
+ 
+-  " Add a 'shiftwidth' after if, while, else, case, until, for, function()
+-  " Skip if the line also contains the closure for the above
++  let pnum = prevnonblank(lnum - 1)
++
+   let ind = indent(lnum)
+   let line = getline(lnum)
+-  if line =~ '^\s*\(if\|then\|do\|else\|elif\|case\|while\|until\|for\)\>'
+-	\ || line =~ '^\s*\<\k\+\>\s*()\s*{'
+-	\ || line =~ '^\s*{'
+-    if line !~ '\(esac\|fi\|done\)\>\s*$' && line !~ '}\s*$'
+-      let ind = ind + &sw
++  if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\)\>'
++    if line !~ '\<\%(fi\|esac\|done\)\>\s*\%(#.*\)\=$'
++      let ind += s:indent_value('default')
++    endif
++  elseif s:is_case_label(line, pnum)
++    if !s:is_case_ended(line)
++      let ind += s:indent_value('case-statements')
++    endif
++  elseif line =~ '^\s*\<\k\+\>\s*()\s*{' || line =~ '^\s*{'
++    if line !~ '}\s*\%(#.*\)\=$'
++      let ind += s:indent_value('default')
+     endif
++  elseif s:is_continuation_line(line)
++    if pnum == 0 || !s:is_continuation_line(getline(pnum))
++      let ind += s:indent_value('continuation-line')
++    endif
++  elseif pnum != 0 && s:is_continuation_line(getline(pnum))
++    let ind = indent(s:find_continued_lnum(pnum))
+   endif
+ 
+-  " Subtract a 'shiftwidth' on a then, do, else, esac, fi, done
+-  " Retain the indentation level if line matches fin (for find)
++  let pine = line
+   let line = getline(v:lnum)
+-  if (line =~ '^\s*\(then\|do\|else\|elif\|esac\|fi\|done\)\>' || line =~ '^\s*}')
+-	\ && line !~ '^\s*fi[ln]\>'
+-    let ind = ind - &sw
++  if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\)\>' || line =~ '^\s*}'
++    let ind -= s:indent_value('default')
++  elseif line =~ '^\s*esac\>'
++    let ind -= (s:is_case_label(pine, lnum) && s:is_case_ended(pine) ?
++             \ 0 : s:indent_value('case-statements')) +
++             \ s:indent_value('case-labels')
++    if s:is_case_break(pine)
++      let ind += s:indent_value('case-breaks')
++    endif
++  elseif s:is_case_label(line, lnum)
++    if s:is_case(pine)
++      let ind = indent(lnum) + s:indent_value('case-labels')
++    else
++      let ind -= s:indent_value('case-statements') - s:indent_value('case-breaks')
++    endif
++  elseif s:is_case_break(line)
++    let ind -= s:indent_value('case-breaks')
+   endif
+ 
+   return ind
+ endfunction
+ 
++function! s:is_continuation_line(line)
++  return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\)$'
++endfunction
++
++function! s:find_continued_lnum(lnum)
++  let i = a:lnum
++  while i > 1 && s:is_continuation_line(getline(i - 1))
++    let i -= 1
++  endwhile
++  return i
++endfunction
++
++function! s:is_case_label(line, pnum)
++  if a:line !~ '^\s*(\=.*)'
++    return 0
++  endif
++
++  if a:pnum > 0
++    let pine = getline(a:pnum)
++    if !(s:is_case(pine) || s:is_case_ended(pine))
++      return 0
++    endif
++  endif
++
++  let suffix = substitute(a:line, '^\s*(\=', "", "")
++  let nesting = 0
++  let i = 0
++  let n = strlen(suffix)
++  while i < n
++    let c = suffix[i]
++    let i += 1
++    if c == '\\'
++      let i += 1
++    elseif c == '('
++      let nesting += 1
++    elseif c == ')'
++      if nesting == 0
++        return 1
++      endif
++      let nesting -= 1
++    endif
++  endwhile
++  return 0
++endfunction
++
++function! s:is_case(line)
++  return a:line =~ '^\s*case\>'
++endfunction
++
++function! s:is_case_break(line)
++  return a:line =~ '^\s*;[;&]'
++endfunction
++
++function! s:is_case_ended(line)
++  return s:is_case_break(a:line) || a:line =~ ';[;&]\s*\%(#.*\)\=$'
++endfunction
++
+ let &cpo = s:cpo_save
+ unlet s:cpo_save
+diff -Nur runtime/indent/tf.vim runtime/indent/tf.vim
+--- runtime/indent/tf.vim	2007-07-04 12:24:55.000000000 -0700
++++ runtime/indent/tf.vim	2011-01-18 10:40:55.943957064 -0800
+@@ -1,7 +1,7 @@
+ " Vim indent file
+ " Language:     tf (TinyFugue)
+-" Maintainer:   Christian J. Robinson <[email protected]>
+-" URL:          http://www.infynity.spodzone.com/vim/indent/tf.vim
++" Maintainer:   Christian J. Robinson <[email protected]>
++" URL:          http://christianrobinson.name/vim/indent/tf.vim
+ " Last Change:  2002 May 29
+ 
+ " Only load this indent file when no other was loaded.
+diff -Nur runtime/indent/vhdl.vim runtime/indent/vhdl.vim
+--- runtime/indent/vhdl.vim	2007-08-17 12:51:09.000000000 -0700
++++ runtime/indent/vhdl.vim	2011-01-18 10:40:55.945919730 -0800
+@@ -1,8 +1,8 @@
+ " VHDL indent ('93 syntax)
+ " Language:    VHDL
+ " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
+-" Version:     1.54
+-" Last Change: 2007 Aug 17
++" Version:     1.56
++" Last Change: 2010 Jun 29
+ " URL:         http://www.vim.org/scripts/script.php?script_id=1450
+ 
+ " only load this indent file when no other was loaded
+@@ -156,7 +156,7 @@
+     let ps = getline(pn)
+     while pn > 0
+       let t = indent(pn)
+-      if ps !~ '^\s*--' && t < ind
++      if ps !~ '^\s*--' && (t < ind || (t == ind && m == 3))
+         " make sure one of these is true
+         " keywords: variable + "<=" without ";" ending
+         " where:    start of previous non-comment line
+@@ -386,10 +386,10 @@
+   endif
+ 
+   " indent:   -sw
+-  " keywords: "end" + identifier
++  " keywords: "end" + identifier, ";"
+   " where:    start of current line
+   "if curs =~? '^\s*end\s\+\w\+\>'
+-  if curs =~? '^\s*end\s'
++  if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)'
+     return ind - &sw
+   endif
+ 
+diff -Nur runtime/indent/xml.vim runtime/indent/xml.vim
+--- runtime/indent/xml.vim	2004-06-07 07:32:33.000000000 -0700
++++ runtime/indent/xml.vim	2011-01-18 10:40:55.947552217 -0800
+@@ -1,10 +1,11 @@
+ " Language:	xml
+ " Maintainer:	Johannes Zellner <[email protected]>
+-" Last Change:	Tue, 27 Apr 2004 14:54:59 CEST
++" Last Change:	2009-05-26 00:17:25
+ " Notes:	1) does not indent pure non-xml code (e.g. embedded scripts)
+ "		2) will be confused by unbalanced tags in comments
+ "		or CDATA sections.
+-" TODO:		implement pre-like tags, see xml_indent_open / xml_indent_close
++"		2009-05-26 patch by Nikolai Weibull
++" TODO: 	implement pre-like tags, see xml_indent_open / xml_indent_close
+ 
+ " Only load this indent file when no other was loaded.
+ if exists("b:did_indent")
+@@ -46,6 +47,9 @@
+ 	if '' != syn1 && syn1 !~ 'xml' && '' != syn2 && syn2 !~ 'xml'
+ 	    " don't indent pure non-xml code
+ 	    return 0
++	elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment'
++	    " indent comments specially
++	    return -1
+ 	endif
+     endif
+     return 1
+@@ -74,8 +78,12 @@
+     endif
+ 
+     if a:use_syntax_check
+-	if 0 == <SID>XmlIndentSynCheck(lnum) || 0 == <SID>XmlIndentSynCheck(a:lnum)
++	let check_lnum = <SID>XmlIndentSynCheck(lnum)
++	let check_alnum = <SID>XmlIndentSynCheck(a:lnum)
++	if 0 == check_lnum || 0 == check_alnum
+ 	    return indent(a:lnum)
++	elseif -1 == check_lnum || -1 == check_alnum
++	    return -1
+ 	endif
+     endif
+ 
+diff -Nur runtime/keymap/bulgarian-bds.vim runtime/keymap/bulgarian-bds.vim
+--- runtime/keymap/bulgarian-bds.vim	2008-06-29 06:17:24.000000000 -0700
++++ runtime/keymap/bulgarian-bds.vim	2011-01-18 10:40:55.951059135 -0800
+@@ -1,14 +1,14 @@
+ " Vim keymap file for Bulgarian and Russian characters, "bds" layout.
+ " Most of it can be used with both utf-8 and cp1251 file encodings, except
+-" the accented vowels which can only be stored in utf-8.
++" the accented characters which can only be stored in utf-8.
+ " This file itself is in utf-8.
+ 
+ " Maintainer: Boyko Bantchev <[email protected]>
+ " URI: http://www.math.bas.bg/bantchev/vim/bulgarian-bds.vim
+-" Last Changed: 2008 June 28
++" Last Changed: 2010 May 4
+ 
+ " This keymap corresponds to what is called Bulgarian standard typewriter
+-" keyboard layout (BDS, БДС).
++" keyboard layout, or "БДС".
+ "
+ " Note that, in addition to the Bulgarian alphabet, the BDS layout prescribes
+ " the presence of the following characters:
+@@ -17,7 +17,7 @@
+ "        without having to leave Cyrillic mode.
+ "
+ " Some punctuation characters present in ascii are mapped in BDS to keys
+-" different from the ones they occupy in the qwerty layout, because the latter
++" different from the ones they occupy in the QWERTY layout, because the latter
+ " keys are used to type other characters.
+ "
+ " In this keymap, also defined (besides BDS) are:
+@@ -28,12 +28,16 @@
+ "     —  The quotation marks „ “ ” ‘ ’ (used in the Bulgarian and English
+ "        quotation styles), as well as « » (Russian quotation style).
+ "     —  The characters §, №, – (en-dash), — (em-dash), …, •, ·, ±, °, ¬,
+-"        ¤, and €.
++"        ¤, €, ‰, †, ‡, and ¶.
+ "
+-" The keymap also defines key combinations for accented vowels in Bulgarian.
++" The keymap also defines key combinations for grave and acute accents.
++" (Grave accent is used in Bulgarian, acute in Russian, but both accents
++" apply to other languages as well.)
+ "
+ " For details of what key or key combination maps to what character, please
+-" see below the map table itself.
++" see below the map itself.
++"
++" See also http://www.math.bas.bg/bantchev/vim/kbdbul.html (in Bulgarian).
+ 
+ scriptencoding utf-8
+ 
+@@ -139,21 +143,13 @@
+ ~~      ¬       NOT SIGN
+ @@      ¤       CURRENCY SIGN
+ $$      €       EURO SIGN
+-
+-" accented vowels cannot map onto cp1251 – use utf-8 file encoding
+-`D      А̀       CYRILLIC CAPITAL LETTER A + GRAVE ACCENT (COMPOSED)
+-`d      а̀       CYRILLIC SMALL LETTER A + GRAVE ACCENT (COMPOSED)
+-`E      Ѐ       CYRILLIC CAPITAL LETTER IE + GRAVE ACCENT (COMPOSED)
+-`e      ѐ       CYRILLIC SMALL LETTER IE + GRAVE ACCENT (COMPOSED)
+-`R      Ѝ       CYRILLIC CAPITAL LETTER I + GRAVE ACCENT (COMPOSED)
+-`r      ѝ       CYRILLIC SMALL LETTER I + GRAVE ACCENT (COMPOSED)
+-`F      О̀       CYRILLIC CAPITAL LETTER O + GRAVE ACCENT (COMPOSED)
+-`f      о̀       CYRILLIC SMALL LETTER O + GRAVE ACCENT (COMPOSED)
+-`W      У̀       CYRILLIC CAPITAL LETTER U + GRAVE ACCENT (COMPOSED)
+-`w      у̀       CYRILLIC SMALL LETTER U + GRAVE ACCENT (COMPOSED)
+-`C      Ъ̀       CYRILLIC CAPITAL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
+-`c      ъ̀       CYRILLIC SMALL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
+-`Z      Ю̀       CYRILLIC CAPITAL LETTER YU + GRAVE ACCENT (COMPOSED)
+-`z      ю̀       CYRILLIC SMALL LETTER YU + GRAVE ACCENT (COMPOSED)
+-`S      Я̀       CYRILLIC CAPITAL LETTER YA + GRAVE ACCENT (COMPOSED)
+-`s      я̀       CYRILLIC SMALL LETTER YA + GRAVE ACCENT (COMPOSED)
++%%      ‰       PER MILLE SIGN
+++|      †       DAGGER
++++      ‡       DOUBLE DAGGER
++||      ¶       PILCROW SIGN
++
++" Accented characters cannot map onto cp1251 – use utf-8 file encoding.
++" To apply an accent to a letter, type the corresponding key combination
++" to the immediate right of that letter.
++^`      <char-0x300>    COMBINING GRAVE ACCENT
++^'      <char-0x301>    COMBINING ACUTE ACCENT
+diff -Nur runtime/keymap/bulgarian-phonetic.vim runtime/keymap/bulgarian-phonetic.vim
+--- runtime/keymap/bulgarian-phonetic.vim	2008-06-29 06:17:40.000000000 -0700
++++ runtime/keymap/bulgarian-phonetic.vim	2011-01-18 10:40:55.951593656 -0800
+@@ -5,15 +5,13 @@
+ 
+ " Maintainer:   Boyko Bantchev <[email protected]>
+ " URI: http://www.math.bas.bg/bantchev/vim/bulgarian-phonetic.vim
+-" Last Changed: 2008 June 28
+-
+-" For a rationale for the layout and additional info on typing in Bulgarian
+-" using Unicode Cyrillic please see:
++" Last Changed: 2010 May 4
+ 
+ " This keymap corresponds to what is called "phonetic layout" in Bulgaria:
+-" Cyrillic letters tend to be mapped to their Latin homophones, if present.
+-" Most keys corresponding to punctuation characters are left unmapped, so
+-" they retain their usual (qwerty) meanings in Cyrillic typing.
++" Cyrillic letters tend to be mapped to their Latin homophones wherever
++" there are ones.  Most keys corresponding to punctuation characters are
++" left unmapped, so they retain their usual (QWERTY) meanings when typing
++" Cyrillic.
+ "
+ " In addition to the Bulgarian alphabet, the keymap makes accessible the
+ " following characters:
+@@ -24,12 +22,16 @@
+ "     —  The quotation marks „ “ ” ‘ ’ (used in the Bulgarian and English
+ "        quotation styles), as well as « » (Russian quotation style).
+ "     —  The characters §, №, – (en-dash), — (em-dash), …, •, ·, ±, °, ¬,
+-"        ¤, and €.
++"        ¤, €, ‰, †, ‡, and ¶.
+ "
+-" The keymap also defines key combinations for accented vowels in Bulgarian.
++" The keymap also defines key combinations for grave and acute accents.
++" (Grave accent is used in Bulgarian, acute in Russian, but both accents
++" apply to other languages as well.)
+ "
+ " For details of what key or key combination maps to what character, please
+-" see below the map table itself.
++" see below the map itself.
++"
++" See also http://www.math.bas.bg/bantchev/vim/kbdbul.html (in Bulgarian).
+ 
+ scriptencoding utf-8
+ 
+@@ -121,21 +123,13 @@
+ ~~      ¬       NOT SIGN
+ @@      ¤       CURRENCY SIGN
+ $$      €       EURO SIGN
+-
+-" accented vowels cannot map onto cp1251 – use utf-8 file encoding
+-'A      А̀       CYRILLIC CAPITAL LETTER A + GRAVE ACCENT (COMPOSED)
+-'a      а̀       CYRILLIC SMALL LETTER A + GRAVE ACCENT (COMPOSED)
+-'E      Ѐ       CYRILLIC CAPITAL LETTER IE + GRAVE ACCENT (COMPOSED)
+-'e      ѐ       CYRILLIC SMALL LETTER IE + GRAVE ACCENT (COMPOSED)
+-'I      Ѝ       CYRILLIC CAPITAL LETTER I + GRAVE ACCENT (COMPOSED)
+-'i      ѝ       CYRILLIC SMALL LETTER I + GRAVE ACCENT (COMPOSED)
+-'O      О̀       CYRILLIC CAPITAL LETTER O + GRAVE ACCENT (COMPOSED)
+-'o      о̀       CYRILLIC SMALL LETTER O + GRAVE ACCENT (COMPOSED)
+-'U      У̀       CYRILLIC CAPITAL LETTER U + GRAVE ACCENT (COMPOSED)
+-'u      у̀       CYRILLIC SMALL LETTER U + GRAVE ACCENT (COMPOSED)
+-'Y      Ъ̀       CYRILLIC CAPITAL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
+-'y      ъ̀       CYRILLIC SMALL LETTER HARD SIGN + GRAVE ACCENT (COMPOSED)
+-'|      Ю̀       CYRILLIC CAPITAL LETTER YU + GRAVE ACCENT (COMPOSED)
+-'\\     ю̀       CYRILLIC SMALL LETTER YU + GRAVE ACCENT (COMPOSED)
+-'Q      Я̀       CYRILLIC CAPITAL LETTER YA + GRAVE ACCENT (COMPOSED)
+-'q      я̀       CYRILLIC SMALL LETTER YA + GRAVE ACCENT (COMPOSED)
++%%      ‰       PER MILLE SIGN
+++|      †       DAGGER
++++      ‡       DOUBLE DAGGER
++||      ¶       PILCROW SIGN
++
++" Accented characters cannot map onto cp1251 – use utf-8 file encoding.
++" To apply an accent to a letter, type the corresponding key combination
++" to the immediate right of that letter.
++^`      <char-0x300>    COMBINING GRAVE ACCENT
++^'      <char-0x301>    COMBINING ACUTE ACCENT
+diff -Nur runtime/keymap/dvorak.vim runtime/keymap/dvorak.vim
+--- runtime/keymap/dvorak.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/keymap/dvorak.vim	2011-01-18 10:40:55.954296817 -0800
+@@ -0,0 +1,82 @@
++" Maintainer:   Ashish SHUKLA <[email protected]>
++" Last Changed: 2009 Jul 04
++"
++" All characters are ASCII, conversion to another encoding (e.g., UTF-8)
++" should work.
++
++let b:keymap_name = "en-dv"
++
++loadkeymap
++q	'
++w	,
++e	.
++r	p
++t	y
++y	f
++u	g
++i	c
++o	r
++p	l
++[	/
++]	=
++\\	\\
++a	a
++s	o
++d	e
++f	u
++g	i
++h	d
++j	h
++k	t
++l	n
++;	s
++'	-
++z	;
++x	q
++c	j
++v	k
++b	x
++n	b
++m	m
++,	w
++.	v
++/	z
++Z	:
++X	Q
++C	J
++V	K
++B	X
++N	B
++M	M
++<	W
++>	V
++?	Z
++A	A
++S	O
++D	E
++F	U
++G	I
++H	D
++J	H
++K	T
++L	N
++:	S
++\"	_
++Q	"
++W	<
++E	>
++R	P
++T	Y
++Y	F
++U	G
++I	C
++O	R
++P	L
++{	?
++}	+
++|	|
++-	[
++_	{
++=	]
+++	}
++
+diff -Nur runtime/lang/menu_de_de.latin1.vim runtime/lang/menu_de_de.latin1.vim
+--- runtime/lang/menu_de_de.latin1.vim	2006-04-30 08:57:53.000000000 -0700
++++ runtime/lang/menu_de_de.latin1.vim	2011-01-18 10:40:55.982446391 -0800
+@@ -84,13 +84,14 @@
+ menutrans F&ile\ Settings				&Datei-Einstellungen
+ 
+ " Boolean options
+-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Anzeige\ der\ Zeilen&nummer\ ein-\ und\ ausschalten<Tab>:set\ nu!
+-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		&List-Modus\ ein-\ und\ ausschalten<Tab>:set\ list!
+-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		&Zeilenumbruch\ ein-\ und\ ausschalten<Tab>:set\ wrap!
+-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	Umbruch\ an\ &Wortgrenzen\ ein-\ und\ ausschalten<Tab>:set\ lbr!
+-menutrans Toggle\ &expand-tab<Tab>:set\ et!		&Erweiterung\ von\ Tabulatoren\ ein-\ und\ ausschalten<Tab>:set\ et!
+-menutrans Toggle\ &auto-indent<Tab>:set\ ai!		&Automatische\ Einr�ckung\ ein-\ und\ ausschalten<Tab>:set\ ai!
+-menutrans Toggle\ &C-indenting<Tab>:set\ cin!		&C-Einr�ckung\ ein-\ und\ ausschalten<Tab>:set\ cin!
++menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!		Anzeige\ der\ Zeilen&nummer\ ein-\ und\ ausschalten<Tab>:set\ nu!
++menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	Anzeige\ der\ relati&ven\ Zeilennummer\ ein-\ und\ ausschalten<Tab>:set\ rnu!
++menutrans Toggle\ &List\ Mode<Tab>:set\ list!			&List-Modus\ ein-\ und\ ausschalten<Tab>:set\ list!
++menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!			&Zeilenumbruch\ ein-\ und\ ausschalten<Tab>:set\ wrap!
++menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!		Umbruch\ an\ &Wortgrenzen\ ein-\ und\ ausschalten<Tab>:set\ lbr!
++menutrans Toggle\ &expand-tab<Tab>:set\ et!			&Erweiterung\ von\ Tabulatoren\ ein-\ und\ ausschalten<Tab>:set\ et!
++menutrans Toggle\ &auto-indent<Tab>:set\ ai!			&Automatische\ Einr�ckung\ ein-\ und\ ausschalten<Tab>:set\ ai!
++menutrans Toggle\ &C-indenting<Tab>:set\ cin!			&C-Einr�ckung\ ein-\ und\ ausschalten<Tab>:set\ cin!
+ 
+ " other options
+ menutrans &Shiftwidth					&Schiebeweite
+diff -Nur runtime/lang/menu_es_es.latin1.vim runtime/lang/menu_es_es.latin1.vim
+--- runtime/lang/menu_es_es.latin1.vim	2005-12-01 08:21:29.000000000 -0800
++++ runtime/lang/menu_es_es.latin1.vim	2011-01-18 10:40:55.986586228 -0800
+@@ -1,7 +1,8 @@
+ " Menu Translations:	Espa�ol
+-" Maintainer:		Alejandro L�pez-Valencia <[email protected]>
+-" Version:		6.4.p0-1
+-" Last Change:		2005 Dec 01
++" Previous translator:	Alejandro L�pez-Valencia <[email protected]>
++" Last translator:	Omar Campagne Polaino <[email protected]>
++" Version:		7.2.245
++" Last Change:		2009 Sep 03
+ "
+ 
+ " Quit when menu translations have already been done.
+@@ -28,13 +29,14 @@
+ menutrans Co&pying		&T�rminos\ de\ Licencia
+ menutrans Sponsor/Register	Benefactor/Reg�strese
+ menutrans &Version		&Versi�n\ e\ \informaci�n\ de\ configuraci�n
+-menutrans &About		&Acerca\ de\ Vim.
++menutrans &About		&Acerca\ de\ Vim
+ 
+ " File menu
+ menutrans &File				&Archivo
+ menutrans &Open\.\.\.<Tab>:e		&Abrir\.\.\.<Tab>:e
+ menutrans Sp&lit-Open\.\.\.<Tab>:sp	A&brir\ en\ otra\ ventana\.\.\.<Tab>:sp
+ menutrans &New<Tab>:enew		&Nuevo<Tab>:enew
++menutrans Open\ Tab\.\.\.<Tab>:tabnew	Abrir\ pes&ta�a\.\.\.<Tab>:tabnew
+ menutrans &Close<Tab>:close		&Cerrar<Tab>:close
+ menutrans &Save<Tab>:w			&Guardar<Tab>:w
+ menutrans Save\ &As\.\.\.<Tab>:sav	Guardar\ &como\.\.\.<Tab>:sav
+@@ -65,11 +67,12 @@
+ menutrans Find\ and\ Rep&lace		Buscar\ y\ R&eemplazar
+ menutrans Find\ and\ Rep&lace<Tab>:s	Buscar\ y\ R&eemplazar<Tab>:s
+ menutrans Settings\ &Window		&Ventana\ de\ opciones
++menutrans Startup\ &Settings		Opciones\ de\ arranque	 
+ 
+ " Edit/Global Settings
+ menutrans &Global\ Settings		Opciones\ &globales
+ 
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Activar/Desactivar\ &realzado\ de\ sintaxis<Tab>:set\ hls!
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Activar/Desactivar\ &resaltado\ de\ sintaxis<Tab>:set\ hls!
+ menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Activar/Desactivar\ &ignorar\ may�sculas\ y\ min�sculas<Tab>:set\ ic!
+ menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Activar/Desactivar\ &mostrar\ coincidencias<Tab>:set\ sm!
+ 
+@@ -95,11 +98,11 @@
+ menutrans Toggle\ &Left\ Scrollbar	Ocultar/Mostrar\ barra\ de\ desplazamiento\ i&zquierda
+ menutrans Toggle\ &Right\ Scrollbar	Ocultar/Mostrar\ barra\ de\ desplazamiento\ &derecha
+ 
+-let g:menutrans_path_dialog = "Introduzca la ruta de b�squeda para los ficheros.\nSepare los nombres de los directorios con una coma."
+-let g:menutrans_tags_dialog = "Introduzca los nombres de los fichero de tags.\nSepare los nombres con una coma."
++let g:menutrans_path_dialog = "Introduzca la ruta de b�squeda para los archivos.\nSepare los nombres de los directorios con una coma."
++let g:menutrans_tags_dialog = "Introduzca los nombres de los archivos de tags.\nSepare los nombres con una coma."
+ 
+ " Edit/File Settings
+-menutrans F&ile\ Settings		Opciones\ del\ &fichero
++menutrans F&ile\ Settings		Opciones\ del\ &archivo
+ 
+ " Boolean options
+ menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Activar/Desactivar\ &numeraci�n\ de\ l�neas<Tab>:set\ nu!
+@@ -118,8 +121,8 @@
+ menutrans Te&xt\ Width\.\.\.		Anchura\ del\ te&xto\.\.\.
+ let g:menutrans_textwidth_dialog = "Introduzca el nuevo ancho del texto (0 para desactivar el quiebre de l�nea): "
+ 
+-menutrans &File\ Format\.\.\.		&Formato\ del\ fichero\.\.\.
+-let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el fichero"
++menutrans &File\ Format\.\.\.		&Formato\ del\ archivo\.\.\.
++let g:menutrans_fileformat_dialog = "Seleccione el formato para escribir el archivo"
+ 
+ menutrans C&olor\ Scheme		Esquema\ de\ c&olores
+ menutrans blue		azul
+@@ -154,7 +157,7 @@
+ menutrans &Tools			&Herramientas
+ menutrans &Jump\ to\ this\ tag<Tab>g^]	&Saltar\ a\ este\ etiqueta<Tab>g^]
+ menutrans Jump\ &back<Tab>^T		Saltar\ &atr�s<Tab>^T
+-menutrans Build\ &Tags\ File		Crear\ fichero\ de\ &etiquetas\
++menutrans Build\ &Tags\ File		Crear\ archivo\ de\ &etiquetas\
+ menutrans &Diff				Modo\ de\ &diferencias
+ menutrans &Folding			&Plegado
+ menutrans &Make<Tab>:make		Ejecutar\ �&Make�<Tab>:make
+@@ -169,6 +172,24 @@
+ menutrans &Convert\ to\ HEX<Tab>:%!xxd	Convertir\ a\ formato\ &hexadecimal<Tab>:%!xxd
+ menutrans Conve&rt\ back<Tab>:%!xxd\ -r	&Convertir\ al\ formato\ original<Tab>:%!xxd\ -r
+ 
++" Tools.Spelling Menu
++menutrans &Spelling				Correcci�n\ ortogr�fica
++menutrans &Spell\ Check\ On			&Activar\ correcci�n\ ortogr�fica
++menutrans Spell\ Check\ &Off			&Desactivar\ correcci�n\ ortogr�fica
++menutrans To\ &Next\ error<Tab>]s		&Siguiente\ error<Tab>]s
++menutrans To\ &Previous\ error<Tab>[s  		Error\ &precedente<Tab>[s 
++menutrans Suggest\ &Corrections<Tab>z=		Sugerir\ &correcci�n<Tab>z=
++menutrans &Repeat\ correction<Tab>:spellrepall	&Repetir\ correcci�n<Tab>:spellrepall
++an 40.335.205 &Tools.&Spelling.Castellano\ (es)	:set spl=es spell<CR>
++menutrans Set\ language\ to\ "en"		Ingl�s
++menutrans Set\ language\ to\ "en_au"		Ingl�s\ (en_au)
++menutrans Set\ language\ to\ "en_ca"		Ingl�s\ (en_ca)
++menutrans Set\ language\ to\ "en_gb"		Ingl�s\ (en_gb)
++menutrans Set\ language\ to\ "en_nz"		Ingl�s\ (en_nz)
++menutrans Set\ language\ to\ "en_us"		Ingl�s\ (en_us)
++
++menutrans &Find\ More\ Languages		&Buscar\ otras\ lenguas
++
+ " Tools.Fold Menu
+ menutrans &Enable/Disable\ folds<Tab>zi		&Activar/Desactivar\ pliegues<Tab>zi
+ menutrans &View\ Cursor\ Line<Tab>zv		&Ver\ l�nea\ del\ cursor<Tab>zv
+@@ -182,7 +203,7 @@
+ " create and delete folds
+ menutrans Create\ &Fold<Tab>zf			Crear\ &pliegue<Tab>zf
+ menutrans &Delete\ Fold<Tab>zd			&Suprimir\ pliegue<Tab>zd
+-menutrans Delete\ &All\ Folds<Tab>zD		Suprimir\ &todos\ los\ pligues<Tab>zD
++menutrans Delete\ &All\ Folds<Tab>zD		Suprimir\ &todos\ los\ pliegues<Tab>zD
+ " moving around in folds
+ menutrans Fold\ col&umn\ width			A&nchura\ de\ columna\ del\ pliegue
+ 
+@@ -203,7 +224,7 @@
+ menutrans &Alternate		&Alternar
+ menutrans &Next			Si&guiente
+ menutrans &Previous		&Previo
+-let g:menutrans_no_file = "[Sin fichero]"
++let g:menutrans_no_file = "[Sin archivo]"
+ 
+ " Window menu
+ menutrans &Window			&Ventana
+@@ -211,7 +232,7 @@
+ menutrans S&plit<Tab>^Ws		&Dividir\ la\ ventana<Tab>^Ws
+ menutrans Sp&lit\ To\ #<Tab>^W^^	D&ividir\ en\ el\ marcador\ (#)<Tab>^W^^
+ menutrans Split\ &Vertically<Tab>^Wv    Dividir\ &verticalmente<Tab>^Wv
+-menutrans Split\ File\ E&xplorer	&Abrir\ el\ �Explorador\ de\ ficheros�
++menutrans Split\ File\ E&xplorer	&Abrir\ el\ �Explorador\ de\ archivos�
+ menutrans &Close<Tab>^Wc		&Cerrar\ esta\ ventana<Tab>^Wc
+ menutrans Close\ &Other(s)<Tab>^Wo	Cerrar\ &otra(s)\ ventana(s)<Tab>^Wo
+ menutrans Move\ &To			Mov&er\ a
+@@ -245,9 +266,9 @@
+     delfun Do_toolbar_tmenu
+   endif
+   fun Do_toolbar_tmenu()
+-    tmenu ToolBar.Open		Abrir fichero
+-    tmenu ToolBar.Save		Guardar fichero
+-    tmenu ToolBar.SaveAll	Guardar todos los ficheros
++    tmenu ToolBar.Open		Abrir archivo
++    tmenu ToolBar.Save		Guardar archivo
++    tmenu ToolBar.SaveAll	Guardar todos los archivos
+     tmenu ToolBar.Print		Imprimir
+     tmenu ToolBar.Undo		Deshacer
+     tmenu ToolBar.Redo		Rehacer
+@@ -273,7 +294,7 @@
+     tmenu ToolBar.RunScript	Ejecutar un archivo de �rdenes
+     tmenu ToolBar.Make		Ejecutar �Make�
+     tmenu ToolBar.Shell		Abrir un int�rprete de comandos
+-    tmenu ToolBar.RunCtags	Generar un fichero de etiquetas
++    tmenu ToolBar.RunCtags	Generar un archivo de etiquetas
+     tmenu ToolBar.TagJump	Saltar a una etiqueta
+     tmenu ToolBar.Help		Ayuda
+     tmenu ToolBar.FindHelp	Buscar en la ayuda...
+@@ -282,15 +303,15 @@
+ 
+ " Syntax menu
+ menutrans &Syntax			&Sintaxis
+-menutrans &Show\ filetypes\ in\ menu	&Mostrar\ listas\ de\ �tipo\ de\ fichero�
++menutrans &Show\ filetypes\ in\ menu	&Mostrar\ listas\ de\ �tipo\ de\ archivo�
+ menutrans Set\ '&syntax'\ only		Activar\ s�lo\ sintaxis
+-menutrans Set\ '&filetype'\ too		Activar\ tambi�n\ �tipo\ de\ fichero�
++menutrans Set\ '&filetype'\ too		Activar\ tambi�n\ �tipo\ de\ archivo�
+ menutrans &Off				&Desactivar\ sintaxis
+-menutrans &Manual			sintaxis\ &manual
+-menutrans A&utomatic			sintaxis\ a&utom�tica
+-menutrans on/off\ for\ &This\ file	Activar/Desactivar\ en\ es&te\ fichero
++menutrans &Manual			Sintaxis\ &manual
++menutrans A&utomatic			Sintaxis\ a&utom�tica
++menutrans on/off\ for\ &This\ file	Activar/Desactivar\ en\ es&te\ archivo
+ menutrans Co&lor\ test			&Prueba\ de\ colores
+-menutrans &Highlight\ test		Prueba\ de\ &realzado
++menutrans &Highlight\ test		Prueba\ de\ &resaltado
+ menutrans &Convert\ to\ HTML		&Convertir\ a\ HTML
+ 
+ " Find Help dialog text
+diff -Nur runtime/lang/menu_ja_jp.euc-jp.vim runtime/lang/menu_ja_jp.euc-jp.vim
+--- runtime/lang/menu_ja_jp.euc-jp.vim	2006-04-18 01:41:33.000000000 -0700
++++ runtime/lang/menu_ja_jp.euc-jp.vim	2011-04-03 09:27:21.686140362 -0700
+@@ -297,39 +297,39 @@
+   let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0
+   "
+   " �ɤ߹���
+-  an 10.395 �ե�����(&F).-SEPICONV- <Nop>
+-  an 10.396.100.100 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
++  an 10.395 &File.-SEPICONV- <Nop>
++  an 10.396.100.100 &File.���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
+   if !support_jisx0213
+-    an 10.396.100.110 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
+-    an 10.396.100.120 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
++    an 10.396.100.110 &File.���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
++    an 10.396.100.120 &File.���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
+   else
+-    an 10.396.100.110 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
+-    an 10.396.100.120 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
++    an 10.396.100.110 &File.���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
++    an 10.396.100.120 &File.���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
+   endif
+-  an 10.396.100.130 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
++  an 10.396.100.130 &File.���󥳡��ɻ���(&E)\.\.\..����(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
+ 
+   " ���ɹ�
+-  an 10.396.110.100 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
++  an 10.396.110.100 &File.���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
+   if !support_jisx0213
+-    an 10.396.110.110 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
+-    an 10.396.110.120 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
++    an 10.396.110.110 &File.���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
++    an 10.396.110.120 &File.���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
+   else
+-    an 10.396.110.110 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
+-    an 10.396.110.120 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
++    an 10.396.110.110 &File.���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
++    an 10.396.110.120 &File.���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
+   endif
+-  an 10.396.110.130 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
++  an 10.396.110.130 &File.���󥳡��ɻ���(&E)\.\.\..���ɹ�(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
+ 
+   " ��¸
+-  an 10.396.115 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..-SEP1- <Nop>
+-  an 10.396.120.100 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
++  an 10.396.115 &File.���󥳡��ɻ���(&E)\.\.\..-SEP1- <Nop>
++  an 10.396.120.100 &File.���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
+   if !support_jisx0213
+-    an 10.396.120.110 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
+-    an 10.396.120.120 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
++    an 10.396.120.110 &File.���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
++    an 10.396.120.120 &File.���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
+   else
+-    an 10.396.120.110 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
+-    an 10.396.120.120 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
++    an 10.396.120.110 &File.���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
++    an 10.396.120.120 &File.���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
+   endif
+-  an 10.396.120.130 �ե�����(&F).���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
++  an 10.396.120.130 &File.���󥳡��ɻ���(&E)\.\.\..��¸(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
+ endif
+ 
+ " filler to avoid the line above being recognized as a modeline
+diff -Nur runtime/lang/menu_ja_jp.utf-8.vim runtime/lang/menu_ja_jp.utf-8.vim
+--- runtime/lang/menu_ja_jp.utf-8.vim	2006-04-18 01:41:57.000000000 -0700
++++ runtime/lang/menu_ja_jp.utf-8.vim	2011-04-03 09:27:21.686672374 -0700
+@@ -297,39 +297,39 @@
+   let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0
+   "
+   " 読み込み
+-  an 10.395 ファイル(&F).-SEPICONV- <Nop>
+-  an 10.396.100.100 ファイル(&F).エンコード指定(&E)\.\.\..開く(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
++  an 10.395 &File.-SEPICONV- <Nop>
++  an 10.396.100.100 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
+   if !support_jisx0213
+-    an 10.396.100.110 ファイル(&F).エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
+-    an 10.396.100.120 ファイル(&F).エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
++    an 10.396.100.110 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
++    an 10.396.100.120 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
+   else
+-    an 10.396.100.110 ファイル(&F).エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
+-    an 10.396.100.120 ファイル(&F).エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
++    an 10.396.100.110 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
++    an 10.396.100.120 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
+   endif
+-  an 10.396.100.130 ファイル(&F).エンコード指定(&E)\.\.\..開く(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
++  an 10.396.100.130 &File.エンコード指定(&E)\.\.\..開く(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
+ 
+   " 再読込
+-  an 10.396.110.100 ファイル(&F).エンコード指定(&E)\.\.\..再読込(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
++  an 10.396.110.100 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
+   if !support_jisx0213
+-    an 10.396.110.110 ファイル(&F).エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
+-    an 10.396.110.120 ファイル(&F).エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
++    an 10.396.110.110 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
++    an 10.396.110.120 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
+   else
+-    an 10.396.110.110 ファイル(&F).エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
+-    an 10.396.110.120 ファイル(&F).エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
++    an 10.396.110.110 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
++    an 10.396.110.120 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
+   endif
+-  an 10.396.110.130 ファイル(&F).エンコード指定(&E)\.\.\..再読込(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
++  an 10.396.110.130 &File.エンコード指定(&E)\.\.\..再読込(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
+ 
+   " 保存
+-  an 10.396.115 ファイル(&F).エンコード指定(&E)\.\.\..-SEP1- <Nop>
+-  an 10.396.120.100 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
++  an 10.396.115 &File.エンコード指定(&E)\.\.\..-SEP1- <Nop>
++  an 10.396.120.100 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
+   if !support_jisx0213
+-    an 10.396.120.110 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
+-    an 10.396.120.120 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
++    an 10.396.120.110 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
++    an 10.396.120.120 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
+   else
+-    an 10.396.120.110 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
+-    an 10.396.120.120 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
++    an 10.396.120.110 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
++    an 10.396.120.120 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
+   endif
+-  an 10.396.120.130 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
++  an 10.396.120.130 &File.エンコード指定(&E)\.\.\..保存(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
+ endif
+ 
+ " filler to avoid the line above being recognized as a modeline
+diff -Nur runtime/lang/menu_japanese_japan.932.vim runtime/lang/menu_japanese_japan.932.vim
+--- runtime/lang/menu_japanese_japan.932.vim	2006-04-18 01:40:47.000000000 -0700
++++ runtime/lang/menu_japanese_japan.932.vim	2011-04-03 09:27:21.687190721 -0700
+@@ -297,39 +297,39 @@
+   let support_jisx0213 = (iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb") ? 1 : 0
+   "
+   " �ǂݍ���
+-  an 10.395 �t�@�C��(&F).-SEPICONV- <Nop>
+-  an 10.396.100.100 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
++  an 10.395 &File.-SEPICONV- <Nop>
++  an 10.396.100.100 &File.�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..SJIS(&S)<Tab>fenc=cp932 :browse confirm e ++enc=cp932<CR>
+   if !support_jisx0213
+-    an 10.396.100.110 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
+-    an 10.396.100.120 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
++    an 10.396.100.110 &File.�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jp :browse confirm e ++enc=euc-jp<CR>
++    an 10.396.100.120 &File.�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :browse confirm e ++enc=iso-2022-jp<CR>
+   else
+-    an 10.396.100.110 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
+-    an 10.396.100.120 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
++    an 10.396.100.110 &File.�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :browse confirm e ++enc=euc-jisx0213<CR>
++    an 10.396.100.120 &File.�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :browse confirm e ++enc=iso-2022-jp-3<CR>
+   endif
+-  an 10.396.100.130 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
++  an 10.396.100.130 &File.�G���R�[�h�w��(&E)\.\.\..�J��(&O)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :browse confirm e ++enc=utf-8<CR>
+ 
+   " �ēǍ�
+-  an 10.396.110.100 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
++  an 10.396.110.100 &File.�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..SJIS(&S)<Tab>fenc=cp932 :e ++enc=cp932<CR>
+   if !support_jisx0213
+-    an 10.396.110.110 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
+-    an 10.396.110.120 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
++    an 10.396.110.110 &File.�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jp :e ++enc=euc-jp<CR>
++    an 10.396.110.120 &File.�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :e ++enc=iso-2022-jp<CR>
+   else
+-    an 10.396.110.110 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
+-    an 10.396.110.120 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
++    an 10.396.110.110 &File.�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :e ++enc=euc-jisx0213<CR>
++    an 10.396.110.120 &File.�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :e ++enc=iso-2022-jp-3<CR>
+   endif
+-  an 10.396.110.130 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
++  an 10.396.110.130 &File.�G���R�[�h�w��(&E)\.\.\..�ēǍ�(&R)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :e ++enc=utf-8<CR>
+ 
+   " �ۑ�
+-  an 10.396.115 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..-SEP1- <Nop>
+-  an 10.396.120.100 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
++  an 10.396.115 &File.�G���R�[�h�w��(&E)\.\.\..-SEP1- <Nop>
++  an 10.396.120.100 &File.�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..SJIS(&S)<Tab>fenc=cp932 :set fenc=cp932 \| w<CR>
+   if !support_jisx0213
+-    an 10.396.120.110 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
+-    an 10.396.120.120 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
++    an 10.396.120.110 &File.�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jp :set fenc=euc-jp \| w<CR>
++    an 10.396.120.120 &File.�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp :set fenc=iso-2022-jp \| w<CR>
+   else
+-    an 10.396.120.110 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
+-    an 10.396.120.120 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
++    an 10.396.120.110 &File.�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..EUC(&E)<Tab>fenc=euc-jisx0213 :set fenc=euc-jisx0213 \| w<CR>
++    an 10.396.120.120 &File.�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..JIS(&J)<Tab>fenc=iso-2022-jp-3 :set fenc=iso-2022-jp-3 \| w<CR>
+   endif
+-  an 10.396.120.130 �t�@�C��(&F).�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
++  an 10.396.120.130 &File.�G���R�[�h�w��(&E)\.\.\..�ۑ�(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
+ endif
+ 
+ " filler to avoid the line above being recognized as a modeline
+diff -Nur runtime/lang/menu_ko_kr.euckr.vim runtime/lang/menu_ko_kr.euckr.vim
+--- runtime/lang/menu_ko_kr.euckr.vim	2005-03-20 09:44:04.000000000 -0800
++++ runtime/lang/menu_ko_kr.euckr.vim	2011-04-03 09:27:21.687645338 -0700
+@@ -1,6 +1,6 @@
+ " Menu Translations:	Korean
+-" Maintainer:		Nam SungHyun <[email protected]>
+-" Last Change:		2003 Apr 25
++" Maintainer:		SungHyun Nam <[email protected]>
++" Last Change:		2010 Feb 18
+ 
+ " Quit when menu translations have already been done.
+ if exists("did_menu_trans")
+@@ -14,19 +14,21 @@
+ menutrans &Help			����(&H)
+ menutrans &Overview<Tab><F1>	����(&O)<Tab><F1>
+ menutrans &User\ Manual		�����\ �Ŵ���(&U)
+-menutrans &How-to\ links	�����ϳ�\ ���(&H)
+-menutrans &GUI			����(&G)
++menutrans &How-to\ links	�Ͽ���\ ���(&H)
++menutrans &GUI			GUI(&G)
+ menutrans &Find\.\.\.		�(&F)\.\.\.
+ menutrans &Credits		������\ ��(&C)
+ menutrans Co&pying		���۱�(&p)
++menutrans &Sponsor/Register	�Ŀ�/���(&S)
+ menutrans O&rphans		����(&r)
+-menutrans &Version		����(&V)
++menutrans &Version		����(&V)
+ menutrans &About		��\ ���α׷���(&A)
+ 
+ " File menu
+ menutrans &File				����(&F)
+ menutrans &Open\.\.\.<Tab>:e		����(&O)\.\.\.<Tab>:e
+ menutrans Sp&lit-Open\.\.\.<Tab>:sp	������\ ����(&l)\.\.\.<Tab>:sp
++menutrans Open\ Tab\.\.\.<Tab>:tabnew	��\ ����\.\.\.<Tab>:tabnew
+ menutrans &New<Tab>:enew		���ο�(&N)<Tab>:enew
+ menutrans &Close<Tab>:close		�ݱ�(&C)<Tab>:close
+ menutrans &Save<Tab>:w			����(&S)<Tab>:w
+@@ -52,6 +54,7 @@
+ menutrans &Find\.\.\.			�(&F)\.\.\.
+ menutrans Find\ and\ Rep&lace\.\.\.	ã�Ƽ�\ �ٲٱ�(&l)\.\.\.
+ menutrans Settings\ &Window		����\ â(&W)
++menutrans Startup\ &Settings		����\ ����(&S)
+ 
+ " Edit/Global Settings
+ menutrans &Global\ Settings		����\ ����(&G)
+@@ -104,6 +107,21 @@
+ menutrans Jump\ &back<Tab>^T		�ڷ�\ ����(&b)<Tab>^T
+ menutrans Build\ &Tags\ File		����ǥ\ ����\ �����(&T)
+ 
++menutrans &Spelling			�����\ �˻�(&S)
++menutrans &Spell\ Check\ On		�����\ �˻�\ ����(&S)
++menutrans Spell\ Check\ &Off		�����\ �˻�\ ��(&O)
++menutrans To\ &Next\ error<Tab>]s	����\ ������(&N)<Tab>]s
++menutrans To\ &Previous\ error<Tab>[s	����\ ������(&P)<Tab>[s
++menutrans Suggest\ &Corrections<Tab>z=	����\ ����(&C)<Tab>z=
++menutrans &Repeat\ correction<Tab>:spellrepall	����\ �ݺ�(&R)<Tab>:spellrepall
++menutrans Set\ language\ to\ "en"	��\ "en"����\ ����
++menutrans Set\ language\ to\ "en_au"	��\ "en_au"��\ ����
++menutrans Set\ language\ to\ "en_ca"	��\ "en_ca"��\ ����
++menutrans Set\ language\ to\ "en_gb"	��\ "en_gb"��\ ����
++menutrans Set\ language\ to\ "en_nz"	��\ "en_nz"����\ ����
++menutrans Set\ language\ to\ "en_us"	��\ "en_us"��\ ����
++menutrans &Find\ More\ Languages	�ٸ�\ ���\ ã��(&F)
++
+ " Tools.Fold Menu
+ menutrans &Folding			����(&F)
+ " open close folds
+@@ -134,7 +152,7 @@
+ menutrans &Get\ Block			����\ ��������(&G)
+ menutrans &Put\ Block			����\ ����ֱ�(&P)
+ 
+-menutrans &Make<Tab>:make		Make(&M)<Tab>:make
++menutrans &Make<Tab>:make		����(&M)<Tab>:make
+ menutrans &List\ Errors<Tab>:cl		����\ ���\ ����(&L)<Tab>:cl
+ menutrans L&ist\ Messages<Tab>:cl!	�޽���\ ���\ ����(&i)<Tab>:cl!
+ menutrans &Next\ Error<Tab>:cn		����\ ����(&N)<Tab>:cn
+@@ -145,7 +163,7 @@
+ menutrans &Update<Tab>:cwin		����(&U)<Tab>:cwin
+ menutrans &Open<Tab>:copen		����(&O)<Tab>:copen
+ menutrans &Close<Tab>:cclose		�ݱ�(&C)<Tab>:cclose
+-menutrans &Set\ Compiler		�����Ϸ�\ ����(&S)
++menutrans Se&T\ Compiler		�����Ϸ�\ ����(&T)
+ menutrans &Convert\ to\ HEX<Tab>:%!mc\ vim:xxd	����������\ ��ȯ<Tab>:%!mc\ vim:xxd
+ menutrans &Convert\ to\ HEX<Tab>:%!xxd	����������\ ��ȯ(&C)<Tab>:%!xxd
+ menutrans Conve&rt\ back<Tab>:%!mc\ vim:xxd\ -r	�������\ ��ȯ(&r)<Tab>:%!mc\ vim:xxd\ -r
+diff -Nur runtime/lang/menu_ko_kr.utf-8.vim runtime/lang/menu_ko_kr.utf-8.vim
+--- runtime/lang/menu_ko_kr.utf-8.vim	2005-03-20 09:43:37.000000000 -0800
++++ runtime/lang/menu_ko_kr.utf-8.vim	2011-04-03 09:27:21.688110370 -0700
+@@ -1,6 +1,6 @@
+ " Menu Translations:	Korean
+-" Maintainer:		Nam SungHyun <[email protected]>
+-" Last Change:		2003 Apr 25
++" Maintainer:		SungHyun Nam <[email protected]>
++" Last Change:		2010 Feb 18
+ 
+ " Quit when menu translations have already been done.
+ if exists("did_menu_trans")
+@@ -14,19 +14,21 @@
+ menutrans &Help			도움말(&H)
+ menutrans &Overview<Tab><F1>	개관(&O)<Tab><F1>
+ menutrans &User\ Manual		사용자\ 매뉴얼(&U)
+-menutrans &How-to\ links	어찌하나\ 목록(&H)
+-menutrans &GUI			구이(&G)
++menutrans &How-to\ links	하우투\ 목록(&H)
++menutrans &GUI			GUI(&G)
+ menutrans &Find\.\.\.		찾기(&F)\.\.\.
+ menutrans &Credits		고마운\ 분(&C)
+ menutrans Co&pying		저작권(&p)
++menutrans &Sponsor/Register	후원/등록(&S)
+ menutrans O&rphans		고아(&r)
+-menutrans &Version		버전(&V)
++menutrans &Version		버젼(&V)
+ menutrans &About		이\ 프로그램은(&A)
+ 
+ " File menu
+ menutrans &File				파일(&F)
+ menutrans &Open\.\.\.<Tab>:e		열기(&O)\.\.\.<Tab>:e
+ menutrans Sp&lit-Open\.\.\.<Tab>:sp	나눠서\ 열기(&l)\.\.\.<Tab>:sp
++menutrans Open\ Tab\.\.\.<Tab>:tabnew	탭\ 열기\.\.\.<Tab>:tabnew
+ menutrans &New<Tab>:enew		새로운(&N)<Tab>:enew
+ menutrans &Close<Tab>:close		닫기(&C)<Tab>:close
+ menutrans &Save<Tab>:w			저장(&S)<Tab>:w
+@@ -52,6 +54,7 @@
+ menutrans &Find\.\.\.			찾기(&F)\.\.\.
+ menutrans Find\ and\ Rep&lace\.\.\.	찾아서\ 바꾸기(&l)\.\.\.
+ menutrans Settings\ &Window		설정\ 창(&W)
++menutrans Startup\ &Settings		시작\ 설정(&S)
+ 
+ " Edit/Global Settings
+ menutrans &Global\ Settings		전역\ 설정(&G)
+@@ -104,6 +107,21 @@
+ menutrans Jump\ &back<Tab>^T		뒤로\ 가기(&b)<Tab>^T
+ menutrans Build\ &Tags\ File		꼬리표\ 파일\ 만들기(&T)
+ 
++menutrans &Spelling			맞춤법\ 검사(&S)
++menutrans &Spell\ Check\ On		맞춤법\ 검사\ 시작(&S)
++menutrans Spell\ Check\ &Off		맞춤법\ 검사\ 끝(&O)
++menutrans To\ &Next\ error<Tab>]s	다음\ 에러로(&N)<Tab>]s
++menutrans To\ &Previous\ error<Tab>[s	이전\ 에러로(&P)<Tab>[s
++menutrans Suggest\ &Corrections<Tab>z=	수정\ 제안(&C)<Tab>z=
++menutrans &Repeat\ correction<Tab>:spellrepall	수정\ 반복(&R)<Tab>:spellrepall
++menutrans Set\ language\ to\ "en"	언어를\ "en"으로\ 설정
++menutrans Set\ language\ to\ "en_au"	언어를\ "en_au"로\ 설정
++menutrans Set\ language\ to\ "en_ca"	언어를\ "en_ca"로\ 설정
++menutrans Set\ language\ to\ "en_gb"	언어를\ "en_gb"로\ 설정
++menutrans Set\ language\ to\ "en_nz"	언어를\ "en_nz"으로\ 설정
++menutrans Set\ language\ to\ "en_us"	언어를\ "en_us"로\ 설정
++menutrans &Find\ More\ Languages	다른\ 언어\ 찾기(&F)
++
+ " Tools.Fold Menu
+ menutrans &Folding			접기(&F)
+ " open close folds
+@@ -134,7 +152,7 @@
+ menutrans &Get\ Block			블럭\ 가져오기(&G)
+ menutrans &Put\ Block			블럭\ 집어넣기(&P)
+ 
+-menutrans &Make<Tab>:make		Make(&M)<Tab>:make
++menutrans &Make<Tab>:make		빌드(&M)<Tab>:make
+ menutrans &List\ Errors<Tab>:cl		에러\ 목록\ 보기(&L)<Tab>:cl
+ menutrans L&ist\ Messages<Tab>:cl!	메시지\ 목록\ 보기(&i)<Tab>:cl!
+ menutrans &Next\ Error<Tab>:cn		다음\ 에러(&N)<Tab>:cn
+@@ -145,7 +163,7 @@
+ menutrans &Update<Tab>:cwin		갱신(&U)<Tab>:cwin
+ menutrans &Open<Tab>:copen		열기(&O)<Tab>:copen
+ menutrans &Close<Tab>:cclose		닫기(&C)<Tab>:cclose
+-menutrans &Set\ Compiler		컴파일러\ 설정(&S)
++menutrans Se&T\ Compiler		컴파일러\ 설정(&T)
+ menutrans &Convert\ to\ HEX<Tab>:%!mc\ vim:xxd	십육진으로\ 변환<Tab>:%!mc\ vim:xxd
+ menutrans &Convert\ to\ HEX<Tab>:%!xxd	십육진으로\ 변환(&C)<Tab>:%!xxd
+ menutrans Conve&rt\ back<Tab>:%!mc\ vim:xxd\ -r	원래대로\ 변환(&r)<Tab>:%!mc\ vim:xxd\ -r
+diff -Nur runtime/lang/menu_ko_kr.vim runtime/lang/menu_ko_kr.vim
+--- runtime/lang/menu_ko_kr.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/lang/menu_ko_kr.vim	2011-01-18 10:40:56.000690175 -0800
+@@ -1,5 +1,5 @@
+ " Menu Translations:	Korean
+-" Translated By:	Nam SungHyun <[email protected]>
+-" Last Change:		2003 Feb 24
++" Translated By:	SungHyun Nam <[email protected]>
++" Last Change:		2008 Sep 17
+ 
+ source <sfile>:p:h/menu_ko_kr.euckr.vim
+diff -Nur runtime/lang/menu_pl_pl.iso_8859-2.vim runtime/lang/menu_pl_pl.iso_8859-2.vim
+--- runtime/lang/menu_pl_pl.iso_8859-2.vim	2006-05-03 15:51:28.000000000 -0700
++++ runtime/lang/menu_pl_pl.iso_8859-2.vim	2011-01-18 10:40:56.004658614 -0800
+@@ -1,7 +1,7 @@
+ " Menu Translations:	Polish
+ " Maintainer:		Mikolaj Machowski ( mikmach AT wp DOT pl )
+ " Initial Translation:	Marcin Dalecki <[email protected]>
+-" Last Change: 4 May  2006
++" Last Change: 17 May  2010
+ 
+ " Quit when menu translations have already been done.
+ if exists("did_menu_trans")
+@@ -13,15 +13,16 @@
+ 
+ " Help menu
+ menutrans &Help			Po&moc
+-menutrans &Overview<Tab><F1>	&Spis\ tre�ci<Tab><F1>
++menutrans &Overview<Tab><F1>			&Og�lnie<Tab><F1>
++menutrans &User\ Manual	Podr�cznik\ &u�ytkownika
+ menutrans &How-to\ links	&Odno�niki\ JTZ
++menutrans &Find\.\.\.	&Szukaj\.\.\.
+ menutrans &Credits		Po&dzi�kowania
+-menutrans &User\ Manual    Podr�cznik\ &u�ytkownika
+ menutrans Co&pying		&Kopiowanie
+-menutrans &Version		&Wersja
+-menutrans &About		o\ &Programie
+ menutrans &Sponsor/Register	&Sponsorowanie/Rejestracja
+ menutrans O&rphans		Sie&roty
++menutrans &Version		&Wersja
++menutrans &About		o\ &Programie
+ 
+ " File menu
+ menutrans &File				&Plik
+@@ -80,19 +81,19 @@
+ menutrans russian-jcuken		rosyjski-jcuken
+ menutrans russian-jcukenwin		rosyjski-jcukenwin
+ 
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Podkre�lanie\ &wzorc�w<Tab>:set\ hls!
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Pod�wietlanie\ &wzorc�w<Tab>:set\ hls!
+ 
+ menutrans Toggle\ &Ignore-case<Tab>:set\ ic!	&Ignorowanie\ wielko�ci<Tab>:set\ ic!
+ menutrans Toggle\ &Showmatch<Tab>:set\ sm!		&Pokazywanie\ pasuj�cych<Tab>:set\ sm!
+ 
+ menutrans &Context\ lines	Wiersze\ &kontekstowe
+-menutrans &Virtual\ Edit	Obr�bka\ &wirtualna
++menutrans &Virtual\ Edit	Edycja\ &wirtualna
+ 
+ menutrans Never			Nigdy
+-menutrans Block\ Selection	Zaznaczanie\ zakresu
++menutrans Block\ Selection	Zaznaczanie\ blokowe
+ menutrans Insert\ mode		Tryb\ wprowadzania
+ menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	Tryb\ zg&odno�ci\ z\ Vi<Tab>:set\ cp!
+-menutrans Block\ and\ Insert	Zakres\ i\ wprowadzanie
++menutrans Block\ and\ Insert	Blokowe\ i\ wprowadzanie
+ menutrans Always		Zawsze
+ 
+ menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	Tryb\ wprowadzania<Tab>:set\ im!
+@@ -119,7 +120,7 @@
+ menutrans To\ &Next\ error<Tab>]s	Do\ &nast�pnego\ b��du<Tab>]s
+ menutrans To\ &Previous\ error<Tab>[s	Do\ &poprzedniego\ b��du<Tab>[s
+ menutrans Suggest\ &Corrections<Tab>z=	Sugestie\ poprawek<Tab>z=
+-menutrans &Repeat\ correction<Tab>:spellrepall	Powt�&z\ poprawk�<Tab>:spellrepall
++menutrans &Repeat\ correction<Tab>:spellrepall	Powt�r&z\ poprawk�<Tab>:spellrepall
+ menutrans Set\ language\ to\ "en"	Ustaw\ j�zyk\ na\ "en"
+ menutrans Set\ language\ to\ "en_au"	Ustaw\ j�zyk\ na\ "en_au"
+ menutrans Set\ language\ to\ "en_ca"	Ustaw\ j�zyk\ na\ "en_ca"
+@@ -146,7 +147,7 @@
+ menutrans Fold\ Met&hod		Me&toda\ zawijania
+ menutrans M&anual			&R�cznie
+ menutrans I&ndent			W&ci�cie
+-menutrans E&xpression W&yrazenie
++menutrans E&xpression W&yra�enie
+ menutrans S&yntax			S&k�adnia
+ menutrans Ma&rker			Zn&acznik
+ 
+@@ -163,7 +164,7 @@
+ menutrans &Previous\ Error<Tab>:cp	&Poprzedni\ b��d<Tab>:cp
+ menutrans &Older\ List<Tab>:cold	&Starsza\ lista<Tab>:cold
+ menutrans N&ewer\ List<Tab>:cnew	N&owsza\ lista<Tab>:cnew
+-menutrans Error\ &Window  Okno\ komu&nikat�w
++menutrans Error\ &Window	Okno\ b��d�&w
+ menutrans &Update<Tab>:cwin			Akt&ualizuj<Tab>:cwin
+ menutrans &Close<Tab>:cclose			&Zamknij<Tab>:cclose
+ menutrans &Open<Tab>:copen			&Otw�rz<Tab>:copen
+@@ -174,8 +175,8 @@
+ 
+ " Names for buffer menu.
+ menutrans &Buffers	&Bufory
+-menutrans &Refresh\ menu	Od�wie�
+-menutrans Delete	Skasuj
++menutrans &Refresh\ menu	&Od�wie�
++menutrans &Delete	&Skasuj
+ menutrans &Alternate	&Zmie�
+ menutrans &Next		&Nast�pny
+ menutrans &Previous	&Poprzedni
+diff -Nur runtime/lang/menu_pl_pl.utf-8.vim runtime/lang/menu_pl_pl.utf-8.vim
+--- runtime/lang/menu_pl_pl.utf-8.vim	2006-05-03 15:52:28.000000000 -0700
++++ runtime/lang/menu_pl_pl.utf-8.vim	2011-01-18 10:40:56.005586023 -0800
+@@ -1,7 +1,7 @@
+ " Menu Translations:	Polish
+ " Maintainer:		Mikolaj Machowski ( mikmach AT wp DOT pl )
+ " Initial Translation:	Marcin Dalecki <[email protected]>
+-" Last Change: 4 May  2006
++" Last Change: 17 May  2010
+ 
+ " Quit when menu translations have already been done.
+ if exists("did_menu_trans")
+@@ -13,15 +13,16 @@
+ 
+ " Help menu
+ menutrans &Help			Po&moc
+-menutrans &Overview<Tab><F1>	&Spis\ treści<Tab><F1>
++menutrans &Overview<Tab><F1>			&Ogólnie<Tab><F1>
++menutrans &User\ Manual	Podręcznik\ &użytkownika
+ menutrans &How-to\ links	&Odnośniki\ JTZ
++menutrans &Find\.\.\.	&Szukaj\.\.\.
+ menutrans &Credits		Po&dziękowania
+-menutrans &User\ Manual    Podręcznik\ &użytkownika
+ menutrans Co&pying		&Kopiowanie
+-menutrans &Version		&Wersja
+-menutrans &About		o\ &Programie
+ menutrans &Sponsor/Register	&Sponsorowanie/Rejestracja
+ menutrans O&rphans		Sie&roty
++menutrans &Version		&Wersja
++menutrans &About		o\ &Programie
+ 
+ " File menu
+ menutrans &File				&Plik
+@@ -80,19 +81,19 @@
+ menutrans russian-jcuken		rosyjski-jcuken
+ menutrans russian-jcukenwin		rosyjski-jcukenwin
+ 
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Podkreślanie\ &wzorców<Tab>:set\ hls!
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Podświetlanie\ &wzorców<Tab>:set\ hls!
+ 
+ menutrans Toggle\ &Ignore-case<Tab>:set\ ic!	&Ignorowanie\ wielkości<Tab>:set\ ic!
+ menutrans Toggle\ &Showmatch<Tab>:set\ sm!		&Pokazywanie\ pasujących<Tab>:set\ sm!
+ 
+ menutrans &Context\ lines	Wiersze\ &kontekstowe
+-menutrans &Virtual\ Edit	Obróbka\ &wirtualna
++menutrans &Virtual\ Edit	Edycja\ &wirtualna
+ 
+ menutrans Never			Nigdy
+-menutrans Block\ Selection	Zaznaczanie\ zakresu
++menutrans Block\ Selection	Zaznaczanie\ blokowe
+ menutrans Insert\ mode		Tryb\ wprowadzania
+ menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	Tryb\ zg&odności\ z\ Vi<Tab>:set\ cp!
+-menutrans Block\ and\ Insert	Zakres\ i\ wprowadzanie
++menutrans Block\ and\ Insert	Blokowe\ i\ wprowadzanie
+ menutrans Always		Zawsze
+ 
+ menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	Tryb\ wprowadzania<Tab>:set\ im!
+@@ -119,7 +120,7 @@
+ menutrans To\ &Next\ error<Tab>]s	Do\ &następnego\ błędu<Tab>]s
+ menutrans To\ &Previous\ error<Tab>[s	Do\ &poprzedniego\ błędu<Tab>[s
+ menutrans Suggest\ &Corrections<Tab>z=	Sugestie\ poprawek<Tab>z=
+-menutrans &Repeat\ correction<Tab>:spellrepall	Powtó&z\ poprawkę<Tab>:spellrepall
++menutrans &Repeat\ correction<Tab>:spellrepall	Powtór&z\ poprawkę<Tab>:spellrepall
+ menutrans Set\ language\ to\ "en"	Ustaw\ język\ na\ "en"
+ menutrans Set\ language\ to\ "en_au"	Ustaw\ język\ na\ "en_au"
+ menutrans Set\ language\ to\ "en_ca"	Ustaw\ język\ na\ "en_ca"
+@@ -146,7 +147,7 @@
+ menutrans Fold\ Met&hod		Me&toda\ zawijania
+ menutrans M&anual			&Ręcznie
+ menutrans I&ndent			W&cięcie
+-menutrans E&xpression W&yrazenie
++menutrans E&xpression W&yrażenie
+ menutrans S&yntax			S&kładnia
+ menutrans Ma&rker			Zn&acznik
+ 
+@@ -163,7 +164,7 @@
+ menutrans &Previous\ Error<Tab>:cp	&Poprzedni\ błąd<Tab>:cp
+ menutrans &Older\ List<Tab>:cold	&Starsza\ lista<Tab>:cold
+ menutrans N&ewer\ List<Tab>:cnew	N&owsza\ lista<Tab>:cnew
+-menutrans Error\ &Window  Okno\ komu&nikatów
++menutrans Error\ &Window	Okno\ błędó&w
+ menutrans &Update<Tab>:cwin			Akt&ualizuj<Tab>:cwin
+ menutrans &Close<Tab>:cclose			&Zamknij<Tab>:cclose
+ menutrans &Open<Tab>:copen			&Otwórz<Tab>:copen
+@@ -174,8 +175,8 @@
+ 
+ " Names for buffer menu.
+ menutrans &Buffers	&Bufory
+-menutrans &Refresh\ menu	Odśwież
+-menutrans Delete	Skasuj
++menutrans &Refresh\ menu	&Odśwież
++menutrans &Delete	&Skasuj
+ menutrans &Alternate	&Zmień
+ menutrans &Next		&Następny
+ menutrans &Previous	&Poprzedni
+diff -Nur runtime/lang/menu_polish_poland.1250.vim runtime/lang/menu_polish_poland.1250.vim
+--- runtime/lang/menu_polish_poland.1250.vim	2006-05-03 15:52:46.000000000 -0700
++++ runtime/lang/menu_polish_poland.1250.vim	2011-01-18 10:40:56.006057958 -0800
+@@ -1,7 +1,7 @@
+ " Menu Translations:	Polish
+ " Maintainer:		Mikolaj Machowski ( mikmach AT wp DOT pl )
+ " Initial Translation:	Marcin Dalecki <[email protected]>
+-" Last Change: 4 May  2006
++" Last Change: 17 May  2010
+ 
+ " Quit when menu translations have already been done.
+ if exists("did_menu_trans")
+@@ -13,15 +13,16 @@
+ 
+ " Help menu
+ menutrans &Help			Po&moc
+-menutrans &Overview<Tab><F1>	&Spis\ tre�ci<Tab><F1>
++menutrans &Overview<Tab><F1>			&Og�lnie<Tab><F1>
++menutrans &User\ Manual	Podr�cznik\ &u�ytkownika
+ menutrans &How-to\ links	&Odno�niki\ JTZ
++menutrans &Find\.\.\.	&Szukaj\.\.\.
+ menutrans &Credits		Po&dzi�kowania
+-menutrans &User\ Manual    Podr�cznik\ &u�ytkownika
+ menutrans Co&pying		&Kopiowanie
+-menutrans &Version		&Wersja
+-menutrans &About		o\ &Programie
+ menutrans &Sponsor/Register	&Sponsorowanie/Rejestracja
+ menutrans O&rphans		Sie&roty
++menutrans &Version		&Wersja
++menutrans &About		o\ &Programie
+ 
+ " File menu
+ menutrans &File				&Plik
+@@ -80,19 +81,19 @@
+ menutrans russian-jcuken		rosyjski-jcuken
+ menutrans russian-jcukenwin		rosyjski-jcukenwin
+ 
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Podkre�lanie\ &wzorc�w<Tab>:set\ hls!
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	Pod�wietlanie\ &wzorc�w<Tab>:set\ hls!
+ 
+ menutrans Toggle\ &Ignore-case<Tab>:set\ ic!	&Ignorowanie\ wielko�ci<Tab>:set\ ic!
+ menutrans Toggle\ &Showmatch<Tab>:set\ sm!		&Pokazywanie\ pasuj�cych<Tab>:set\ sm!
+ 
+ menutrans &Context\ lines	Wiersze\ &kontekstowe
+-menutrans &Virtual\ Edit	Obr�bka\ &wirtualna
++menutrans &Virtual\ Edit	Edycja\ &wirtualna
+ 
+ menutrans Never			Nigdy
+-menutrans Block\ Selection	Zaznaczanie\ zakresu
++menutrans Block\ Selection	Zaznaczanie\ blokowe
+ menutrans Insert\ mode		Tryb\ wprowadzania
+ menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	Tryb\ zg&odno�ci\ z\ Vi<Tab>:set\ cp!
+-menutrans Block\ and\ Insert	Zakres\ i\ wprowadzanie
++menutrans Block\ and\ Insert	Blokowe\ i\ wprowadzanie
+ menutrans Always		Zawsze
+ 
+ menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	Tryb\ wprowadzania<Tab>:set\ im!
+@@ -119,7 +120,7 @@
+ menutrans To\ &Next\ error<Tab>]s	Do\ &nast�pnego\ b��du<Tab>]s
+ menutrans To\ &Previous\ error<Tab>[s	Do\ &poprzedniego\ b��du<Tab>[s
+ menutrans Suggest\ &Corrections<Tab>z=	Sugestie\ poprawek<Tab>z=
+-menutrans &Repeat\ correction<Tab>:spellrepall	Powt�&z\ poprawk�<Tab>:spellrepall
++menutrans &Repeat\ correction<Tab>:spellrepall	Powt�r&z\ poprawk�<Tab>:spellrepall
+ menutrans Set\ language\ to\ "en"	Ustaw\ j�zyk\ na\ "en"
+ menutrans Set\ language\ to\ "en_au"	Ustaw\ j�zyk\ na\ "en_au"
+ menutrans Set\ language\ to\ "en_ca"	Ustaw\ j�zyk\ na\ "en_ca"
+@@ -146,7 +147,7 @@
+ menutrans Fold\ Met&hod		Me&toda\ zawijania
+ menutrans M&anual			&R�cznie
+ menutrans I&ndent			W&ci�cie
+-menutrans E&xpression W&yrazenie
++menutrans E&xpression W&yra�enie
+ menutrans S&yntax			S&k�adnia
+ menutrans Ma&rker			Zn&acznik
+ 
+@@ -163,7 +164,7 @@
+ menutrans &Previous\ Error<Tab>:cp	&Poprzedni\ b��d<Tab>:cp
+ menutrans &Older\ List<Tab>:cold	&Starsza\ lista<Tab>:cold
+ menutrans N&ewer\ List<Tab>:cnew	N&owsza\ lista<Tab>:cnew
+-menutrans Error\ &Window  Okno\ komu&nikat�w
++menutrans Error\ &Window	Okno\ b��d�&w
+ menutrans &Update<Tab>:cwin			Akt&ualizuj<Tab>:cwin
+ menutrans &Close<Tab>:cclose			&Zamknij<Tab>:cclose
+ menutrans &Open<Tab>:copen			&Otw�rz<Tab>:copen
+@@ -174,8 +175,8 @@
+ 
+ " Names for buffer menu.
+ menutrans &Buffers	&Bufory
+-menutrans &Refresh\ menu	Od�wie�
+-menutrans Delete	Skasuj
++menutrans &Refresh\ menu	&Od�wie�
++menutrans &Delete	&Skasuj
+ menutrans &Alternate	&Zmie�
+ menutrans &Next		&Nast�pny
+ menutrans &Previous	&Poprzedni
+diff -Nur runtime/lang/menu_sr.utf-8.vim runtime/lang/menu_sr.utf-8.vim
+--- runtime/lang/menu_sr.utf-8.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/lang/menu_sr.utf-8.vim	2011-01-18 10:40:56.014228993 -0800
+@@ -1,3 +1,3 @@
+ " Menu Translations:	Serbian
+ 
+-source <sfile>:p:h/menu_sr_yu.utf-8.vim
++source <sfile>:p:h/menu_sr_rs.utf-8.vim
+diff -Nur runtime/lang/menu_sr_rs.ascii.vim runtime/lang/menu_sr_rs.ascii.vim
+--- runtime/lang/menu_sr_rs.ascii.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/lang/menu_sr_rs.ascii.vim	2011-01-18 10:40:56.014622232 -0800
+@@ -0,0 +1,258 @@
++" Menu Translations: Serbian
++" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
++" Last Change:	Fri, 30 May 2003 12:15:30 -0400
++
++" Quit when menu translations have already been done.
++if exists("did_menu_trans")
++  finish
++endif
++let did_menu_trans = 1
++
++" Help menu
++menutrans &Help		      Pomo&c
++menutrans &Overview<Tab><F1>  &Pregled<Tab><F1>
++menutrans &User\ Manual       &Uputstvo\ za\ korisnike
++menutrans &How-to\ links      &Kako\ da\.\.\.
++menutrans &Find		      &Nadji
++menutrans &Credits	      &Zasluge
++menutrans Co&pying	      P&reuzimanje
++menutrans O&rphans	      &Sirocici
++menutrans &Version	      &Verzija
++menutrans &About	      &O\ programu
++
++" File menu
++menutrans &File			    &Datoteka
++menutrans &Open\.\.\.<Tab>:e	    &Otvori\.\.\.<Tab>:e
++menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
++menutrans &New<Tab>:enew	    &Nova<Tab>:enew
++menutrans &Close<Tab>:close	    &Zatvori<Tab>:close
++menutrans &Save<Tab>:w		    &Sacuvaj<Tab>:w
++menutrans Save\ &As\.\.\.<Tab>:sav  Sacuvaj\ &kao\.\.\.<Tab>:sav
++menutrans Split\ &Diff\ with\.\.\.  Podeli\ i\ &uporedi\ sa\.\.\.
++menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
++menutrans &Print		    Sta&mpaj
++menutrans Sa&ve-Exit<Tab>:wqa	    Sacuvaj\ i\ za&vrsi<Tab>:wqa
++menutrans E&xit<Tab>:qa		    K&raj<Tab>:qa
++
++" Edit menu
++menutrans &Edit			 &Uredjivanje
++menutrans &Undo<Tab>u		 &Vrati<Tab>u
++menutrans &Redo<Tab>^R		 &Povrati<Tab>^R
++menutrans Rep&eat<Tab>\.	 P&onovi<Tab>\.
++menutrans Cu&t<Tab>"+x		 Ise&ci<Tab>"+x
++menutrans &Copy<Tab>"+y		 &Kopiraj<Tab>"+y
++menutrans &Paste<Tab>"+gP	 &Ubaci<Tab>"+gP
++menutrans &Paste<Tab>"+P	&Ubaci<Tab>"+gP
++menutrans Put\ &Before<Tab>[p	 Stavi\ pre&d<Tab>[p
++menutrans Put\ &After<Tab>]p	 Stavi\ &iza<Tab>]p
++menutrans &Delete<Tab>x		 Iz&brisi<Tab>x
++menutrans &Select\ all<Tab>ggVG  Izaberi\ sv&e<Tab>ggVG
++menutrans &Find\.\.\.		 &Nadji\.\.\.
++menutrans Find\ and\ Rep&lace\.\.\. Nadji\ i\ &zameni\.\.\.
++menutrans Settings\ &Window	 P&rozor\ podesavanja
++menutrans &Global\ Settings	 Op&sta\ podesavanja
++menutrans F&ile\ Settings	 Podesavanja\ za\ da&toteke
++menutrans &Shiftwidth		 &Pomeraj
++menutrans Soft\ &Tabstop	 &Meka\ tabulacija
++menutrans Te&xt\ Width\.\.\.	 &Sirina\ teksta\.\.\.
++menutrans &File\ Format\.\.\.	 &Vrsta\ datoteke\.\.\.
++menutrans C&olor\ Scheme	 Bo&je
++menutrans &Keymap		 Pres&likavanje\ tastature
++menutrans Select\ Fo&nt\.\.\.	 Izbor\ &fonta\.\.\.
++
++" Edit/Global Settings
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
++menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \velicinu\ &slova\ (da/ne)<Tab>:set\ ic!
++menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ pratecu\ &zagradu\ (da/ne)<Tab>:set\ sm!
++menutrans &Context\ lines  Vidljivi\ &redovi
++menutrans &Virtual\ Edit   Virtuelno\ &uredjivanje
++menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!   Rezim\ u&nosa\ (da/ne)<Tab>:set\ im!
++menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
++menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
++menutrans Ta&g\ Files\.\.\.   &Datoteke\ oznaka\.\.\.
++menutrans Toggle\ &Toolbar    Linija\ sa\ &alatkama\ (da/ne)
++menutrans Toggle\ &Bottom\ Scrollbar   Donja\ l&inija\ klizanja\ (da/ne)
++menutrans Toggle\ &Left\ Scrollbar  &Leva\ linija\ klizanja\ (da/ne)
++menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
++
++" Edit/Global Settings/Virtual Edit
++menutrans Never		      Nikad
++menutrans Block\ Selection    Izbor\ bloka
++menutrans Insert\ mode	      Rezim\ unosa
++menutrans Block\ and\ Insert  Blok\ i\ unos
++menutrans Always	      Uvek
++
++" Edit/File Settings
++menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
++menutrans Toggle\ &List\ Mode<Tab>:set\ list!      Rezim\ &liste\ (da/ne)<Tab>:set\ list!
++menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!      Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
++menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   Prelomi\ &na\ rec\ (da/ne)<Tab>:set\ lbr!
++menutrans Toggle\ &expand-tab<Tab>:set\ et!	   Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
++menutrans Toggle\ &auto-indent<Tab>:set\ ai!    Auto-&uvlacenje\ (da/ne)<Tab>:set\ ai!
++menutrans Toggle\ &C-indenting<Tab>:set\ cin!      &Ce-uvlacenje\ (da/ne)<Tab>:set\ cin!
++
++" Edit/Keymap
++menutrans None Nijedan
++
++" Tools menu
++menutrans &Tools	&Alatke
++menutrans &Jump\ to\ this\ tag<Tab>g^] Skoci\ na\ &ovu\ oznaku<Tab>g^]
++menutrans Jump\ &back<Tab>^T	 Skoci\ &natrag<Tab>^T
++menutrans Build\ &Tags\ File	 Izgradi\ &datoteku\ oznaka
++menutrans &Folding	      &Podvijanje
++menutrans Create\ &Fold<Tab>zf		  S&tvori\ podvijutak<Tab>zf
++menutrans &Delete\ Fold<Tab>zd		  O&brisi\ podvijutak<Tab>zd
++menutrans Delete\ &All\ Folds<Tab>zD	  Obrisi\ sve\ po&dvijutke<Tab>zD
++menutrans Fold\ column\ &width		  Sirina\ &reda\ podvijutka
++menutrans &Diff		      &Uporedjivanje
++menutrans &Make<Tab>:make     'mak&e'<Tab>:make
++menutrans &List\ Errors<Tab>:cl     Spisak\ &gresaka<Tab>:cl
++menutrans L&ist\ Messages<Tab>:cl!  Sp&isak\ poruka<Tab>:cl!
++menutrans &Next\ Error<Tab>:cn	    S&ledeca\ greska<Tab>:cn
++menutrans &Previous\ Error<Tab>:cp  Pre&thodna\ greska<Tab>:cp
++menutrans &Older\ List<Tab>:cold    Stari\ spisa&k<Tab>:cold
++menutrans N&ewer\ List<Tab>:cnew    No&vi\ spisak<Tab>:cnew
++menutrans Error\ &Window	    Prozor\ sa\ g&reskama
++menutrans &Set\ Compiler	    I&zaberi\ prevodioca
++menutrans &Convert\ to\ HEX<Tab>:%!xxd	   Pretvori\ u\ &HEKS<Tab>:%!xxd
++menutrans Conve&rt\ back<Tab>:%!xxd\ -r    Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
++
++" Tools/Folding
++menutrans &Enable/Disable\ folds<Tab>zi   &Omoguci/prekini\ podvijanje<Tab>zi
++menutrans &View\ Cursor\ Line<Tab>zv      &Pokazi\ red\ sa\ kursorom<Tab>zv
++menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokazi\ &samo\ red\ sa\ kursorom<Tab>zMzx
++menutrans C&lose\ more\ folds<Tab>zm   &Zatvori\ vise\ podvijutaka<Tab>zm
++menutrans &Close\ all\ folds<Tab>zM    Zatvori\ s&ve\ podvijutke<Tab>zM
++menutrans O&pen\ more\ folds<Tab>zr    Otvori\ vis&e\ podvijutaka<Tab>zr
++menutrans &Open\ all\ folds<Tab>zR     O&tvori\ sve\ podvijutke<Tab>zR
++menutrans Fold\ Met&hod		       &Nacin\ podvijanja
++
++" Tools/Folding/Fold Method
++menutrans M&anual       &Rucno
++menutrans I&ndent       &Uvucenost
++menutrans E&xpression   &Izraz
++menutrans S&yntax       &Sintaksa
++"menutrans &Diff
++menutrans Ma&rker       &Oznaka
++
++" Tools/Diff
++menutrans &Update       &Azuriraj
++menutrans &Get\ Block   &Prihvati\ izmenu
++menutrans &Put\ Block   Pre&baci\ izmenu
++
++" Tools/Error Window
++menutrans &Update<Tab>:cwin   &Azuriraj<Tab>:cwin
++menutrans &Open<Tab>:copen    &Otvori<Tab>:copen
++menutrans &Close<Tab>:cclose  &Zatvori<Tab>:cclose
++
++" Bufers menu
++menutrans &Buffers	   &Baferi
++menutrans &Refresh\ menu   &Azuriraj
++menutrans Delete	   &Obrisi
++menutrans &Alternate	   A&lternativni
++menutrans &Next		   &Sledeci
++menutrans &Previous	   &Prethodni
++menutrans [No\ File]	   [Nema\ datoteke]
++
++" Window menu
++menutrans &Window		    &Prozor
++menutrans &New<Tab>^Wn		    &Novi<Tab>^Wn
++menutrans S&plit<Tab>^Ws	    &Podeli<Tab>^Ws
++menutrans Sp&lit\ To\ #<Tab>^W^^    Podeli\ sa\ &alternativnim<Tab>^W^^
++menutrans Split\ &Vertically<Tab>^Wv   Podeli\ &uspravno<Tab>^Wv
++menutrans Split\ File\ E&xplorer    Podeli\ za\ pregled\ &datoteka
++menutrans &Close<Tab>^Wc	    &Zatvori<Tab>^Wc
++menutrans Close\ &Other(s)<Tab>^Wo  Zatvori\ &ostale<Tab>^Wo
++"menutrans Ne&xt<Tab>^Ww       &Sledeci<Tab>^Ww
++"menutrans P&revious<Tab>^WW	  P&rethodni<Tab>^WW
++menutrans Move\ &To		    Pre&mesti
++menutrans Rotate\ &Up<Tab>^WR	    &Kruzno\ nagore<Tab>^WR
++menutrans Rotate\ &Down<Tab>^Wr     Kruzno\ nadol&e<Tab>^Wr
++menutrans &Equal\ Size<Tab>^W=	    &Iste\ velicine<Tab>^W=
++menutrans &Max\ Height<Tab>^W_	    Maksimalna\ &visina<Tab>^W_
++menutrans M&in\ Height<Tab>^W1_     Minima&lna\ visina<Tab>^W1_
++menutrans Max\ &Width<Tab>^W\|	    Maksimalna\ &sirina<Tab>^W\|
++menutrans Min\ Widt&h<Tab>^W1\|     Minimalna\ si&rina<Tab>^W1\|
++
++" Window/Move To
++menutrans &Top<Tab>^WK		 &Vrh<Tab>^WK
++menutrans &Bottom<Tab>^WJ	 &Podnozje<Tab>^WJ
++menutrans &Left\ side<Tab>^WH	 U&levo<Tab>^WH
++menutrans &Right\ side<Tab>^WL	 U&desno<Tab>^WL
++
++" The popup menu
++menutrans &Undo		      &Vrati
++menutrans Cu&t		      &Iseci
++menutrans &Copy		      &Kopiraj
++menutrans &Paste	      &Ubaci
++menutrans &Delete	      I&zbrisi
++menutrans Select\ Blockwise   Biraj\ &pravougaono
++menutrans Select\ &Word       Izaberi\ &rec
++menutrans Select\ &Line       Izaberi\ r&ed
++menutrans Select\ &Block      Izaberi\ &blok
++menutrans Select\ &All	      Izaberi\ &sve
++
++" The GUI toolbar
++if has("toolbar")
++  if exists("*Do_toolbar_tmenu")
++    delfun Do_toolbar_tmenu
++  endif
++  fun Do_toolbar_tmenu()
++    tmenu ToolBar.Open     Ucitaj
++    tmenu ToolBar.Save     Sacuvaj
++    tmenu ToolBar.SaveAll  Sacuvaj sve
++    tmenu ToolBar.Print    Stampaj
++    tmenu ToolBar.Undo     Vrati
++    tmenu ToolBar.Redo     Povrati
++    tmenu ToolBar.Cut      Iseci
++    tmenu ToolBar.Copy     Kopiraj
++    tmenu ToolBar.Paste    Ubaci
++    tmenu ToolBar.Find     Nadji
++    tmenu ToolBar.FindNext Nadji sledeci
++    tmenu ToolBar.FindPrev Nadji prethodni
++    tmenu ToolBar.Replace  Zameni
++    tmenu ToolBar.New      Novi
++    tmenu ToolBar.WinSplit Podeli prozor
++    tmenu ToolBar.WinMax   Maksimalna visina
++    tmenu ToolBar.WinMin   Minimalna visina
++    tmenu ToolBar.WinVSplit   Podeli uspravno
++    tmenu ToolBar.WinMaxWidth Maksimalna sirina
++    tmenu ToolBar.WinMinWidth Minimalna sirina
++    tmenu ToolBar.WinClose Zatvori prozor
++    tmenu ToolBar.LoadSesn Ucitaj seansu
++    tmenu ToolBar.SaveSesn Sacuvaj seansu
++    tmenu ToolBar.RunScript   Izvrsi spis
++    tmenu ToolBar.Make     'make'
++    tmenu ToolBar.Shell    Operativno okruzenje
++    tmenu ToolBar.RunCtags Napravi oznake
++    tmenu ToolBar.TagJump  Idi na oznaku
++    tmenu ToolBar.Help     Pomoc
++    tmenu ToolBar.FindHelp Nadji objasnjenje
++  endfun
++endif
++
++" Syntax menu
++menutrans &Syntax &Sintaksa
++menutrans &Show\ filetypes\ in\ menu  Izbor\ 'filetype'\ iz\ &menija
++menutrans Set\ '&syntax'\ only   Pode&si\ 'syntax'\ samo
++menutrans Set\ '&filetype'\ too  Podesi\ 'filetype'\ &takodje
++menutrans &Off       &Iskljuceno
++menutrans &Manual    &Rucno
++menutrans A&utomatic    &Automatski
++menutrans on/off\ for\ &This\ file     Da/ne\ za\ ovu\ &datoteku
++menutrans Co&lor\ test     Provera\ &boja
++menutrans &Highlight\ test Provera\ isti&canja
++menutrans &Convert\ to\ HTML  Pretvori\ &u\ HTML
++
++" dialog texts
++let menutrans_help_dialog = "Unesite naredbu ili rec cije pojasnjenje trazite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog rezima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
++
++let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
++
++let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
++
++let g:menutrans_textwidth_dialog = "Unesite novu sirinu teksta (0 sprecava prelom)"
++
++let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
++
++let menutrans_no_file = "[Nema datoteke]"
+diff -Nur runtime/lang/menu_sr_rs.iso_8859-2.vim runtime/lang/menu_sr_rs.iso_8859-2.vim
+--- runtime/lang/menu_sr_rs.iso_8859-2.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/lang/menu_sr_rs.iso_8859-2.vim	2011-01-18 10:40:56.015018528 -0800
+@@ -0,0 +1,259 @@
++" Menu Translations: Serbian
++" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
++" Last Change:	Fri, 30 May 2003 12:04:48 -0400
++
++" Quit when menu translations have already been done.
++if exists("did_menu_trans")
++  finish
++endif
++let did_menu_trans = 1
++scriptencoding iso8859-2
++
++" Help menu
++menutrans &Help		      Pomo&�
++menutrans &Overview<Tab><F1>  &Pregled<Tab><F1>
++menutrans &User\ Manual       &Uputstvo\ za\ korisnike
++menutrans &How-to\ links      &Kako\ da\.\.\.
++menutrans &Find		      &Na�i
++menutrans &Credits	      &Zasluge
++menutrans Co&pying	      P&reuzimanje
++menutrans O&rphans	      &Siro�i�i
++menutrans &Version	      &Verzija
++menutrans &About	      &O\ programu
++
++" File menu
++menutrans &File			    &Datoteka
++menutrans &Open\.\.\.<Tab>:e	    &Otvori\.\.\.<Tab>:e
++menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
++menutrans &New<Tab>:enew	    &Nova<Tab>:enew
++menutrans &Close<Tab>:close	    &Zatvori<Tab>:close
++menutrans &Save<Tab>:w		    &Sa�uvaj<Tab>:w
++menutrans Save\ &As\.\.\.<Tab>:sav  Sa�uvaj\ &kao\.\.\.<Tab>:sav
++menutrans Split\ &Diff\ with\.\.\.  Podeli\ i\ &uporedi\ sa\.\.\.
++menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
++menutrans &Print		    �ta&mpaj
++menutrans Sa&ve-Exit<Tab>:wqa	    Sa�uvaj\ i\ za&vr�i<Tab>:wqa
++menutrans E&xit<Tab>:qa		    K&raj<Tab>:qa
++
++" Edit menu
++menutrans &Edit			 &Ure�ivanje
++menutrans &Undo<Tab>u		 &Vrati<Tab>u
++menutrans &Redo<Tab>^R		 &Povrati<Tab>^R
++menutrans Rep&eat<Tab>\.	 P&onovi<Tab>\.
++menutrans Cu&t<Tab>"+x		 Ise&ci<Tab>"+x
++menutrans &Copy<Tab>"+y		 &Kopiraj<Tab>"+y
++menutrans &Paste<Tab>"+gP	 &Ubaci<Tab>"+gP
++menutrans &Paste<Tab>"+P	&Ubaci<Tab>"+gP
++menutrans Put\ &Before<Tab>[p	 Stavi\ pre&d<Tab>[p
++menutrans Put\ &After<Tab>]p	 Stavi\ &iza<Tab>]p
++menutrans &Delete<Tab>x		 Iz&bri�i<Tab>x
++menutrans &Select\ all<Tab>ggVG  Izaberi\ sv&e<Tab>ggVG
++menutrans &Find\.\.\.		 &Na�i\.\.\.
++menutrans Find\ and\ Rep&lace\.\.\. Na�i\ i\ &zameni\.\.\.
++menutrans Settings\ &Window	 P&rozor\ pode�avanja
++menutrans &Global\ Settings	 Op&�ta\ pode�avanja
++menutrans F&ile\ Settings	 Pode�avanja\ za\ da&toteke
++menutrans &Shiftwidth		 &Pomeraj
++menutrans Soft\ &Tabstop	 &Meka\ tabulacija
++menutrans Te&xt\ Width\.\.\.	 &�irina\ teksta\.\.\.
++menutrans &File\ Format\.\.\.	 &Vrsta\ datoteke\.\.\.
++menutrans C&olor\ Scheme	 Bo&je
++menutrans &Keymap		 Pres&likavanje\ tastature
++menutrans Select\ Fo&nt\.\.\.	 Izbor\ &fonta\.\.\.
++
++" Edit/Global Settings
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
++menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \veli�inu\ &slova\ (da/ne)<Tab>:set\ ic!
++menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ prate�u\ &zagradu\ (da/ne)<Tab>:set\ sm!
++menutrans &Context\ lines  Vidljivi\ &redovi
++menutrans &Virtual\ Edit   Virtuelno\ &ure�ivanje
++menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	Re�im\ u&nosa\ (da/ne)<Tab>:set\ im!
++menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
++menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
++menutrans Ta&g\ Files\.\.\.   &Datoteke\ oznaka\.\.\.
++menutrans Toggle\ &Toolbar    Linija\ sa\ &alatkama\ (da/ne)
++menutrans Toggle\ &Bottom\ Scrollbar   Donja\ l&inija\ klizanja\ (da/ne)
++menutrans Toggle\ &Left\ Scrollbar  &Leva\ linija\ klizanja\ (da/ne)
++menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
++
++" Edit/Global Settings/Virtual Edit
++menutrans Never		      Nikad
++menutrans Block\ Selection    Izbor\ bloka
++menutrans Insert\ mode	      Re�im\ unosa
++menutrans Block\ and\ Insert  Blok\ i\ unos
++menutrans Always	      Uvek
++
++" Edit/File Settings
++menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
++menutrans Toggle\ &List\ Mode<Tab>:set\ list!	   Re�im\ &liste\ (da/ne)<Tab>:set\ list!
++menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!	   Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
++menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   Prelomi\ &na\ re�\ (da/ne)<Tab>:set\ lbr!
++menutrans Toggle\ &expand-tab<Tab>:set\ et!	   Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
++menutrans Toggle\ &auto-indent<Tab>:set\ ai!	Auto-&uvla�enje\ (da/ne)<Tab>:set\ ai!
++menutrans Toggle\ &C-indenting<Tab>:set\ cin!	   &Ce-uvla�enje\ (da/ne)<Tab>:set\ cin!
++
++" Edit/Keymap
++menutrans None Nijedan
++
++" Tools menu
++menutrans &Tools	&Alatke
++menutrans &Jump\ to\ this\ tag<Tab>g^] Sko�i\ na\ &ovu\ oznaku<Tab>g^]
++menutrans Jump\ &back<Tab>^T	 Sko�i\ &natrag<Tab>^T
++menutrans Build\ &Tags\ File	 Izgradi\ &datoteku\ oznaka
++menutrans &Folding	      &Podvijanje
++menutrans Create\ &Fold<Tab>zf		  S&tvori\ podvijutak<Tab>zf
++menutrans &Delete\ Fold<Tab>zd		  O&bri�i\ podvijutak<Tab>zd
++menutrans Delete\ &All\ Folds<Tab>zD	  Obri�i\ sve\ po&dvijutke<Tab>zD
++menutrans Fold\ column\ &width		  �irina\ &reda\ podvijutka
++menutrans &Diff		      &Upore�ivanje
++menutrans &Make<Tab>:make     'mak&e'<Tab>:make
++menutrans &List\ Errors<Tab>:cl     Spisak\ &gre�aka<Tab>:cl
++menutrans L&ist\ Messages<Tab>:cl!  Sp&isak\ poruka<Tab>:cl!
++menutrans &Next\ Error<Tab>:cn	    S&lede�a\ gre�ka<Tab>:cn
++menutrans &Previous\ Error<Tab>:cp  Pre&thodna\ gre�ka<Tab>:cp
++menutrans &Older\ List<Tab>:cold    Stari\ spisa&k<Tab>:cold
++menutrans N&ewer\ List<Tab>:cnew    No&vi\ spisak<Tab>:cnew
++menutrans Error\ &Window	    Prozor\ sa\ g&re�kama
++menutrans &Set\ Compiler	    I&zaberi\ prevodioca
++menutrans &Convert\ to\ HEX<Tab>:%!xxd	   Pretvori\ u\ &HEKS<Tab>:%!xxd
++menutrans Conve&rt\ back<Tab>:%!xxd\ -r    Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
++
++" Tools/Folding
++menutrans &Enable/Disable\ folds<Tab>zi   &Omogu�i/prekini\ podvijanje<Tab>zi
++menutrans &View\ Cursor\ Line<Tab>zv	  &Poka�i\ red\ sa\ kursorom<Tab>zv
++menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Poka�i\ &samo\ red\ sa\ kursorom<Tab>zMzx
++menutrans C&lose\ more\ folds<Tab>zm   &Zatvori\ vi�e\ podvijutaka<Tab>zm
++menutrans &Close\ all\ folds<Tab>zM    Zatvori\ s&ve\ podvijutke<Tab>zM
++menutrans O&pen\ more\ folds<Tab>zr    Otvori\ vi�&e\ podvijutaka<Tab>zr
++menutrans &Open\ all\ folds<Tab>zR     O&tvori\ sve\ podvijutke<Tab>zR
++menutrans Fold\ Met&hod		       &Na�in\ podvijanja
++
++" Tools/Folding/Fold Method
++menutrans M&anual	&Ru�no
++menutrans I&ndent	&Uvu�enost
++menutrans E&xpression	&Izraz
++menutrans S&yntax	&Sintaksa
++"menutrans &Diff
++menutrans Ma&rker	&Oznaka
++
++" Tools/Diff
++menutrans &Update	&A�uriraj
++menutrans &Get\ Block	&Prihvati\ izmenu
++menutrans &Put\ Block	Pre&baci\ izmenu
++
++" Tools/Error Window
++menutrans &Update<Tab>:cwin   &A�uriraj<Tab>:cwin
++menutrans &Open<Tab>:copen    &Otvori<Tab>:copen
++menutrans &Close<Tab>:cclose  &Zatvori<Tab>:cclose
++
++" Bufers menu
++menutrans &Buffers	   &Baferi
++menutrans &Refresh\ menu   &A�uriraj
++menutrans Delete	   &Obri�i
++menutrans &Alternate	   A&lternativni
++menutrans &Next		   &Slede�i
++menutrans &Previous	   &Prethodni
++menutrans [No\ File]	   [Nema\ datoteke]
++
++" Window menu
++menutrans &Window		    &Prozor
++menutrans &New<Tab>^Wn		    &Novi<Tab>^Wn
++menutrans S&plit<Tab>^Ws	    &Podeli<Tab>^Ws
++menutrans Sp&lit\ To\ #<Tab>^W^^    Podeli\ sa\ &alternativnim<Tab>^W^^
++menutrans Split\ &Vertically<Tab>^Wv   Podeli\ &uspravno<Tab>^Wv
++menutrans Split\ File\ E&xplorer    Podeli\ za\ pregled\ &datoteka
++menutrans &Close<Tab>^Wc	    &Zatvori<Tab>^Wc
++menutrans Close\ &Other(s)<Tab>^Wo  Zatvori\ &ostale<Tab>^Wo
++"menutrans Ne&xt<Tab>^Ww       &Slede�i<Tab>^Ww
++"menutrans P&revious<Tab>^WW	  P&rethodni<Tab>^WW
++menutrans Move\ &To		    Pre&mesti
++menutrans Rotate\ &Up<Tab>^WR	    &Kru�no\ nagore<Tab>^WR
++menutrans Rotate\ &Down<Tab>^Wr     Kru�no\ nadol&e<Tab>^Wr
++menutrans &Equal\ Size<Tab>^W=	    &Iste\ veli�ine<Tab>^W=
++menutrans &Max\ Height<Tab>^W_	    Maksimalna\ &visina<Tab>^W_
++menutrans M&in\ Height<Tab>^W1_     Minima&lna\ visina<Tab>^W1_
++menutrans Max\ &Width<Tab>^W\|	    Maksimalna\ &�irina<Tab>^W\|
++menutrans Min\ Widt&h<Tab>^W1\|     Minimalna\ �i&rina<Tab>^W1\|
++
++" Window/Move To
++menutrans &Top<Tab>^WK		 &Vrh<Tab>^WK
++menutrans &Bottom<Tab>^WJ	 &Podno�je<Tab>^WJ
++menutrans &Left\ side<Tab>^WH	 U&levo<Tab>^WH
++menutrans &Right\ side<Tab>^WL	 U&desno<Tab>^WL
++
++" The popup menu
++menutrans &Undo		      &Vrati
++menutrans Cu&t		      &Iseci
++menutrans &Copy		      &Kopiraj
++menutrans &Paste	      &Ubaci
++menutrans &Delete	      I&zbri�i
++menutrans Select\ Blockwise   Biraj\ &pravougaono
++menutrans Select\ &Word       Izaberi\ &re�
++menutrans Select\ &Line       Izaberi\ r&ed
++menutrans Select\ &Block      Izaberi\ &blok
++menutrans Select\ &All	      Izaberi\ &sve
++
++" The GUI toolbar
++if has("toolbar")
++  if exists("*Do_toolbar_tmenu")
++    delfun Do_toolbar_tmenu
++  endif
++  fun Do_toolbar_tmenu()
++    tmenu ToolBar.Open	   U�itaj
++    tmenu ToolBar.Save	   Sa�uvaj
++    tmenu ToolBar.SaveAll  Sa�uvaj sve
++    tmenu ToolBar.Print    �tampaj
++    tmenu ToolBar.Undo	   Vrati
++    tmenu ToolBar.Redo	   Povrati
++    tmenu ToolBar.Cut	   Iseci
++    tmenu ToolBar.Copy	   Kopiraj
++    tmenu ToolBar.Paste    Ubaci
++    tmenu ToolBar.Find	   Na�i
++    tmenu ToolBar.FindNext Na�i slede�i
++    tmenu ToolBar.FindPrev Na�i prethodni
++    tmenu ToolBar.Replace  Zameni
++    tmenu ToolBar.New	   Novi
++    tmenu ToolBar.WinSplit Podeli prozor
++    tmenu ToolBar.WinMax   Maksimalna visina
++    tmenu ToolBar.WinMin   Minimalna visina
++    tmenu ToolBar.WinVSplit   Podeli uspravno
++    tmenu ToolBar.WinMaxWidth Maksimalna �irina
++    tmenu ToolBar.WinMinWidth Minimalna �irina
++    tmenu ToolBar.WinClose Zatvori prozor
++    tmenu ToolBar.LoadSesn U�itaj seansu
++    tmenu ToolBar.SaveSesn Sa�uvaj seansu
++    tmenu ToolBar.RunScript   Izvr�i spis
++    tmenu ToolBar.Make	   'make'
++    tmenu ToolBar.Shell    Operativno okru�enje
++    tmenu ToolBar.RunCtags Napravi oznake
++    tmenu ToolBar.TagJump  Idi na oznaku
++    tmenu ToolBar.Help	   Pomo�
++    tmenu ToolBar.FindHelp Na�i obja�njenje
++  endfun
++endif
++
++" Syntax menu
++menutrans &Syntax &Sintaksa
++menutrans &Show\ filetypes\ in\ menu  Izbor\ 'filetype'\ iz\ &menija
++menutrans Set\ '&syntax'\ only	 Pode&si\ 'syntax'\ samo
++menutrans Set\ '&filetype'\ too  Podesi\ 'filetype'\ &tako�e
++menutrans &Off	     &Isklju�eno
++menutrans &Manual    &Ru�no
++menutrans A&utomatic	&Automatski
++menutrans on/off\ for\ &This\ file     Da/ne\ za\ ovu\ &datoteku
++menutrans Co&lor\ test	   Provera\ &boja
++menutrans &Highlight\ test Provera\ isti&canja
++menutrans &Convert\ to\ HTML  Pretvori\ &u\ HTML
++
++" dialog texts
++let menutrans_help_dialog = "Unesite naredbu ili re� �ije poja�njenje tra�ite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog re�ima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
++
++let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
++
++let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
++
++let g:menutrans_textwidth_dialog = "Unesite novu �irinu teksta (0 spre�ava prelom)"
++
++let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
++
++let menutrans_no_file = "[Nema datoteke]"
+diff -Nur runtime/lang/menu_sr_rs.iso_8859-5.vim runtime/lang/menu_sr_rs.iso_8859-5.vim
+--- runtime/lang/menu_sr_rs.iso_8859-5.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/lang/menu_sr_rs.iso_8859-5.vim	2011-01-18 10:40:56.015429827 -0800
+@@ -0,0 +1,259 @@
++" Menu Translations: Serbian
++" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
++" Last Change:	Fri, 30 May 2003 12:02:07 -0400
++
++" Quit when menu translations have already been done.
++if exists("did_menu_trans")
++  finish
++endif
++let did_menu_trans = 1
++scriptencoding iso8859-5
++
++" Help menu
++menutrans &Help		      ����&�
++menutrans &Overview<Tab><F1>  &�������<Tab><F1>
++menutrans &User\ Manual       &��������\ ��\ ���������
++menutrans &How-to\ links      &����\ ��\.\.\.
++menutrans &Find		      &����
++menutrans &Credits	      &�������
++menutrans Co&pying	      �&���������
++menutrans O&rphans	      &��������
++menutrans &Version	      &�������
++menutrans &About	      &�\ ��������
++
++" File menu
++menutrans &File			    &��������
++menutrans &Open\.\.\.<Tab>:e	    &������\.\.\.<Tab>:e
++menutrans Sp&lit-Open\.\.\.<Tab>:sp &������-������\.\.\.<Tab>:sp
++menutrans &New<Tab>:enew	    &����<Tab>:enew
++menutrans &Close<Tab>:close	    &�������<Tab>:close
++menutrans &Save<Tab>:w		    &�������<Tab>:w
++menutrans Save\ &As\.\.\.<Tab>:sav  �������\ &���\.\.\.<Tab>:sav
++menutrans Split\ &Diff\ with\.\.\.  ������\ �\ &�������\ ��\.\.\.
++menutrans Split\ Patched\ &By\.\.\. ��&����\ �\ ��������\ ��\.\.\.
++menutrans &Print		    ���&����
++menutrans Sa&ve-Exit<Tab>:wqa	    �������\ �\ ��&����<Tab>:wqa
++menutrans E&xit<Tab>:qa		    �&���<Tab>:qa
++
++" Edit menu
++menutrans &Edit			 &���������
++menutrans &Undo<Tab>u		 &�����<Tab>u
++menutrans &Redo<Tab>^R		 &�������<Tab>^R
++menutrans Rep&eat<Tab>\.	 �&�����<Tab>\.
++menutrans Cu&t<Tab>"+x		 ���&��<Tab>"+x
++menutrans &Copy<Tab>"+y		 &�������<Tab>"+y
++menutrans &Paste<Tab>"+gP	 &�����<Tab>"+gP
++menutrans &Paste<Tab>"+P	&�����<Tab>"+gP
++menutrans Put\ &Before<Tab>[p	 �����\ ���&�<Tab>[p
++menutrans Put\ &After<Tab>]p	 �����\ &���<Tab>]p
++menutrans &Delete<Tab>x		 ��&�����<Tab>x
++menutrans &Select\ all<Tab>ggVG  �������\ ��&�<Tab>ggVG
++menutrans &Find\.\.\.		 &����\.\.\.
++menutrans Find\ and\ Rep&lace\.\.\. ����\ �\ &������\.\.\.
++menutrans Settings\ &Window	 �&�����\ ����������
++menutrans &Global\ Settings	 ��&���\ ����������
++menutrans F&ile\ Settings	 ����������\ ��\ ��&������
++menutrans &Shiftwidth		 &�������
++menutrans Soft\ &Tabstop	 &����\ ����������
++menutrans Te&xt\ Width\.\.\.	 &������\ ������\.\.\.
++menutrans &File\ Format\.\.\.	 &�����\ ��������\.\.\.
++menutrans C&olor\ Scheme	 ��&��
++menutrans &Keymap		 ����&��������\ ���������
++menutrans Select\ Fo&nt\.\.\.	 �����\ &�����\.\.\.
++
++" Edit/Global Settings
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! �������\ &�������\ (��/��)<Tab>:set\ hls!
++menutrans Toggle\ &Ignore-case<Tab>:set\ ic! ��������\ \��������\ &�����\ (��/��)<Tab>:set\ ic!
++menutrans Toggle\ &Showmatch<Tab>:set\ sm! �������\ �������\ &�������\ (��/��)<Tab>:set\ sm!
++menutrans &Context\ lines  �������\ &������
++menutrans &Virtual\ Edit   ���������\ &���������
++menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	�����\ �&����\ (��/��)<Tab>:set\ im!
++menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ ��������\ (��/��)<Tab>:set\ cp!
++menutrans Search\ &Path\.\.\. ������\ &��������\.\.\.
++menutrans Ta&g\ Files\.\.\.   &��������\ ������\.\.\.
++menutrans Toggle\ &Toolbar    ������\ ��\ &��������\ (��/��)
++menutrans Toggle\ &Bottom\ Scrollbar   ����\ �&�����\ �������\ (��/��)
++menutrans Toggle\ &Left\ Scrollbar  &����\ ������\ �������\ (��/��)
++menutrans Toggle\ &Right\ Scrollbar &�����\ ������\ �������\ (��/��)
++
++" Edit/Global Settings/Virtual Edit
++menutrans Never		      �����
++menutrans Block\ Selection    �����\ �����
++menutrans Insert\ mode	      �����\ �����
++menutrans Block\ and\ Insert  ����\ �\ ����
++menutrans Always	      ����
++
++" Edit/File Settings
++menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   �����\ &�������\ (��/��)<Tab>:set\ nu!
++menutrans Toggle\ &List\ Mode<Tab>:set\ list!	   �����\ &�����\ (��/��)<Tab>:set\ list!
++menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!	   ���������\ &������\ (��/��)<Tab>:set\ wrap!
++menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   �������\ &��\ ���\ (��/��)<Tab>:set\ lbr!
++menutrans Toggle\ &expand-tab<Tab>:set\ et!	   �������\ ������\ &����������\ (��/��)<Tab>:set\ et!
++menutrans Toggle\ &auto-indent<Tab>:set\ ai!	����-&��������\ (��/��)<Tab>:set\ ai!
++menutrans Toggle\ &C-indenting<Tab>:set\ cin!	   &��-��������\ (��/��)<Tab>:set\ cin!
++
++" Edit/Keymap
++menutrans None �������
++
++" Tools menu
++menutrans &Tools	&������
++menutrans &Jump\ to\ this\ tag<Tab>g^] �����\ ��\ &���\ ������<Tab>g^]
++menutrans Jump\ &back<Tab>^T	 �����\ &������<Tab>^T
++menutrans Build\ &Tags\ File	 �������\ &��������\ ������
++menutrans &Folding	      &���������
++menutrans Create\ &Fold<Tab>zf		  �&�����\ ����������<Tab>zf
++menutrans &Delete\ Fold<Tab>zd		  �&�����\ ����������<Tab>zd
++menutrans Delete\ &All\ Folds<Tab>zD	  ������\ ���\ ��&��������<Tab>zD
++menutrans Fold\ column\ &width		  ������\ &����\ ����������
++menutrans &Diff		      &�����������
++menutrans &Make<Tab>:make     'mak&�'<Tab>:make
++menutrans &List\ Errors<Tab>:cl     ������\ &�������<Tab>:cl
++menutrans L&ist\ Messages<Tab>:cl!  ��&����\ ������<Tab>:cl!
++menutrans &Next\ Error<Tab>:cn	    �&������\ ������<Tab>:cn
++menutrans &Previous\ Error<Tab>:cp  ���&������\ ������<Tab>:cp
++menutrans &Older\ List<Tab>:cold    �����\ �����&�<Tab>:cold
++menutrans N&ewer\ List<Tab>:cnew    ��&��\ ������<Tab>:cnew
++menutrans Error\ &Window	    ������\ ��\ �&�������
++menutrans &Set\ Compiler	    �&������\ ����������
++menutrans &Convert\ to\ HEX<Tab>:%!xxd	   ��������\ �\ &ŵ��<Tab>:%!xxd
++menutrans Conve&rt\ back<Tab>:%!xxd\ -r    ��&���\ �\ ���������\ �����<Tab>:%!xxd\ -r
++
++" Tools/Folding
++menutrans &Enable/Disable\ folds<Tab>zi   &�������/�������\ ���������<Tab>zi
++menutrans &View\ Cursor\ Line<Tab>zv	  &������\ ���\ ��\ ��������<Tab>zv
++menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx ������\ &����\ ���\ ��\ ��������<Tab>zMzx
++menutrans C&lose\ more\ folds<Tab>zm   &�������\ ����\ �����������<Tab>zm
++menutrans &Close\ all\ folds<Tab>zM    �������\ �&��\ ����������<Tab>zM
++menutrans O&pen\ more\ folds<Tab>zr    ������\ ���&�\ �����������<Tab>zr
++menutrans &Open\ all\ folds<Tab>zR     �&�����\ ���\ ����������<Tab>zR
++menutrans Fold\ Met&hod		       &�����\ ���������
++
++" Tools/Folding/Fold Method
++menutrans M&anual	&�����
++menutrans I&ndent	&���������
++menutrans E&xpression	&�����
++menutrans S&yntax	&��������
++"menutrans &Diff
++menutrans Ma&rker	&������
++
++" Tools/Diff
++menutrans &Update	&��������
++menutrans &Get\ Block	&��������\ ������
++menutrans &Put\ Block	���&����\ ������
++
++" Tools/Error Window
++menutrans &Update<Tab>:cwin   &��������<Tab>:cwin
++menutrans &Open<Tab>:copen    &������<Tab>:copen
++menutrans &Close<Tab>:cclose  &�������<Tab>:cclose
++
++" Bufers menu
++menutrans &Buffers	   &������
++menutrans &Refresh\ menu   &��������
++menutrans Delete	   &������
++menutrans &Alternate	   �&�����������
++menutrans &Next		   &�������
++menutrans &Previous	   &���������
++menutrans [No\ File]	   [����\ ��������]
++
++" Window menu
++menutrans &Window		    &������
++menutrans &New<Tab>^Wn		    &����<Tab>^Wn
++menutrans S&plit<Tab>^Ws	    &������<Tab>^Ws
++menutrans Sp&lit\ To\ #<Tab>^W^^    ������\ ��\ &�������������<Tab>^W^^
++menutrans Split\ &Vertically<Tab>^Wv   ������\ &��������<Tab>^Wv
++menutrans Split\ File\ E&xplorer    ������\ ��\ �������\ &��������
++menutrans &Close<Tab>^Wc	    &�������<Tab>^Wc
++menutrans Close\ &Other(s)<Tab>^Wo  �������\ &������<Tab>^Wo
++"menutrans Ne&xt<Tab>^Ww       &�������<Tab>^Ww
++"menutrans P&revious<Tab>^WW	  �&��������<Tab>^WW
++menutrans Move\ &To		    ���&�����
++menutrans Rotate\ &Up<Tab>^WR	    &������\ ������<Tab>^WR
++menutrans Rotate\ &Down<Tab>^Wr     ������\ �����&�<Tab>^Wr
++menutrans &Equal\ Size<Tab>^W=	    &����\ ��������<Tab>^W=
++menutrans &Max\ Height<Tab>^W_	    ����������\ &������<Tab>^W_
++menutrans M&in\ Height<Tab>^W1_     ������&���\ ������<Tab>^W1_
++menutrans Max\ &Width<Tab>^W\|	    ����������\ &������<Tab>^W\|
++menutrans Min\ Widt&h<Tab>^W1\|     ���������\ ��&����<Tab>^W1\|
++
++" Window/Move To
++menutrans &Top<Tab>^WK		 &���<Tab>^WK
++menutrans &Bottom<Tab>^WJ	 &��������<Tab>^WJ
++menutrans &Left\ side<Tab>^WH	 �&����<Tab>^WH
++menutrans &Right\ side<Tab>^WL	 �&�����<Tab>^WL
++
++" The popup menu
++menutrans &Undo		      &�����
++menutrans Cu&t		      &�����
++menutrans &Copy		      &�������
++menutrans &Paste	      &�����
++menutrans &Delete	      �&������
++menutrans Select\ Blockwise   �����\ &�����������
++menutrans Select\ &Word       �������\ &���
++menutrans Select\ &Line       �������\ �&��
++menutrans Select\ &Block      �������\ &����
++menutrans Select\ &All	      �������\ &���
++
++" The GUI toolbar
++if has("toolbar")
++  if exists("*Do_toolbar_tmenu")
++    delfun Do_toolbar_tmenu
++  endif
++  fun Do_toolbar_tmenu()
++    tmenu ToolBar.Open	   ������
++    tmenu ToolBar.Save	   �������
++    tmenu ToolBar.SaveAll  ������� ���
++    tmenu ToolBar.Print    �������
++    tmenu ToolBar.Undo	   �����
++    tmenu ToolBar.Redo	   �������
++    tmenu ToolBar.Cut	   �����
++    tmenu ToolBar.Copy	   �������
++    tmenu ToolBar.Paste    �����
++    tmenu ToolBar.Find	   ����
++    tmenu ToolBar.FindNext ���� �������
++    tmenu ToolBar.FindPrev ���� ���������
++    tmenu ToolBar.Replace  ������
++    tmenu ToolBar.New	   ����
++    tmenu ToolBar.WinSplit ������ ������
++    tmenu ToolBar.WinMax   ���������� ������
++    tmenu ToolBar.WinMin   ��������� ������
++    tmenu ToolBar.WinVSplit   ������ ��������
++    tmenu ToolBar.WinMaxWidth ���������� ������
++    tmenu ToolBar.WinMinWidth ��������� ������
++    tmenu ToolBar.WinClose ������� ������
++    tmenu ToolBar.LoadSesn ������ ������
++    tmenu ToolBar.SaveSesn ������� ������
++    tmenu ToolBar.RunScript   ������ ����
++    tmenu ToolBar.Make	   'make'
++    tmenu ToolBar.Shell    ���������� ��������
++    tmenu ToolBar.RunCtags ������� ������
++    tmenu ToolBar.TagJump  ��� �� ������
++    tmenu ToolBar.Help	   �����
++    tmenu ToolBar.FindHelp ���� ���������
++  endfun
++endif
++
++" Syntax menu
++menutrans &Syntax &��������
++menutrans &Show\ filetypes\ in\ menu  �����\ 'filetype'\ ��\ &������
++menutrans Set\ '&syntax'\ only	 ����&��\ 'syntax'\ ����
++menutrans Set\ '&filetype'\ too  ������\ 'filetype'\ &������
++menutrans &Off	     &���������
++menutrans &Manual    &�����
++menutrans A&utomatic	&����������
++menutrans on/off\ for\ &This\ file     ��/��\ ��\ ���\ &��������
++menutrans Co&lor\ test	   �������\ &����
++menutrans &Highlight\ test �������\ ����&����
++menutrans &Convert\ to\ HTML  ��������\ &�\ HTML
++
++" dialog texts
++let menutrans_help_dialog = "������� ������� ��� ��� ���� ��������� �������:\n\n������� i_ �� ������� ����� (���. i_CTRL-X)\n������� c_ �� ������� ��������� ������ (���. �_<Del>)\n������� ' �� ����� ������ (���. 'shiftwidth')"
++
++let g:menutrans_path_dialog = "������� ��� �������� �� ��������\n���������� �������� ����� �������������."
++
++let g:menutrans_tags_dialog = "������� ����� �������� �� ��������\n���������� �������� �����."
++
++let g:menutrans_textwidth_dialog = "������� ���� ������ ������ (0 �������� ������)"
++
++let g:menutrans_fileformat_dialog = "��������� ����� ��������"
++
++let menutrans_no_file = "[���� ��������]"
+diff -Nur runtime/lang/menu_sr_rs.utf-8.vim runtime/lang/menu_sr_rs.utf-8.vim
+--- runtime/lang/menu_sr_rs.utf-8.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/lang/menu_sr_rs.utf-8.vim	2011-01-18 10:40:56.016117960 -0800
+@@ -0,0 +1,261 @@
++" Menu Translations: Serbian
++" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
++" Last Change:	Fri, 30 May 2003 10:17:39 Eastern Daylight Time
++
++" Quit when menu translations have already been done.
++if exists("did_menu_trans")
++  finish
++endif
++let did_menu_trans = 1
++scriptencoding utf-8
++
++" Help menu
++menutrans &Help		      Помо&ћ
++menutrans &Overview<Tab><F1>  &Преглед<Tab><F1>
++menutrans &User\ Manual       &Упутство\ за\ кориснике
++menutrans &How-to\ links      &Како\ да\.\.\.
++menutrans &Find		      &Нађи
++menutrans &Credits	      &Заслуге
++menutrans Co&pying	      П&реузимање
++menutrans O&rphans	      &Сирочићи
++menutrans &Version	      &Верзија
++menutrans &About	      &О\ програму
++
++" File menu
++menutrans &File			    &Датотека
++menutrans &Open\.\.\.<Tab>:e	    &Отвори\.\.\.<Tab>:e
++menutrans Sp&lit-Open\.\.\.<Tab>:sp &Подели-отвори\.\.\.<Tab>:sp
++menutrans &New<Tab>:enew	    &Нова<Tab>:enew
++menutrans &Close<Tab>:close	    &Затвори<Tab>:close
++menutrans &Save<Tab>:w		    &Сачувај<Tab>:w
++menutrans Save\ &As\.\.\.<Tab>:sav  Сачувај\ &као\.\.\.<Tab>:sav
++menutrans Split\ &Diff\ with\.\.\.  Подели\ и\ &упореди\ са\.\.\.
++menutrans Split\ Patched\ &By\.\.\. По&дели\ и\ преправи\ са\.\.\.
++menutrans &Print		    Шта&мпај
++menutrans Sa&ve-Exit<Tab>:wqa	    Сачувај\ и\ за&врши<Tab>:wqa
++menutrans E&xit<Tab>:qa		    К&рај<Tab>:qa
++
++" Edit menu
++menutrans &Edit			 &Уређивање
++menutrans &Undo<Tab>u		 &Врати<Tab>u
++menutrans &Redo<Tab>^R		 &Поврати<Tab>^R
++menutrans Rep&eat<Tab>\.	 П&онови<Tab>\.
++menutrans Cu&t<Tab>"+x		 Исе&ци<Tab>"+x
++menutrans &Copy<Tab>"+y		 &Копирај<Tab>"+y
++menutrans &Paste<Tab>"+gP	 &Убаци<Tab>"+gP
++menutrans &Paste<Tab>"+P	&Убаци<Tab>"+gP
++menutrans Put\ &Before<Tab>[p	 Стави\ пре&д<Tab>[p
++menutrans Put\ &After<Tab>]p	 Стави\ &иза<Tab>]p
++menutrans &Delete<Tab>x		 Из&бриши<Tab>x
++menutrans &Select\ all<Tab>ggVG  Изабери\ св&е<Tab>ggVG
++menutrans &Find\.\.\.		 &Нађи\.\.\.
++menutrans Find\ and\ Rep&lace\.\.\. Нађи\ и\ &замени\.\.\.
++menutrans Settings\ &Window	 П&розор\ подешавања
++menutrans &Global\ Settings	 Оп&шта\ подешавања
++menutrans F&ile\ Settings	 Подешавања\ за\ да&тотеке
++menutrans &Shiftwidth		 &Померај
++menutrans Soft\ &Tabstop	 &Мека\ табулација
++menutrans Te&xt\ Width\.\.\.	 &Ширина\ текста\.\.\.
++menutrans &File\ Format\.\.\.	 &Врста\ датотеке\.\.\.
++menutrans C&olor\ Scheme	 Бо&је
++menutrans &Keymap		 Прес&ликавање\ тастатуре
++menutrans Select\ Fo&nt\.\.\.	 Избор\ &фонта\.\.\.
++
++" Edit/Global Settings
++menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Нагласи\ &образце\ (да/не)<Tab>:set\ hls!
++menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Занемари\ \величину\ &слова\ (да/не)<Tab>:set\ ic!
++menutrans Toggle\ &Showmatch<Tab>:set\ sm! Провери\ пратећу\ &заграду\ (да/не)<Tab>:set\ sm!
++menutrans &Context\ lines  Видљиви\ &редови
++menutrans &Virtual\ Edit   Виртуелно\ &уређивање
++menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!   Режим\ у&носа\ (да/не)<Tab>:set\ im!
++menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ сагласно\ (да/не)<Tab>:set\ cp!
++menutrans Search\ &Path\.\.\. Путања\ &претраге\.\.\.
++menutrans Ta&g\ Files\.\.\.   &Датотеке\ ознака\.\.\.
++menutrans Toggle\ &Toolbar    Линија\ са\ &алаткама\ (да/не)
++menutrans Toggle\ &Bottom\ Scrollbar   Доња\ л&инија\ клизања\ (да/не)
++menutrans Toggle\ &Left\ Scrollbar  &Лева\ линија\ клизања\ (да/не)
++menutrans Toggle\ &Right\ Scrollbar &Десна\ линија\ клизања\ (да/не)
++
++" Edit/Global Settings/Virtual Edit
++menutrans Never		      Никад
++menutrans Block\ Selection    Избор\ блока
++menutrans Insert\ mode	      Режим\ уноса
++menutrans Block\ and\ Insert  Блок\ и\ унос
++menutrans Always	      Увек
++
++" Edit/File Settings
++menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   Редни\ &бројеви\ (да/не)<Tab>:set\ nu!
++menutrans Toggle\ &List\ Mode<Tab>:set\ list!	   Режим\ &листе\ (да/не)<Tab>:set\ list!
++menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!	   Обавијање\ &редова\ (да/не)<Tab>:set\ wrap!
++menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   Преломи\ &на\ реч\ (да/не)<Tab>:set\ lbr!
++menutrans Toggle\ &expand-tab<Tab>:set\ et!	   Размаци\ уместо\ &табулације\ (да/не)<Tab>:set\ et!
++menutrans Toggle\ &auto-indent<Tab>:set\ ai!	Ауто-&увлачење\ (да/не)<Tab>:set\ ai!
++menutrans Toggle\ &C-indenting<Tab>:set\ cin!	   &Це-увлачење\ (да/не)<Tab>:set\ cin!
++
++" Edit/Keymap
++menutrans None Ниједан
++
++" Tools menu
++menutrans &Tools	&Алатке
++menutrans &Jump\ to\ this\ tag<Tab>g^] Скочи\ на\ &ову\ ознаку<Tab>g^]
++menutrans Jump\ &back<Tab>^T	 Скочи\ &натраг<Tab>^T
++menutrans Build\ &Tags\ File	 Изгради\ &датотеку\ ознака
++menutrans &Folding	      &Подвијање
++menutrans Create\ &Fold<Tab>zf		  С&твори\ подвијутак<Tab>zf
++menutrans &Delete\ Fold<Tab>zd		  О&бриши\ подвијутак<Tab>zd
++menutrans Delete\ &All\ Folds<Tab>zD	  Обриши\ све\ по&двијутке<Tab>zD
++menutrans Fold\ column\ &width		  Ширина\ &реда\ подвијутка
++menutrans &Diff		      &Упоређивање
++menutrans &Make<Tab>:make     'mak&е'<Tab>:make
++menutrans &List\ Errors<Tab>:cl     Списак\ &грешака<Tab>:cl
++menutrans L&ist\ Messages<Tab>:cl!  Сп&исак\ порука<Tab>:cl!
++menutrans &Next\ Error<Tab>:cn	    С&ледећа\ грешка<Tab>:cn
++menutrans &Previous\ Error<Tab>:cp  Пре&тходна\ грешка<Tab>:cp
++menutrans &Older\ List<Tab>:cold    Стари\ списа&к<Tab>:cold
++menutrans N&ewer\ List<Tab>:cnew    Но&ви\ списак<Tab>:cnew
++menutrans Error\ &Window	    Прозор\ са\ г&решкама
++menutrans &Set\ Compiler	    И&забери\ преводиоца
++menutrans &Convert\ to\ HEX<Tab>:%!xxd	   Претвори\ у\ &ХЕКС<Tab>:%!xxd
++menutrans Conve&rt\ back<Tab>:%!xxd\ -r    Вр&ати\ у\ првобитан\ облик<Tab>:%!xxd\ -r
++
++" Tools/Folding
++menutrans &Enable/Disable\ folds<Tab>zi   &Омогући/прекини\ подвијање<Tab>zi
++menutrans &View\ Cursor\ Line<Tab>zv	  &Покажи\ ред\ са\ курсором<Tab>zv
++menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Покажи\ &само\ ред\ са\ курсором<Tab>zMzx
++menutrans C&lose\ more\ folds<Tab>zm   &Затвори\ више\ подвијутака<Tab>zm
++menutrans &Close\ all\ folds<Tab>zM    Затвори\ с&ве\ подвијутке<Tab>zM
++menutrans O&pen\ more\ folds<Tab>zr    Отвори\ виш&е\ подвијутака<Tab>zr
++menutrans &Open\ all\ folds<Tab>zR     О&твори\ све\ подвијутке<Tab>zR
++menutrans Fold\ Met&hod		       &Начин\ подвијања
++
++" Tools/Folding/Fold Method
++menutrans M&anual	&Ручно
++menutrans I&ndent	&Увученост
++menutrans E&xpression	&Израз
++menutrans S&yntax	&Синтакса
++"menutrans &Diff
++menutrans Ma&rker	&Ознака
++
++" Tools/Diff
++menutrans &Update	&Ажурирај
++menutrans &Get\ Block	&Прихвати\ измену
++menutrans &Put\ Block	Пре&баци\ измену
++
++" Tools/Error Window
++menutrans &Update<Tab>:cwin   &Ажурирај<Tab>:cwin
++menutrans &Open<Tab>:copen    &Отвори<Tab>:copen
++menutrans &Close<Tab>:cclose  &Затвори<Tab>:cclose
++
++" Bufers menu
++menutrans &Buffers	   &Бафери
++menutrans &Refresh\ menu   &Ажурирај
++menutrans Delete	   &Обриши
++menutrans &Alternate	   А&лтернативни
++menutrans &Next		   &Следећи
++menutrans &Previous	   &Претходни
++menutrans [No\ File]	   [Нема\ датотеке]
++
++" Window menu
++menutrans &Window		    &Прозор
++menutrans &New<Tab>^Wn		    &Нови<Tab>^Wn
++menutrans S&plit<Tab>^Ws	    &Подели<Tab>^Ws
++menutrans Sp&lit\ To\ #<Tab>^W^^    Подели\ са\ &алтернативним<Tab>^W^^
++menutrans Split\ &Vertically<Tab>^Wv   Подели\ &усправно<Tab>^Wv
++menutrans Split\ File\ E&xplorer    Подели\ за\ преглед\ &датотека
++menutrans &Close<Tab>^Wc	    &Затвори<Tab>^Wc
++menutrans Close\ &Other(s)<Tab>^Wo  Затвори\ &остале<Tab>^Wo
++"menutrans Ne&xt<Tab>^Ww       &Следећи<Tab>^Ww
++"menutrans P&revious<Tab>^WW	  П&ретходни<Tab>^WW
++menutrans Move\ &To		    Пре&мести
++menutrans Rotate\ &Up<Tab>^WR	    &Кружно\ нагоре<Tab>^WR
++menutrans Rotate\ &Down<Tab>^Wr     Кружно\ надол&е<Tab>^Wr
++menutrans &Equal\ Size<Tab>^W=	    &Исте\ величине<Tab>^W=
++menutrans &Max\ Height<Tab>^W_	    Максимална\ &висина<Tab>^W_
++menutrans M&in\ Height<Tab>^W1_     Минима&лна\ висина<Tab>^W1_
++menutrans Max\ &Width<Tab>^W\|	    Максимална\ &ширина<Tab>^W\|
++menutrans Min\ Widt&h<Tab>^W1\|     Минимална\ ши&рина<Tab>^W1\|
++
++" Window/Move To
++menutrans &Top<Tab>^WK		 &Врх<Tab>^WK
++menutrans &Bottom<Tab>^WJ	 &Подножје<Tab>^WJ
++menutrans &Left\ side<Tab>^WH	 У&лево<Tab>^WH
++menutrans &Right\ side<Tab>^WL	 У&десно<Tab>^WL
++
++" The popup menu
++menutrans &Undo		      &Врати
++menutrans Cu&t		      &Исеци
++menutrans &Copy		      &Копирај
++menutrans &Paste	      &Убаци
++menutrans &Delete	      И&збриши
++menutrans Select\ Blockwise   Бирај\ &правоугаоно
++menutrans Select\ &Word       Изабери\ &реч
++menutrans Select\ &Line       Изабери\ р&ед
++menutrans Select\ &Block      Изабери\ &блок
++menutrans Select\ &All	      Изабери\ &све
++
++" The GUI toolbar
++if has("toolbar")
++  if exists("*Do_toolbar_tmenu")
++    delfun Do_toolbar_tmenu
++  endif
++  fun Do_toolbar_tmenu()
++    tmenu ToolBar.Open     Учитај
++    tmenu ToolBar.Save     Сачувај
++    tmenu ToolBar.SaveAll  Сачувај све
++    tmenu ToolBar.Print    Штампај
++    tmenu ToolBar.Undo     Врати
++    tmenu ToolBar.Redo     Поврати
++    tmenu ToolBar.Cut      Исеци
++    tmenu ToolBar.Copy     Копирај
++    tmenu ToolBar.Paste    Убаци
++    tmenu ToolBar.Find     Нађи
++    tmenu ToolBar.FindNext Нађи следећи
++    tmenu ToolBar.FindPrev Нађи претходни
++    tmenu ToolBar.Replace  Замени
++    tmenu ToolBar.New      Нови
++    tmenu ToolBar.WinSplit Подели прозор
++    tmenu ToolBar.WinMax   Максимална висина
++    tmenu ToolBar.WinMin   Минимална висина
++    tmenu ToolBar.WinVSplit   Подели усправно
++    tmenu ToolBar.WinMaxWidth Максимална ширина
++    tmenu ToolBar.WinMinWidth Минимална ширина
++    tmenu ToolBar.WinClose Затвори прозор
++    tmenu ToolBar.LoadSesn Учитај сеансу
++    tmenu ToolBar.SaveSesn Сачувај сеансу
++    tmenu ToolBar.RunScript   Изврши спис
++    tmenu ToolBar.Make     'make'
++    tmenu ToolBar.Shell    Оперативно окружење
++    tmenu ToolBar.RunCtags Направи ознаке
++    tmenu ToolBar.TagJump  Иди на ознаку
++    tmenu ToolBar.Help     Помоћ
++    tmenu ToolBar.FindHelp Нађи објашњење
++  endfun
++endif
++
++" Syntax menu
++menutrans &Syntax &Синтакса
++menutrans &Show\ filetypes\ in\ menu  Избор\ 'filetype'\ из\ &менија
++menutrans Set\ '&syntax'\ only   Поде&си\ 'syntax'\ само
++menutrans Set\ '&filetype'\ too  Подеси\ 'filetype'\ &такође
++menutrans &Off       &Искључено
++menutrans &Manual    &Ручно
++menutrans A&utomatic    &Аутоматски
++menutrans on/off\ for\ &This\ file     Да/не\ за\ ову\ &датотеку
++menutrans Co&lor\ test     Провера\ &боја
++menutrans &Highlight\ test Провера\ исти&цања
++menutrans &Convert\ to\ HTML  Претвори\ &у\ HTML
++
++" dialog texts
++let menutrans_help_dialog = "Унесите наредбу или реч чије појашњење тражите:\n\nДодајте i_ за наредбе уноса (нпр. i_CTRL-X)\nДодајте c_ за наредбе командног режима (нпр. с_<Del>)\nДодајте ' за имена опција (нпр. 'shiftwidth')"
++
++let g:menutrans_path_dialog = "Унесите пут претраге за датотеке\nРаздвојите зарезима имена директоријума."
++
++let g:menutrans_tags_dialog = "Унесите имена датотека са ознакама\nРаздвојите зарезима имена."
++
++let g:menutrans_textwidth_dialog = "Унесите нову ширину текста (0 спречава прелом)"
++
++let g:menutrans_fileformat_dialog = "Изаберите врсту датотеке"
++
++let menutrans_no_file = "[Нема датотеке]"
++
++" vim: tw=0 keymap=serbian
+diff -Nur runtime/lang/menu_sr_yu.ascii.vim runtime/lang/menu_sr_yu.ascii.vim
+--- runtime/lang/menu_sr_yu.ascii.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/lang/menu_sr_yu.ascii.vim	2011-01-18 10:40:56.016388707 -0800
+@@ -1,258 +1,3 @@
+-" Menu Translations: Serbian
+-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+-" Last Change:	Fri, 30 May 2003 12:15:30 -0400
++" Menu Translations:	Serbian
+ 
+-" Quit when menu translations have already been done.
+-if exists("did_menu_trans")
+-  finish
+-endif
+-let did_menu_trans = 1
+-
+-" Help menu
+-menutrans &Help		      Pomo&c
+-menutrans &Overview<Tab><F1>  &Pregled<Tab><F1>
+-menutrans &User\ Manual       &Uputstvo\ za\ korisnike
+-menutrans &How-to\ links      &Kako\ da\.\.\.
+-menutrans &Find		      &Nadji
+-menutrans &Credits	      &Zasluge
+-menutrans Co&pying	      P&reuzimanje
+-menutrans O&rphans	      &Sirocici
+-menutrans &Version	      &Verzija
+-menutrans &About	      &O\ programu
+-
+-" File menu
+-menutrans &File			    &Datoteka
+-menutrans &Open\.\.\.<Tab>:e	    &Otvori\.\.\.<Tab>:e
+-menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
+-menutrans &New<Tab>:enew	    &Nova<Tab>:enew
+-menutrans &Close<Tab>:close	    &Zatvori<Tab>:close
+-menutrans &Save<Tab>:w		    &Sacuvaj<Tab>:w
+-menutrans Save\ &As\.\.\.<Tab>:sav  Sacuvaj\ &kao\.\.\.<Tab>:sav
+-menutrans Split\ &Diff\ with\.\.\.  Podeli\ i\ &uporedi\ sa\.\.\.
+-menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
+-menutrans &Print		    Sta&mpaj
+-menutrans Sa&ve-Exit<Tab>:wqa	    Sacuvaj\ i\ za&vrsi<Tab>:wqa
+-menutrans E&xit<Tab>:qa		    K&raj<Tab>:qa
+-
+-" Edit menu
+-menutrans &Edit			 &Uredjivanje
+-menutrans &Undo<Tab>u		 &Vrati<Tab>u
+-menutrans &Redo<Tab>^R		 &Povrati<Tab>^R
+-menutrans Rep&eat<Tab>\.	 P&onovi<Tab>\.
+-menutrans Cu&t<Tab>"+x		 Ise&ci<Tab>"+x
+-menutrans &Copy<Tab>"+y		 &Kopiraj<Tab>"+y
+-menutrans &Paste<Tab>"+gP	 &Ubaci<Tab>"+gP
+-menutrans &Paste<Tab>"+P	&Ubaci<Tab>"+gP
+-menutrans Put\ &Before<Tab>[p	 Stavi\ pre&d<Tab>[p
+-menutrans Put\ &After<Tab>]p	 Stavi\ &iza<Tab>]p
+-menutrans &Delete<Tab>x		 Iz&brisi<Tab>x
+-menutrans &Select\ all<Tab>ggVG  Izaberi\ sv&e<Tab>ggVG
+-menutrans &Find\.\.\.		 &Nadji\.\.\.
+-menutrans Find\ and\ Rep&lace\.\.\. Nadji\ i\ &zameni\.\.\.
+-menutrans Settings\ &Window	 P&rozor\ podesavanja
+-menutrans &Global\ Settings	 Op&sta\ podesavanja
+-menutrans F&ile\ Settings	 Podesavanja\ za\ da&toteke
+-menutrans &Shiftwidth		 &Pomeraj
+-menutrans Soft\ &Tabstop	 &Meka\ tabulacija
+-menutrans Te&xt\ Width\.\.\.	 &Sirina\ teksta\.\.\.
+-menutrans &File\ Format\.\.\.	 &Vrsta\ datoteke\.\.\.
+-menutrans C&olor\ Scheme	 Bo&je
+-menutrans &Keymap		 Pres&likavanje\ tastature
+-menutrans Select\ Fo&nt\.\.\.	 Izbor\ &fonta\.\.\.
+-
+-" Edit/Global Settings
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
+-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \velicinu\ &slova\ (da/ne)<Tab>:set\ ic!
+-menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ pratecu\ &zagradu\ (da/ne)<Tab>:set\ sm!
+-menutrans &Context\ lines  Vidljivi\ &redovi
+-menutrans &Virtual\ Edit   Virtuelno\ &uredjivanje
+-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!   Rezim\ u&nosa\ (da/ne)<Tab>:set\ im!
+-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
+-menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
+-menutrans Ta&g\ Files\.\.\.   &Datoteke\ oznaka\.\.\.
+-menutrans Toggle\ &Toolbar    Linija\ sa\ &alatkama\ (da/ne)
+-menutrans Toggle\ &Bottom\ Scrollbar   Donja\ l&inija\ klizanja\ (da/ne)
+-menutrans Toggle\ &Left\ Scrollbar  &Leva\ linija\ klizanja\ (da/ne)
+-menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
+-
+-" Edit/Global Settings/Virtual Edit
+-menutrans Never		      Nikad
+-menutrans Block\ Selection    Izbor\ bloka
+-menutrans Insert\ mode	      Rezim\ unosa
+-menutrans Block\ and\ Insert  Blok\ i\ unos
+-menutrans Always	      Uvek
+-
+-" Edit/File Settings
+-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
+-menutrans Toggle\ &List\ Mode<Tab>:set\ list!      Rezim\ &liste\ (da/ne)<Tab>:set\ list!
+-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!      Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
+-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   Prelomi\ &na\ rec\ (da/ne)<Tab>:set\ lbr!
+-menutrans Toggle\ &expand-tab<Tab>:set\ et!	   Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
+-menutrans Toggle\ &auto-indent<Tab>:set\ ai!    Auto-&uvlacenje\ (da/ne)<Tab>:set\ ai!
+-menutrans Toggle\ &C-indenting<Tab>:set\ cin!      &Ce-uvlacenje\ (da/ne)<Tab>:set\ cin!
+-
+-" Edit/Keymap
+-menutrans None Nijedan
+-
+-" Tools menu
+-menutrans &Tools	&Alatke
+-menutrans &Jump\ to\ this\ tag<Tab>g^] Skoci\ na\ &ovu\ oznaku<Tab>g^]
+-menutrans Jump\ &back<Tab>^T	 Skoci\ &natrag<Tab>^T
+-menutrans Build\ &Tags\ File	 Izgradi\ &datoteku\ oznaka
+-menutrans &Folding	      &Podvijanje
+-menutrans Create\ &Fold<Tab>zf		  S&tvori\ podvijutak<Tab>zf
+-menutrans &Delete\ Fold<Tab>zd		  O&brisi\ podvijutak<Tab>zd
+-menutrans Delete\ &All\ Folds<Tab>zD	  Obrisi\ sve\ po&dvijutke<Tab>zD
+-menutrans Fold\ column\ &width		  Sirina\ &reda\ podvijutka
+-menutrans &Diff		      &Uporedjivanje
+-menutrans &Make<Tab>:make     'mak&e'<Tab>:make
+-menutrans &List\ Errors<Tab>:cl     Spisak\ &gresaka<Tab>:cl
+-menutrans L&ist\ Messages<Tab>:cl!  Sp&isak\ poruka<Tab>:cl!
+-menutrans &Next\ Error<Tab>:cn	    S&ledeca\ greska<Tab>:cn
+-menutrans &Previous\ Error<Tab>:cp  Pre&thodna\ greska<Tab>:cp
+-menutrans &Older\ List<Tab>:cold    Stari\ spisa&k<Tab>:cold
+-menutrans N&ewer\ List<Tab>:cnew    No&vi\ spisak<Tab>:cnew
+-menutrans Error\ &Window	    Prozor\ sa\ g&reskama
+-menutrans &Set\ Compiler	    I&zaberi\ prevodioca
+-menutrans &Convert\ to\ HEX<Tab>:%!xxd	   Pretvori\ u\ &HEKS<Tab>:%!xxd
+-menutrans Conve&rt\ back<Tab>:%!xxd\ -r    Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
+-
+-" Tools/Folding
+-menutrans &Enable/Disable\ folds<Tab>zi   &Omoguci/prekini\ podvijanje<Tab>zi
+-menutrans &View\ Cursor\ Line<Tab>zv      &Pokazi\ red\ sa\ kursorom<Tab>zv
+-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Pokazi\ &samo\ red\ sa\ kursorom<Tab>zMzx
+-menutrans C&lose\ more\ folds<Tab>zm   &Zatvori\ vise\ podvijutaka<Tab>zm
+-menutrans &Close\ all\ folds<Tab>zM    Zatvori\ s&ve\ podvijutke<Tab>zM
+-menutrans O&pen\ more\ folds<Tab>zr    Otvori\ vis&e\ podvijutaka<Tab>zr
+-menutrans &Open\ all\ folds<Tab>zR     O&tvori\ sve\ podvijutke<Tab>zR
+-menutrans Fold\ Met&hod		       &Nacin\ podvijanja
+-
+-" Tools/Folding/Fold Method
+-menutrans M&anual       &Rucno
+-menutrans I&ndent       &Uvucenost
+-menutrans E&xpression   &Izraz
+-menutrans S&yntax       &Sintaksa
+-"menutrans &Diff
+-menutrans Ma&rker       &Oznaka
+-
+-" Tools/Diff
+-menutrans &Update       &Azuriraj
+-menutrans &Get\ Block   &Prihvati\ izmenu
+-menutrans &Put\ Block   Pre&baci\ izmenu
+-
+-" Tools/Error Window
+-menutrans &Update<Tab>:cwin   &Azuriraj<Tab>:cwin
+-menutrans &Open<Tab>:copen    &Otvori<Tab>:copen
+-menutrans &Close<Tab>:cclose  &Zatvori<Tab>:cclose
+-
+-" Bufers menu
+-menutrans &Buffers	   &Baferi
+-menutrans &Refresh\ menu   &Azuriraj
+-menutrans Delete	   &Obrisi
+-menutrans &Alternate	   A&lternativni
+-menutrans &Next		   &Sledeci
+-menutrans &Previous	   &Prethodni
+-menutrans [No\ File]	   [Nema\ datoteke]
+-
+-" Window menu
+-menutrans &Window		    &Prozor
+-menutrans &New<Tab>^Wn		    &Novi<Tab>^Wn
+-menutrans S&plit<Tab>^Ws	    &Podeli<Tab>^Ws
+-menutrans Sp&lit\ To\ #<Tab>^W^^    Podeli\ sa\ &alternativnim<Tab>^W^^
+-menutrans Split\ &Vertically<Tab>^Wv   Podeli\ &uspravno<Tab>^Wv
+-menutrans Split\ File\ E&xplorer    Podeli\ za\ pregled\ &datoteka
+-menutrans &Close<Tab>^Wc	    &Zatvori<Tab>^Wc
+-menutrans Close\ &Other(s)<Tab>^Wo  Zatvori\ &ostale<Tab>^Wo
+-"menutrans Ne&xt<Tab>^Ww       &Sledeci<Tab>^Ww
+-"menutrans P&revious<Tab>^WW	  P&rethodni<Tab>^WW
+-menutrans Move\ &To		    Pre&mesti
+-menutrans Rotate\ &Up<Tab>^WR	    &Kruzno\ nagore<Tab>^WR
+-menutrans Rotate\ &Down<Tab>^Wr     Kruzno\ nadol&e<Tab>^Wr
+-menutrans &Equal\ Size<Tab>^W=	    &Iste\ velicine<Tab>^W=
+-menutrans &Max\ Height<Tab>^W_	    Maksimalna\ &visina<Tab>^W_
+-menutrans M&in\ Height<Tab>^W1_     Minima&lna\ visina<Tab>^W1_
+-menutrans Max\ &Width<Tab>^W\|	    Maksimalna\ &sirina<Tab>^W\|
+-menutrans Min\ Widt&h<Tab>^W1\|     Minimalna\ si&rina<Tab>^W1\|
+-
+-" Window/Move To
+-menutrans &Top<Tab>^WK		 &Vrh<Tab>^WK
+-menutrans &Bottom<Tab>^WJ	 &Podnozje<Tab>^WJ
+-menutrans &Left\ side<Tab>^WH	 U&levo<Tab>^WH
+-menutrans &Right\ side<Tab>^WL	 U&desno<Tab>^WL
+-
+-" The popup menu
+-menutrans &Undo		      &Vrati
+-menutrans Cu&t		      &Iseci
+-menutrans &Copy		      &Kopiraj
+-menutrans &Paste	      &Ubaci
+-menutrans &Delete	      I&zbrisi
+-menutrans Select\ Blockwise   Biraj\ &pravougaono
+-menutrans Select\ &Word       Izaberi\ &rec
+-menutrans Select\ &Line       Izaberi\ r&ed
+-menutrans Select\ &Block      Izaberi\ &blok
+-menutrans Select\ &All	      Izaberi\ &sve
+-
+-" The GUI toolbar
+-if has("toolbar")
+-  if exists("*Do_toolbar_tmenu")
+-    delfun Do_toolbar_tmenu
+-  endif
+-  fun Do_toolbar_tmenu()
+-    tmenu ToolBar.Open     Ucitaj
+-    tmenu ToolBar.Save     Sacuvaj
+-    tmenu ToolBar.SaveAll  Sacuvaj sve
+-    tmenu ToolBar.Print    Stampaj
+-    tmenu ToolBar.Undo     Vrati
+-    tmenu ToolBar.Redo     Povrati
+-    tmenu ToolBar.Cut      Iseci
+-    tmenu ToolBar.Copy     Kopiraj
+-    tmenu ToolBar.Paste    Ubaci
+-    tmenu ToolBar.Find     Nadji
+-    tmenu ToolBar.FindNext Nadji sledeci
+-    tmenu ToolBar.FindPrev Nadji prethodni
+-    tmenu ToolBar.Replace  Zameni
+-    tmenu ToolBar.New      Novi
+-    tmenu ToolBar.WinSplit Podeli prozor
+-    tmenu ToolBar.WinMax   Maksimalna visina
+-    tmenu ToolBar.WinMin   Minimalna visina
+-    tmenu ToolBar.WinVSplit   Podeli uspravno
+-    tmenu ToolBar.WinMaxWidth Maksimalna sirina
+-    tmenu ToolBar.WinMinWidth Minimalna sirina
+-    tmenu ToolBar.WinClose Zatvori prozor
+-    tmenu ToolBar.LoadSesn Ucitaj seansu
+-    tmenu ToolBar.SaveSesn Sacuvaj seansu
+-    tmenu ToolBar.RunScript   Izvrsi spis
+-    tmenu ToolBar.Make     'make'
+-    tmenu ToolBar.Shell    Operativno okruzenje
+-    tmenu ToolBar.RunCtags Napravi oznake
+-    tmenu ToolBar.TagJump  Idi na oznaku
+-    tmenu ToolBar.Help     Pomoc
+-    tmenu ToolBar.FindHelp Nadji objasnjenje
+-  endfun
+-endif
+-
+-" Syntax menu
+-menutrans &Syntax &Sintaksa
+-menutrans &Show\ filetypes\ in\ menu  Izbor\ 'filetype'\ iz\ &menija
+-menutrans Set\ '&syntax'\ only   Pode&si\ 'syntax'\ samo
+-menutrans Set\ '&filetype'\ too  Podesi\ 'filetype'\ &takodje
+-menutrans &Off       &Iskljuceno
+-menutrans &Manual    &Rucno
+-menutrans A&utomatic    &Automatski
+-menutrans on/off\ for\ &This\ file     Da/ne\ za\ ovu\ &datoteku
+-menutrans Co&lor\ test     Provera\ &boja
+-menutrans &Highlight\ test Provera\ isti&canja
+-menutrans &Convert\ to\ HTML  Pretvori\ &u\ HTML
+-
+-" dialog texts
+-let menutrans_help_dialog = "Unesite naredbu ili rec cije pojasnjenje trazite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog rezima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
+-
+-let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
+-
+-let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
+-
+-let g:menutrans_textwidth_dialog = "Unesite novu sirinu teksta (0 sprecava prelom)"
+-
+-let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
+-
+-let menutrans_no_file = "[Nema datoteke]"
++source <sfile>:p:h/menu_sr_rs.ascii.vim
+diff -Nur runtime/lang/menu_sr_yu.iso_8859-2.vim runtime/lang/menu_sr_yu.iso_8859-2.vim
+--- runtime/lang/menu_sr_yu.iso_8859-2.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/lang/menu_sr_yu.iso_8859-2.vim	2011-01-18 10:40:56.016819075 -0800
+@@ -1,259 +1,3 @@
+-" Menu Translations: Serbian
+-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+-" Last Change:	Fri, 30 May 2003 12:04:48 -0400
++" Menu Translations:	Serbian
+ 
+-" Quit when menu translations have already been done.
+-if exists("did_menu_trans")
+-  finish
+-endif
+-let did_menu_trans = 1
+-scriptencoding iso8859-2
+-
+-" Help menu
+-menutrans &Help		      Pomo&�
+-menutrans &Overview<Tab><F1>  &Pregled<Tab><F1>
+-menutrans &User\ Manual       &Uputstvo\ za\ korisnike
+-menutrans &How-to\ links      &Kako\ da\.\.\.
+-menutrans &Find		      &Na�i
+-menutrans &Credits	      &Zasluge
+-menutrans Co&pying	      P&reuzimanje
+-menutrans O&rphans	      &Siro�i�i
+-menutrans &Version	      &Verzija
+-menutrans &About	      &O\ programu
+-
+-" File menu
+-menutrans &File			    &Datoteka
+-menutrans &Open\.\.\.<Tab>:e	    &Otvori\.\.\.<Tab>:e
+-menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
+-menutrans &New<Tab>:enew	    &Nova<Tab>:enew
+-menutrans &Close<Tab>:close	    &Zatvori<Tab>:close
+-menutrans &Save<Tab>:w		    &Sa�uvaj<Tab>:w
+-menutrans Save\ &As\.\.\.<Tab>:sav  Sa�uvaj\ &kao\.\.\.<Tab>:sav
+-menutrans Split\ &Diff\ with\.\.\.  Podeli\ i\ &uporedi\ sa\.\.\.
+-menutrans Split\ Patched\ &By\.\.\. Po&deli\ i\ prepravi\ sa\.\.\.
+-menutrans &Print		    �ta&mpaj
+-menutrans Sa&ve-Exit<Tab>:wqa	    Sa�uvaj\ i\ za&vr�i<Tab>:wqa
+-menutrans E&xit<Tab>:qa		    K&raj<Tab>:qa
+-
+-" Edit menu
+-menutrans &Edit			 &Ure�ivanje
+-menutrans &Undo<Tab>u		 &Vrati<Tab>u
+-menutrans &Redo<Tab>^R		 &Povrati<Tab>^R
+-menutrans Rep&eat<Tab>\.	 P&onovi<Tab>\.
+-menutrans Cu&t<Tab>"+x		 Ise&ci<Tab>"+x
+-menutrans &Copy<Tab>"+y		 &Kopiraj<Tab>"+y
+-menutrans &Paste<Tab>"+gP	 &Ubaci<Tab>"+gP
+-menutrans &Paste<Tab>"+P	&Ubaci<Tab>"+gP
+-menutrans Put\ &Before<Tab>[p	 Stavi\ pre&d<Tab>[p
+-menutrans Put\ &After<Tab>]p	 Stavi\ &iza<Tab>]p
+-menutrans &Delete<Tab>x		 Iz&bri�i<Tab>x
+-menutrans &Select\ all<Tab>ggVG  Izaberi\ sv&e<Tab>ggVG
+-menutrans &Find\.\.\.		 &Na�i\.\.\.
+-menutrans Find\ and\ Rep&lace\.\.\. Na�i\ i\ &zameni\.\.\.
+-menutrans Settings\ &Window	 P&rozor\ pode�avanja
+-menutrans &Global\ Settings	 Op&�ta\ pode�avanja
+-menutrans F&ile\ Settings	 Pode�avanja\ za\ da&toteke
+-menutrans &Shiftwidth		 &Pomeraj
+-menutrans Soft\ &Tabstop	 &Meka\ tabulacija
+-menutrans Te&xt\ Width\.\.\.	 &�irina\ teksta\.\.\.
+-menutrans &File\ Format\.\.\.	 &Vrsta\ datoteke\.\.\.
+-menutrans C&olor\ Scheme	 Bo&je
+-menutrans &Keymap		 Pres&likavanje\ tastature
+-menutrans Select\ Fo&nt\.\.\.	 Izbor\ &fonta\.\.\.
+-
+-" Edit/Global Settings
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Naglasi\ &obrazce\ (da/ne)<Tab>:set\ hls!
+-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Zanemari\ \veli�inu\ &slova\ (da/ne)<Tab>:set\ ic!
+-menutrans Toggle\ &Showmatch<Tab>:set\ sm! Proveri\ prate�u\ &zagradu\ (da/ne)<Tab>:set\ sm!
+-menutrans &Context\ lines  Vidljivi\ &redovi
+-menutrans &Virtual\ Edit   Virtuelno\ &ure�ivanje
+-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	Re�im\ u&nosa\ (da/ne)<Tab>:set\ im!
+-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ saglasno\ (da/ne)<Tab>:set\ cp!
+-menutrans Search\ &Path\.\.\. Putanja\ &pretrage\.\.\.
+-menutrans Ta&g\ Files\.\.\.   &Datoteke\ oznaka\.\.\.
+-menutrans Toggle\ &Toolbar    Linija\ sa\ &alatkama\ (da/ne)
+-menutrans Toggle\ &Bottom\ Scrollbar   Donja\ l&inija\ klizanja\ (da/ne)
+-menutrans Toggle\ &Left\ Scrollbar  &Leva\ linija\ klizanja\ (da/ne)
+-menutrans Toggle\ &Right\ Scrollbar &Desna\ linija\ klizanja\ (da/ne)
+-
+-" Edit/Global Settings/Virtual Edit
+-menutrans Never		      Nikad
+-menutrans Block\ Selection    Izbor\ bloka
+-menutrans Insert\ mode	      Re�im\ unosa
+-menutrans Block\ and\ Insert  Blok\ i\ unos
+-menutrans Always	      Uvek
+-
+-" Edit/File Settings
+-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   Redni\ &brojevi\ (da/ne)<Tab>:set\ nu!
+-menutrans Toggle\ &List\ Mode<Tab>:set\ list!	   Re�im\ &liste\ (da/ne)<Tab>:set\ list!
+-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!	   Obavijanje\ &redova\ (da/ne)<Tab>:set\ wrap!
+-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   Prelomi\ &na\ re�\ (da/ne)<Tab>:set\ lbr!
+-menutrans Toggle\ &expand-tab<Tab>:set\ et!	   Razmaci\ umesto\ &tabulacije\ (da/ne)<Tab>:set\ et!
+-menutrans Toggle\ &auto-indent<Tab>:set\ ai!	Auto-&uvla�enje\ (da/ne)<Tab>:set\ ai!
+-menutrans Toggle\ &C-indenting<Tab>:set\ cin!	   &Ce-uvla�enje\ (da/ne)<Tab>:set\ cin!
+-
+-" Edit/Keymap
+-menutrans None Nijedan
+-
+-" Tools menu
+-menutrans &Tools	&Alatke
+-menutrans &Jump\ to\ this\ tag<Tab>g^] Sko�i\ na\ &ovu\ oznaku<Tab>g^]
+-menutrans Jump\ &back<Tab>^T	 Sko�i\ &natrag<Tab>^T
+-menutrans Build\ &Tags\ File	 Izgradi\ &datoteku\ oznaka
+-menutrans &Folding	      &Podvijanje
+-menutrans Create\ &Fold<Tab>zf		  S&tvori\ podvijutak<Tab>zf
+-menutrans &Delete\ Fold<Tab>zd		  O&bri�i\ podvijutak<Tab>zd
+-menutrans Delete\ &All\ Folds<Tab>zD	  Obri�i\ sve\ po&dvijutke<Tab>zD
+-menutrans Fold\ column\ &width		  �irina\ &reda\ podvijutka
+-menutrans &Diff		      &Upore�ivanje
+-menutrans &Make<Tab>:make     'mak&e'<Tab>:make
+-menutrans &List\ Errors<Tab>:cl     Spisak\ &gre�aka<Tab>:cl
+-menutrans L&ist\ Messages<Tab>:cl!  Sp&isak\ poruka<Tab>:cl!
+-menutrans &Next\ Error<Tab>:cn	    S&lede�a\ gre�ka<Tab>:cn
+-menutrans &Previous\ Error<Tab>:cp  Pre&thodna\ gre�ka<Tab>:cp
+-menutrans &Older\ List<Tab>:cold    Stari\ spisa&k<Tab>:cold
+-menutrans N&ewer\ List<Tab>:cnew    No&vi\ spisak<Tab>:cnew
+-menutrans Error\ &Window	    Prozor\ sa\ g&re�kama
+-menutrans &Set\ Compiler	    I&zaberi\ prevodioca
+-menutrans &Convert\ to\ HEX<Tab>:%!xxd	   Pretvori\ u\ &HEKS<Tab>:%!xxd
+-menutrans Conve&rt\ back<Tab>:%!xxd\ -r    Vr&ati\ u\ prvobitan\ oblik<Tab>:%!xxd\ -r
+-
+-" Tools/Folding
+-menutrans &Enable/Disable\ folds<Tab>zi   &Omogu�i/prekini\ podvijanje<Tab>zi
+-menutrans &View\ Cursor\ Line<Tab>zv	  &Poka�i\ red\ sa\ kursorom<Tab>zv
+-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Poka�i\ &samo\ red\ sa\ kursorom<Tab>zMzx
+-menutrans C&lose\ more\ folds<Tab>zm   &Zatvori\ vi�e\ podvijutaka<Tab>zm
+-menutrans &Close\ all\ folds<Tab>zM    Zatvori\ s&ve\ podvijutke<Tab>zM
+-menutrans O&pen\ more\ folds<Tab>zr    Otvori\ vi�&e\ podvijutaka<Tab>zr
+-menutrans &Open\ all\ folds<Tab>zR     O&tvori\ sve\ podvijutke<Tab>zR
+-menutrans Fold\ Met&hod		       &Na�in\ podvijanja
+-
+-" Tools/Folding/Fold Method
+-menutrans M&anual	&Ru�no
+-menutrans I&ndent	&Uvu�enost
+-menutrans E&xpression	&Izraz
+-menutrans S&yntax	&Sintaksa
+-"menutrans &Diff
+-menutrans Ma&rker	&Oznaka
+-
+-" Tools/Diff
+-menutrans &Update	&A�uriraj
+-menutrans &Get\ Block	&Prihvati\ izmenu
+-menutrans &Put\ Block	Pre&baci\ izmenu
+-
+-" Tools/Error Window
+-menutrans &Update<Tab>:cwin   &A�uriraj<Tab>:cwin
+-menutrans &Open<Tab>:copen    &Otvori<Tab>:copen
+-menutrans &Close<Tab>:cclose  &Zatvori<Tab>:cclose
+-
+-" Bufers menu
+-menutrans &Buffers	   &Baferi
+-menutrans &Refresh\ menu   &A�uriraj
+-menutrans Delete	   &Obri�i
+-menutrans &Alternate	   A&lternativni
+-menutrans &Next		   &Slede�i
+-menutrans &Previous	   &Prethodni
+-menutrans [No\ File]	   [Nema\ datoteke]
+-
+-" Window menu
+-menutrans &Window		    &Prozor
+-menutrans &New<Tab>^Wn		    &Novi<Tab>^Wn
+-menutrans S&plit<Tab>^Ws	    &Podeli<Tab>^Ws
+-menutrans Sp&lit\ To\ #<Tab>^W^^    Podeli\ sa\ &alternativnim<Tab>^W^^
+-menutrans Split\ &Vertically<Tab>^Wv   Podeli\ &uspravno<Tab>^Wv
+-menutrans Split\ File\ E&xplorer    Podeli\ za\ pregled\ &datoteka
+-menutrans &Close<Tab>^Wc	    &Zatvori<Tab>^Wc
+-menutrans Close\ &Other(s)<Tab>^Wo  Zatvori\ &ostale<Tab>^Wo
+-"menutrans Ne&xt<Tab>^Ww       &Slede�i<Tab>^Ww
+-"menutrans P&revious<Tab>^WW	  P&rethodni<Tab>^WW
+-menutrans Move\ &To		    Pre&mesti
+-menutrans Rotate\ &Up<Tab>^WR	    &Kru�no\ nagore<Tab>^WR
+-menutrans Rotate\ &Down<Tab>^Wr     Kru�no\ nadol&e<Tab>^Wr
+-menutrans &Equal\ Size<Tab>^W=	    &Iste\ veli�ine<Tab>^W=
+-menutrans &Max\ Height<Tab>^W_	    Maksimalna\ &visina<Tab>^W_
+-menutrans M&in\ Height<Tab>^W1_     Minima&lna\ visina<Tab>^W1_
+-menutrans Max\ &Width<Tab>^W\|	    Maksimalna\ &�irina<Tab>^W\|
+-menutrans Min\ Widt&h<Tab>^W1\|     Minimalna\ �i&rina<Tab>^W1\|
+-
+-" Window/Move To
+-menutrans &Top<Tab>^WK		 &Vrh<Tab>^WK
+-menutrans &Bottom<Tab>^WJ	 &Podno�je<Tab>^WJ
+-menutrans &Left\ side<Tab>^WH	 U&levo<Tab>^WH
+-menutrans &Right\ side<Tab>^WL	 U&desno<Tab>^WL
+-
+-" The popup menu
+-menutrans &Undo		      &Vrati
+-menutrans Cu&t		      &Iseci
+-menutrans &Copy		      &Kopiraj
+-menutrans &Paste	      &Ubaci
+-menutrans &Delete	      I&zbri�i
+-menutrans Select\ Blockwise   Biraj\ &pravougaono
+-menutrans Select\ &Word       Izaberi\ &re�
+-menutrans Select\ &Line       Izaberi\ r&ed
+-menutrans Select\ &Block      Izaberi\ &blok
+-menutrans Select\ &All	      Izaberi\ &sve
+-
+-" The GUI toolbar
+-if has("toolbar")
+-  if exists("*Do_toolbar_tmenu")
+-    delfun Do_toolbar_tmenu
+-  endif
+-  fun Do_toolbar_tmenu()
+-    tmenu ToolBar.Open	   U�itaj
+-    tmenu ToolBar.Save	   Sa�uvaj
+-    tmenu ToolBar.SaveAll  Sa�uvaj sve
+-    tmenu ToolBar.Print    �tampaj
+-    tmenu ToolBar.Undo	   Vrati
+-    tmenu ToolBar.Redo	   Povrati
+-    tmenu ToolBar.Cut	   Iseci
+-    tmenu ToolBar.Copy	   Kopiraj
+-    tmenu ToolBar.Paste    Ubaci
+-    tmenu ToolBar.Find	   Na�i
+-    tmenu ToolBar.FindNext Na�i slede�i
+-    tmenu ToolBar.FindPrev Na�i prethodni
+-    tmenu ToolBar.Replace  Zameni
+-    tmenu ToolBar.New	   Novi
+-    tmenu ToolBar.WinSplit Podeli prozor
+-    tmenu ToolBar.WinMax   Maksimalna visina
+-    tmenu ToolBar.WinMin   Minimalna visina
+-    tmenu ToolBar.WinVSplit   Podeli uspravno
+-    tmenu ToolBar.WinMaxWidth Maksimalna �irina
+-    tmenu ToolBar.WinMinWidth Minimalna �irina
+-    tmenu ToolBar.WinClose Zatvori prozor
+-    tmenu ToolBar.LoadSesn U�itaj seansu
+-    tmenu ToolBar.SaveSesn Sa�uvaj seansu
+-    tmenu ToolBar.RunScript   Izvr�i spis
+-    tmenu ToolBar.Make	   'make'
+-    tmenu ToolBar.Shell    Operativno okru�enje
+-    tmenu ToolBar.RunCtags Napravi oznake
+-    tmenu ToolBar.TagJump  Idi na oznaku
+-    tmenu ToolBar.Help	   Pomo�
+-    tmenu ToolBar.FindHelp Na�i obja�njenje
+-  endfun
+-endif
+-
+-" Syntax menu
+-menutrans &Syntax &Sintaksa
+-menutrans &Show\ filetypes\ in\ menu  Izbor\ 'filetype'\ iz\ &menija
+-menutrans Set\ '&syntax'\ only	 Pode&si\ 'syntax'\ samo
+-menutrans Set\ '&filetype'\ too  Podesi\ 'filetype'\ &tako�e
+-menutrans &Off	     &Isklju�eno
+-menutrans &Manual    &Ru�no
+-menutrans A&utomatic	&Automatski
+-menutrans on/off\ for\ &This\ file     Da/ne\ za\ ovu\ &datoteku
+-menutrans Co&lor\ test	   Provera\ &boja
+-menutrans &Highlight\ test Provera\ isti&canja
+-menutrans &Convert\ to\ HTML  Pretvori\ &u\ HTML
+-
+-" dialog texts
+-let menutrans_help_dialog = "Unesite naredbu ili re� �ije poja�njenje tra�ite:\n\nDodajte i_ za naredbe unosa (npr. i_CTRL-X)\nDodajte c_ za naredbe komandnog re�ima (npr. s_<Del>)\nDodajte ' za imena opcija (npr. 'shiftwidth')"
+-
+-let g:menutrans_path_dialog = "Unesite put pretrage za datoteke\nRazdvojite zarezima imena direktorijuma."
+-
+-let g:menutrans_tags_dialog = "Unesite imena datoteka sa oznakama\nRazdvojite zarezima imena."
+-
+-let g:menutrans_textwidth_dialog = "Unesite novu �irinu teksta (0 spre�ava prelom)"
+-
+-let g:menutrans_fileformat_dialog = "Izaberite vrstu datoteke"
+-
+-let menutrans_no_file = "[Nema datoteke]"
++source <sfile>:p:h/menu_sr_rs.iso_8859-2.vim
+diff -Nur runtime/lang/menu_sr_yu.iso_8859-5.vim runtime/lang/menu_sr_yu.iso_8859-5.vim
+--- runtime/lang/menu_sr_yu.iso_8859-5.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/lang/menu_sr_yu.iso_8859-5.vim	2011-01-18 10:40:56.017091751 -0800
+@@ -1,259 +1,3 @@
+-" Menu Translations: Serbian
+-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+-" Last Change:	Fri, 30 May 2003 12:02:07 -0400
++" Menu Translations:	Serbian
+ 
+-" Quit when menu translations have already been done.
+-if exists("did_menu_trans")
+-  finish
+-endif
+-let did_menu_trans = 1
+-scriptencoding iso8859-5
+-
+-" Help menu
+-menutrans &Help		      ����&�
+-menutrans &Overview<Tab><F1>  &�������<Tab><F1>
+-menutrans &User\ Manual       &��������\ ��\ ���������
+-menutrans &How-to\ links      &����\ ��\.\.\.
+-menutrans &Find		      &����
+-menutrans &Credits	      &�������
+-menutrans Co&pying	      �&���������
+-menutrans O&rphans	      &��������
+-menutrans &Version	      &�������
+-menutrans &About	      &�\ ��������
+-
+-" File menu
+-menutrans &File			    &��������
+-menutrans &Open\.\.\.<Tab>:e	    &������\.\.\.<Tab>:e
+-menutrans Sp&lit-Open\.\.\.<Tab>:sp &������-������\.\.\.<Tab>:sp
+-menutrans &New<Tab>:enew	    &����<Tab>:enew
+-menutrans &Close<Tab>:close	    &�������<Tab>:close
+-menutrans &Save<Tab>:w		    &�������<Tab>:w
+-menutrans Save\ &As\.\.\.<Tab>:sav  �������\ &���\.\.\.<Tab>:sav
+-menutrans Split\ &Diff\ with\.\.\.  ������\ �\ &�������\ ��\.\.\.
+-menutrans Split\ Patched\ &By\.\.\. ��&����\ �\ ��������\ ��\.\.\.
+-menutrans &Print		    ���&����
+-menutrans Sa&ve-Exit<Tab>:wqa	    �������\ �\ ��&����<Tab>:wqa
+-menutrans E&xit<Tab>:qa		    �&���<Tab>:qa
+-
+-" Edit menu
+-menutrans &Edit			 &���������
+-menutrans &Undo<Tab>u		 &�����<Tab>u
+-menutrans &Redo<Tab>^R		 &�������<Tab>^R
+-menutrans Rep&eat<Tab>\.	 �&�����<Tab>\.
+-menutrans Cu&t<Tab>"+x		 ���&��<Tab>"+x
+-menutrans &Copy<Tab>"+y		 &�������<Tab>"+y
+-menutrans &Paste<Tab>"+gP	 &�����<Tab>"+gP
+-menutrans &Paste<Tab>"+P	&�����<Tab>"+gP
+-menutrans Put\ &Before<Tab>[p	 �����\ ���&�<Tab>[p
+-menutrans Put\ &After<Tab>]p	 �����\ &���<Tab>]p
+-menutrans &Delete<Tab>x		 ��&�����<Tab>x
+-menutrans &Select\ all<Tab>ggVG  �������\ ��&�<Tab>ggVG
+-menutrans &Find\.\.\.		 &����\.\.\.
+-menutrans Find\ and\ Rep&lace\.\.\. ����\ �\ &������\.\.\.
+-menutrans Settings\ &Window	 �&�����\ ����������
+-menutrans &Global\ Settings	 ��&���\ ����������
+-menutrans F&ile\ Settings	 ����������\ ��\ ��&������
+-menutrans &Shiftwidth		 &�������
+-menutrans Soft\ &Tabstop	 &����\ ����������
+-menutrans Te&xt\ Width\.\.\.	 &������\ ������\.\.\.
+-menutrans &File\ Format\.\.\.	 &�����\ ��������\.\.\.
+-menutrans C&olor\ Scheme	 ��&��
+-menutrans &Keymap		 ����&��������\ ���������
+-menutrans Select\ Fo&nt\.\.\.	 �����\ &�����\.\.\.
+-
+-" Edit/Global Settings
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! �������\ &�������\ (��/��)<Tab>:set\ hls!
+-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! ��������\ \��������\ &�����\ (��/��)<Tab>:set\ ic!
+-menutrans Toggle\ &Showmatch<Tab>:set\ sm! �������\ �������\ &�������\ (��/��)<Tab>:set\ sm!
+-menutrans &Context\ lines  �������\ &������
+-menutrans &Virtual\ Edit   ���������\ &���������
+-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!	�����\ �&����\ (��/��)<Tab>:set\ im!
+-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ ��������\ (��/��)<Tab>:set\ cp!
+-menutrans Search\ &Path\.\.\. ������\ &��������\.\.\.
+-menutrans Ta&g\ Files\.\.\.   &��������\ ������\.\.\.
+-menutrans Toggle\ &Toolbar    ������\ ��\ &��������\ (��/��)
+-menutrans Toggle\ &Bottom\ Scrollbar   ����\ �&�����\ �������\ (��/��)
+-menutrans Toggle\ &Left\ Scrollbar  &����\ ������\ �������\ (��/��)
+-menutrans Toggle\ &Right\ Scrollbar &�����\ ������\ �������\ (��/��)
+-
+-" Edit/Global Settings/Virtual Edit
+-menutrans Never		      �����
+-menutrans Block\ Selection    �����\ �����
+-menutrans Insert\ mode	      �����\ �����
+-menutrans Block\ and\ Insert  ����\ �\ ����
+-menutrans Always	      ����
+-
+-" Edit/File Settings
+-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   �����\ &�������\ (��/��)<Tab>:set\ nu!
+-menutrans Toggle\ &List\ Mode<Tab>:set\ list!	   �����\ &�����\ (��/��)<Tab>:set\ list!
+-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!	   ���������\ &������\ (��/��)<Tab>:set\ wrap!
+-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   �������\ &��\ ���\ (��/��)<Tab>:set\ lbr!
+-menutrans Toggle\ &expand-tab<Tab>:set\ et!	   �������\ ������\ &����������\ (��/��)<Tab>:set\ et!
+-menutrans Toggle\ &auto-indent<Tab>:set\ ai!	����-&��������\ (��/��)<Tab>:set\ ai!
+-menutrans Toggle\ &C-indenting<Tab>:set\ cin!	   &��-��������\ (��/��)<Tab>:set\ cin!
+-
+-" Edit/Keymap
+-menutrans None �������
+-
+-" Tools menu
+-menutrans &Tools	&������
+-menutrans &Jump\ to\ this\ tag<Tab>g^] �����\ ��\ &���\ ������<Tab>g^]
+-menutrans Jump\ &back<Tab>^T	 �����\ &������<Tab>^T
+-menutrans Build\ &Tags\ File	 �������\ &��������\ ������
+-menutrans &Folding	      &���������
+-menutrans Create\ &Fold<Tab>zf		  �&�����\ ����������<Tab>zf
+-menutrans &Delete\ Fold<Tab>zd		  �&�����\ ����������<Tab>zd
+-menutrans Delete\ &All\ Folds<Tab>zD	  ������\ ���\ ��&��������<Tab>zD
+-menutrans Fold\ column\ &width		  ������\ &����\ ����������
+-menutrans &Diff		      &�����������
+-menutrans &Make<Tab>:make     'mak&�'<Tab>:make
+-menutrans &List\ Errors<Tab>:cl     ������\ &�������<Tab>:cl
+-menutrans L&ist\ Messages<Tab>:cl!  ��&����\ ������<Tab>:cl!
+-menutrans &Next\ Error<Tab>:cn	    �&������\ ������<Tab>:cn
+-menutrans &Previous\ Error<Tab>:cp  ���&������\ ������<Tab>:cp
+-menutrans &Older\ List<Tab>:cold    �����\ �����&�<Tab>:cold
+-menutrans N&ewer\ List<Tab>:cnew    ��&��\ ������<Tab>:cnew
+-menutrans Error\ &Window	    ������\ ��\ �&�������
+-menutrans &Set\ Compiler	    �&������\ ����������
+-menutrans &Convert\ to\ HEX<Tab>:%!xxd	   ��������\ �\ &ŵ��<Tab>:%!xxd
+-menutrans Conve&rt\ back<Tab>:%!xxd\ -r    ��&���\ �\ ���������\ �����<Tab>:%!xxd\ -r
+-
+-" Tools/Folding
+-menutrans &Enable/Disable\ folds<Tab>zi   &�������/�������\ ���������<Tab>zi
+-menutrans &View\ Cursor\ Line<Tab>zv	  &������\ ���\ ��\ ��������<Tab>zv
+-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx ������\ &����\ ���\ ��\ ��������<Tab>zMzx
+-menutrans C&lose\ more\ folds<Tab>zm   &�������\ ����\ �����������<Tab>zm
+-menutrans &Close\ all\ folds<Tab>zM    �������\ �&��\ ����������<Tab>zM
+-menutrans O&pen\ more\ folds<Tab>zr    ������\ ���&�\ �����������<Tab>zr
+-menutrans &Open\ all\ folds<Tab>zR     �&�����\ ���\ ����������<Tab>zR
+-menutrans Fold\ Met&hod		       &�����\ ���������
+-
+-" Tools/Folding/Fold Method
+-menutrans M&anual	&�����
+-menutrans I&ndent	&���������
+-menutrans E&xpression	&�����
+-menutrans S&yntax	&��������
+-"menutrans &Diff
+-menutrans Ma&rker	&������
+-
+-" Tools/Diff
+-menutrans &Update	&��������
+-menutrans &Get\ Block	&��������\ ������
+-menutrans &Put\ Block	���&����\ ������
+-
+-" Tools/Error Window
+-menutrans &Update<Tab>:cwin   &��������<Tab>:cwin
+-menutrans &Open<Tab>:copen    &������<Tab>:copen
+-menutrans &Close<Tab>:cclose  &�������<Tab>:cclose
+-
+-" Bufers menu
+-menutrans &Buffers	   &������
+-menutrans &Refresh\ menu   &��������
+-menutrans Delete	   &������
+-menutrans &Alternate	   �&�����������
+-menutrans &Next		   &�������
+-menutrans &Previous	   &���������
+-menutrans [No\ File]	   [����\ ��������]
+-
+-" Window menu
+-menutrans &Window		    &������
+-menutrans &New<Tab>^Wn		    &����<Tab>^Wn
+-menutrans S&plit<Tab>^Ws	    &������<Tab>^Ws
+-menutrans Sp&lit\ To\ #<Tab>^W^^    ������\ ��\ &�������������<Tab>^W^^
+-menutrans Split\ &Vertically<Tab>^Wv   ������\ &��������<Tab>^Wv
+-menutrans Split\ File\ E&xplorer    ������\ ��\ �������\ &��������
+-menutrans &Close<Tab>^Wc	    &�������<Tab>^Wc
+-menutrans Close\ &Other(s)<Tab>^Wo  �������\ &������<Tab>^Wo
+-"menutrans Ne&xt<Tab>^Ww       &�������<Tab>^Ww
+-"menutrans P&revious<Tab>^WW	  �&��������<Tab>^WW
+-menutrans Move\ &To		    ���&�����
+-menutrans Rotate\ &Up<Tab>^WR	    &������\ ������<Tab>^WR
+-menutrans Rotate\ &Down<Tab>^Wr     ������\ �����&�<Tab>^Wr
+-menutrans &Equal\ Size<Tab>^W=	    &����\ ��������<Tab>^W=
+-menutrans &Max\ Height<Tab>^W_	    ����������\ &������<Tab>^W_
+-menutrans M&in\ Height<Tab>^W1_     ������&���\ ������<Tab>^W1_
+-menutrans Max\ &Width<Tab>^W\|	    ����������\ &������<Tab>^W\|
+-menutrans Min\ Widt&h<Tab>^W1\|     ���������\ ��&����<Tab>^W1\|
+-
+-" Window/Move To
+-menutrans &Top<Tab>^WK		 &���<Tab>^WK
+-menutrans &Bottom<Tab>^WJ	 &��������<Tab>^WJ
+-menutrans &Left\ side<Tab>^WH	 �&����<Tab>^WH
+-menutrans &Right\ side<Tab>^WL	 �&�����<Tab>^WL
+-
+-" The popup menu
+-menutrans &Undo		      &�����
+-menutrans Cu&t		      &�����
+-menutrans &Copy		      &�������
+-menutrans &Paste	      &�����
+-menutrans &Delete	      �&������
+-menutrans Select\ Blockwise   �����\ &�����������
+-menutrans Select\ &Word       �������\ &���
+-menutrans Select\ &Line       �������\ �&��
+-menutrans Select\ &Block      �������\ &����
+-menutrans Select\ &All	      �������\ &���
+-
+-" The GUI toolbar
+-if has("toolbar")
+-  if exists("*Do_toolbar_tmenu")
+-    delfun Do_toolbar_tmenu
+-  endif
+-  fun Do_toolbar_tmenu()
+-    tmenu ToolBar.Open	   ������
+-    tmenu ToolBar.Save	   �������
+-    tmenu ToolBar.SaveAll  ������� ���
+-    tmenu ToolBar.Print    �������
+-    tmenu ToolBar.Undo	   �����
+-    tmenu ToolBar.Redo	   �������
+-    tmenu ToolBar.Cut	   �����
+-    tmenu ToolBar.Copy	   �������
+-    tmenu ToolBar.Paste    �����
+-    tmenu ToolBar.Find	   ����
+-    tmenu ToolBar.FindNext ���� �������
+-    tmenu ToolBar.FindPrev ���� ���������
+-    tmenu ToolBar.Replace  ������
+-    tmenu ToolBar.New	   ����
+-    tmenu ToolBar.WinSplit ������ ������
+-    tmenu ToolBar.WinMax   ���������� ������
+-    tmenu ToolBar.WinMin   ��������� ������
+-    tmenu ToolBar.WinVSplit   ������ ��������
+-    tmenu ToolBar.WinMaxWidth ���������� ������
+-    tmenu ToolBar.WinMinWidth ��������� ������
+-    tmenu ToolBar.WinClose ������� ������
+-    tmenu ToolBar.LoadSesn ������ ������
+-    tmenu ToolBar.SaveSesn ������� ������
+-    tmenu ToolBar.RunScript   ������ ����
+-    tmenu ToolBar.Make	   'make'
+-    tmenu ToolBar.Shell    ���������� ��������
+-    tmenu ToolBar.RunCtags ������� ������
+-    tmenu ToolBar.TagJump  ��� �� ������
+-    tmenu ToolBar.Help	   �����
+-    tmenu ToolBar.FindHelp ���� ���������
+-  endfun
+-endif
+-
+-" Syntax menu
+-menutrans &Syntax &��������
+-menutrans &Show\ filetypes\ in\ menu  �����\ 'filetype'\ ��\ &������
+-menutrans Set\ '&syntax'\ only	 ����&��\ 'syntax'\ ����
+-menutrans Set\ '&filetype'\ too  ������\ 'filetype'\ &������
+-menutrans &Off	     &���������
+-menutrans &Manual    &�����
+-menutrans A&utomatic	&����������
+-menutrans on/off\ for\ &This\ file     ��/��\ ��\ ���\ &��������
+-menutrans Co&lor\ test	   �������\ &����
+-menutrans &Highlight\ test �������\ ����&����
+-menutrans &Convert\ to\ HTML  ��������\ &�\ HTML
+-
+-" dialog texts
+-let menutrans_help_dialog = "������� ������� ��� ��� ���� ��������� �������:\n\n������� i_ �� ������� ����� (���. i_CTRL-X)\n������� c_ �� ������� ��������� ������ (���. �_<Del>)\n������� ' �� ����� ������ (���. 'shiftwidth')"
+-
+-let g:menutrans_path_dialog = "������� ��� �������� �� ��������\n���������� �������� ����� �������������."
+-
+-let g:menutrans_tags_dialog = "������� ����� �������� �� ��������\n���������� �������� �����."
+-
+-let g:menutrans_textwidth_dialog = "������� ���� ������ ������ (0 �������� ������)"
+-
+-let g:menutrans_fileformat_dialog = "��������� ����� ��������"
+-
+-let menutrans_no_file = "[���� ��������]"
++source <sfile>:p:h/menu_sr_rs.iso_8859-5.vim
+diff -Nur runtime/lang/menu_sr_yu.utf-8.vim runtime/lang/menu_sr_yu.utf-8.vim
+--- runtime/lang/menu_sr_yu.utf-8.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/lang/menu_sr_yu.utf-8.vim	2011-01-18 10:40:56.017360509 -0800
+@@ -1,261 +1,3 @@
+-" Menu Translations: Serbian
+-" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
+-" Last Change:	Fri, 30 May 2003 10:17:39 Eastern Daylight Time
++" Menu Translations:	Serbian
+ 
+-" Quit when menu translations have already been done.
+-if exists("did_menu_trans")
+-  finish
+-endif
+-let did_menu_trans = 1
+-scriptencoding utf-8
+-
+-" Help menu
+-menutrans &Help		      Помо&ћ
+-menutrans &Overview<Tab><F1>  &Преглед<Tab><F1>
+-menutrans &User\ Manual       &Упутство\ за\ кориснике
+-menutrans &How-to\ links      &Како\ да\.\.\.
+-menutrans &Find		      &Нађи
+-menutrans &Credits	      &Заслуге
+-menutrans Co&pying	      П&реузимање
+-menutrans O&rphans	      &Сирочићи
+-menutrans &Version	      &Верзија
+-menutrans &About	      &О\ програму
+-
+-" File menu
+-menutrans &File			    &Датотека
+-menutrans &Open\.\.\.<Tab>:e	    &Отвори\.\.\.<Tab>:e
+-menutrans Sp&lit-Open\.\.\.<Tab>:sp &Подели-отвори\.\.\.<Tab>:sp
+-menutrans &New<Tab>:enew	    &Нова<Tab>:enew
+-menutrans &Close<Tab>:close	    &Затвори<Tab>:close
+-menutrans &Save<Tab>:w		    &Сачувај<Tab>:w
+-menutrans Save\ &As\.\.\.<Tab>:sav  Сачувај\ &као\.\.\.<Tab>:sav
+-menutrans Split\ &Diff\ with\.\.\.  Подели\ и\ &упореди\ са\.\.\.
+-menutrans Split\ Patched\ &By\.\.\. По&дели\ и\ преправи\ са\.\.\.
+-menutrans &Print		    Шта&мпај
+-menutrans Sa&ve-Exit<Tab>:wqa	    Сачувај\ и\ за&врши<Tab>:wqa
+-menutrans E&xit<Tab>:qa		    К&рај<Tab>:qa
+-
+-" Edit menu
+-menutrans &Edit			 &Уређивање
+-menutrans &Undo<Tab>u		 &Врати<Tab>u
+-menutrans &Redo<Tab>^R		 &Поврати<Tab>^R
+-menutrans Rep&eat<Tab>\.	 П&онови<Tab>\.
+-menutrans Cu&t<Tab>"+x		 Исе&ци<Tab>"+x
+-menutrans &Copy<Tab>"+y		 &Копирај<Tab>"+y
+-menutrans &Paste<Tab>"+gP	 &Убаци<Tab>"+gP
+-menutrans &Paste<Tab>"+P	&Убаци<Tab>"+gP
+-menutrans Put\ &Before<Tab>[p	 Стави\ пре&д<Tab>[p
+-menutrans Put\ &After<Tab>]p	 Стави\ &иза<Tab>]p
+-menutrans &Delete<Tab>x		 Из&бриши<Tab>x
+-menutrans &Select\ all<Tab>ggVG  Изабери\ св&е<Tab>ggVG
+-menutrans &Find\.\.\.		 &Нађи\.\.\.
+-menutrans Find\ and\ Rep&lace\.\.\. Нађи\ и\ &замени\.\.\.
+-menutrans Settings\ &Window	 П&розор\ подешавања
+-menutrans &Global\ Settings	 Оп&шта\ подешавања
+-menutrans F&ile\ Settings	 Подешавања\ за\ да&тотеке
+-menutrans &Shiftwidth		 &Померај
+-menutrans Soft\ &Tabstop	 &Мека\ табулација
+-menutrans Te&xt\ Width\.\.\.	 &Ширина\ текста\.\.\.
+-menutrans &File\ Format\.\.\.	 &Врста\ датотеке\.\.\.
+-menutrans C&olor\ Scheme	 Бо&је
+-menutrans &Keymap		 Прес&ликавање\ тастатуре
+-menutrans Select\ Fo&nt\.\.\.	 Избор\ &фонта\.\.\.
+-
+-" Edit/Global Settings
+-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! Нагласи\ &образце\ (да/не)<Tab>:set\ hls!
+-menutrans Toggle\ &Ignore-case<Tab>:set\ ic! Занемари\ \величину\ &слова\ (да/не)<Tab>:set\ ic!
+-menutrans Toggle\ &Showmatch<Tab>:set\ sm! Провери\ пратећу\ &заграду\ (да/не)<Tab>:set\ sm!
+-menutrans &Context\ lines  Видљиви\ &редови
+-menutrans &Virtual\ Edit   Виртуелно\ &уређивање
+-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!   Режим\ у&носа\ (да/не)<Tab>:set\ im!
+-menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!     '&Vi'\ сагласно\ (да/не)<Tab>:set\ cp!
+-menutrans Search\ &Path\.\.\. Путања\ &претраге\.\.\.
+-menutrans Ta&g\ Files\.\.\.   &Датотеке\ ознака\.\.\.
+-menutrans Toggle\ &Toolbar    Линија\ са\ &алаткама\ (да/не)
+-menutrans Toggle\ &Bottom\ Scrollbar   Доња\ л&инија\ клизања\ (да/не)
+-menutrans Toggle\ &Left\ Scrollbar  &Лева\ линија\ клизања\ (да/не)
+-menutrans Toggle\ &Right\ Scrollbar &Десна\ линија\ клизања\ (да/не)
+-
+-" Edit/Global Settings/Virtual Edit
+-menutrans Never		      Никад
+-menutrans Block\ Selection    Избор\ блока
+-menutrans Insert\ mode	      Режим\ уноса
+-menutrans Block\ and\ Insert  Блок\ и\ унос
+-menutrans Always	      Увек
+-
+-" Edit/File Settings
+-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!   Редни\ &бројеви\ (да/не)<Tab>:set\ nu!
+-menutrans Toggle\ &List\ Mode<Tab>:set\ list!	   Режим\ &листе\ (да/не)<Tab>:set\ list!
+-menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!	   Обавијање\ &редова\ (да/не)<Tab>:set\ wrap!
+-menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!   Преломи\ &на\ реч\ (да/не)<Tab>:set\ lbr!
+-menutrans Toggle\ &expand-tab<Tab>:set\ et!	   Размаци\ уместо\ &табулације\ (да/не)<Tab>:set\ et!
+-menutrans Toggle\ &auto-indent<Tab>:set\ ai!	Ауто-&увлачење\ (да/не)<Tab>:set\ ai!
+-menutrans Toggle\ &C-indenting<Tab>:set\ cin!	   &Це-увлачење\ (да/не)<Tab>:set\ cin!
+-
+-" Edit/Keymap
+-menutrans None Ниједан
+-
+-" Tools menu
+-menutrans &Tools	&Алатке
+-menutrans &Jump\ to\ this\ tag<Tab>g^] Скочи\ на\ &ову\ ознаку<Tab>g^]
+-menutrans Jump\ &back<Tab>^T	 Скочи\ &натраг<Tab>^T
+-menutrans Build\ &Tags\ File	 Изгради\ &датотеку\ ознака
+-menutrans &Folding	      &Подвијање
+-menutrans Create\ &Fold<Tab>zf		  С&твори\ подвијутак<Tab>zf
+-menutrans &Delete\ Fold<Tab>zd		  О&бриши\ подвијутак<Tab>zd
+-menutrans Delete\ &All\ Folds<Tab>zD	  Обриши\ све\ по&двијутке<Tab>zD
+-menutrans Fold\ column\ &width		  Ширина\ &реда\ подвијутка
+-menutrans &Diff		      &Упоређивање
+-menutrans &Make<Tab>:make     'mak&е'<Tab>:make
+-menutrans &List\ Errors<Tab>:cl     Списак\ &грешака<Tab>:cl
+-menutrans L&ist\ Messages<Tab>:cl!  Сп&исак\ порука<Tab>:cl!
+-menutrans &Next\ Error<Tab>:cn	    С&ледећа\ грешка<Tab>:cn
+-menutrans &Previous\ Error<Tab>:cp  Пре&тходна\ грешка<Tab>:cp
+-menutrans &Older\ List<Tab>:cold    Стари\ списа&к<Tab>:cold
+-menutrans N&ewer\ List<Tab>:cnew    Но&ви\ списак<Tab>:cnew
+-menutrans Error\ &Window	    Прозор\ са\ г&решкама
+-menutrans &Set\ Compiler	    И&забери\ преводиоца
+-menutrans &Convert\ to\ HEX<Tab>:%!xxd	   Претвори\ у\ &ХЕКС<Tab>:%!xxd
+-menutrans Conve&rt\ back<Tab>:%!xxd\ -r    Вр&ати\ у\ првобитан\ облик<Tab>:%!xxd\ -r
+-
+-" Tools/Folding
+-menutrans &Enable/Disable\ folds<Tab>zi   &Омогући/прекини\ подвијање<Tab>zi
+-menutrans &View\ Cursor\ Line<Tab>zv	  &Покажи\ ред\ са\ курсором<Tab>zv
+-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx Покажи\ &само\ ред\ са\ курсором<Tab>zMzx
+-menutrans C&lose\ more\ folds<Tab>zm   &Затвори\ више\ подвијутака<Tab>zm
+-menutrans &Close\ all\ folds<Tab>zM    Затвори\ с&ве\ подвијутке<Tab>zM
+-menutrans O&pen\ more\ folds<Tab>zr    Отвори\ виш&е\ подвијутака<Tab>zr
+-menutrans &Open\ all\ folds<Tab>zR     О&твори\ све\ подвијутке<Tab>zR
+-menutrans Fold\ Met&hod		       &Начин\ подвијања
+-
+-" Tools/Folding/Fold Method
+-menutrans M&anual	&Ручно
+-menutrans I&ndent	&Увученост
+-menutrans E&xpression	&Израз
+-menutrans S&yntax	&Синтакса
+-"menutrans &Diff
+-menutrans Ma&rker	&Ознака
+-
+-" Tools/Diff
+-menutrans &Update	&Ажурирај
+-menutrans &Get\ Block	&Прихвати\ измену
+-menutrans &Put\ Block	Пре&баци\ измену
+-
+-" Tools/Error Window
+-menutrans &Update<Tab>:cwin   &Ажурирај<Tab>:cwin
+-menutrans &Open<Tab>:copen    &Отвори<Tab>:copen
+-menutrans &Close<Tab>:cclose  &Затвори<Tab>:cclose
+-
+-" Bufers menu
+-menutrans &Buffers	   &Бафери
+-menutrans &Refresh\ menu   &Ажурирај
+-menutrans Delete	   &Обриши
+-menutrans &Alternate	   А&лтернативни
+-menutrans &Next		   &Следећи
+-menutrans &Previous	   &Претходни
+-menutrans [No\ File]	   [Нема\ датотеке]
+-
+-" Window menu
+-menutrans &Window		    &Прозор
+-menutrans &New<Tab>^Wn		    &Нови<Tab>^Wn
+-menutrans S&plit<Tab>^Ws	    &Подели<Tab>^Ws
+-menutrans Sp&lit\ To\ #<Tab>^W^^    Подели\ са\ &алтернативним<Tab>^W^^
+-menutrans Split\ &Vertically<Tab>^Wv   Подели\ &усправно<Tab>^Wv
+-menutrans Split\ File\ E&xplorer    Подели\ за\ преглед\ &датотека
+-menutrans &Close<Tab>^Wc	    &Затвори<Tab>^Wc
+-menutrans Close\ &Other(s)<Tab>^Wo  Затвори\ &остале<Tab>^Wo
+-"menutrans Ne&xt<Tab>^Ww       &Следећи<Tab>^Ww
+-"menutrans P&revious<Tab>^WW	  П&ретходни<Tab>^WW
+-menutrans Move\ &To		    Пре&мести
+-menutrans Rotate\ &Up<Tab>^WR	    &Кружно\ нагоре<Tab>^WR
+-menutrans Rotate\ &Down<Tab>^Wr     Кружно\ надол&е<Tab>^Wr
+-menutrans &Equal\ Size<Tab>^W=	    &Исте\ величине<Tab>^W=
+-menutrans &Max\ Height<Tab>^W_	    Максимална\ &висина<Tab>^W_
+-menutrans M&in\ Height<Tab>^W1_     Минима&лна\ висина<Tab>^W1_
+-menutrans Max\ &Width<Tab>^W\|	    Максимална\ &ширина<Tab>^W\|
+-menutrans Min\ Widt&h<Tab>^W1\|     Минимална\ ши&рина<Tab>^W1\|
+-
+-" Window/Move To
+-menutrans &Top<Tab>^WK		 &Врх<Tab>^WK
+-menutrans &Bottom<Tab>^WJ	 &Подножје<Tab>^WJ
+-menutrans &Left\ side<Tab>^WH	 У&лево<Tab>^WH
+-menutrans &Right\ side<Tab>^WL	 У&десно<Tab>^WL
+-
+-" The popup menu
+-menutrans &Undo		      &Врати
+-menutrans Cu&t		      &Исеци
+-menutrans &Copy		      &Копирај
+-menutrans &Paste	      &Убаци
+-menutrans &Delete	      И&збриши
+-menutrans Select\ Blockwise   Бирај\ &правоугаоно
+-menutrans Select\ &Word       Изабери\ &реч
+-menutrans Select\ &Line       Изабери\ р&ед
+-menutrans Select\ &Block      Изабери\ &блок
+-menutrans Select\ &All	      Изабери\ &све
+-
+-" The GUI toolbar
+-if has("toolbar")
+-  if exists("*Do_toolbar_tmenu")
+-    delfun Do_toolbar_tmenu
+-  endif
+-  fun Do_toolbar_tmenu()
+-    tmenu ToolBar.Open     Учитај
+-    tmenu ToolBar.Save     Сачувај
+-    tmenu ToolBar.SaveAll  Сачувај све
+-    tmenu ToolBar.Print    Штампај
+-    tmenu ToolBar.Undo     Врати
+-    tmenu ToolBar.Redo     Поврати
+-    tmenu ToolBar.Cut      Исеци
+-    tmenu ToolBar.Copy     Копирај
+-    tmenu ToolBar.Paste    Убаци
+-    tmenu ToolBar.Find     Нађи
+-    tmenu ToolBar.FindNext Нађи следећи
+-    tmenu ToolBar.FindPrev Нађи претходни
+-    tmenu ToolBar.Replace  Замени
+-    tmenu ToolBar.New      Нови
+-    tmenu ToolBar.WinSplit Подели прозор
+-    tmenu ToolBar.WinMax   Максимална висина
+-    tmenu ToolBar.WinMin   Минимална висина
+-    tmenu ToolBar.WinVSplit   Подели усправно
+-    tmenu ToolBar.WinMaxWidth Максимална ширина
+-    tmenu ToolBar.WinMinWidth Минимална ширина
+-    tmenu ToolBar.WinClose Затвори прозор
+-    tmenu ToolBar.LoadSesn Учитај сеансу
+-    tmenu ToolBar.SaveSesn Сачувај сеансу
+-    tmenu ToolBar.RunScript   Изврши спис
+-    tmenu ToolBar.Make     'make'
+-    tmenu ToolBar.Shell    Оперативно окружење
+-    tmenu ToolBar.RunCtags Направи ознаке
+-    tmenu ToolBar.TagJump  Иди на ознаку
+-    tmenu ToolBar.Help     Помоћ
+-    tmenu ToolBar.FindHelp Нађи објашњење
+-  endfun
+-endif
+-
+-" Syntax menu
+-menutrans &Syntax &Синтакса
+-menutrans &Show\ filetypes\ in\ menu  Избор\ 'filetype'\ из\ &менија
+-menutrans Set\ '&syntax'\ only   Поде&си\ 'syntax'\ само
+-menutrans Set\ '&filetype'\ too  Подеси\ 'filetype'\ &такође
+-menutrans &Off       &Искључено
+-menutrans &Manual    &Ручно
+-menutrans A&utomatic    &Аутоматски
+-menutrans on/off\ for\ &This\ file     Да/не\ за\ ову\ &датотеку
+-menutrans Co&lor\ test     Провера\ &боја
+-menutrans &Highlight\ test Провера\ исти&цања
+-menutrans &Convert\ to\ HTML  Претвори\ &у\ HTML
+-
+-" dialog texts
+-let menutrans_help_dialog = "Унесите наредбу или реч чије појашњење тражите:\n\nДодајте i_ за наредбе уноса (нпр. i_CTRL-X)\nДодајте c_ за наредбе командног режима (нпр. с_<Del>)\nДодајте ' за имена опција (нпр. 'shiftwidth')"
+-
+-let g:menutrans_path_dialog = "Унесите пут претраге за датотеке\nРаздвојите зарезима имена директоријума."
+-
+-let g:menutrans_tags_dialog = "Унесите имена датотека са ознакама\nРаздвојите зарезима имена."
+-
+-let g:menutrans_textwidth_dialog = "Унесите нову ширину текста (0 спречава прелом)"
+-
+-let g:menutrans_fileformat_dialog = "Изаберите врсту датотеке"
+-
+-let menutrans_no_file = "[Нема датотеке]"
+-
+-" vim: tw=0 keymap=serbcyril-US
++source <sfile>:p:h/menu_sr_rs.utf-8.vim
+Files vim72/runtime/macros/README.txt.info and ../../../vim-hg/runtime/macros/README.txt.info differ
+Files vim72/runtime/macros/hanoi/click.me.info and ../../../vim-hg/runtime/macros/hanoi/click.me.info differ
+Files vim72/runtime/macros/hanoi/poster.info and ../../../vim-hg/runtime/macros/hanoi/poster.info differ
+Files vim72/runtime/macros/hanoi.info and ../../../vim-hg/runtime/macros/hanoi.info differ
+Files vim72/runtime/macros/life/click.me.info and ../../../vim-hg/runtime/macros/life/click.me.info differ
+diff -Nur runtime/macros/matchit.vim runtime/macros/matchit.vim
+--- runtime/macros/matchit.vim	2008-02-06 12:53:04.000000000 -0800
++++ runtime/macros/matchit.vim	2011-01-18 10:40:56.044639378 -0800
+@@ -357,7 +357,7 @@
+       execute s:Ref(ini, d, "start", "len")
+       let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
+       let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
+-	\ escape(backref, '\\'), 'g')
++	\ escape(backref, '\\&'), 'g')
+     endif
+     let d = d-1
+   endwhile
+Files vim72/runtime/macros/maze/README.txt.info and ../../../vim-hg/runtime/macros/maze/README.txt.info differ
+Files vim72/runtime/macros/maze/maze_5.78.info and ../../../vim-hg/runtime/macros/maze/maze_5.78.info differ
+Files vim72/runtime/macros/maze/poster.info and ../../../vim-hg/runtime/macros/maze/poster.info differ
+Files vim72/runtime/macros/maze.info and ../../../vim-hg/runtime/macros/maze.info differ
+Files vim72/runtime/macros/urm/README.txt.info and ../../../vim-hg/runtime/macros/urm/README.txt.info differ
+Files vim72/runtime/macros/urm.info and ../../../vim-hg/runtime/macros/urm.info differ
+Files vim72/runtime/macros.info and ../../../vim-hg/runtime/macros.info differ
+diff -Nur runtime/menu.vim runtime/menu.vim
+--- runtime/menu.vim	2008-06-30 13:54:27.000000000 -0700
++++ runtime/menu.vim	2011-04-03 09:27:21.695248307 -0700
+@@ -2,7 +2,7 @@
+ " You can also use this as a start for your own set of menus.
+ "
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2008 Jun 30
++" Last Change:	2009 Feb 26
+ 
+ " Note that ":an" (short for ":anoremenu") is often used to make a menu work
+ " in all modes and avoid side effects from mappings defined by the user.
+@@ -138,6 +138,7 @@
+ func! s:FnameEscape(fname)
+   if exists('*fnameescape')
+     return fnameescape(a:fname)
++  endif
+   return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
+ endfunc
+ 
+@@ -275,6 +276,7 @@
+ 
+ " Boolean options
+ an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu!	:set nu! nu?<CR>
++an 20.440.105 &Edit.F&ile\ Settings.Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	:set rnu! rnu?<CR>
+ an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list!	:set list! list?<CR>
+ an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap!	:set wrap! wrap?<CR>
+ an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	:set lbr! lbr?<CR>
+@@ -899,7 +901,6 @@
+     let [w, a] = spellbadword()
+     if col('.') > curcol		" don't use word after the cursor
+       let w = ''
+-      call cursor(0, curcol)	" put the cursor back where it was
+     endif
+     if w != ''
+       if a == 'caps'
+@@ -907,12 +908,13 @@
+       else
+ 	let s:suglist = spellsuggest(w, 10)
+       endif
+-      if len(s:suglist) <= 0
+-	call cursor(0, curcol)	" put the cursor back where it was
+-      else
++      if len(s:suglist) > 0
+ 	let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
+ 	let s:fromword = w
+ 	let pri = 1
++	" set 'cpo' to include the <CR>
++	let cpo_save = &cpo
++	set cpo&vim
+ 	for sug in s:suglist
+ 	  exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
+ 		\ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
+@@ -926,12 +928,16 @@
+ 	exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
+ 
+ 	anoremenu 1.8 PopUp.-SpellSep- :
++	let &cpo = cpo_save
+       endif
+     endif
++    call cursor(0, curcol)	" put the cursor back where it was
+   endfunc
+ 
+   func! <SID>SpellReplace(n)
+     let l = getline('.')
++    " Move the cursor to the start of the word.
++    call spellbadword()
+     call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
+ 	  \ . strpart(l, col('.') + len(s:fromword) - 1))
+   endfunc
+@@ -1016,10 +1022,9 @@
+   tmenu ToolBar.Copy		Copy to clipboard
+   tmenu ToolBar.Paste		Paste from Clipboard
+   if !has("gui_athena")
+-    tmenu ToolBar.Find		Find...
++    tmenu ToolBar.Replace	Find / Replace...
+     tmenu ToolBar.FindNext	Find Next
+     tmenu ToolBar.FindPrev	Find Previous
+-    tmenu ToolBar.Replace		Find / Replace...
+   endif
+   tmenu ToolBar.LoadSesn	Choose a session to load
+   tmenu ToolBar.SaveSesn	Save current session
+diff -Nur runtime/optwin.vim runtime/optwin.vim
+--- runtime/optwin.vim	2008-05-12 13:30:28.000000000 -0700
++++ runtime/optwin.vim	2011-04-03 09:27:21.696692236 -0700
+@@ -365,11 +365,19 @@
+ call append("$", "number\tshow the line number for each line")
+ call append("$", "\t(local to window)")
+ call <SID>BinOptionL("nu")
++call append("$", "relativenumber\tshow the relative line number for each line")
++call append("$", "\t(local to window)")
++call <SID>BinOptionL("rnu")
+ if has("linebreak")
+   call append("$", "numberwidth\tnumber of columns to use for the line number")
+   call append("$", "\t(local to window)")
+   call <SID>OptionL("nuw")
+ endif
++if has("conceal")
++  call append("$", "conceallevel\tcontrols whether concealable elements are hidden")
++  call append("$", "\t(local to window)")
++  call <SID>OptionL("conc")
++endif
+ 
+ 
+ call <SID>Header("syntax, highlighting and spelling")
+@@ -474,6 +482,11 @@
+   call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'")
+   call <SID>OptionG("sbo", &sbo)
+ endif
++if has("cursorbind")
++  call append("$", "cursorbind\tthis window's cursor moves together with other bound windows")
++  call append("$", "\t(local to window)")
++  call <SID>BinOptionL("crb")
++endif
+ 
+ 
+ call <SID>Header("multiple tab pages")
+@@ -972,6 +985,9 @@
+   call append("$", "\t(local to buffer)")
+   call <SID>BinOptionL("sn")
+ endif
++call append("$", "cryptmethod\tsimple (0) or complex (1) encryption method for file writing")
++call append("$", "\t(local to buffer)")
++call <SID>OptionL("cm")
+ 
+ 
+ call <SID>Header("the swap file")
+@@ -1026,6 +1042,10 @@
+   call append("$", "cmdwinheight\theight of the command-line window")
+   call <SID>OptionG("cwh", &cwh)
+ endif
++call append("$", "undofile\tautomatically save and restore undo history")
++call <SID>BinOptionG("udf", &udf)
++call append("$", "undodir\tlist of directories for undo files")
++call <SID>OptionG("udir", &udir)
+ 
+ 
+ call <SID>Header("executing external commands")
+diff -Nur runtime/plugin/getscriptPlugin.vim runtime/plugin/getscriptPlugin.vim
+--- runtime/plugin/getscriptPlugin.vim	2008-07-10 11:17:15.000000000 -0700
++++ runtime/plugin/getscriptPlugin.vim	2011-01-18 10:40:56.057238293 -0800
+@@ -19,7 +19,7 @@
+  endif
+  finish
+ endif
+-let g:loaded_getscriptPlugin = "v31"
++let g:loaded_getscriptPlugin = "v32"
+ let s:keepcpo                = &cpo
+ set cpo&vim
+ 
+diff -Nur runtime/plugin/gzip.vim.~1~ runtime/plugin/gzip.vim.~1~
+diff -Nur runtime/plugin/matchparen.vim runtime/plugin/matchparen.vim
+--- runtime/plugin/matchparen.vim	2008-02-27 13:39:32.000000000 -0800
++++ runtime/plugin/matchparen.vim	2011-04-03 09:27:21.697602353 -0700
+@@ -1,6 +1,6 @@
+ " Vim plugin for showing matching parens
+ " Maintainer:  Bram Moolenaar <[email protected]>
+-" Last Change: 2008 Feb 27
++" Last Change: 2008 Sep 03
+ 
+ " Exit quickly when:
+ " - this plugin was already loaded (or disabled)
+@@ -21,7 +21,7 @@
+   finish
+ endif
+ 
+-let cpo_save = &cpo
++let s:cpo_save = &cpo
+ set cpo-=C
+ 
+ " The function that is invoked (very often) to define a ":match" highlighting
+@@ -147,4 +147,5 @@
+ 	  \ au! matchparen
+ command! DoMatchParen runtime plugin/matchparen.vim | windo doau CursorMoved
+ 
+-let &cpo = cpo_save
++let &cpo = s:cpo_save
++unlet s:cpo_save
+diff -Nur runtime/plugin/netrwPlugin.vim runtime/plugin/netrwPlugin.vim
+--- runtime/plugin/netrwPlugin.vim	2008-08-08 14:17:56.000000000 -0700
++++ runtime/plugin/netrwPlugin.vim	2011-04-03 09:27:21.698222201 -0700
+@@ -1,6 +1,6 @@
+ " netrwPlugin.vim: Handles file transfer and remote directory listing across a network
+ "            PLUGIN SECTION
+-" Date:		Aug 01, 2008
++" Date:		Aug 10, 2008
+ " Maintainer:	Charles E Campbell, Jr <[email protected]>
+ " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
+ " Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
+@@ -16,19 +16,16 @@
+ "  But be doers of the Word, and not only hearers, deluding your own selves {{{1
+ "  (James 1:22 RSV)
+ " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+-
+-" ---------------------------------------------------------------------
+ " Load Once: {{{1
+ if &cp || exists("g:loaded_netrwPlugin")
+  finish
+ endif
+-let g:loaded_netrwPlugin = "v132"
+-let s:keepcpo            = &cpo
+-if v:version < 700
+- echohl WarningMsg | echo "***netrw*** you need vim version 7.0 for this version of netrw" | echohl None
++let g:loaded_netrwPlugin = "v138"
++if v:version < 702
++ echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
+  finish
+ endif
+-let s:keepcpo= &cpo
++let s:keepcpo = &cpo
+ set cpo&vim
+ 
+ " ---------------------------------------------------------------------
+@@ -38,6 +35,7 @@
+ augroup FileExplorer
+  au!
+  au BufEnter * silent! call s:LocalBrowse(expand("<amatch>"))
++ au VimEnter * silent! call s:VimEnter(expand("<amatch>"))
+  if has("win32") || has("win95") || has("win64") || has("win16")
+   au BufEnter .* silent! call s:LocalBrowse(expand("<amatch>"))
+  endif
+@@ -52,8 +50,8 @@
+   au BufReadCmd  file://*		exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
+   au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
+  endif
+- au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|exe '2Nread '.fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
+- au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|exe 'Nread '.fnameescape(expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
++ au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
++ au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
+  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
+  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
+  try
+@@ -112,6 +110,13 @@
+ endfun
+ 
+ " ---------------------------------------------------------------------
++" s:VimEnter: {{{2
++fun! s:VimEnter(dirname)
++  windo if a:dirname != expand("%")|call s:LocalBrowse(expand("%:p"))|endif
++  1wincmd w
++endfun
++
++" ---------------------------------------------------------------------
+ " NetrwStatusLine: {{{1
+ fun! NetrwStatusLine()
+ "  let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".")
+@@ -156,24 +161,6 @@
+ 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") && exists("g:netrw_win95ftp") && 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
+-
+-" ------------------------------------------------------------------------
+ " Modelines And Restoration: {{{1
+ let &cpo= s:keepcpo
+ unlet s:keepcpo
+diff -Nur runtime/plugin/tarPlugin.vim runtime/plugin/tarPlugin.vim
+--- runtime/plugin/tarPlugin.vim	2008-08-08 14:05:33.000000000 -0700
++++ runtime/plugin/tarPlugin.vim	2011-04-03 09:27:21.701329344 -0700
+@@ -14,7 +14,7 @@
+ if &cp || exists("g:loaded_tarPlugin")
+  finish
+ endif
+-let g:loaded_tarPlugin = "v23"
++let g:loaded_tarPlugin = "v24"
+ let s:keepcpo          = &cpo
+ set cpo&vim
+ 
+@@ -34,13 +34,15 @@
+    au FileWriteCmd tarfile::*/*	call tar#Write(expand("<amatch>"))
+   endif
+ 
+-  au BufReadCmd   *.tar.gz	call tar#Browse(expand("<amatch>"))
+-  au BufReadCmd   *.tar		call tar#Browse(expand("<amatch>"))
+-  au BufReadCmd   *.lrp		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>"))
++  au BufReadCmd   *.tar.gz		call tar#Browse(expand("<amatch>"))
++  au BufReadCmd   *.tar			call tar#Browse(expand("<amatch>"))
++  au BufReadCmd   *.lrp			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>"))
++  au BufReadCmd   *.tar.lzma	call tar#Browse(expand("<amatch>"))
+ augroup END
++com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)
+ 
+ " ---------------------------------------------------------------------
+ " Restoration And Modelines: {{{1
+diff -Nur runtime/plugin/tohtml.vim runtime/plugin/tohtml.vim
+--- runtime/plugin/tohtml.vim	2004-06-07 07:32:33.000000000 -0700
++++ runtime/plugin/tohtml.vim	2011-04-03 09:27:21.701869313 -0700
+@@ -1,27 +1,13 @@
+ " Vim plugin for converting a syntax highlighted file to HTML.
+ " Maintainer: Bram Moolenaar <[email protected]>
+-" Last Change: 2003 Apr 06
++" Last Change: 2010 Jul 11
++"
++" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim
+ 
+-" Don't do this when:
+-" - when 'compatible' is set
+-" - this plugin was already loaded
+-" - user commands are not available.
++" Define the :TOhtml command when:
++" - 'compatible' is not set
++" - this plugin was not already loaded
++" - user commands are available.
+ if !&cp && !exists(":TOhtml") && has("user_commands")
+-  command -range=% TOhtml :call Convert2HTML(<line1>, <line2>)
+-
+-  func Convert2HTML(line1, line2)
+-    if a:line2 >= a:line1
+-      let g:html_start_line = a:line1
+-      let g:html_end_line = a:line2
+-    else
+-      let g:html_start_line = a:line2
+-      let g:html_end_line = a:line1
+-    endif
+-
+-    runtime syntax/2html.vim
+-
+-    unlet g:html_start_line
+-    unlet g:html_end_line
+-  endfunc
+-
++  command -range=% TOhtml :call tohtml#Convert2HTML(<line1>, <line2>)
+ endif
+diff -Nur runtime/plugin/vimballPlugin.vim runtime/plugin/vimballPlugin.vim
+--- runtime/plugin/vimballPlugin.vim	2008-07-30 13:24:17.000000000 -0700
++++ runtime/plugin/vimballPlugin.vim	2011-01-18 10:40:56.061220380 -0800
+@@ -1,6 +1,6 @@
+ " vimballPlugin : construct a file containing both paths and files
+ " Author: Charles E. Campbell, Jr.
+-" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr.
++" Copyright: (c) 2004-2010 by Charles E. Campbell, Jr.
+ "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
+ "            (see |copyright|) except use "Vimball" instead of "Vim".
+ "            No warranty, express or implied.
+@@ -16,18 +16,18 @@
+ if &cp || exists("g:loaded_vimballPlugin")
+  finish
+ endif
+-let g:loaded_vimballPlugin = "v29"
++let g:loaded_vimballPlugin = "v31"
+ let s:keepcpo              = &cpo
+ set cpo&vim
+ 
+ " ------------------------------------------------------------------------------
+ " Public Interface: {{{1
+ com! -ra   -complete=file -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
+-com! -na=? -complete=dir  UseVimball  call vimball#Vimball(1,<f-args>)
+-com! -na=0                VimballList call vimball#Vimball(0)
+-com! -na=* -complete=dir  RmVimball   call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
+-au BufEnter  *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))
+-au BufEnter  *.vba setlocal ff=unix noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
++com! -na=? -complete=dir  UseVimball			call vimball#Vimball(1,<f-args>)
++com! -na=0                VimballList			call vimball#Vimball(0)
++com! -na=* -complete=dir  RmVimball				call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
++au SourceCmd  *.vba.gz,*.vba.bz2,*.vba.zip		call vimball#Decompress(expand("<amatch>"))|call vimball#Vimball(1)
++au BufEnter  *.vba,*.vba.gz,*.vba.bz2,*.vba.zip	setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'| setlocal ma ff=unix noma |endif|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")
+ 
+ " =====================================================================
+ " Restoration And Modelines: {{{1
+diff -Nur runtime/plugin/zipPlugin.vim runtime/plugin/zipPlugin.vim
+--- runtime/plugin/zipPlugin.vim	2008-07-30 13:11:41.000000000 -0700
++++ runtime/plugin/zipPlugin.vim	2011-01-18 10:40:56.061602104 -0800
+@@ -20,7 +20,7 @@
+ if &cp || exists("g:loaded_zipPlugin")
+  finish
+ endif
+-let g:loaded_zipPlugin = "v22"
++let g:loaded_zipPlugin = "v23"
+ let s:keepcpo          = &cpo
+ set cpo&vim
+ 
+diff -Nur runtime/rgb.txt runtime/rgb.txt
+--- runtime/rgb.txt	1969-12-31 16:00:00.000000000 -0800
++++ runtime/rgb.txt	2011-01-18 10:40:56.072795615 -0800
+@@ -0,0 +1,753 @@
++! $XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp $
++255 250 250		snow
++248 248 255		ghost white
++248 248 255		GhostWhite
++245 245 245		white smoke
++245 245 245		WhiteSmoke
++220 220 220		gainsboro
++255 250 240		floral white
++255 250 240		FloralWhite
++253 245 230		old lace
++253 245 230		OldLace
++250 240 230		linen
++250 235 215		antique white
++250 235 215		AntiqueWhite
++255 239 213		papaya whip
++255 239 213		PapayaWhip
++255 235 205		blanched almond
++255 235 205		BlanchedAlmond
++255 228 196		bisque
++255 218 185		peach puff
++255 218 185		PeachPuff
++255 222 173		navajo white
++255 222 173		NavajoWhite
++255 228 181		moccasin
++255 248 220		cornsilk
++255 255 240		ivory
++255 250 205		lemon chiffon
++255 250 205		LemonChiffon
++255 245 238		seashell
++240 255 240		honeydew
++245 255 250		mint cream
++245 255 250		MintCream
++240 255 255		azure
++240 248 255		alice blue
++240 248 255		AliceBlue
++230 230 250		lavender
++255 240 245		lavender blush
++255 240 245		LavenderBlush
++255 228 225		misty rose
++255 228 225		MistyRose
++255 255 255		white
++  0   0   0		black
++ 47  79  79		dark slate gray
++ 47  79  79		DarkSlateGray
++ 47  79  79		dark slate grey
++ 47  79  79		DarkSlateGrey
++105 105 105		dim gray
++105 105 105		DimGray
++105 105 105		dim grey
++105 105 105		DimGrey
++112 128 144		slate gray
++112 128 144		SlateGray
++112 128 144		slate grey
++112 128 144		SlateGrey
++119 136 153		light slate gray
++119 136 153		LightSlateGray
++119 136 153		light slate grey
++119 136 153		LightSlateGrey
++190 190 190		gray
++190 190 190		grey
++211 211 211		light grey
++211 211 211		LightGrey
++211 211 211		light gray
++211 211 211		LightGray
++ 25  25 112		midnight blue
++ 25  25 112		MidnightBlue
++  0   0 128		navy
++  0   0 128		navy blue
++  0   0 128		NavyBlue
++100 149 237		cornflower blue
++100 149 237		CornflowerBlue
++ 72  61 139		dark slate blue
++ 72  61 139		DarkSlateBlue
++106  90 205		slate blue
++106  90 205		SlateBlue
++123 104 238		medium slate blue
++123 104 238		MediumSlateBlue
++132 112 255		light slate blue
++132 112 255		LightSlateBlue
++  0   0 205		medium blue
++  0   0 205		MediumBlue
++ 65 105 225		royal blue
++ 65 105 225		RoyalBlue
++  0   0 255		blue
++ 30 144 255		dodger blue
++ 30 144 255		DodgerBlue
++  0 191 255		deep sky blue
++  0 191 255		DeepSkyBlue
++135 206 235		sky blue
++135 206 235		SkyBlue
++135 206 250		light sky blue
++135 206 250		LightSkyBlue
++ 70 130 180		steel blue
++ 70 130 180		SteelBlue
++176 196 222		light steel blue
++176 196 222		LightSteelBlue
++173 216 230		light blue
++173 216 230		LightBlue
++176 224 230		powder blue
++176 224 230		PowderBlue
++175 238 238		pale turquoise
++175 238 238		PaleTurquoise
++  0 206 209		dark turquoise
++  0 206 209		DarkTurquoise
++ 72 209 204		medium turquoise
++ 72 209 204		MediumTurquoise
++ 64 224 208		turquoise
++  0 255 255		cyan
++224 255 255		light cyan
++224 255 255		LightCyan
++ 95 158 160		cadet blue
++ 95 158 160		CadetBlue
++102 205 170		medium aquamarine
++102 205 170		MediumAquamarine
++127 255 212		aquamarine
++  0 100   0		dark green
++  0 100   0		DarkGreen
++ 85 107  47		dark olive green
++ 85 107  47		DarkOliveGreen
++143 188 143		dark sea green
++143 188 143		DarkSeaGreen
++ 46 139  87		sea green
++ 46 139  87		SeaGreen
++ 60 179 113		medium sea green
++ 60 179 113		MediumSeaGreen
++ 32 178 170		light sea green
++ 32 178 170		LightSeaGreen
++152 251 152		pale green
++152 251 152		PaleGreen
++  0 255 127		spring green
++  0 255 127		SpringGreen
++124 252   0		lawn green
++124 252   0		LawnGreen
++  0 255   0		green
++127 255   0		chartreuse
++  0 250 154		medium spring green
++  0 250 154		MediumSpringGreen
++173 255  47		green yellow
++173 255  47		GreenYellow
++ 50 205  50		lime green
++ 50 205  50		LimeGreen
++154 205  50		yellow green
++154 205  50		YellowGreen
++ 34 139  34		forest green
++ 34 139  34		ForestGreen
++107 142  35		olive drab
++107 142  35		OliveDrab
++189 183 107		dark khaki
++189 183 107		DarkKhaki
++240 230 140		khaki
++238 232 170		pale goldenrod
++238 232 170		PaleGoldenrod
++250 250 210		light goldenrod yellow
++250 250 210		LightGoldenrodYellow
++255 255 224		light yellow
++255 255 224		LightYellow
++255 255   0		yellow
++255 215   0		gold
++238 221 130		light goldenrod
++238 221 130		LightGoldenrod
++218 165  32		goldenrod
++184 134  11		dark goldenrod
++184 134  11		DarkGoldenrod
++188 143 143		rosy brown
++188 143 143		RosyBrown
++205  92  92		indian red
++205  92  92		IndianRed
++139  69  19		saddle brown
++139  69  19		SaddleBrown
++160  82  45		sienna
++205 133  63		peru
++222 184 135		burlywood
++245 245 220		beige
++245 222 179		wheat
++244 164  96		sandy brown
++244 164  96		SandyBrown
++210 180 140		tan
++210 105  30		chocolate
++178  34  34		firebrick
++165  42  42		brown
++233 150 122		dark salmon
++233 150 122		DarkSalmon
++250 128 114		salmon
++255 160 122		light salmon
++255 160 122		LightSalmon
++255 165   0		orange
++255 140   0		dark orange
++255 140   0		DarkOrange
++255 127  80		coral
++240 128 128		light coral
++240 128 128		LightCoral
++255  99  71		tomato
++255  69   0		orange red
++255  69   0		OrangeRed
++255   0   0		red
++255 105 180		hot pink
++255 105 180		HotPink
++255  20 147		deep pink
++255  20 147		DeepPink
++255 192 203		pink
++255 182 193		light pink
++255 182 193		LightPink
++219 112 147		pale violet red
++219 112 147		PaleVioletRed
++176  48  96		maroon
++199  21 133		medium violet red
++199  21 133		MediumVioletRed
++208  32 144		violet red
++208  32 144		VioletRed
++255   0 255		magenta
++238 130 238		violet
++221 160 221		plum
++218 112 214		orchid
++186  85 211		medium orchid
++186  85 211		MediumOrchid
++153  50 204		dark orchid
++153  50 204		DarkOrchid
++148   0 211		dark violet
++148   0 211		DarkViolet
++138  43 226		blue violet
++138  43 226		BlueViolet
++160  32 240		purple
++147 112 219		medium purple
++147 112 219		MediumPurple
++216 191 216		thistle
++255 250 250		snow1
++238 233 233		snow2
++205 201 201		snow3
++139 137 137		snow4
++255 245 238		seashell1
++238 229 222		seashell2
++205 197 191		seashell3
++139 134 130		seashell4
++255 239 219		AntiqueWhite1
++238 223 204		AntiqueWhite2
++205 192 176		AntiqueWhite3
++139 131 120		AntiqueWhite4
++255 228 196		bisque1
++238 213 183		bisque2
++205 183 158		bisque3
++139 125 107		bisque4
++255 218 185		PeachPuff1
++238 203 173		PeachPuff2
++205 175 149		PeachPuff3
++139 119 101		PeachPuff4
++255 222 173		NavajoWhite1
++238 207 161		NavajoWhite2
++205 179 139		NavajoWhite3
++139 121	 94		NavajoWhite4
++255 250 205		LemonChiffon1
++238 233 191		LemonChiffon2
++205 201 165		LemonChiffon3
++139 137 112		LemonChiffon4
++255 248 220		cornsilk1
++238 232 205		cornsilk2
++205 200 177		cornsilk3
++139 136 120		cornsilk4
++255 255 240		ivory1
++238 238 224		ivory2
++205 205 193		ivory3
++139 139 131		ivory4
++240 255 240		honeydew1
++224 238 224		honeydew2
++193 205 193		honeydew3
++131 139 131		honeydew4
++255 240 245		LavenderBlush1
++238 224 229		LavenderBlush2
++205 193 197		LavenderBlush3
++139 131 134		LavenderBlush4
++255 228 225		MistyRose1
++238 213 210		MistyRose2
++205 183 181		MistyRose3
++139 125 123		MistyRose4
++240 255 255		azure1
++224 238 238		azure2
++193 205 205		azure3
++131 139 139		azure4
++131 111 255		SlateBlue1
++122 103 238		SlateBlue2
++105  89 205		SlateBlue3
++ 71  60 139		SlateBlue4
++ 72 118 255		RoyalBlue1
++ 67 110 238		RoyalBlue2
++ 58  95 205		RoyalBlue3
++ 39  64 139		RoyalBlue4
++  0   0 255		blue1
++  0   0 238		blue2
++  0   0 205		blue3
++  0   0 139		blue4
++ 30 144 255		DodgerBlue1
++ 28 134 238		DodgerBlue2
++ 24 116 205		DodgerBlue3
++ 16  78 139		DodgerBlue4
++ 99 184 255		SteelBlue1
++ 92 172 238		SteelBlue2
++ 79 148 205		SteelBlue3
++ 54 100 139		SteelBlue4
++  0 191 255		DeepSkyBlue1
++  0 178 238		DeepSkyBlue2
++  0 154 205		DeepSkyBlue3
++  0 104 139		DeepSkyBlue4
++135 206 255		SkyBlue1
++126 192 238		SkyBlue2
++108 166 205		SkyBlue3
++ 74 112 139		SkyBlue4
++176 226 255		LightSkyBlue1
++164 211 238		LightSkyBlue2
++141 182 205		LightSkyBlue3
++ 96 123 139		LightSkyBlue4
++198 226 255		SlateGray1
++185 211 238		SlateGray2
++159 182 205		SlateGray3
++108 123 139		SlateGray4
++202 225 255		LightSteelBlue1
++188 210 238		LightSteelBlue2
++162 181 205		LightSteelBlue3
++110 123 139		LightSteelBlue4
++191 239 255		LightBlue1
++178 223 238		LightBlue2
++154 192 205		LightBlue3
++104 131 139		LightBlue4
++224 255 255		LightCyan1
++209 238 238		LightCyan2
++180 205 205		LightCyan3
++122 139 139		LightCyan4
++187 255 255		PaleTurquoise1
++174 238 238		PaleTurquoise2
++150 205 205		PaleTurquoise3
++102 139 139		PaleTurquoise4
++152 245 255		CadetBlue1
++142 229 238		CadetBlue2
++122 197 205		CadetBlue3
++ 83 134 139		CadetBlue4
++  0 245 255		turquoise1
++  0 229 238		turquoise2
++  0 197 205		turquoise3
++  0 134 139		turquoise4
++  0 255 255		cyan1
++  0 238 238		cyan2
++  0 205 205		cyan3
++  0 139 139		cyan4
++151 255 255		DarkSlateGray1
++141 238 238		DarkSlateGray2
++121 205 205		DarkSlateGray3
++ 82 139 139		DarkSlateGray4
++127 255 212		aquamarine1
++118 238 198		aquamarine2
++102 205 170		aquamarine3
++ 69 139 116		aquamarine4
++193 255 193		DarkSeaGreen1
++180 238 180		DarkSeaGreen2
++155 205 155		DarkSeaGreen3
++105 139 105		DarkSeaGreen4
++ 84 255 159		SeaGreen1
++ 78 238 148		SeaGreen2
++ 67 205 128		SeaGreen3
++ 46 139	 87		SeaGreen4
++154 255 154		PaleGreen1
++144 238 144		PaleGreen2
++124 205 124		PaleGreen3
++ 84 139	 84		PaleGreen4
++  0 255 127		SpringGreen1
++  0 238 118		SpringGreen2
++  0 205 102		SpringGreen3
++  0 139	 69		SpringGreen4
++  0 255	  0		green1
++  0 238	  0		green2
++  0 205	  0		green3
++  0 139	  0		green4
++127 255	  0		chartreuse1
++118 238	  0		chartreuse2
++102 205	  0		chartreuse3
++ 69 139	  0		chartreuse4
++192 255	 62		OliveDrab1
++179 238	 58		OliveDrab2
++154 205	 50		OliveDrab3
++105 139	 34		OliveDrab4
++202 255 112		DarkOliveGreen1
++188 238 104		DarkOliveGreen2
++162 205	 90		DarkOliveGreen3
++110 139	 61		DarkOliveGreen4
++255 246 143		khaki1
++238 230 133		khaki2
++205 198 115		khaki3
++139 134	 78		khaki4
++255 236 139		LightGoldenrod1
++238 220 130		LightGoldenrod2
++205 190 112		LightGoldenrod3
++139 129	 76		LightGoldenrod4
++255 255 224		LightYellow1
++238 238 209		LightYellow2
++205 205 180		LightYellow3
++139 139 122		LightYellow4
++255 255	  0		yellow1
++238 238	  0		yellow2
++205 205	  0		yellow3
++139 139	  0		yellow4
++255 215	  0		gold1
++238 201	  0		gold2
++205 173	  0		gold3
++139 117	  0		gold4
++255 193	 37		goldenrod1
++238 180	 34		goldenrod2
++205 155	 29		goldenrod3
++139 105	 20		goldenrod4
++255 185	 15		DarkGoldenrod1
++238 173	 14		DarkGoldenrod2
++205 149	 12		DarkGoldenrod3
++139 101	  8		DarkGoldenrod4
++255 193 193		RosyBrown1
++238 180 180		RosyBrown2
++205 155 155		RosyBrown3
++139 105 105		RosyBrown4
++255 106 106		IndianRed1
++238  99	 99		IndianRed2
++205  85	 85		IndianRed3
++139  58	 58		IndianRed4
++255 130	 71		sienna1
++238 121	 66		sienna2
++205 104	 57		sienna3
++139  71	 38		sienna4
++255 211 155		burlywood1
++238 197 145		burlywood2
++205 170 125		burlywood3
++139 115	 85		burlywood4
++255 231 186		wheat1
++238 216 174		wheat2
++205 186 150		wheat3
++139 126 102		wheat4
++255 165	 79		tan1
++238 154	 73		tan2
++205 133	 63		tan3
++139  90	 43		tan4
++255 127	 36		chocolate1
++238 118	 33		chocolate2
++205 102	 29		chocolate3
++139  69	 19		chocolate4
++255  48	 48		firebrick1
++238  44	 44		firebrick2
++205  38	 38		firebrick3
++139  26	 26		firebrick4
++255  64	 64		brown1
++238  59	 59		brown2
++205  51	 51		brown3
++139  35	 35		brown4
++255 140 105		salmon1
++238 130	 98		salmon2
++205 112	 84		salmon3
++139  76	 57		salmon4
++255 160 122		LightSalmon1
++238 149 114		LightSalmon2
++205 129	 98		LightSalmon3
++139  87	 66		LightSalmon4
++255 165	  0		orange1
++238 154	  0		orange2
++205 133	  0		orange3
++139  90	  0		orange4
++255 127	  0		DarkOrange1
++238 118	  0		DarkOrange2
++205 102	  0		DarkOrange3
++139  69	  0		DarkOrange4
++255 114	 86		coral1
++238 106	 80		coral2
++205  91	 69		coral3
++139  62	 47		coral4
++255  99	 71		tomato1
++238  92	 66		tomato2
++205  79	 57		tomato3
++139  54	 38		tomato4
++255  69	  0		OrangeRed1
++238  64	  0		OrangeRed2
++205  55	  0		OrangeRed3
++139  37	  0		OrangeRed4
++255   0	  0		red1
++238   0	  0		red2
++205   0	  0		red3
++139   0	  0		red4
++255  20 147		DeepPink1
++238  18 137		DeepPink2
++205  16 118		DeepPink3
++139  10	 80		DeepPink4
++255 110 180		HotPink1
++238 106 167		HotPink2
++205  96 144		HotPink3
++139  58  98		HotPink4
++255 181 197		pink1
++238 169 184		pink2
++205 145 158		pink3
++139  99 108		pink4
++255 174 185		LightPink1
++238 162 173		LightPink2
++205 140 149		LightPink3
++139  95 101		LightPink4
++255 130 171		PaleVioletRed1
++238 121 159		PaleVioletRed2
++205 104 137		PaleVioletRed3
++139  71	 93		PaleVioletRed4
++255  52 179		maroon1
++238  48 167		maroon2
++205  41 144		maroon3
++139  28	 98		maroon4
++255  62 150		VioletRed1
++238  58 140		VioletRed2
++205  50 120		VioletRed3
++139  34	 82		VioletRed4
++255   0 255		magenta1
++238   0 238		magenta2
++205   0 205		magenta3
++139   0 139		magenta4
++255 131 250		orchid1
++238 122 233		orchid2
++205 105 201		orchid3
++139  71 137		orchid4
++255 187 255		plum1
++238 174 238		plum2
++205 150 205		plum3
++139 102 139		plum4
++224 102 255		MediumOrchid1
++209  95 238		MediumOrchid2
++180  82 205		MediumOrchid3
++122  55 139		MediumOrchid4
++191  62 255		DarkOrchid1
++178  58 238		DarkOrchid2
++154  50 205		DarkOrchid3
++104  34 139		DarkOrchid4
++155  48 255		purple1
++145  44 238		purple2
++125  38 205		purple3
++ 85  26 139		purple4
++171 130 255		MediumPurple1
++159 121 238		MediumPurple2
++137 104 205		MediumPurple3
++ 93  71 139		MediumPurple4
++255 225 255		thistle1
++238 210 238		thistle2
++205 181 205		thistle3
++139 123 139		thistle4
++  0   0   0		gray0
++  0   0   0		grey0
++  3   3   3		gray1
++  3   3   3		grey1
++  5   5   5		gray2
++  5   5   5		grey2
++  8   8   8		gray3
++  8   8   8		grey3
++ 10  10  10		gray4
++ 10  10  10		grey4
++ 13  13  13		gray5
++ 13  13  13		grey5
++ 15  15  15		gray6
++ 15  15  15		grey6
++ 18  18  18		gray7
++ 18  18  18		grey7
++ 20  20  20		gray8
++ 20  20  20		grey8
++ 23  23  23		gray9
++ 23  23  23		grey9
++ 26  26  26		gray10
++ 26  26  26		grey10
++ 28  28  28		gray11
++ 28  28  28		grey11
++ 31  31  31		gray12
++ 31  31  31		grey12
++ 33  33  33		gray13
++ 33  33  33		grey13
++ 36  36  36		gray14
++ 36  36  36		grey14
++ 38  38  38		gray15
++ 38  38  38		grey15
++ 41  41  41		gray16
++ 41  41  41		grey16
++ 43  43  43		gray17
++ 43  43  43		grey17
++ 46  46  46		gray18
++ 46  46  46		grey18
++ 48  48  48		gray19
++ 48  48  48		grey19
++ 51  51  51		gray20
++ 51  51  51		grey20
++ 54  54  54		gray21
++ 54  54  54		grey21
++ 56  56  56		gray22
++ 56  56  56		grey22
++ 59  59  59		gray23
++ 59  59  59		grey23
++ 61  61  61		gray24
++ 61  61  61		grey24
++ 64  64  64		gray25
++ 64  64  64		grey25
++ 66  66  66		gray26
++ 66  66  66		grey26
++ 69  69  69		gray27
++ 69  69  69		grey27
++ 71  71  71		gray28
++ 71  71  71		grey28
++ 74  74  74		gray29
++ 74  74  74		grey29
++ 77  77  77		gray30
++ 77  77  77		grey30
++ 79  79  79		gray31
++ 79  79  79		grey31
++ 82  82  82		gray32
++ 82  82  82		grey32
++ 84  84  84		gray33
++ 84  84  84		grey33
++ 87  87  87		gray34
++ 87  87  87		grey34
++ 89  89  89		gray35
++ 89  89  89		grey35
++ 92  92  92		gray36
++ 92  92  92		grey36
++ 94  94  94		gray37
++ 94  94  94		grey37
++ 97  97  97		gray38
++ 97  97  97		grey38
++ 99  99  99		gray39
++ 99  99  99		grey39
++102 102 102		gray40
++102 102 102		grey40
++105 105 105		gray41
++105 105 105		grey41
++107 107 107		gray42
++107 107 107		grey42
++110 110 110		gray43
++110 110 110		grey43
++112 112 112		gray44
++112 112 112		grey44
++115 115 115		gray45
++115 115 115		grey45
++117 117 117		gray46
++117 117 117		grey46
++120 120 120		gray47
++120 120 120		grey47
++122 122 122		gray48
++122 122 122		grey48
++125 125 125		gray49
++125 125 125		grey49
++127 127 127		gray50
++127 127 127		grey50
++130 130 130		gray51
++130 130 130		grey51
++133 133 133		gray52
++133 133 133		grey52
++135 135 135		gray53
++135 135 135		grey53
++138 138 138		gray54
++138 138 138		grey54
++140 140 140		gray55
++140 140 140		grey55
++143 143 143		gray56
++143 143 143		grey56
++145 145 145		gray57
++145 145 145		grey57
++148 148 148		gray58
++148 148 148		grey58
++150 150 150		gray59
++150 150 150		grey59
++153 153 153		gray60
++153 153 153		grey60
++156 156 156		gray61
++156 156 156		grey61
++158 158 158		gray62
++158 158 158		grey62
++161 161 161		gray63
++161 161 161		grey63
++163 163 163		gray64
++163 163 163		grey64
++166 166 166		gray65
++166 166 166		grey65
++168 168 168		gray66
++168 168 168		grey66
++171 171 171		gray67
++171 171 171		grey67
++173 173 173		gray68
++173 173 173		grey68
++176 176 176		gray69
++176 176 176		grey69
++179 179 179		gray70
++179 179 179		grey70
++181 181 181		gray71
++181 181 181		grey71
++184 184 184		gray72
++184 184 184		grey72
++186 186 186		gray73
++186 186 186		grey73
++189 189 189		gray74
++189 189 189		grey74
++191 191 191		gray75
++191 191 191		grey75
++194 194 194		gray76
++194 194 194		grey76
++196 196 196		gray77
++196 196 196		grey77
++199 199 199		gray78
++199 199 199		grey78
++201 201 201		gray79
++201 201 201		grey79
++204 204 204		gray80
++204 204 204		grey80
++207 207 207		gray81
++207 207 207		grey81
++209 209 209		gray82
++209 209 209		grey82
++212 212 212		gray83
++212 212 212		grey83
++214 214 214		gray84
++214 214 214		grey84
++217 217 217		gray85
++217 217 217		grey85
++219 219 219		gray86
++219 219 219		grey86
++222 222 222		gray87
++222 222 222		grey87
++224 224 224		gray88
++224 224 224		grey88
++227 227 227		gray89
++227 227 227		grey89
++229 229 229		gray90
++229 229 229		grey90
++232 232 232		gray91
++232 232 232		grey91
++235 235 235		gray92
++235 235 235		grey92
++237 237 237		gray93
++237 237 237		grey93
++240 240 240		gray94
++240 240 240		grey94
++242 242 242		gray95
++242 242 242		grey95
++245 245 245		gray96
++245 245 245		grey96
++247 247 247		gray97
++247 247 247		grey97
++250 250 250		gray98
++250 250 250		grey98
++252 252 252		gray99
++252 252 252		grey99
++255 255 255		gray100
++255 255 255		grey100
++169 169 169		dark grey
++169 169 169		DarkGrey
++169 169 169		dark gray
++169 169 169		DarkGray
++0     0 139		dark blue
++0     0 139		DarkBlue
++0   139 139		dark cyan
++0   139 139		DarkCyan
++139   0 139		dark magenta
++139   0 139		DarkMagenta
++139   0   0		dark red
++139   0   0		DarkRed
++144 238 144		light green
++144 238 144		LightGreen
+diff -Nur runtime/scripts.vim runtime/scripts.vim
+--- runtime/scripts.vim	2011-04-03 13:03:28.120494351 -0700
++++ runtime/scripts.vim	2011-04-03 09:27:21.702711356 -0700
+@@ -1,7 +1,7 @@
+ " Vim support file to detect file types in scripts
+ "
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last change:	2008 Aug 09
++" Last change:	2009 Dec 24
+ 
+ " This file is called by an autocommand for every file that has just been
+ " loaded into a buffer.  It checks if the type of file can be recognized by
+@@ -318,30 +318,31 @@
+     set ft=scheme
+ 
+   " Git output
+-  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}$\|^tag \S\+$'
++  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$'
+     set ft=git
+ 
+   " CVS diff
+   else
+-    let lnum = 1
+-    while getline(lnum) =~ "^? " && lnum < line("$")
+-      let lnum = lnum + 1
++    let s:lnum = 1
++    while getline(s:lnum) =~ "^? " && s:lnum < line("$")
++      let s:lnum += 1
+     endwhile
+-    if getline(lnum) =~ '^Index:\s\+\f\+$'
++    if getline(s:lnum) =~ '^Index:\s\+\f\+$'
+       set ft=diff
+ 
+       " locale input files: Formal Definitions of Cultural Conventions
+       " filename must be like en_US, fr_FR@euro or en_US.UTF-8
+     elseif expand("%") =~ '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_'
+-      let lnum = 1
+-      while lnum < 100 && lnum < line("$")
+-	if getline(lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
++      let s:lnum = 1
++      while s:lnum < 100 && s:lnum < line("$")
++	if getline(s:lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
+ 	  setf fdcc
+ 	  break
+ 	endif
+-	let lnum = lnum + 1
++	let s:lnum += 1
+       endwhile
+     endif
++    unlet s:lnum
+ 
+   endif
+ 
+diff -Nur runtime/scripts.vim.~1~ runtime/scripts.vim.~1~
+diff -Nur runtime/spell/README.txt runtime/spell/README.txt
+--- runtime/spell/README.txt	2005-09-30 05:15:16.000000000 -0700
++++ runtime/spell/README.txt	2011-01-18 10:40:56.073890634 -0800
+@@ -22,6 +22,11 @@
+ the Aap program (www.a-a-p.org).  It's simple to install, it only requires
+ Python.
+ 
++Before generating spell files, verify your system has the required locale
++support.  Source the check_locales.vim script to find out.  If something is
++missing, see LOCALE below.
++
++
+ You can also do it manually:
+ 1. Fetch the right spell file from:
+    http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+@@ -72,7 +77,7 @@
+    change too much, the OpenOffice people are not stupid.  However, you may
+    want to remove obvious mistakes.  And remove single-letter words that
+    aren't really words, they mess up the suggestions (English has this
+-   problem).  You can use the "fixdup" Vim script to find duplicate words.
++   problem).  You can use the "fixdup.vim" Vim script to find duplicate words.
+ 
+ 3. Make the diff file.  "aap diff" will do this for you.  If a diff would be
+    too big you might consider writing a Vim script to do systematic changes.
+@@ -88,3 +93,20 @@
+    files and finally move the .new.dic to .orig.dic and .new.aff to .orig.aff.
+ 
+ 5. Repeat step 4. regularly.
++
++
++LOCALE
++
++For proper spell file generation the required locale must be installed.
++Otherwise Vim doesn't know what are letters and upper-lower case differences.
++Modern systems use UTF-8, but we also generate spell files for 8-bit locales
++for users with older systems.
++
++On Ubuntu the default is to only support locales for your own language.  To
++add others you need to do this:
++	sudo vim /var/lib/locales/supported.d/local
++	    Add needed lines from /usr/share/i18n/SUPPORTED
++	sudo dpkg-reconfigure locales
++
++When using the check_locales.vim script, you need to exit Vim and restart it
++to pickup the newly installed locales.
+diff -Nur runtime/spell/bg/main.aap runtime/spell/bg/main.aap
+--- runtime/spell/bg/main.aap	2005-08-28 12:33:22.000000000 -0700
++++ runtime/spell/bg/main.aap	2011-01-18 10:40:56.077359479 -0800
+@@ -34,9 +34,9 @@
+         :fetch bg_BG.zip
+         :sys $UNZIP bg_BG.zip
+         :delete bg_BG.zip
+-        :sys $VIM bg_BG.aff -e -c "set ff=unix" -c update -c q
+-        :sys $VIM bg_BG.dic -e -c "set ff=unix" -c update -c q
+-        :sys $VIM README_bg_BG.txt -e -c "set ff=unix" -c update -c q
++        :sys $VIM bg_BG.aff -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM bg_BG.dic -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM README_bg_BG.txt -u NONE -e -c "set ff=unix" -c update -c q
+         @if not os.path.exists('bg_BG.orig.aff'):
+             :copy bg_BG.aff bg_BG.orig.aff
+         @if not os.path.exists('bg_BG.orig.dic'):
+diff -Nur runtime/spell/br/br_FR.diff runtime/spell/br/br_FR.diff
+--- runtime/spell/br/br_FR.diff	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/br/br_FR.diff	2011-01-18 10:40:56.077696201 -0800
+@@ -0,0 +1,13 @@
++*** br_FR.orig.aff	2010-04-14 18:44:36.365731271 +0200
++--- br_FR.aff	2010-04-14 18:43:31.069137439 +0200
++***************
++*** 9,14 ****
++--- 9,16 ----
++  SET UTF-8
++  TRY esiaùnñrtolcdugmphbyfvkwzESIAÙNÑRTOLCDUGMPHBYFVKWZ'
++  
+++ MIDWORD '
+++ 
++  PFX m Y 1
++  PFX m   0          m'         [aehiouy]
++  
+diff -Nur runtime/spell/br/main.aap runtime/spell/br/main.aap
+--- runtime/spell/br/main.aap	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/br/main.aap	2011-01-18 10:40:56.077997092 -0800
+@@ -0,0 +1,86 @@
++# Aap recipe for Breton Vim spell files.
++
++# Use a freshly compiled Vim if it exists.
++@if os.path.exists('../../../src/vim'):
++    VIM = ../../../src/vim
++@else:
++    :progsearch VIM vim
++
++SPELLDIR = ..
++FILES    = br_FR.aff br_FR.dic
++
++all: $SPELLDIR/br.latin1.spl $SPELLDIR/br.utf-8.spl ../README_br.txt
++
++$SPELLDIR/br.latin1.spl : $FILES
++        :sys $VIM -u NONE -e -c "set enc=latin1"
++                -c "mkspell! $SPELLDIR/br br_FR" -c q
++
++$SPELLDIR/br.utf-8.spl : $FILES
++        :sys $VIM -u NONE -e -c "set enc=UTF-8"
++                -c "mkspell! $SPELLDIR/br br_FR" -c q
++
++../README_br.txt : package-description.txt
++        :copy $source $target
++
++#
++# Fetching the files from OpenOffice.org.
++#
++OODIR = http://extensions.services.openoffice.org/e-files/2207/3
++:attr {fetch = $OODIR/%file%} dict-br_0.3.oxt
++
++# The files don't depend on the .zip file so that we can delete it.
++# Only download the zip file if the targets don't exist.
++br_FR.aff br_FR.dic: {buildcheck=}
++        :assertpkg unzip patch
++        :fetch dict-br_0.3.oxt
++        :sys $UNZIP dict-br_0.3.oxt
++        :delete dict-br_0.3.oxt
++        :copy dictionaries/br_FR.aff br_FR.aff
++        :copy dictionaries/br_FR.dic br_FR.dic
++        # The br_FR.aff file contains a BOM, remove it.
++        :sys $VIM -u NONE -e -c "set enc=utf-8"
++                    -c "e br_FR.aff"
++                    -c "set nobomb ff=unix"
++                    -c "update" -c q
++        :sys $VIM -u NONE -e -c "set enc=utf-8"
++                    -c "e br_FR.dic"
++                    -c "set nobomb ff=unix"
++                    -c "update" -c q
++        @if not os.path.exists('br_FR.orig.aff'):
++            :copy br_FR.aff br_FR.orig.aff
++        @if os.path.exists('br_FR.diff'):
++            :sys patch <br_FR.diff
++
++# Generate diff files, so that others can get the OpenOffice files and apply
++# the diffs to get the Vim versions.
++
++diff:
++        :assertpkg diff
++        :sys {force} diff -a -C 1 dictionaries/br_FR.aff br_FR.aff >br_FR.diff
++        :sys {force} diff -a -C 1 dictionaries/br_FR.dic br_FR.dic >>br_FR.diff
++
++
++# Check for updated OpenOffice spell files.  When there are changes the
++# ".new.aff" and ".new.dic" files are left behind for manual inspection.
++
++check:
++        :assertpkg unzip diff
++        :fetch dict-br_0.3.oxt
++        :mkdir tmp
++        :cd tmp
++        @try:
++            @import stat
++            :sys $UNZIP ../dict-br_0.3.oxt
++            :sys {force} diff ../dictionaries/br_FR.aff br_FR.aff >d
++            @if os.stat('d')[stat.ST_SIZE] > 0:
++                :copy br_FR.aff ../br_FR.new.aff
++            :sys {force} diff ../dictionaries/br_FR.dic br_FR.dic >d
++            @if os.stat('d')[stat.ST_SIZE] > 0:
++                :copy br_FR.dic ../br_FR.new.dic
++        @finally:
++            :cd ..
++            :delete {r}{f}{q} tmp
++            :delete dict-br_0.3.oxt
++
++
++# vim: set sts=4 sw=4 :
+diff -Nur runtime/spell/ca/main.aap runtime/spell/ca/main.aap
+--- runtime/spell/ca/main.aap	2005-08-16 13:40:33.000000000 -0700
++++ runtime/spell/ca/main.aap	2011-01-18 10:40:56.078841769 -0800
+@@ -36,8 +36,8 @@
+         :fetch ca_ES.zip
+         :sys $UNZIP ca_ES.zip
+         :delete ca_ES.zip
+-        :sys $VIM ca_ES.aff -c "set ff=unix" -c "update" -c q
+-        :sys $VIM ca_ES.dic -c "set ff=unix" -c "update" -c q
++        :sys $VIM ca_ES.aff -u NONE -c "set ff=unix" -c "update" -c q
++        :sys $VIM ca_ES.dic -u NONE -c "set ff=unix" -c "update" -c q
+         @if not os.path.exists('ca_ES.orig.aff'):
+             :copy ca_ES.aff ca_ES.orig.aff
+         @if not os.path.exists('ca_ES.orig.dic'):
+diff -Nur runtime/spell/check/check_aa.aff runtime/spell/check/check_aa.aff
+--- runtime/spell/check/check_aa.aff	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/check/check_aa.aff	2011-01-18 10:40:56.079377827 -0800
+@@ -0,0 +1,50 @@
++SET ISO8859-1
++TRY esianrtolcdugmphbyfvkwjkqxz-������������'ESIANRTOLCDUGMPHBYFVKWJKQXZ
++
++FOL  ��������������������������������
++LOW  ��������������������������������
++UPP  ��������������������������������
++
++SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ�������������������������������������������������������������޿
++SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++MIDWORD	'-
++
++PFXPOSTPONE
++
++COMPOUNDFLAG x
++COMPOUNDMIN 5
++
++KEEPCASE =
++RARE ?
++BAD !
++
++MAP 9
++MAP a������
++MAP e����
++MAP i����
++MAP o�����
++MAP u����
++MAP n�
++MAP c�
++MAP y��
++MAP s�
++
++PFX A Y 1
++PFX A 0 aan .
++
++PFX B N 1
++PFX B 0 be .
++
++PFX C Y 1
++PFX C a in aa
++
++SFX J N 1
++SFX J 0 tje [aeiou][aeiou]
++
++SFX Z N 1
++SFX Z af ven aaf
++
++REP 2
++REP g ch
++REP cht gd
+diff -Nur runtime/spell/check/check_aa.dic runtime/spell/check/check_aa.dic
+--- runtime/spell/check/check_aa.dic	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/check/check_aa.dic	2011-01-18 10:40:56.079648783 -0800
+@@ -0,0 +1,12 @@
++1234
++#Some Comment that isn't supposed to matter
++/Another Comment that isn't supposed to matter
++'s-Graveland
++A4
++AagJe
++Aalburg/xZBCJZ
++Aals'meer/x
++Aal-ten/x
++Aalburgers/x
++Aalsmeer/x
++Aalten/x
+diff -Nur runtime/spell/check/check_bb.aff runtime/spell/check/check_bb.aff
+--- runtime/spell/check/check_bb.aff	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/check/check_bb.aff	2011-01-18 10:40:56.079928005 -0800
+@@ -0,0 +1,50 @@
++SET ISO8859-1
++TRY esianrtolcdugmphbyfvkwjkqxz-������������'ESIANRTOLCDUGMPHBYFVKWJKQXZ
++
++FOL  ��������������������������������
++LOW  ��������������������������������
++UPP  ��������������������������������
++
++SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ�������������������������������������������������������������޿
++SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++
++MIDWORD	'-
++
++PFXPOSTPONE
++
++COMPOUNDFLAG x
++COMPOUNDMIN 5
++
++KEEPCASE =
++RARE ?
++BAD !
++
++MAP 9
++MAP a������
++MAP e����
++MAP i����
++MAP o�����
++MAP u����
++MAP n�
++MAP c�
++MAP y��
++MAP s�
++
++PFX A Y 1
++PFX A 0 aan .
++
++PFX B N 1
++PFX B 0 be .
++
++PFX C Y 1
++PFX C a in aa
++
++SFX J N 1
++SFX J 0 tje [aeiou][aeiou]
++
++SFX Z N 1
++SFX Z af ven aaf
++
++REP 2
++REP g ch
++REP cht gd
+diff -Nur runtime/spell/check/check_bb.dic runtime/spell/check/check_bb.dic
+--- runtime/spell/check/check_bb.dic	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/check/check_bb.dic	2011-01-18 10:40:56.080375459 -0800
+@@ -0,0 +1,12 @@
++1234
++#Some Comment that isn't supposed to matter
++/Another Comment that isn't supposed to matter
++'s-Graveland
++A4
++AagJe
++Aalburg/xZBCJZ
++Aals'meer/x
++Aal-ten/x
++foobar/=
++rare/?
++Emacs/!
+diff -Nur runtime/spell/check/main.aap runtime/spell/check/main.aap
+--- runtime/spell/check/main.aap	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/check/main.aap	2011-01-18 10:40:56.080648912 -0800
+@@ -0,0 +1,15 @@
++# Aap recipe for a dummy spell file.
++# This is used to check if the .spl file format changes.
++
++# Use a freshly compiled Vim if it exists.
++@if os.path.exists('../../../src/vim'):
++    VIM = ../../../src/vim
++@else:
++    :progsearch VIM vim
++
++all: check.latin1.spl
++
++check.latin1.spl : $VIM check_aa.aff check_aa.dic check_bb.aff check_bb.dic
++        :sys $VIM -u NONE -e -c "mkspell! check check_aa check_bb" -c q
++
++# vim: set sts=4 sw=4 :
+diff -Nur runtime/spell/check_locales.vim runtime/spell/check_locales.vim
+--- runtime/spell/check_locales.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/check_locales.vim	2011-01-18 10:40:56.081095717 -0800
+@@ -0,0 +1,21 @@
++" Script to check if all the locales used in spell files are available.
++
++grep /sys env LANG/ */main.aap
++let not_supported = []
++for item in getqflist()
++  let lang = substitute(item.text, '.*LANG=\(\S\+\).*', '\1', '')
++  try
++    exe 'lang ' . lang
++  catch /E197/
++    call add(not_supported, lang)
++  endtry
++endfor
++
++if len(not_supported) > 0
++  echo "Unsupported languages:"
++  for l in not_supported
++    echo l
++  endfor
++else
++  echo "Everything appears to be OK"
++endif
+diff -Nur runtime/spell/cy/main.aap runtime/spell/cy/main.aap
+--- runtime/spell/cy/main.aap	2005-08-31 12:44:39.000000000 -0700
++++ runtime/spell/cy/main.aap	2011-01-18 10:40:56.083405697 -0800
+@@ -36,9 +36,9 @@
+         :fetch cy_GB.zip
+         :sys $UNZIP cy_GB.zip
+         :delete cy_GB.zip
+-        :sys $VIM cy_GB.aff -e -c "set ff=unix" -c update -c q
+-        :sys $VIM cy_GB.dic -e -c "set ff=unix" -c update -c q
+-        :sys $VIM README_cy_GB.txt -e -c "set ff=unix" -c update -c q
++        :sys $VIM cy_GB.aff -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM cy_GB.dic -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM README_cy_GB.txt -u NONE -e -c "set ff=unix" -c update -c q
+         @if not os.path.exists('cy_GB.orig.aff'):
+             :copy cy_GB.aff cy_GB.orig.aff
+         @if not os.path.exists('cy_GB.orig.dic'):
+diff -Nur runtime/spell/de/main.aap runtime/spell/de/main.aap
+--- runtime/spell/de/main.aap	2005-11-26 10:59:30.000000000 -0800
++++ runtime/spell/de/main.aap	2011-01-18 10:40:56.087417894 -0800
+@@ -33,7 +33,7 @@
+ all: $SPELLDIR/de.latin1.spl $SPELLDIR/de.utf-8.spl ../README_de.txt
+ 
+ $SPELLDIR/de.latin1.spl : $FILES
+-        :sys env LANG=de_DE.ISO8859-1
++        :sys env LANG=de_DE.ISO-8859-1
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q
+ 
+ $SPELLDIR/de.utf-8.spl : $FILES
+@@ -133,7 +133,7 @@
+ 
+         :print >>de_AT.dic
+         # delete the first line, the word count
+-        :sys $VIM de_DE.dic -e -c 1delete -c wq
++        :sys $VIM -u NONE de_DE.dic -e -c 1delete -c wq
+         :cat de_DE.dic >>de_AT.dic
+         :delete de_DE.dic
+         :move de_DE.aff de_AT.aff
+@@ -195,7 +195,7 @@
+             :sys $UNZIP ../$ZIPFILE_AT
+             :print >>de_AT.dic
+             # delete the first line, the word count
+-            :sys ../$VIM de_DE.dic -e -c 1delete -c wq
++            :sys ../$VIM -u NONE de_DE.dic -e -c 1delete -c wq
+             :cat de_DE.dic >>de_AT.dic
+             :delete de_DE.dic
+             :move de_DE.aff de_AT.aff
+diff -Nur runtime/spell/eo/main.aap runtime/spell/eo/main.aap
+--- runtime/spell/eo/main.aap	2005-08-16 13:41:09.000000000 -0700
++++ runtime/spell/eo/main.aap	2011-01-18 10:40:56.192257867 -0800
+@@ -22,7 +22,7 @@
+ ../README_eo.txt : README_eo_l3.txt
+         :copy $source $target
+         # fix missing newline
+-        :sys $VIM $target -e -c "set ff=unix" -c wq
++        :sys $VIM -u NONE -e -c "set ff=unix" -c wq $target
+ 
+ #
+ # Fetching the files from OpenOffice.org.
+diff -Nur runtime/spell/es/main.aap runtime/spell/es/main.aap
+--- runtime/spell/es/main.aap	2006-04-21 02:08:27.000000000 -0700
++++ runtime/spell/es/main.aap	2011-01-18 10:40:56.195071533 -0800
+@@ -63,7 +63,7 @@
+         :print No copyright information for es_MX wordlist >! README_es_MX.txt
+         :sys $UNZIP $ZIPFILE_MX
+         :delete $ZIPFILE_MX
+-        :sys $VIM -e -c "set ff=unix | wq" es_MX.dic
++        :sys $VIM -u NONE -e -c "set ff=unix | wq" es_MX.dic
+         @if not os.path.exists('es_MX.orig.aff'):
+             :copy es_MX.aff es_MX.orig.aff
+         @if not os.path.exists('es_MX.orig.dic'):
+diff -Nur runtime/spell/fixdup runtime/spell/fixdup
+--- runtime/spell/fixdup	2005-08-20 03:21:16.000000000 -0700
++++ runtime/spell/fixdup	1969-12-31 16:00:00.000000000 -0800
+@@ -1,27 +0,0 @@
+-" Vim script to fix duplicate words in a .dic file  vim: set ft=vim:
+-"
+-" Usage: Edit the .dic file and source this script.
+-
+-let deleted = 0
+-
+-" Start below the word count.
+-let lnum = 2
+-while lnum <= line('$')
+-  let word = getline(lnum)
+-  if word !~ '/'
+-    if search('^' . word . '/', 'w') != 0
+-      let deleted += 1
+-      exe lnum . "d"
+-      continue		" don't increment lnum, it's already at the next word
+-    endif
+-  endif
+-  let lnum += 1
+-endwhile
+-
+-if deleted == 0
+-  echomsg "No duplicate words found"
+-elseif deleted == 1
+-  echomsg "Deleted 1 duplicate word"
+-else
+-  echomsg printf("Deleted %d duplicate words", deleted)
+-endif
+diff -Nur runtime/spell/fixdup.vim runtime/spell/fixdup.vim
+--- runtime/spell/fixdup.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/fixdup.vim	2011-01-18 10:40:56.195724355 -0800
+@@ -0,0 +1,27 @@
++" Vim script to fix duplicate words in a .dic file  vim: set ft=vim:
++"
++" Usage: Edit the .dic file and source this script.
++
++let deleted = 0
++
++" Start below the word count.
++let lnum = 2
++while lnum <= line('$')
++  let word = getline(lnum)
++  if word !~ '/'
++    if search('^' . word . '/', 'w') != 0
++      let deleted += 1
++      exe lnum . "d"
++      continue		" don't increment lnum, it's already at the next word
++    endif
++  endif
++  let lnum += 1
++endwhile
++
++if deleted == 0
++  echomsg "No duplicate words found"
++elseif deleted == 1
++  echomsg "Deleted 1 duplicate word"
++else
++  echomsg printf("Deleted %d duplicate words", deleted)
++endif
+diff -Nur runtime/spell/fr/main.aap runtime/spell/fr/main.aap
+--- runtime/spell/fr/main.aap	2008-02-17 04:52:21.000000000 -0800
++++ runtime/spell/fr/main.aap	2011-01-18 10:40:56.198134134 -0800
+@@ -25,7 +25,7 @@
+ $SPELLDIR/fr.latin1.spl : $FILES
+         :copy {force} fr_FR_latin1.aff fr_FR.aff
+         :copy {force} fr_FR_latin1.dic fr_FR.dic
+-        :sys env LANG=fr_FR.ISO8859-15
++        :sys env LANG=fr_FR.ISO-8859-15@euro
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/fr fr_FR" -c q
+ 
+ $SPELLDIR/fr.utf-8.spl : $FILES
+diff -Nur runtime/spell/gd/main.aap runtime/spell/gd/main.aap
+--- runtime/spell/gd/main.aap	2005-12-22 03:18:13.000000000 -0800
++++ runtime/spell/gd/main.aap	2011-01-18 10:40:56.201401158 -0800
+@@ -12,7 +12,7 @@
+ all: $SPELLDIR/gd.latin1.spl $SPELLDIR/gd.utf-8.spl ../README_gd.txt
+ 
+ $SPELLDIR/gd.latin1.spl : $FILES
+-        :sys env LANG=gd_GB.ISO8859-1
++        :sys env LANG=gd_GB.ISO8859-15
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/gd gd_GB" -c q
+ 
+ $SPELLDIR/gd.utf-8.spl : $FILES
+diff -Nur runtime/spell/ku/main.aap runtime/spell/ku/main.aap
+--- runtime/spell/ku/main.aap	2005-08-31 13:19:39.000000000 -0700
++++ runtime/spell/ku/main.aap	2011-01-18 10:40:56.207621032 -0800
+@@ -36,9 +36,9 @@
+         :fetch ku_TR.zip
+         :sys $UNZIP ku_TR.zip
+         :delete ku_TR.zip
+-        :sys $VIM ku_TR.aff -e -c "set ff=unix" -c update -c q
+-        :sys $VIM ku_TR.dic -e -c "set ff=unix" -c update -c q
+-        :sys $VIM README_ku_TR.txt -e -c "set ff=unix" -c update -c q
++        :sys $VIM ku_TR.aff -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM ku_TR.dic -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM README_ku_TR.txt -u NONE -e -c "set ff=unix" -c update -c q
+         @if not os.path.exists('ku_TR.orig.aff'):
+             :copy ku_TR.aff ku_TR.orig.aff
+         @if not os.path.exists('ku_TR.orig.dic'):
+diff -Nur runtime/spell/la/main.aap runtime/spell/la/main.aap
+--- runtime/spell/la/main.aap	2005-08-31 08:09:47.000000000 -0700
++++ runtime/spell/la/main.aap	2011-01-18 10:40:56.208469355 -0800
+@@ -11,8 +11,11 @@
+ 
+ all: $SPELLDIR/la.latin1.spl $SPELLDIR/la.utf-8.spl ../README_la.txt
+ 
++# NOTE: the la_LN.ISO-8859-1 locale is not available on Ubuntu.
++# Use the English one instead.
++
+ $SPELLDIR/la.latin1.spl : $FILES
+-        :sys env LANG=la_LN.ISO8859-1
++        :sys env LANG=en_US.ISO-8859-1
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/la la" -c q
+ 
+ $SPELLDIR/la.utf-8.spl : $FILES
+diff -Nur runtime/spell/lv/main.aap runtime/spell/lv/main.aap
+--- runtime/spell/lv/main.aap	2005-09-01 05:40:24.000000000 -0700
++++ runtime/spell/lv/main.aap	2011-01-18 10:40:56.210222725 -0800
+@@ -37,9 +37,9 @@
+         :sys $UNZIP lv_LV.zip
+         :delete lv_LV.zip
+         :delete changelog.txt gpl.txt lin-lv_LV_add.sh win-lv_LV_add.bat
+-        :sys $VIM lv_LV.aff -e -N -c "%s/\r//" -c update -c q
+-        :sys $VIM lv_LV.dic -e -N -c "%s/\r//" -c update -c q
+-        :sys $VIM README_lv_LV.txt -e -c "set ff=unix" -c update -c q
++        :sys $VIM lv_LV.aff -u NONE -e -N -c "%s/\r//" -c update -c q
++        :sys $VIM lv_LV.dic -u NONE -e -N -c "%s/\r//" -c update -c q
++        :sys $VIM README_lv_LV.txt -u NONE -e -c "set ff=unix" -c update -c q
+         @if not os.path.exists('lv_LV.orig.aff'):
+             :copy lv_LV.aff lv_LV.orig.aff
+         @if not os.path.exists('lv_LV.orig.dic'):
+diff -Nur runtime/spell/main.aap runtime/spell/main.aap
+--- runtime/spell/main.aap	2007-09-30 08:22:19.000000000 -0700
++++ runtime/spell/main.aap	2011-01-18 10:40:56.210824890 -0800
+@@ -5,8 +5,8 @@
+ # aap diff   create all the diff files
+ 
+ # "hu" is at the end, because it takes a very long time.
+-LANG = af am bg ca cs cy da de el en eo es fr fo ga gd gl he hr id it ku
+-       la lt lv mg mi ms nb nl nn ny pl pt ro ru rw sk sl sv sw
++LANG = af am bg br ca cs cy da de el en eo es fr fo ga gd gl he hr id it 
++       ku la lt lv mg mi ms nb nl nn ny pl pt ro ru rw sk sl sv sw
+        tet th tl tn uk yi zu hu
+ 
+ # TODO:
+diff -Nur runtime/spell/ms/main.aap runtime/spell/ms/main.aap
+--- runtime/spell/ms/main.aap	2005-08-31 09:13:53.000000000 -0700
++++ runtime/spell/ms/main.aap	2011-01-18 10:40:56.212900338 -0800
+@@ -36,8 +36,8 @@
+         :fetch ms_MY.zip
+         :sys $UNZIP ms_MY.zip
+         :delete ms_MY.zip
+-        :sys $VIM ms_MY.aff -e -c "set ff=unix" -c update -c q
+-        :sys $VIM ms_MY.dic -e -c "set ff=unix" -c update -c q
++        :sys $VIM ms_MY.aff -u NONE -e -c "set ff=unix" -c update -c q
++        :sys $VIM ms_MY.dic -u NONE -e -c "set ff=unix" -c update -c q
+         @if not os.path.exists('ms_MY.orig.aff'):
+             :copy ms_MY.aff ms_MY.orig.aff
+         @if not os.path.exists('ms_MY.orig.dic'):
+diff -Nur runtime/spell/nb/main.aap runtime/spell/nb/main.aap
+--- runtime/spell/nb/main.aap	2005-08-31 09:29:36.000000000 -0700
++++ runtime/spell/nb/main.aap	2011-01-18 10:40:56.213594485 -0800
+@@ -12,11 +12,11 @@
+ all: $SPELLDIR/nb.latin1.spl $SPELLDIR/nb.utf-8.spl ../README_nb.txt
+ 
+ $SPELLDIR/nb.latin1.spl : $FILES
+-        :sys env LANG=no_NO.ISO8859-1
++        :sys env LANG=nb_NO.ISO-8859-1
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/nb nb_NO" -c q
+ 
+ $SPELLDIR/nb.utf-8.spl : $FILES
+-        :sys env LANG=no_NO.UTF-8
++        :sys env LANG=nb_NO.UTF-8
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/nb nb_NO" -c q
+ 
+ ../README_nb.txt : README_nb_NO.txt
+diff -Nur runtime/spell/nn/main.aap runtime/spell/nn/main.aap
+--- runtime/spell/nn/main.aap	2005-08-31 09:39:49.000000000 -0700
++++ runtime/spell/nn/main.aap	2011-01-18 10:40:56.215332690 -0800
+@@ -12,11 +12,11 @@
+ all: $SPELLDIR/nn.latin1.spl $SPELLDIR/nn.utf-8.spl ../README_nn.txt
+ 
+ $SPELLDIR/nn.latin1.spl : $FILES
+-        :sys env LANG=no_NO.ISO8859-1
++        :sys env LANG=nb_NO.ISO-8859-1
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/nn nn_NO" -c q
+ 
+ $SPELLDIR/nn.utf-8.spl : $FILES
+-        :sys env LANG=no_NO.UTF-8
++        :sys env LANG=nb_NO.UTF-8
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/nn nn_NO" -c q
+ 
+ ../README_nn.txt : README_nn_NO.txt
+diff -Nur runtime/spell/pt/main.aap runtime/spell/pt/main.aap
+--- runtime/spell/pt/main.aap	2008-07-24 07:46:57.000000000 -0700
++++ runtime/spell/pt/main.aap	2011-04-03 09:27:21.747338718 -0700
+@@ -29,7 +29,7 @@
+         ../README_pt.txt
+ 
+ $SPELLDIR/pt.latin1.spl : $FILES
+-        :sys env LANG=pt_PT.ISO8859-1 LC_ALL=pt_PT.ISO8859-1
++        :sys env LANG=pt_PT.ISO-8859-1 LC_ALL=pt_PT.ISO-8859-1
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/pt pt_PT pt_BR" -c q
+ 
+ $SPELLDIR/pt.utf-8.spl : $FILES
+@@ -67,13 +67,13 @@
+         :fetch $BR_FNAME
+         :sys $UNZIP $BR_FNAME
+         :delete $BR_FNAME
+-        :sys $VIM README_pt_BR.TXT -e -c "set ff=unix" -c update -c q
++        :sys $VIM README_pt_BR.TXT -u NONE -e -c "set ff=unix" -c update -c q
+         :move README_pt_BR.TXT README_pt_BR.txt
+ 
+ # Vim seems to ignore the dots from the word list.
+ # Removing words with dot to avoid misbehaviour.
+-        :sys $VIM pt_BR.dic -e -c "set ff=unix" -c "/\./d" -c update -c q
+-        :sys $VIM pt_BR.aff -e -c "set ff=unix" -c update -c q
++        :sys $VIM pt_BR.dic -u NONE -e -c "set ff=unix" -c "/\./d" -c update -c q
++        :sys $VIM pt_BR.aff -u NONE -e -c "set ff=unix" -c update -c q
+         @if not os.path.exists('pt_BR.orig.aff'):
+             :copy pt_BR.aff pt_BR.orig.aff
+         @if not os.path.exists('pt_BR.orig.dic'):
+diff -Nur runtime/spell/sv/main.aap runtime/spell/sv/main.aap
+--- runtime/spell/sv/main.aap	2005-10-15 10:29:15.000000000 -0700
++++ runtime/spell/sv/main.aap	2011-04-03 09:27:21.757559524 -0700
+@@ -1,6 +1,6 @@
+ # Aap recipe for Swedish Vim spell files.
+ #
+-# Maintainer: Stefan Karlsson <[email protected]>
++# Maintainer: Mattias Winther <[email protected]>
+ 
+ # Use a freshly compiled Vim if it exists.
+ @if os.path.exists('../../../src/vim'):
+@@ -14,30 +14,33 @@
+ all: $SPELLDIR/sv.latin1.spl $SPELLDIR/sv.utf-8.spl ../README_sv.txt
+ 
+ $SPELLDIR/sv.latin1.spl : $FILES
+-        :sys env LANG=sv_SE.ISO8859-1
++        :sys env LANG=sv_SE.ISO-8859-1
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/sv sv_SE" -c q
+ 
+ $SPELLDIR/sv.utf-8.spl : $FILES
+         :sys env LANG=sv_SE.UTF-8
+ 		$VIM -u NONE -e -c "mkspell! $SPELLDIR/sv sv_SE" -c q
+ 
+-../README_sv.txt : README_sv_SE.txt
++../README_sv.txt : LICENSE_sv_SE.txt
+         :copy $source $target
+ 
+ #
+ # Fetching the files from OpenOffice.org.
+ #
+-OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+-:attr {fetch = $OODIR/%file%} sv_SE.zip
++OODIR = http://extensions.services.openoffice.org/e-files/1080/6
++:attr {fetch = $OODIR/%file%} ooo_swedish_dict_1.42.oxt
+ 
+ # The files don't depend on the .zip file so that we can delete it.
+ # Only download the zip file if the targets don't exist.
+ sv_SE.aff sv_SE.dic: {buildcheck=}
+         :assertpkg unzip patch
+-        :fetch sv_SE.zip
+-        :sys $UNZIP sv_SE.zip
+-        :delete sv_SE.zip
+-        :delete hyph_sv_SE.dic
++        :fetch ooo_swedish_dict_1.42.oxt
++        :sys $UNZIP ooo_swedish_dict_1.42.oxt
++        :delete ooo_swedish_dict_1.42.oxt
++        :delete {r} META-INF
++        :copy dictionaries/sv_SE.aff sv_SE.aff
++        :copy dictionaries/sv_SE.dic sv_SE.dic
++        :delete {r} dictionaries dictionaries.xcu description.xml
+         @if not os.path.exists('sv_SE.orig.aff'):
+             :copy sv_SE.aff sv_SE.orig.aff
+         @if not os.path.exists('sv_SE.orig.dic'):
+@@ -60,12 +63,12 @@
+ 
+ check:
+         :assertpkg unzip diff
+-        :fetch sv_SE.zip
++        :fetch ooo_swedish_dict_1.42.oxt
+         :mkdir tmp
+         :cd tmp
+         @try:
+             @import stat
+-            :sys $UNZIP ../sv_SE.zip
++            :sys $UNZIP ../ooo_swedish_dict_1.42.oxt
+             :sys {force} diff ../sv_SE.orig.aff sv_SE.aff >d
+             @if os.stat('d')[stat.ST_SIZE] > 0:
+                 :copy sv_SE.aff ../sv_SE.new.aff
+@@ -75,7 +78,7 @@
+         @finally:
+             :cd ..
+             :delete {r}{f}{q} tmp
+-            :delete sv_SE.zip
++            :delete ooo_swedish_dict_1.42.oxt
+ 
+ 
+ # vim: set sts=4 sw=4 :
+diff -Nur runtime/spell/sv/sv_SE.diff runtime/spell/sv/sv_SE.diff
+--- runtime/spell/sv/sv_SE.diff	2006-03-08 13:15:01.000000000 -0800
++++ runtime/spell/sv/sv_SE.diff	2011-01-18 10:40:56.223018601 -0800
+@@ -1,9 +1,9 @@
+-*** sv_SE.orig.aff	Thu Feb 23 20:02:32 2006
+---- sv_SE.aff	Thu Feb 23 20:02:32 2006
++*** sv_SE.orig.aff	2010-07-10 14:45:33.000000000 +0200
++--- sv_SE.aff	2010-07-11 17:42:38.000000000 +0200
+ ***************
+ *** 6,7 ****
+---- 6,22 ----
+-  
++--- 6,21 ----
++  NOSUGGEST !
+ + FOL  ��������������������������������
+ + LOW  ��������������������������������
+ + UPP  ��������������������������������
+@@ -18,27 +18,11 @@
+ + MAP c�
+ + MAP y��
+ + MAP s�
+-+ 
+-  SFX  A  Y  1
+-***************
+-*** 15,17 ****
+   
+-! SFX  C  Y  16
+-  SFX  C  0  t  [aeiouy����]
+---- 30,32 ----
+-  
+-! SFX  C  Y  15
+-  SFX  C  0  t  [aeiouy����]
+-***************
+-*** 30,32 ****
+-  SFX  C  en nets en
+-- SFX  C  0  net  nets [^e]n
+-  SFX  C  0  nets  [^e]n
+---- 45,46 ----
+ ***************
+-*** 427 ****
+---- 441,541 ----
+-  SFX  T  el  la  el
++*** 649 ****
++--- 663,763 ----
++  SFX  t  el  la/WXZ  el
+ + 
+ + # soundslike mapping from Aspell
+ + # swedish_phonet.dat - Swedish phonetic transformation rules for aspell
+@@ -139,21 +123,21 @@
+ + SAL �	E
+ + SAL �G(IE)-6	�K	# vokal+g(ie) ger ej j-ljud
+ + SAL �	�
+-*** sv_SE.orig.dic	Thu Feb 23 20:02:32 2006
+---- sv_SE.dic	Thu Feb 23 20:02:32 2006
++*** sv_SE.orig.dic	2010-07-10 14:45:33.000000000 +0200
++--- sv_SE.dic	2010-07-10 14:45:33.000000000 +0200
+ ***************
+-*** 4317,4319 ****
+-  dvaldes/S
++*** 11786,11788 ****
++  DVD
+ ! dvs
+-  dv�ljas/S
+---- 4317,4319 ----
+-  dvaldes/S
++  dv�ljas
++--- 11786,11788 ----
++  DVD
+ ! #dvs Removed by Stefan.
+-  dv�ljas/S
++  dv�ljas
+ ***************
+-*** 24490 ****
+---- 24490,24554 ----
+-  �vila/MS
++*** 31959,31960 ****
++--- 31959,32024 ----
++  korsning/ADGvY
+ + 
+ + # Additions by Stefan:
+ + SEK
+@@ -218,3 +202,4 @@
+ + vard.
+ + vd
+ + vol.
++  korsningsfri/OY
+diff -Nur runtime/spell/tet/main.aap runtime/spell/tet/main.aap
+--- runtime/spell/tet/main.aap	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/tet/main.aap	2011-01-18 10:40:56.224376224 -0800
+@@ -0,0 +1,79 @@
++# Aap recipe for Tetum Vim spell files.
++
++# Use a freshly compiled Vim if it exists.
++@if os.path.exists('../../../src/vim'):
++    VIM = ../../../src/vim
++@else:
++    :progsearch VIM vim
++
++SPELLDIR = ..
++FILES    = tet_ID.aff tet_ID.dic
++
++# I don't hava a Tetum locale, use the Dutch one instead.
++all: $SPELLDIR/tet.latin1.spl $SPELLDIR/tet.utf-8.spl ../README_tet.txt
++
++$SPELLDIR/tet.latin1.spl : $FILES
++        :sys env LANG=nl_NL.ISO8859-1
++		$VIM -u NONE -e -c "mkspell! $SPELLDIR/tet tet_ID" -c q
++
++$SPELLDIR/tet.utf-8.spl : $FILES
++        :sys env LANG=nl_NL.UTF-8
++		$VIM -u NONE -e -c "mkspell! $SPELLDIR/tet tet_ID" -c q
++
++../README_tet.txt : README_tet_ID.txt
++        :copy $source $target
++
++#
++# Fetching the files from OpenOffice.org.
++#
++OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
++:attr {fetch = $OODIR/%file%} tet_ID.zip
++
++# The files don't depend on the .zip file so that we can delete it.
++# Only download the zip file if the targets don't exist.
++tet_ID.aff tet_ID.dic: {buildcheck=}
++        :assertpkg unzip patch
++        :fetch tet_ID.zip
++        :sys $UNZIP tet_ID.zip
++        :delete tet_ID.zip
++        @if not os.path.exists('tet_ID.orig.aff'):
++            :copy tet_ID.aff tet_ID.orig.aff
++        @if not os.path.exists('tet_ID.orig.dic'):
++            :copy tet_ID.dic tet_ID.orig.dic
++        @if os.path.exists('tet_ID.diff'):
++            :sys patch <tet_ID.diff
++
++
++# Generate diff files, so that others can get the OpenOffice files and apply
++# the diffs to get the Vim versions.
++
++diff:
++        :assertpkg diff
++        :sys {force} diff -a -C 1 tet_ID.orig.aff tet_ID.aff >tet_ID.diff
++        :sys {force} diff -a -C 1 tet_ID.orig.dic tet_ID.dic >>tet_ID.diff
++
++
++# Check for updated OpenOffice spell files.  When there are changes the
++# ".new.aff" and ".new.dic" files are left behind for manual inspection.
++
++check:
++        :assertpkg unzip diff
++        :fetch tet_ID.zip
++        :mkdir tmp
++        :cd tmp
++        @try:
++            @import stat
++            :sys $UNZIP ../tet_ID.zip
++            :sys {force} diff ../tet_ID.orig.aff tet_ID.aff >d
++            @if os.stat('d')[stat.ST_SIZE] > 0:
++                :copy tet_ID.aff ../tet_ID.new.aff
++            :sys {force} diff ../tet_ID.orig.dic tet_ID.dic >d
++            @if os.stat('d')[stat.ST_SIZE] > 0:
++                :copy tet_ID.dic ../tet_ID.new.dic
++        @finally:
++            :cd ..
++            :delete {r}{f}{q} tmp
++            :delete tet_ID.zip
++
++
++# vim: set sts=4 sw=4 :
+diff -Nur runtime/spell/tet/tet_ID.diff runtime/spell/tet/tet_ID.diff
+--- runtime/spell/tet/tet_ID.diff	1969-12-31 16:00:00.000000000 -0800
++++ runtime/spell/tet/tet_ID.diff	2011-01-18 10:40:56.224665066 -0800
+@@ -0,0 +1,26 @@
++*** tet_ID.orig.aff	Wed Aug 31 21:14:37 2005
++--- tet_ID.aff	Wed Aug 31 21:15:15 2005
++***************
++*** 19 ****
++--- 19,39 ----
++  TRY aineousrthlkmdbp'fTvgzLAINjSPEM�D-KH��FRUBGJ�Oc�wxCWXV���q��Z�Qy��
+++ 
+++ FOL  ��������������������������������
+++ LOW  ��������������������������������
+++ UPP  ��������������������������������
+++ 
+++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ�������������������������������������������������������������޿
+++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
+++ 
+++ MIDWORD	'-
+++ 
+++ MAP 9
+++ MAP a������
+++ MAP e����
+++ MAP i����
+++ MAP o�����
+++ MAP u����
+++ MAP n�
+++ MAP c�
+++ MAP y��
+++ MAP s�
+diff -Nur runtime/syntax/2html.vim runtime/syntax/2html.vim
+--- runtime/syntax/2html.vim	2008-07-17 14:03:05.000000000 -0700
++++ runtime/syntax/2html.vim	2011-04-03 09:27:21.779382120 -0700
+@@ -1,27 +1,63 @@
+ " Vim syntax support file
+ " Maintainer: Bram Moolenaar <[email protected]>
+-" Last Change: 2008 Jul 17
++" Last Change: 2009 Jul 14
+ "	       (modified by David Ne\v{c}as (Yeti) <[email protected]>)
+ "	       (XHTML support by Panagiotis Issaris <[email protected]>)
+ "	       (made w3 compliant by Edd Barrett <[email protected]>)
+ "	       (added html_font. Edd Barrett <[email protected]>)
++"	       (dynamic folding by Ben Fritz <[email protected]>)
+ 
+ " Transform a file into HTML, using the current syntax highlighting.
+ 
++" this file uses line continuations
++let s:cpo_sav = &cpo
++set cpo-=C
++
+ " Number lines when explicitely requested or when `number' is set
+-if exists("html_number_lines")
++if exists("g:html_number_lines")
+   let s:numblines = html_number_lines
+ else
+   let s:numblines = &number
+ endif
+ 
+ " Font
+-if exists("html_font")
++if exists("g:html_font")
+   let s:htmlfont = html_font . ", monospace"
+ else
+   let s:htmlfont = "monospace"
+ endif
+ 
++" make copies of the user-defined settings that we may overrule
++if exists("g:html_dynamic_folds")
++  let s:html_dynamic_folds = 1
++endif
++if exists("g:html_hover_unfold")
++  let s:html_hover_unfold = 1
++endif
++if exists("g:html_use_css")
++  let s:html_use_css = 1
++endif
++
++" hover opening implies dynamic folding
++if exists("s:html_hover_unfold")
++  let s:html_dynamic_folds = 1
++endif
++
++" dynamic folding with no foldcolumn implies hover opens
++if exists("s:html_dynamic_folds") && exists("g:html_no_foldcolumn")
++  let s:html_hover_unfold = 1
++endif
++
++" ignore folding overrides dynamic folding
++if exists("g:html_ignore_folding") && exists("s:html_dynamic_folds")
++  unlet s:html_dynamic_folds
++endif
++
++" dynamic folding implies css
++if exists("s:html_dynamic_folds")
++  let s:html_use_css = 1
++endif
++
+ " When not in gui we can only guess the colors.
+ if has("gui_running")
+   let s:whatterm = "gui"
+@@ -62,7 +98,7 @@
+   endfun
+ endif
+ 
+-if !exists("html_use_css")
++if !exists("s:html_use_css")
+   " Return opening HTML tag for given highlight id
+   function! s:HtmlOpening(id)
+     let a = ""
+@@ -150,8 +186,28 @@
+   return a
+ endfun
+ 
++if exists("s:html_dynamic_folds")
++
++  " compares two folds as stored in our list of folds
++  " A fold is "less" than another if it starts at an earlier line number,
++  " or ends at a later line number, ties broken by fold level
++  function! s:FoldCompare(f1, f2)
++    if a:f1.firstline != a:f2.firstline
++      " put it before if it starts earlier
++      return a:f1.firstline - a:f2.firstline
++    elseif a:f1.lastline != a:f2.lastline
++      " put it before if it ends later
++      return a:f2.lastline - a:f1.lastline
++    else
++      " if folds begin and end on the same lines, put lowest fold level first
++      return a:f1.level - a:f2.level
++    endif
++  endfunction
++
++endif
++
+ " Figure out proper MIME charset from the 'encoding' option.
+-if exists("html_use_encoding")
++if exists("g:html_use_encoding")
+   let s:html_encoding = html_use_encoding
+ else
+   let s:vim_encoding = &encoding
+@@ -212,7 +268,7 @@
+ let s:old_magic = &magic
+ set magic
+ 
+-if exists("use_xhtml")
++if exists("g:use_xhtml")
+   if s:html_encoding != ""
+     exe "normal!  a<?xml version=\"1.0\" encoding=\"" . s:html_encoding . "\"?>\n\e"
+   else
+@@ -223,20 +279,20 @@
+   let s:tag_close = '>'
+ endif
+ 
+-" Cache html_no_pre incase we have to turn it on for non-css mode
+-if exists("html_no_pre")
++" Cache html_no_pre in case we have to turn it on for non-css mode
++if exists("g:html_no_pre")
+   let s:old_html_no_pre = html_no_pre
+ endif
+ 
+-if !exists("html_use_css")
+-  " Cant put font tags in <pre>
++if !exists("s:html_use_css")
++  " Can't put font tags in <pre>
+   let html_no_pre=1
+ endif
+ 
+ let s:HtmlSpace = ' '
+ let s:LeadingSpace = ' '
+ let s:HtmlEndline = ''
+-if exists("html_no_pre")
++if exists("g:html_no_pre")
+   let s:HtmlEndline = '<br' . s:tag_close
+   let s:LeadingSpace = '&nbsp;'
+   let s:HtmlSpace = '\' . s:LeadingSpace
+@@ -251,10 +307,87 @@
+   exe "normal! a<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:html_encoding . '"' . s:tag_close . "\n\e"
+ endif
+ 
+-if exists("html_use_css")
+-  exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"
++if exists("s:html_use_css")
++  if exists("s:html_dynamic_folds")
++    if exists("s:html_hover_unfold")
++      " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
++      exe "normal! a".
++	  \ "<style type=\"text/css\">\n<!--\n".
++	  \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n".
++	  \ "body * { margin: 0; padding: 0; }\n".
++	  \ "\n".
++	  \ ".open-fold   > .Folded { display: none;  }\n".
++	  \ ".open-fold   > .fulltext { display: inline; }\n".
++	  \ ".closed-fold > .fulltext { display: none;  }\n".
++	  \ ".closed-fold > .Folded { display: inline; }\n".
++	  \ "\n".
++	  \ ".open-fold   > .toggle-open   { display: none;   }\n".
++	  \ ".open-fold   > .toggle-closed { display: inline; }\n".
++	  \ ".closed-fold > .toggle-open   { display: inline; }\n".
++	  \ ".closed-fold > .toggle-closed { display: none;   }\n"
++      exe "normal! a\n/* opening a fold while hovering won't be supported by IE6 and other\n".
++	  \ "similar browsers, but it should fail gracefully. */\n".
++	  \ ".closed-fold:hover > .fulltext { display: inline; }\n".
++	  \ ".closed-fold:hover > .toggle-filler { display: none; }\n".
++	  \ ".closed-fold:hover > .Folded { display: none; }\n"
++      exe "normal! a-->\n</style>\n"
++      exe "normal! a<!--[if lt IE 7]>".
++	  \ "<style type=\"text/css\">\n".
++	  \ ".open-fold   .Folded      { display: none; }\n".
++	  \ ".open-fold   .fulltext      { display: inline; }\n".
++	  \ ".open-fold   .toggle-open   { display: none; }\n".
++	  \ ".closed-fold .toggle-closed { display: inline; }\n".
++	  \ "\n".
++	  \ ".closed-fold .fulltext      { display: none; }\n".
++	  \ ".closed-fold .Folded      { display: inline; }\n".
++	  \ ".closed-fold .toggle-open   { display: inline; }\n".
++	  \ ".closed-fold .toggle-closed { display: none; }\n".
++	  \ "</style>\n".
++	  \ "<![endif]-->\n"
++    else
++      " if we aren't doing hover_unfold, use CSS 1 only
++      exe "normal! a<style type=\"text/css\">\n<!--\n".
++	    \ ".FoldColumn { text-decoration: none; white-space: pre; }\n\n".
++	    \ ".open-fold   .Folded      { display: none; }\n".
++	    \ ".open-fold   .fulltext      { display: inline; }\n".
++	    \ ".open-fold   .toggle-open   { display: none; }\n".
++	    \ ".closed-fold .toggle-closed { display: inline; }\n".
++	    \ "\n".
++	    \ ".closed-fold .fulltext      { display: none; }\n".
++	    \ ".closed-fold .Folded      { display: inline; }\n".
++	    \ ".closed-fold .toggle-open   { display: inline; }\n".
++	    \ ".closed-fold .toggle-closed { display: none; }\n".
++	    \ "-->\n</style>\n"
++    endif
++  else
++    " if we aren't doing any dynamic folding, no need for any special rules
++    exe "normal! a<style type=\"text/css\">\n<!--\n-->\n</style>\n\e"
++  endif
++endif
++
++" insert javascript to toggle folds open and closed
++if exists("s:html_dynamic_folds")
++  exe "normal! a\n".
++	\ "<script type='text/javascript'>\n".
++	\ "<!--\n".
++	\ "function toggleFold(objID)\n".
++	\ "{\n".
++	\ "  var fold;\n".
++	\ "  fold = document.getElementById(objID);\n".
++	\ "  if(fold.className == 'closed-fold')\n".
++	\ "  {\n".
++	\ "    fold.className = 'open-fold';\n".
++	\ "  }\n".
++	\ "  else if (fold.className == 'open-fold')\n".
++	\ "  {\n".
++	\ "    fold.className = 'closed-fold';\n".
++	\ "  }\n".
++	\ "}\n".
++	\ "-->\n".
++	\ "</script>\n\e"
+ endif
+-if exists("html_no_pre")
++
++if exists("g:html_no_pre")
+   exe "normal! a</head>\n<body>\n\e"
+ else
+   exe "normal! a</head>\n<body>\n<pre>\n\e"
+@@ -265,9 +398,83 @@
+ " List of all id's
+ let s:idlist = ","
+ 
+-" Loop over all lines in the original text.
++" First do some preprocessing for dynamic folding. Do this for the entire file
++" so we don't accidentally start within a closed fold or something.
++let s:allfolds = []
++
++if exists("s:html_dynamic_folds")
++  let s:lnum = 1
++  let s:end = line('$')
++  " save the fold text and set it to the default so we can find fold levels
++  let s:foldtext_save = &foldtext
++  set foldtext&
++
++  " we will set the foldcolumn in the html to the greater of the maximum fold
++  " level and the current foldcolumn setting
++  let s:foldcolumn = &foldcolumn
++
++  " get all info needed to describe currently closed folds
++  while s:lnum < s:end
++    if foldclosed(s:lnum) == s:lnum
++      " default fold text has '+-' and then a number of dashes equal to fold
++      " level, so subtract 2 from index of first non-dash after the dashes
++      " in order to get the fold level of the current fold
++      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
++      if s:level+1 > s:foldcolumn
++	let s:foldcolumn = s:level+1
++      endif
++      " store fold info for later use
++      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
++      call add(s:allfolds, s:newfold)
++      " open the fold so we can find any contained folds
++      execute s:lnum."foldopen"
++    else
++      let s:lnum = s:lnum + 1
++    endif
++  endwhile
++
++  " close all folds to get info for originally open folds
++  silent! %foldclose!
++  let s:lnum = 1
++
++  " the originally open folds will be all folds we encounter that aren't
++  " already in the list of closed folds
++  while s:lnum < s:end
++    if foldclosed(s:lnum) == s:lnum
++      " default fold text has '+-' and then a number of dashes equal to fold
++      " level, so subtract 2 from index of first non-dash after the dashes
++      " in order to get the fold level of the current fold
++      let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
++      if s:level+1 > s:foldcolumn
++	let s:foldcolumn = s:level+1
++      endif
++      let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
++      " only add the fold if we don't already have it
++      if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
++	let s:newfold.type = "open-fold"
++	call add(s:allfolds, s:newfold)
++      endif
++      " open the fold so we can find any contained folds
++      execute s:lnum."foldopen"
++    else
++      let s:lnum = s:lnum + 1
++    endif
++  endwhile
++
++  " sort the folds so that we only ever need to look at the first item in the
++  " list of folds
++  call sort(s:allfolds, "s:FoldCompare")
++
++  let &foldtext = s:foldtext_save
++  unlet s:foldtext_save
++
++  " close all folds again so we can get the fold text as we go
++  silent! %foldclose! 
++endif
++
++" Now loop over all lines in the original text to convert to html.
+ " Use html_start_line and html_end_line if they are set.
+-if exists("html_start_line")
++if exists("g:html_start_line")
+   let s:lnum = html_start_line
+   if s:lnum < 1 || s:lnum > line("$")
+     let s:lnum = 1
+@@ -275,7 +482,7 @@
+ else
+   let s:lnum = 1
+ endif
+-if exists("html_end_line")
++if exists("g:html_end_line")
+   let s:end = html_end_line
+   if s:end < s:lnum || s:end > line("$")
+     let s:end = line("$")
+@@ -284,7 +491,16 @@
+   let s:end = line("$")
+ endif
+ 
+-if has('folding') && !exists('html_ignore_folding')
++" stack to keep track of all the folds containing the current line
++let s:foldstack = []
++
++if s:numblines
++  let s:margin = strlen(s:end) + 1
++else
++  let s:margin = 0
++endif
++
++if has('folding') && !exists('g:html_ignore_folding')
+   let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
+   if s:foldfillchar == ''
+     let s:foldfillchar = '-'
+@@ -295,6 +511,7 @@
+   let s:difffillchar = '-'
+ endif
+ 
++let s:foldId = 0
+ 
+ while s:lnum <= s:end
+ 
+@@ -303,24 +520,25 @@
+   if s:filler > 0
+     let s:n = s:filler
+     while s:n > 0
+-      if s:numblines
+-	" Indent if line numbering is on
+-	let s:new = repeat(s:LeadingSpace, strlen(s:end) + 1) . repeat(s:difffillchar, 3)
+-      else
+-	let s:new = repeat(s:difffillchar, 3)
+-      endif
++      let s:new = repeat(s:difffillchar, 3)
+ 
+-      if s:n > 2 && s:n < s:filler && !exists("html_whole_filler")
++      if s:n > 2 && s:n < s:filler && !exists("g:html_whole_filler")
+ 	let s:new = s:new . " " . s:filler . " inserted lines "
+ 	let s:n = 2
+       endif
+ 
+-      if !exists("html_no_pre")
++      if !exists("g:html_no_pre")
+ 	" HTML line wrapping is off--go ahead and fill to the margin
+-	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new))
++	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
++      else
++	let s:new = s:new . repeat(s:difffillchar, 3)
+       endif
+ 
+       let s:new = s:HtmlFormat(s:new, "DiffDelete")
++      if s:numblines
++	" Indent if line numbering is on; must be after escaping.
++	let s:new = repeat(s:LeadingSpace, s:margin) . s:new
++      endif
+       exe s:newwin . "wincmd w"
+       exe "normal! a" . s:new . s:HtmlEndline . "\n\e"
+       exe s:orgwin . "wincmd w"
+@@ -333,17 +551,19 @@
+ 
+   " Start the line with the line number.
+   if s:numblines
+-    let s:new = repeat(' ', strlen(s:end) - strlen(s:lnum)) . s:lnum . ' '
++    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
+   else
+-    let s:new = ""
++    let s:numcol = ""
+   endif
+ 
+-  if has('folding') && !exists('html_ignore_folding') && foldclosed(s:lnum) > -1
++  let s:new = ""
++
++  if has('folding') && !exists('g:html_ignore_folding') && foldclosed(s:lnum) > -1 && !exists('s:html_dynamic_folds')
+     "
+-    " This is the beginning of a folded block
++    " This is the beginning of a folded block (with no dynamic folding)
+     "
+-    let s:new = s:new . foldtextresult(s:lnum)
+-    if !exists("html_no_pre")
++    let s:new = s:numcol . foldtextresult(s:lnum)
++    if !exists("g:html_no_pre")
+       " HTML line wrapping is off--go ahead and fill to the margin
+       let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
+     endif
+@@ -355,14 +575,96 @@
+ 
+   else
+     "
+-    " A line that is not folded.
++    " A line that is not folded, or doing dynamic folding.
+     "
+     let s:line = getline(s:lnum)
+-
+     let s:len = strlen(s:line)
+ 
++    if exists("s:html_dynamic_folds")
++      " First insert a closing for any open folds that end on this line
++      while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
++	let s:new = s:new."</span></span>"
++	call remove(s:foldstack, 0)
++      endwhile
++
++      " Now insert an opening any new folds that start on this line
++      let s:firstfold = 1
++      while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
++	let s:foldId = s:foldId + 1
++	let s:new = s:new . "<span id='fold".s:foldId."' class='".s:allfolds[0].type."'>"
++
++	" Unless disabled, add a fold column for the opening line of a fold.
++	"
++	" Note that dynamic folds require using css so we just use css to take
++	" care of the leading spaces rather than using &nbsp; in the case of
++	" html_no_pre to make it easier
++	if !exists("g:html_no_foldcolumn")
++	  " add fold column that can open the new fold
++	  if s:allfolds[0].level > 1 && s:firstfold
++	    let s:new = s:new . "<a class='toggle-open FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>"
++	    let s:new = s:new . repeat('|', s:allfolds[0].level - 1) . "</a>"
++	  endif
++	  let s:new = s:new . "<a class='toggle-open FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>+</a>"
++	  let s:new = s:new . "<a class='toggle-open "
++	  " If this is not the last fold we're opening on this line, we need
++	  " to keep the filler spaces hidden if the fold is opened by mouse
++	  " hover. If it is the last fold to open in the line, we shouldn't hide
++	  " them, so don't apply the toggle-filler class.
++	  if get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum
++	    let s:new = s:new . "toggle-filler "
++	  endif
++	  let s:new = s:new . "FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>"
++	  let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level) . "</a>"
++
++	  " add fold column that can close the new fold
++	  let s:new = s:new . "<a class='toggle-closed FoldColumn' href='javascript:toggleFold(\"fold".s:foldId."\")'>"
++	  if s:firstfold
++	    let s:new = s:new . repeat('|', s:allfolds[0].level - 1)
++	  endif
++	  let s:new = s:new . "-"
++	  " only add spaces if we aren't opening another fold on the same line
++	  if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
++	    let s:new = s:new . repeat(" ", s:foldcolumn - s:allfolds[0].level)
++	  endif
++	  let s:new = s:new . "</a>"
++	  let s:firstfold = 0
++	endif
++
++	" add fold text, moving the span ending to the next line so collapsing
++	" of folds works correctly
++	let s:new = s:new . substitute(s:HtmlFormat(s:numcol . foldtextresult(s:lnum), "Folded"), '</span>', s:HtmlEndline.'\r\0', '')
++	let s:new = s:new . "<span class='fulltext'>"
++
++	" open the fold now that we have the fold text to allow retrieval of
++	" fold text for subsequent folds
++	execute s:lnum."foldopen"
++	call insert(s:foldstack, remove(s:allfolds,0))
++	let s:foldstack[0].id = s:foldId
++      endwhile
++
++      " Unless disabled, add a fold column for other lines.
++      "
++      " Note that dynamic folds require using css so we just use css to take
++      " care of the leading spaces rather than using &nbsp; in the case of
++      " html_no_pre to make it easier
++      if !exists("g:html_no_foldcolumn")
++	if empty(s:foldstack)
++	  " add the empty foldcolumn for unfolded lines
++	  let s:new = s:new . s:HtmlFormat(repeat(' ', s:foldcolumn), "FoldColumn")
++	else
++	  " add the fold column for folds not on the opening line
++	  if get(s:foldstack, 0).firstline < s:lnum
++	    let s:new = s:new . "<a class='FoldColumn' href='javascript:toggleFold(\"fold".s:foldstack[0].id."\")'>"
++	    let s:new = s:new . repeat('|', s:foldstack[0].level)
++	    let s:new = s:new . repeat(' ', s:foldcolumn - s:foldstack[0].level) . "</a>"
++	  endif
++	endif
++      endif
++    endif
++
++    " Now continue with the unfolded line text
+     if s:numblines
+-      let s:new = s:HtmlFormat(s:new, "lnr")
++      let s:new = s:new . s:HtmlFormat(s:numcol, "lnr")
+     endif
+ 
+     " Get the diff attribute, if any.
+@@ -378,9 +680,9 @@
+ 	" Speed loop (it's small - that's the trick)
+ 	" Go along till we find a change in hlID
+ 	while s:col <= s:len && s:id == diff_hlID(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
+-	if s:len < &columns && !exists("html_no_pre")
++	if s:len < &columns && !exists("g:html_no_pre")
+ 	  " Add spaces at the end to mark the changed line.
+-	  let s:line = s:line . repeat(' ', &columns - s:len)
++	  let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
+ 	  let s:len = &columns
+ 	endif
+       else
+@@ -393,11 +695,27 @@
+ 
+       " Expand tabs
+       let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
+-      let idx = stridx(s:expandedtab, "\t")
+-      while idx >= 0
+-	let i = &ts - ((idx + s:startcol - 1) % &ts)
+-	let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', i), '')
+-	let idx = stridx(s:expandedtab, "\t")
++      let s:offset = 0
++      let s:idx = stridx(s:expandedtab, "\t")
++      while s:idx >= 0
++	if has("multi_byte_encoding")
++	  if s:startcol + s:idx == 1
++	    let s:i = &ts
++	  else
++	    if s:idx == 0
++	      let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
++	    else
++	      let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
++	    endif
++	    let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
++	    let s:i = &ts - (s:vcol % &ts)
++	  endif
++	  let s:offset -= s:i - 1
++	else
++	  let s:i = &ts - ((s:idx + s:startcol - 1) % &ts)
++	endif
++	let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
++	let s:idx = stridx(s:expandedtab, "\t")
+       endwhile
+ 
+       " Output the text with the same synID, with class set to {s:id_name}
+@@ -415,12 +733,26 @@
+ " Finish with the last line
+ exe s:newwin . "wincmd w"
+ 
++if exists("s:html_dynamic_folds")
++  " finish off any open folds
++  while !empty(s:foldstack)
++    exe "normal! a</span></span>"
++    call remove(s:foldstack, 0)
++  endwhile
++
++  " add fold column to the style list if not already there
++  let s:id = hlID('FoldColumn')
++  if stridx(s:idlist, "," . s:id . ",") == -1
++    let s:idlist = s:idlist . s:id . ","
++  endif
++endif
++
+ " Close off the font tag that encapsulates the whole <body>
+-if !exists("html_use_css")
++if !exists("s:html_use_css")
+   exe "normal! a</font>\e"
+ endif
+ 
+-if exists("html_no_pre")
++if exists("g:html_no_pre")
+   exe "normal! a</body>\n</html>\e"
+ else
+   exe "normal! a</pre>\n</body>\n</html>\e"
+@@ -428,7 +760,7 @@
+ 
+ 
+ " Now, when we finally know which, we define the colors and styles
+-if exists("html_use_css")
++if exists("s:html_use_css")
+   1;/<style type="text/+1
+ endif
+ 
+@@ -445,8 +777,8 @@
+ " Normal/global attributes
+ " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
+ " incorrect.
+-if exists("html_use_css")
+-  if exists("html_no_pre")
++if exists("s:html_use_css")
++  if exists("g:html_no_pre")
+     execute "normal! A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }\e"
+   else
+     execute "normal! A\npre { font-family: ". s:htmlfont ."; color: " . s:fgc . "; background-color: " . s:bgc . "; }\e"
+@@ -455,12 +787,12 @@
+     execute "normal! ^cwbody\e"
+   endif
+ else
+-    execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">'
++  execute '%s:<body>:<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"><font face="'. s:htmlfont .'">'
+ endif
+ 
+ " Line numbering attributes
+ if s:numblines
+-  if exists("html_use_css")
++  if exists("s:html_use_css")
+     execute "normal! A\n.lnr { " . s:CSS1(hlID("LineNr")) . "}\e"
+   else
+     execute '%s+^<span class="lnr">\([^<]*\)</span>+' . s:HtmlOpening(hlID("LineNr")) . '\1' . s:HtmlClosing(hlID("LineNr")) . '+g'
+@@ -479,14 +811,14 @@
+   " If the class has some attributes, export the style, otherwise DELETE all
+   " its occurences to make the HTML shorter
+   if s:attr != ""
+-    if exists("html_use_css")
++    if exists("s:html_use_css")
+       execute "normal! A\n." . s:id_name . " { " . s:attr . "}"
+     else
+       execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+' . s:HtmlOpening(s:id) . '\1' . s:HtmlClosing(s:id) . '+g'
+     endif
+   else
+     execute '%s+<span class="' . s:id_name . '">\([^<]*\)</span>+\1+ge'
+-    if exists("html_use_css")
++    if exists("s:html_use_css")
+       1;/<style type="text/+1
+     endif
+   endif
+@@ -496,13 +828,13 @@
+ %s+\(https\=://\S\{-}\)\(\([.,;:}]\=\(\s\|$\)\)\|[\\"'<>]\|&gt;\|&lt;\|&quot;\)+<a href="\1">\1</a>\2+ge
+ 
+ " The DTD
+-if exists("use_xhtml")
++if exists("g:use_xhtml")
+   exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\e"
+ else
+   exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n\e"
+ endif
+ 
+-if exists("use_xhtml")
++if exists("g:use_xhtml")
+   exe "normal! gg/<html/e\na xmlns=\"http://www.w3.org/1999/xhtml\"\e"
+ endif
+ 
+@@ -524,23 +856,35 @@
+ if exists("s:old_html_no_pre")
+   let html_no_pre = s:old_html_no_pre
+   unlet s:old_html_no_pre
+-elseif exists("html_no_pre")
++elseif exists("g:html_no_pre")
+   unlet html_no_pre
+ endif
+ 
+ " Save a little bit of memory (worth doing?)
+ unlet s:htmlfont
+ unlet s:old_et s:old_paste s:old_icon s:old_report s:old_title s:old_search
+-unlet s:whatterm s:idlist s:lnum s:end s:fgc s:bgc s:old_magic
++unlet s:whatterm s:idlist s:lnum s:end s:margin s:fgc s:bgc s:old_magic
+ unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:numblines
+-unlet s:orgwin s:newwin s:orgbufnr
++unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset
+ if !v:profiling
+   delfunc s:HtmlColor
+   delfunc s:HtmlFormat
+   delfunc s:CSS1
+-  if !exists("html_use_css")
++  if !exists("s:html_use_css")
+     delfunc s:HtmlOpening
+     delfunc s:HtmlClosing
+   endif
+ endif
+-silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline
++silent! unlet s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:LeadingSpace s:HtmlEndline s:firstfold s:foldcolumn
++unlet s:foldstack s:allfolds s:foldId s:numcol
++
++if exists("s:html_dynamic_folds")
++  delfunc s:FoldCompare
++endif
++
++silent! unlet s:html_dynamic_folds s:html_hover_unfold s:html_use_css
++
++let &cpo = s:cpo_sav
++unlet s:cpo_sav
++
++" vim: noet sw=2 sts=2
+diff -Nur runtime/syntax/asm.vim runtime/syntax/asm.vim
+--- runtime/syntax/asm.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/asm.vim	2011-01-18 10:40:56.242854947 -0800
+@@ -1,10 +1,14 @@
+ " Vim syntax file
+ " Language:	GNU Assembler
+-" Maintainer:	Kevin Dahlhausen <[email protected]>
+-" Last Change:	2002 Sep 19
++" Maintainer:	Erik Wognsen <[email protected]>
++"		Previous maintainer:
++"		Kevin Dahlhausen <[email protected]>
++" Last Change:	2010 Apr 18
++
++" Thanks to Ori Avtalion for feedback on the comment markers!
+ 
+ " For version 5.x: Clear all syntax items
+-" For version 6.x: Quit when a syntax file was already loaded
++" For version 6.0 and later: Quit when a syntax file was already loaded
+ if version < 600
+   syntax clear
+ elseif exists("b:current_syntax")
+@@ -13,7 +17,6 @@
+ 
+ syn case ignore
+ 
+-
+ " storage types
+ syn match asmType "\.long"
+ syn match asmType "\.ascii"
+@@ -44,9 +47,16 @@
+ syn match hexNumber		"0[xX][0-9a-fA-F]\+"
+ syn match binNumber		"0[bB][0-1]*"
+ 
++syn keyword asmTodo		contained TODO
+ 
+-syn match asmSpecialComment	";\*\*\*.*"
+-syn match asmComment		";.*"hs=s+1
++" GAS supports various comment markers as described here:
++" http://sourceware.org/binutils/docs-2.19/as/Comments.html
++" I have commented out the ARM comment marker "@" by default as I think more
++" people are using "@" with the .type directive. See
++" http://sourceware.org/binutils/docs-2.19/as/Type.html
++syn region asmComment		start="/\*" end="\*/" contains=asmTodo
++syn match asmComment		"[#;!|].*" contains=asmTodo
++" syn match asmComment		"@.*" contains=asmTodo
+ 
+ syn match asmInclude		"\.include"
+ syn match asmCond		"\.if"
+@@ -75,6 +85,7 @@
+   HiLink asmSection	Special
+   HiLink asmLabel	Label
+   HiLink asmComment	Comment
++  HiLink asmTodo	Todo
+   HiLink asmDirective	Statement
+ 
+   HiLink asmInclude	Include
+@@ -86,15 +97,9 @@
+   HiLink octNumber	Number
+   HiLink binNumber	Number
+ 
+-  HiLink asmSpecialComment Comment
+   HiLink asmIdentifier Identifier
+   HiLink asmType	Type
+ 
+-  " My default color overrides:
+-  " hi asmSpecialComment ctermfg=red
+-  " hi asmIdentifier ctermfg=lightcyan
+-  " hi asmType ctermbg=black ctermfg=brown
+-
+   delcommand HiLink
+ endif
+ 
+diff -Nur runtime/syntax/bzr.vim runtime/syntax/bzr.vim
+--- runtime/syntax/bzr.vim	2008-07-30 12:47:17.000000000 -0700
++++ runtime/syntax/bzr.vim	2011-01-18 10:40:56.254533057 -0800
+@@ -2,9 +2,14 @@
+ " Language:     Bazaar (bzr) commit file
+ " Maintainer:   Dmitry Vasiliev <dima at hlabs dot spb dot ru>
+ " URL:          http://www.hlabs.spb.ru/vim/bzr.vim
+-" Revision:     $Id: bzr.vim 683 2008-07-30 11:52:38Z hdima $
++" Last Change:  2009-01-27
+ " Filenames:    bzr_log.*
+-" Version:      1.1
++" Version:      1.2.1
++"
++" Thanks:
++"
++"    Gioele Barabucci
++"       for idea of diff highlighting
+ 
+ " For version 5.x: Clear all syntax items.
+ " For version 6.x: Quit when a syntax file was already loaded.
+@@ -14,13 +19,21 @@
+   finish
+ endif
+ 
+-syn region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL contains=@NoSpell
++if exists("bzr_highlight_diff")
++  syn include @Diff syntax/diff.vim
++endif
++
+ syn match bzrRemoved   "^removed:$" contained
+ syn match bzrAdded     "^added:$" contained
+ syn match bzrRenamed   "^renamed:$" contained
+ syn match bzrModified  "^modified:$" contained
+ syn match bzrUnchanged "^unchanged:$" contained
+ syn match bzrUnknown   "^unknown:$" contained
++syn cluster Statuses contains=bzrRemoved,bzrAdded,bzrRenamed,bzrModified,bzrUnchanged,bzrUnknown
++if exists("bzr_highlight_diff")
++  syn cluster Statuses add=@Diff
++endif
++syn region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=@NoSpell,@Statuses
+ 
+ " Synchronization.
+ syn sync clear
+@@ -37,7 +50,6 @@
+     command -nargs=+ HiLink hi def link <args>
+   endif
+ 
+-  HiLink bzrRegion     Comment
+   HiLink bzrRemoved    Constant
+   HiLink bzrAdded      Identifier
+   HiLink bzrModified   Special
+diff -Nur runtime/syntax/c.vim runtime/syntax/c.vim
+--- runtime/syntax/c.vim	2008-03-19 13:44:52.000000000 -0700
++++ runtime/syntax/c.vim	2011-01-18 10:40:56.260512873 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:	C
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last Change:	2008 Mar 19
++" Last Change:	2009 Nov 17
+ 
+ " Quit when a (custom) syntax file was already loaded
+ if exists("b:current_syntax")
+@@ -16,8 +16,13 @@
+ 
+ syn keyword	cTodo		contained TODO FIXME XXX
+ 
++" It's easy to accidentally add a space after a backslash that was intended
++" for line continuation.  Some compilers allow it, which makes it
++" unpredicatable and should be avoided.
++syn match	cBadContinuation contained "\\\s\+$"
++
+ " cCommentGroup allows adding matches for special things in comments
+-syn cluster	cCommentGroup	contains=cTodo
++syn cluster	cCommentGroup	contains=cTodo,cBadContinuation
+ 
+ " String and Character constants
+ " Highlight special characters (those which have a backslash) differently
+@@ -265,7 +270,7 @@
+ endif
+ 
+ " Accept %: for # (C99)
+-syn region	cPreCondit	start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
++syn region      cPreCondit      start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$"  keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+ syn match	cPreCondit	display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+ if !exists("c_no_if0")
+   if !exists("c_no_if0_fold")
+@@ -281,7 +286,7 @@
+ syn match	cInclude	display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+ "syn match cLineSkip	"\\$"
+ syn cluster	cPreProcGroup	contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
+-syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 keepend contains=ALLBUT,@cPreProcGroup,@Spell
++syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+ syn region	cPreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+ 
+ " Highlight User Labels
+@@ -359,6 +364,7 @@
+ hi def link cComment		Comment
+ hi def link cSpecial		SpecialChar
+ hi def link cTodo		Todo
++hi def link cBadContinuation	Error
+ hi def link cCppSkip		cCppOut
+ hi def link cCppOut2		cCppOut
+ hi def link cCppOut		Comment
+diff -Nur runtime/syntax/cabal.vim runtime/syntax/cabal.vim
+--- runtime/syntax/cabal.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/cabal.vim	2011-01-18 10:40:56.260844546 -0800
+@@ -0,0 +1,132 @@
++" Vim syntax file
++" Language:	Haskell Cabal Build file
++" Maintainer:	Vincent Berthoux <[email protected]>
++" File Types:	.cabal
++" Last Change:  2010 May 18
++" v1.3: Updated to the last version of cabal
++"       Added more highlighting for cabal function, true/false
++"       and version number. Also added missing comment highlighting.
++"       Cabal known compiler are highlighted too.
++"
++" V1.2: Added cpp-options which was missing. Feature implemented
++"       by GHC, found with a GHC warning, but undocumented. 
++"       Whatever...
++"
++" v1.1: Fixed operator problems and added ftdetect file
++"       (thanks to Sebastian Schwarz)
++"
++" v1.0: Cabal syntax in vimball format
++"       (thanks to Magnus Therning)
++
++" For version 5.x: Clear all syntax items
++" For version 6.x: Quit when a syntax file was already loaded
++if version < 600
++  syntax clear
++elseif exists("b:current_syntax")
++  finish
++endif
++
++syn keyword	cabalCategory	Library library Executable executable Flag flag
++syn keyword	cabalCategory	source-repository Source-Repository
++
++syn keyword     cabalConditional    if else
++syn match       cabalOperator       "&&\|||\|!\|==\|>=\|<="
++syn keyword     cabalFunction       os arche impl flag
++syn match       cabalComment    /--.*$/
++syn match       cabalVersion    "\d\+\(.\(\d\)\+\)\+"
++
++syn match       cabalTruth      "\ctrue"
++syn match       cabalTruth      "\cfalse"
++
++syn match       cabalCompiler   "\cghc"
++syn match       cabalCompiler   "\cnhc"
++syn match       cabalCompiler   "\cyhc"
++syn match       cabalCompiler   "\chugs"
++syn match       cabalCompiler   "\chbc"
++syn match       cabalCompiler   "\chelium"
++syn match       cabalCompiler   "\cjhc"
++syn match       cabalCompiler   "\clhc"
++
++
++syn match	cabalStatement	"\cauthor"
++syn match	cabalStatement	"\cbranch"
++syn match	cabalStatement	"\cbug-reports"
++syn match	cabalStatement	"\cbuild-depends"
++syn match	cabalStatement	"\cbuild-tools"
++syn match	cabalStatement	"\cbuild-type"
++syn match	cabalStatement	"\cbuildable"
++syn match	cabalStatement	"\cc-sources"
++syn match	cabalStatement	"\ccabal-version"
++syn match	cabalStatement	"\ccategory"
++syn match	cabalStatement	"\ccc-options"
++syn match	cabalStatement	"\ccopyright"
++syn match       cabalStatement  "\ccpp-options"
++syn match	cabalStatement	"\cdata-dir"
++syn match	cabalStatement	"\cdata-files"
++syn match	cabalStatement	"\cdefault"
++syn match	cabalStatement	"\cdescription"
++syn match	cabalStatement	"\cexecutable"
++syn match	cabalStatement	"\cexposed-modules"
++syn match	cabalStatement	"\cexposed"
++syn match	cabalStatement	"\cextensions"
++syn match	cabalStatement	"\cextra-lib-dirs"
++syn match	cabalStatement	"\cextra-libraries"
++syn match	cabalStatement	"\cextra-source-files"
++syn match	cabalStatement	"\cextra-tmp-files"
++syn match	cabalStatement	"\cfor example"
++syn match	cabalStatement	"\cframeworks"
++syn match	cabalStatement	"\cghc-options"
++syn match	cabalStatement	"\cghc-prof-options"
++syn match	cabalStatement	"\cghc-shared-options"
++syn match	cabalStatement	"\chomepage"
++syn match	cabalStatement	"\chs-source-dirs"
++syn match	cabalStatement	"\chugs-options"
++syn match	cabalStatement	"\cinclude-dirs"
++syn match	cabalStatement	"\cincludes"
++syn match	cabalStatement	"\cinstall-includes"
++syn match	cabalStatement	"\cld-options"
++syn match	cabalStatement	"\clicense-file"
++syn match	cabalStatement	"\clicense"
++syn match	cabalStatement	"\clocation"
++syn match	cabalStatement	"\cmain-is"
++syn match	cabalStatement	"\cmaintainer"
++syn match	cabalStatement	"\cmodule"
++syn match	cabalStatement	"\cname"
++syn match	cabalStatement	"\cnhc98-options"
++syn match	cabalStatement	"\cother-modules"
++syn match	cabalStatement	"\cpackage-url"
++syn match	cabalStatement	"\cpkgconfig-depends"
++syn match	cabalStatement	"\cstability"
++syn match	cabalStatement	"\csubdir"
++syn match	cabalStatement	"\csynopsis"
++syn match	cabalStatement	"\ctag"
++syn match	cabalStatement	"\ctested-with"
++syn match	cabalStatement	"\ctype"
++syn match	cabalStatement	"\cversion"
++
++" Define the default highlighting.
++" 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_cabal_syn_inits")
++  if version < 508
++    let did_cabal_syn_inits = 1
++    command -nargs=+ HiLink hi link <args>
++  else
++    command -nargs=+ HiLink hi def link <args>
++  endif
++
++  HiLink cabalVersion       Number
++  HiLink cabalTruth         Boolean
++  HiLink cabalComment       Comment
++  HiLink cabalStatement     Statement
++  HiLink cabalCategory      Type
++  HiLink cabalFunction      Function
++  HiLink cabalConditional   Conditional
++  HiLink cabalOperator      Operator
++  HiLink cabalCompiler      Constant
++  delcommand HiLink
++endif
++
++let b:current_syntax = "cabal"
++
++" vim: ts=8
+diff -Nur runtime/syntax/cf.vim runtime/syntax/cf.vim
+--- runtime/syntax/cf.vim	2007-11-19 14:27:33.000000000 -0800
++++ runtime/syntax/cf.vim	2011-01-18 10:40:56.264230263 -0800
+@@ -1,321 +1,440 @@
+ " Vim syntax file
+-"    Language: ColdFusion
+-"  Maintainer: Toby Woodwark ([email protected])
+-" Last Change: 2007 Nov 19
+-"   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")
++" Language:	CFML
++" Maintainer:	Toby Woodwark ([email protected])
++" Last Change:	2010-03-02
++" Filenames:	*.cfc *.cfm
++" Version:	Adobe ColdFusion 9
++" Usage:	This file contains both syntax definitions
++" 		and a list of known builtin tags, functions and keywords.
++" 		Refs - 
++" http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS8f0cc78011fffa71866534d11cdad96e4e-8000.html
++" http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec17324-8000.html
++" TODO: 
++" 		Support the limited array literal and struct literal syntax in CF8+.
++" 		Highlight namespaced tags fom cfimport.
++" 		Complete CF9+ cfscript support.
++" 		Railo support.
++" Options:
++"	d_noinclude_html - set to prevent HTML highlighting.	Use this if you are not working on HTML.
++
++" Quit if a syntax file is already loaded.
++if 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
++if exists("d_noinclude_html")
++  " Define alternatives to the HTML syntax file.
++
++  " Copied from html.vim - the rules for matching a CF tag match	those for HTML/SGML.
++  " CFML syntax is more permissive when it comes to superfluous <> chars.
++  syn region	htmlString	contained start=+"+ end=+"+ contains=@htmlPreproc
++  syn region	htmlString	contained start=+'+ end=+'+ contains=@htmlPreproc
++  syn match	htmlValue	contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1	contains=@htmlPreproc
++  " Hacked htmlTag so that it only matches cf tags and not random <> chars.
++  syn region	htmlEndTag	start=+</cf+	end=+>+ contains=htmlTagN,htmlTagError
++  syn region	htmlTag		start=+<\s*cf[^/]+	end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,@htmlPreproc,@htmlArgCluster
++  syn match	htmlTagN	contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,@htmlTagNameCluster
++  syn match	htmlTagN	contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,@htmlTagNameCluster
++  syn match	htmlTagError	contained "[^>]<"ms=s+1
+ else
++  " Use all the stuff from the HTML syntax file.
++  " This means eg HTML comments are highlighted as comments, even if they include cf tags.
+   runtime! syntax/html.vim
+ endif
+ 
+-syn sync fromstart
+-syn sync maxlines=200
+-syn case ignore
++syn sync	fromstart
++syn sync	maxlines=200
++syn case	ignore
+ 
+ " Scopes and keywords.
+-syn keyword cfScope contained cgi cffile cookie request caller this thistag
+-syn keyword cfScope contained cfcatch variables application server session client form url attributes
+-syn keyword cfScope contained arguments
+-syn keyword cfBool contained yes no true false
++syn keyword	cfScope		contained cgi cffile cookie request caller this thistag
++syn keyword	cfScope		contained cfcatch variables application server session client form url local
++syn keyword	cfScope		contained arguments super cfhttp attributes error
++syn keyword	cfBool		contained yes no true false
+ 
+ " Operator strings.
+-syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
+-syn match cfOperatorMatch contained "\<does\_s\+not\_s\+contain\>"
+-syn match cfOperatorMatch contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
+-syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
+-syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch
++" ColdFusion <=7:
++syn keyword	cfOperator		contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains
++syn match	cfOperatorMatch		contained "+" 
++syn match	cfOperatorMatch		contained "\-"
++syn match	cfOperatorMatch		contained "[\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"
++syn match	cfOperatorMatch		contained "\<\(not\_s\+\)\?equal\>"
++syn match	cfOperatorMatch		contained "\<does\_s\+not\_s\+contain\>"
++syn match	cfOperatorMatch		contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>"
++" ColdFusion 8:
++syn keyword	cfOperator		contained imp
++syn match	cfOperatorMatch		contained "[?%:!]"
++syn match	cfOperatorMatch		contained "[\+\-\*\/\&]=" 
++syn match	cfOperatorMatch		contained "++"
++syn match	cfOperatorMatch		contained "--"
++syn match	cfOperatorMatch	 	contained "&&"
++syn match	cfOperatorMatch	 	contained "||"
++
++syn cluster	cfOperatorCluster	contains=cfOperator,cfOperatorMatch
++
++" Custom tags called with the <cf_xxx> syntax.
++syn match	cfCustomTagName		contained "\<cf_[a-zA-Z0-9_]\+\>"
++" (TODO match	namespaced tags imported using cfimport, similarly.)
+ 
+ " Tag names.
+-syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate
+-syn keyword cfTagName contained cfbreak cfcache cfcalendar cfcase cfcatch
+-syn keyword cfTagName contained cfchart cfchartdata cfchartseries cfcol cfcollection
+-syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
+-syn keyword cfTagName contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
+-syn keyword cfTagName contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
+-syn keyword cfTagName contained cfformgroup cfformitem cfftp cffunction cfgraph cfgraphdata
+-syn keyword cfTagName contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
+-syn keyword cfTagName contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
+-syn keyword cfTagName contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
+-syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
+-syn keyword cfTagName contained cfloop cfmail cfmailparam cfmailpart cfmodule
+-syn keyword cfTagName contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
+-syn keyword cfTagName contained cfpop cfprocessingdirective cfprocparam cfprocresult
+-syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport
+-syn keyword cfTagName contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
+-syn keyword cfTagName contained cfscript cfsearch cfselect cfservlet cfservletparam cfset
+-syn keyword cfTagName contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
+-syn keyword cfTagName contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
+-syn keyword cfTagName contained cftree cftreeitem cftry cfupdate cfwddx cfxml
+-
+-" Tag parameters.
+-syn keyword cfArg contained abort accept access accessible action addnewline addtoken
+-syn keyword cfArg contained agentname align appendkey appletsource application
+-syn keyword cfArg contained applicationtimeout applicationtoken archive
+-syn keyword cfArg contained argumentcollection arguments asciiextensionlist
+-syn keyword cfArg contained attachmentpath attributecollection attributes autowidth
+-syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname
+-syn keyword cfArg contained blockfactor body bold border branch cachedafter cachedwithin
+-syn keyword cfArg contained casesensitive category categorytree cc cfsqltype charset
+-syn keyword cfArg contained chartheight chartwidth checked class clientmanagement
+-syn keyword cfArg contained clientstorage codebase colheaderalign colheaderbold
+-syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders
+-syn keyword cfArg contained colheadertextcolor collection colorlist colspacing columns
+-syn keyword cfArg contained completepath component condition connection contentid
+-syn keyword cfArg contained context contextbytes contexthighlightbegin
+-syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria
+-syn keyword cfArg contained custom1 custom2 custom3 custom4 data dataalign
+-syn keyword cfArg contained databackgroundcolor datacollection datasource daynames
+-syn keyword cfArg contained dbname dbserver dbtype dbvarname debug default delete
+-syn keyword cfArg contained deletebutton deletefile delimiter delimiters description
+-syn keyword cfArg contained destination detail directory disabled display displayname
+-syn keyword cfArg contained disposition dn domain editable enablecab enablecfoutputonly
+-syn keyword cfArg contained enabled encoded encryption enctype enddate endrange endtime
+-syn keyword cfArg contained entry errorcode exception existing expand expires expireurl
+-syn keyword cfArg contained expression extendedinfo extends extensions external
+-syn keyword cfArg contained failifexists failto file filefield filename filter
+-syn keyword cfArg contained firstdayofweek firstrowasheaders fixnewline font fontbold
+-syn keyword cfArg contained fontembed fontitalic fontsize foregroundcolor format
+-syn keyword cfArg contained formfields formula from generateuniquefilenames getasbinary
+-syn keyword cfArg contained grid griddataalign gridlines groovecolor group
+-syn keyword cfArg contained groupcasesensitive header headeralign headerbold headerfont
+-syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor
+-syn keyword cfArg contained height highlighthref hint href hrefkey hscroll hspace html
+-syn keyword cfArg contained htmltable id idletimeout img imgopen imgstyle index inline
+-syn keyword cfArg contained input insert insertbutton interval isolation italic item
+-syn keyword cfArg contained itemcolumn key keyonly label labelformat language list
+-syn keyword cfArg contained listgroups locale localfile log loginstorage lookandfeel
+-syn keyword cfArg contained mailerid mailto marginbottom marginleft marginright
+-syn keyword cfArg contained margintop markersize markerstyle mask max maxlength maxrows
+-syn keyword cfArg contained message messagenumber method mimeattach mimetype min mode
+-syn keyword cfArg contained modifytype monthnames multipart multiple name nameconflict
+-syn keyword cfArg contained namespace new newdirectory notsupported null numberformat
+-syn keyword cfArg contained object omit onblur onchange onclick onerror onfocus
+-syn keyword cfArg contained onkeydown onkeyup onload onmousedown onmouseup onreset
+-syn keyword cfArg contained onsubmit onvalidate operation orderby orientation output
+-syn keyword cfArg contained outputfile overwrite ownerpassword pageencoding pageheight
+-syn keyword cfArg contained pagetype pagewidth paintstyle param_1 param_2 param_3
+-syn keyword cfArg contained param_4 param_5 param_6 param_7 param_8 param_9 parent
+-syn keyword cfArg contained parrent passive passthrough password path pattern
+-syn keyword cfArg contained permissions picturebar pieslicestyle port porttypename
+-syn keyword cfArg contained prefix preloader preservedata previouscriteria procedure
+-syn keyword cfArg contained protocol provider providerdsn proxybypass proxypassword
+-syn keyword cfArg contained proxyport proxyserver proxyuser publish query queryasroot
+-syn keyword cfArg contained queryposition range rebind recurse redirect referral
+-syn keyword cfArg contained refreshlabel remotefile replyto report requesttimeout
+-syn keyword cfArg contained required reset resoleurl resolveurl result resultset
+-syn keyword cfArg contained retrycount returnasbinary returncode returntype
+-syn keyword cfArg contained returnvariable roles rotated rowheaderalign rowheaderbold
+-syn keyword cfArg contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
+-syn keyword cfArg contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
+-syn keyword cfArg contained scaleto scope scriptprotect scriptsrc secure securitycontext
+-syn keyword cfArg contained select selectcolor selected selecteddate selectedindex
+-syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement
+-syn keyword cfArg contained server serviceport serviceportname sessionmanagement
+-syn keyword cfArg contained sessiontimeout setclientcookies setcookie setdomaincookies
+-syn keyword cfArg contained show3d showborder showdebugoutput showerror showlegend
+-syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort
+-syn keyword cfArg contained sortascendingbutton sortcontrol sortdescendingbutton
+-syn keyword cfArg contained sortxaxis source spoolenable sql src srcfile start startdate
+-syn keyword cfArg contained startrange startrow starttime status statuscode statustext
+-syn keyword cfArg contained step stoponerror style subject suggestions
+-syn keyword cfArg contained suppresswhitespace tablename tableowner tablequalifier
+-syn keyword cfArg contained taglib target task template text textcolor textqualifier
+-syn keyword cfArg contained throwonerror throwonerror throwonfailure throwontimeout
+-syn keyword cfArg contained timeout timespan tipbgcolor tipstyle title to tooltip
+-syn keyword cfArg contained toplevelvariable transfermode type uid unit url urlpath
+-syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate
+-syn keyword cfArg contained validateat value valuecolumn values valuesdelimiter
+-syn keyword cfArg contained valuesdisplay var variable vertical visible vscroll vspace
+-syn keyword cfArg contained webservice width wmode wraptext wsdlfile xaxistitle
+-syn keyword cfArg contained xaxistype xoffset yaxistitle yaxistype yoffset
+-
+-" ColdFusion Functions.
+-syn keyword cfFunctionName contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
+-syn keyword cfFunctionName contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
+-syn keyword cfFunctionName contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
+-syn keyword cfFunctionName contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
+-syn keyword cfFunctionName contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
+-syn keyword cfFunctionName contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
+-syn keyword cfFunctionName contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
+-syn keyword cfFunctionName contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
+-syn keyword cfFunctionName contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
+-syn keyword cfFunctionName contained CreateODBCDate CreateODBCDateTime CreateODBCTime
+-syn keyword cfFunctionName contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
+-syn keyword cfFunctionName contained DateCompare DateConvert DateDiff DateFormat DatePart Day
+-syn keyword cfFunctionName contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
+-syn keyword cfFunctionName contained DecimalFormat DecrementValue Decrypt DecryptBinary
+-syn keyword cfFunctionName contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
+-syn keyword cfFunctionName contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
+-syn keyword cfFunctionName contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
+-syn keyword cfFunctionName contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
+-syn keyword cfFunctionName contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
+-syn keyword cfFunctionName contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
+-syn keyword cfFunctionName contained GetException GetFileFromPath GetFunctionList
+-syn keyword cfFunctionName contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
+-syn keyword cfFunctionName contained GetLocalHostIP
+-syn keyword cfFunctionName contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
+-syn keyword cfFunctionName contained GetPageContext GetProfileSections GetProfileString
+-syn keyword cfFunctionName contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
+-syn keyword cfFunctionName contained GetSOAPResponseHeader GetTempDirectory GetTempFile
+-syn keyword cfFunctionName contained GetTickCount GetTimeZoneInfo GetToken
+-syn keyword cfFunctionName contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
+-syn keyword cfFunctionName contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
+-syn keyword cfFunctionName contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
+-syn keyword cfFunctionName contained IsDefined
+-syn keyword cfFunctionName contained IsLeapYear IsLocalHost IsNumeric
+-syn keyword cfFunctionName contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
+-syn keyword cfFunctionName contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
+-syn keyword cfFunctionName contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
+-syn keyword cfFunctionName contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
+-syn keyword cfFunctionName contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
+-syn keyword cfFunctionName contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
+-syn keyword cfFunctionName contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
+-syn keyword cfFunctionName contained Len ListAppend ListChangeDelims ListContains
+-syn keyword cfFunctionName contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
+-syn keyword cfFunctionName contained ListFirst ListGetAt ListInsertAt ListLast ListLen
+-syn keyword cfFunctionName contained ListPrepend ListQualify ListRest ListSetAt ListSort
+-syn keyword cfFunctionName contained ListToArray ListValueCount ListValueCountNoCase Log Log10
+-syn keyword cfFunctionName contained Max Mid Min Minute Month MonthAsString Now NumberFormat
+-syn keyword cfFunctionName contained ParagraphFormat ParseDateTime Pi
+-syn keyword cfFunctionName contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
+-syn keyword cfFunctionName contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
+-syn keyword cfFunctionName contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
+-syn keyword cfFunctionName contained Randomize ReleaseComObject RemoveChars RepeatString Replace
+-syn keyword cfFunctionName contained ReplaceList ReplaceNoCase Reverse Right Round Second
+-syn keyword cfFunctionName contained SendGatewayMessage SetEncoding SetLocale SetProfileString
+-syn keyword cfFunctionName contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
+-syn keyword cfFunctionName contained StructAppend StructClear StructCopy StructCount StructDelete
+-syn keyword cfFunctionName contained StructFind StructFindKey StructFindValue StructGet
+-syn keyword cfFunctionName contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
+-syn keyword cfFunctionName contained StructKeyList StructNew StructSort StructUpdate Tan
+-syn keyword cfFunctionName contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
+-syn keyword cfFunctionName contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
+-syn keyword cfFunctionName contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
+-syn keyword cfFunctionName contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
+-syn keyword cfFunctionName contained XmlValidate Year YesNoFormat
+-
+-" Deprecated tags and functions.
+-syn keyword cfDeprecated contained cfauthenticate cfimpersonate cfgraph cfgraphdata
+-syn keyword cfDeprecated contained cfservlet cfservletparam cftextinput
+-syn keyword cfDeprecated contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
+-syn keyword cfDeprecated contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
+-syn keyword cfDeprecated contained ParameterExists
+-
+-syn cluster htmlTagNameCluster add=cfTagName
+-syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope
+-syn cluster htmlPreproc add=cfHashRegion
++" ColdFusion <=7:
++syn keyword	cfTagName	contained cfabort cfapplet cfapplication cfargument cfassociate
++syn keyword	cfTagName	contained cfbreak cfcache cfcalendar cfcase cfcatch
++syn keyword	cfTagName	contained cfchart cfchartdata cfchartseries cfcol cfcollection
++syn keyword	cfTagName	contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory
++syn keyword	cfTagName	contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse
++syn keyword	cfTagName	contained cfelseif cferror cfexecute cfexit cffile cfflush cfform
++syn keyword	cfTagName	contained cfformgroup cfformitem cfftp cffunction
++syn keyword	cfTagName	contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader
++syn keyword	cfTagName	contained cfhtmlhead cfhttp cfhttpparam cfif cfimport
++syn keyword	cfTagName	contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
++syn keyword	cfTagName	contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout
++syn keyword	cfTagName	contained cfloop cfmail cfmailparam cfmailpart cfmodule
++syn keyword	cfTagName	contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam
++syn keyword	cfTagName	contained cfpop cfprocessingdirective cfprocparam cfprocresult
++syn keyword	cfTagName	contained cfproperty cfquery cfqueryparam cfregistry cfreport
++syn keyword	cfTagName	contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule
++syn keyword	cfTagName	contained cfscript cfsearch cfselect cfservletparam cfset
++syn keyword	cfTagName	contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable
++syn keyword	cfTagName	contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction
++syn keyword	cfTagName	contained cftree cftreeitem cftry cfupdate cfwddx cfxml
++" ColdFusion 8:
++syn keyword	cfTagName	contained cfajaximport cfajaxproxy cfdbinfo cfdiv cfexchangecalendar
++syn keyword	cfTagName	contained cfexchangeconnection cfexchangecontact cfexchangefilter 
++syn keyword	cfTagName	contained cfexchangemail cfexchangetask cffeed
++syn keyword	cfTagName	contained cfinterface cflayout cflayoutarea cfmenu cfmenuitem
++syn keyword	cfTagName	contained cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod
++syn keyword	cfTagName	contained cfpresentation cfpresentationslide cfpresenter cfprint
++syn keyword	cfTagName	contained cfsprydataset cfthread cftooltip cfwindow cfzip cfzipparam
++" ColdFusion 9:
++syn keyword	cfTagName	contained cfcontinue cffileupload cffinally
++syn keyword	cfTagName	contained cfimage cfimap 
++syn keyword	cfTagName	contained cfmap cfmapitem cfmediaplayer cfmessagebox
++syn keyword	cfTagName	contained cfprocparam cfprogressbar
++syn keyword	cfTagName	contained cfsharepoint cfspreadsheet
++
++" Tag attributes.
++" XXX Not updated for ColdFusion 8/9.
++" These are becoming a headache to maintain, so might be removed.
++syn keyword	cfArg		contained abort accept access accessible action addnewline addtoken
++syn keyword	cfArg		contained agentname align appendkey appletsource application
++syn keyword	cfArg		contained applicationtimeout applicationtoken archive
++syn keyword	cfArg		contained argumentcollection arguments asciiextensionlist
++syn keyword	cfArg		contained attachmentpath attributecollection attributes autowidth
++syn keyword	cfArg		contained backgroundvisible basetag bcc bgcolor bind bindingname
++syn keyword	cfArg		contained blockfactor body bold border branch cachedafter cachedwithin
++syn keyword	cfArg		contained casesensitive category categorytree cc cfsqltype charset
++syn keyword	cfArg		contained chartheight chartwidth checked class clientmanagement
++syn keyword	cfArg		contained clientstorage codebase colheaderalign colheaderbold
++syn keyword	cfArg		contained colheaderfont colheaderfontsize colheaderitalic colheaders
++syn keyword	cfArg		contained colheadertextcolor collection colorlist colspacing columns
++syn keyword	cfArg		contained completepath component condition connection contentid
++syn keyword	cfArg		contained context contextbytes contexthighlightbegin
++syn keyword	cfArg		contained contexthighlightend contextpassages cookiedomain criteria
++syn keyword	cfArg		contained custom1 custom2 custom3 custom4 data dataalign
++syn keyword	cfArg		contained databackgroundcolor datacollection datasource daynames
++syn keyword	cfArg		contained dbname dbserver dbtype dbvarname debug default delete
++syn keyword	cfArg		contained deletebutton deletefile delimiter delimiters description
++syn keyword	cfArg		contained destination detail directory disabled display displayname
++syn keyword	cfArg		contained disposition dn domain editable enablecab enablecfoutputonly
++syn keyword	cfArg		contained enabled encoded encryption enctype enddate endrange endtime
++syn keyword	cfArg		contained entry errorcode exception existing expand expires expireurl
++syn keyword	cfArg		contained expression extendedinfo extends extensions external
++syn keyword	cfArg		contained failifexists failto file filefield filename filter
++syn keyword	cfArg		contained firstdayofweek firstrowasheaders fixnewline font fontbold
++syn keyword	cfArg		contained fontembed fontitalic fontsize foregroundcolor format
++syn keyword	cfArg		contained formfields formula from generateuniquefilenames getasbinary
++syn keyword	cfArg		contained grid griddataalign gridlines groovecolor group
++syn keyword	cfArg		contained groupcasesensitive header headeralign headerbold headerfont
++syn keyword	cfArg		contained headerfontsize headeritalic headerlines headertextcolor
++syn keyword	cfArg		contained height highlighthref hint href hrefkey hscroll hspace html
++syn keyword	cfArg		contained htmltable id idletimeout img imgopen imgstyle index inline
++syn keyword	cfArg		contained input insert insertbutton interval isolation italic item
++syn keyword	cfArg		contained itemcolumn key keyonly label labelformat language list
++syn keyword	cfArg		contained listgroups locale localfile log loginstorage lookandfeel
++syn keyword	cfArg		contained mailerid mailto marginbottom marginleft marginright
++syn keyword	cfArg		contained margintop markersize markerstyle mask max maxlength maxrows
++syn keyword	cfArg		contained message messagenumber method mimeattach mimetype min mode
++syn keyword	cfArg		contained modifytype monthnames multipart multiple name nameconflict
++syn keyword	cfArg		contained namespace new newdirectory notsupported null numberformat
++syn keyword	cfArg		contained object omit onblur onchange onclick onerror onfocus
++syn keyword	cfArg		contained onkeydown onkeyup onload onmousedown onmouseup onreset
++syn keyword	cfArg		contained onsubmit onvalidate operation orderby orientation output
++syn keyword	cfArg		contained outputfile overwrite ownerpassword pageencoding pageheight
++syn keyword	cfArg		contained pagetype pagewidth paintstyle param_1 param_2 param_3
++syn keyword	cfArg		contained param_4 param_5 param_6 param_7 param_8 param_9 parent
++syn keyword	cfArg		contained parrent passive passthrough password path pattern
++syn keyword	cfArg		contained permissions picturebar pieslicestyle port porttypename
++syn keyword	cfArg		contained prefix preloader preservedata previouscriteria procedure
++syn keyword	cfArg		contained protocol provider providerdsn proxybypass proxypassword
++syn keyword	cfArg		contained proxyport proxyserver proxyuser publish query queryasroot
++syn keyword	cfArg		contained queryposition range rebind recurse redirect referral
++syn keyword	cfArg		contained refreshlabel remotefile replyto report requesttimeout
++syn keyword	cfArg		contained required reset resoleurl resolveurl result resultset
++syn keyword	cfArg		contained retrycount returnasbinary returncode returntype
++syn keyword	cfArg		contained returnvariable roles rotated rowheaderalign rowheaderbold
++syn keyword	cfArg		contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders
++syn keyword	cfArg		contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom
++syn keyword	cfArg		contained scaleto scope scriptprotect scriptsrc secure securitycontext
++syn keyword	cfArg		contained select selectcolor selected selecteddate selectedindex
++syn keyword	cfArg		contained selectmode separator seriescolor serieslabel seriesplacement
++syn keyword	cfArg		contained server serviceport serviceportname sessionmanagement
++syn keyword	cfArg		contained sessiontimeout setclientcookies setcookie setdomaincookies
++syn keyword	cfArg		contained show3d showborder showdebugoutput showerror showlegend
++syn keyword	cfArg		contained showmarkers showxgridlines showygridlines size skin sort
++syn keyword	cfArg		contained sortascendingbutton sortcontrol sortdescendingbutton
++syn keyword	cfArg		contained sortxaxis source spoolenable sql src srcfile start startdate
++syn keyword	cfArg		contained startrange startrow starttime status statuscode statustext
++syn keyword	cfArg		contained step stoponerror style subject suggestions
++syn keyword	cfArg		contained suppresswhitespace tablename tableowner tablequalifier
++syn keyword	cfArg		contained taglib target task template text textcolor textqualifier
++syn keyword	cfArg		contained throwonerror throwonerror throwonfailure throwontimeout
++syn keyword	cfArg		contained timeout timespan tipbgcolor tipstyle title to tooltip
++syn keyword	cfArg		contained toplevelvariable transfermode type uid unit url urlpath
++syn keyword	cfArg		contained useragent username userpassword usetimezoneinfo validate
++syn keyword	cfArg		contained validateat value valuecolumn values valuesdelimiter
++syn keyword	cfArg		contained valuesdisplay var variable vertical visible vscroll vspace
++syn keyword	cfArg		contained webservice width wmode wraptext wsdlfile xaxistitle
++syn keyword	cfArg		contained xaxistype xoffset yaxistitle yaxistype yoffset
++
++" Functions.
++" ColdFusion <=7:
++syn keyword	cfFunctionName		contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader
++syn keyword	cfFunctionName		contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt
++syn keyword	cfFunctionName		contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew
++syn keyword	cfFunctionName		contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum
++syn keyword	cfFunctionName		contained ArraySwap ArrayToList Asc Atn AuthenticatedContext
++syn keyword	cfFunctionName		contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd
++syn keyword	cfFunctionName		contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN
++syn keyword	cfFunctionName		contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode
++syn keyword	cfFunctionName		contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime
++syn keyword	cfFunctionName		contained CreateODBCDate CreateODBCDateTime CreateODBCTime
++syn keyword	cfFunctionName		contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd
++syn keyword	cfFunctionName		contained DateCompare DateConvert DateDiff DateFormat DatePart Day
++syn keyword	cfFunctionName		contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear
++syn keyword	cfFunctionName		contained DecimalFormat DecrementValue Decrypt DecryptBinary
++syn keyword	cfFunctionName		contained DeleteClientVariable DirectoryExists DollarFormat Duplicate
++syn keyword	cfFunctionName		contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists
++syn keyword	cfFunctionName		contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN
++syn keyword	cfFunctionName		contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList
++syn keyword	cfFunctionName		contained GetBaseTemplatePath GetClientVariablesList GetContextRoot
++syn keyword	cfFunctionName		contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding
++syn keyword	cfFunctionName		contained GetException GetFileFromPath GetFunctionList
++syn keyword	cfFunctionName		contained GetGatewayHelper GetHttpRequestData GetHttpTimeString
++syn keyword	cfFunctionName		contained GetLocalHostIP
++syn keyword	cfFunctionName		contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData
++syn keyword	cfFunctionName		contained GetPageContext GetProfileSections GetProfileString
++syn keyword	cfFunctionName		contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse
++syn keyword	cfFunctionName		contained GetSOAPResponseHeader GetTempDirectory GetTempFile
++syn keyword	cfFunctionName		contained GetTickCount GetTimeZoneInfo GetToken
++syn keyword	cfFunctionName		contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue
++syn keyword	cfFunctionName		contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized
++syn keyword	cfFunctionName		contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode
++syn keyword	cfFunctionName		contained IsDefined
++syn keyword	cfFunctionName		contained IsLeapYear IsLocalHost IsNumeric
++syn keyword	cfFunctionName		contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest
++syn keyword	cfFunctionName		contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML
++syn keyword	cfFunctionName		contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot
++syn keyword	cfFunctionName		contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat
++syn keyword	cfFunctionName		contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate
++syn keyword	cfFunctionName		contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime
++syn keyword	cfFunctionName		contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left
++syn keyword	cfFunctionName		contained Len ListAppend ListChangeDelims ListContains
++syn keyword	cfFunctionName		contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase
++syn keyword	cfFunctionName		contained ListFirst ListGetAt ListInsertAt ListLast ListLen
++syn keyword	cfFunctionName		contained ListPrepend ListQualify ListRest ListSetAt ListSort
++syn keyword	cfFunctionName		contained ListToArray ListValueCount ListValueCountNoCase Log Log10
++syn keyword	cfFunctionName		contained Max Mid Min Minute Month MonthAsString Now NumberFormat
++syn keyword	cfFunctionName		contained ParagraphFormat ParseDateTime Pi
++syn keyword	cfFunctionName		contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow
++syn keyword	cfFunctionName		contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase
++syn keyword	cfFunctionName		contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange
++syn keyword	cfFunctionName		contained Randomize ReleaseComObject RemoveChars RepeatString Replace
++syn keyword	cfFunctionName		contained ReplaceList ReplaceNoCase Reverse Right Round Second
++syn keyword	cfFunctionName		contained SendGatewayMessage SetEncoding SetLocale SetProfileString
++syn keyword	cfFunctionName		contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR
++syn keyword	cfFunctionName		contained StructAppend StructClear StructCopy StructCount StructDelete
++syn keyword	cfFunctionName		contained StructFind StructFindKey StructFindValue StructGet
++syn keyword	cfFunctionName		contained StructInsert StructIsEmpty StructKeyArray StructKeyExists
++syn keyword	cfFunctionName		contained StructKeyList StructNew StructSort StructUpdate Tan
++syn keyword	cfFunctionName		contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase
++syn keyword	cfFunctionName		contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList
++syn keyword	cfFunctionName		contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat
++syn keyword	cfFunctionName		contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform
++syn keyword	cfFunctionName		contained XmlValidate Year YesNoFormat
++" ColdFusion 8:
++syn keyword	cfFunctionName		contained AjaxLink AjaxOnLoad ArrayIsDefined BinaryDecode BinaryEncode CharsetDecode CharsetEncode 
++syn keyword	cfFunctionName		contained DecryptBinary DeserializeJSON DotNetToCFType EncryptBinary FileClose FileCopy FileDelete
++syn keyword	cfFunctionName		contained FileIsEOF FileMove FileOpen FileRead FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute
++syn keyword	cfFunctionName		contained FileSetLastModified FileWrite GenerateSecretKey GetGatewayHelper GetAuthUser GetComponentMetaData
++syn keyword	cfFunctionName		contained GetContextRoot GetEncoding GetFileInfo GetLocaleDisplayName GetLocalHostIP GetMetaData
++syn keyword	cfFunctionName		contained GetPageContext GetPrinterInfo GetProfileSections GetReadableImageFormats GetSOAPRequest
++syn keyword	cfFunctionName		contained GetSOAPRequestHeader GetSOAPResponse GetSOAPResponseHeader GetUserRoles GetWriteableImageFormats
++syn keyword	cfFunctionName		contained ImageAddBorder ImageBlur ImageClearRect ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect
++syn keyword	cfFunctionName		contained ImageDrawCubicCurve ImageDrawPoint ImageDrawLine ImageDrawLines ImageDrawOval
++syn keyword	cfFunctionName		contained ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob
++syn keyword	cfFunctionName		contained ImageGetBufferedImage ImageGetEXIFMetadata ImageGetEXIFTag ImageGetHeight ImageGetIPTCMetadata
++syn keyword	cfFunctionName		contained ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay
++syn keyword	cfFunctionName		contained ImagePaste ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit 
++" ColdFusion 9:
++syn keyword	cfFunctionName		contained ApplicationStop ArrayContains ArrayDelete ArrayFind ArrayFindNoCase IsSpreadsheetFile
++syn keyword	cfFunctionName		contained IsSpreadsheetObject FileSkipBytes Location ObjectLoad SpreadsheetFormatColumn
++syn keyword	cfFunctionName		contained SpreadsheetFormatColumns SpreadsheetFormatRow SpreadsheetFormatRows SpreadsheetGetCellComment
++syn keyword	cfFunctionName		contained CacheGetAllIds CacheGetMetadata CacheGetProperties CacheGet CachePut ObjectSave ORMClearSession
++syn keyword	cfFunctionName		contained ORMCloseSession ORMEvictQueries ORMEvictCollection SpreadsheetGetCellFormula SpreadsheetGetCellValue
++syn keyword	cfFunctionName		contained SpreadsheetInfo SpreadsheetMergeCells SpreadsheetNew CacheRemove CacheSetProperties DirectoryCreate
++syn keyword	cfFunctionName		contained DirectoryDelete DirectoryExists ORMEvictEntity ORMEvictQueries ORMExecuteQuery ORMFlush
++syn keyword	cfFunctionName		contained ORMGetSession SpreadsheetRead SpreadsheetReadBinary SpreadsheetSetActiveSheetNumber
++syn keyword	cfFunctionName		contained SpreadsheetSetCellComment SpreadsheetSetCellFormula DirectoryList DirectoryRename EntityDelete
++syn keyword	cfFunctionName		contained EntityLoad EntityLoadByExample ORMGetSessionFactory ORMReload ObjectEquals SpreadsheetAddColumn
++syn keyword	cfFunctionName		contained SpreadsheetAddFreezePane SpreadsheetSetCellValue SpreadsheetSetActiveSheet SpreadsheetSetFooter
++syn keyword	cfFunctionName		contained SpreadsheetSetHeader SpreadsheetSetColumnWidth EntityLoadByPK EntityMerge EntityNew EntityReload
++syn keyword	cfFunctionName		contained EntitySave SpreadsheetAddImage SpreadsheetAddInfo SpreadsheetAddRow SpreadsheetAddRows
++syn keyword	cfFunctionName		contained SpreadsheetAddSplitPane SpreadsheetShiftColumns SpreadsheetShiftRows SpreadsheetSetRowHeight
++syn keyword	cfFunctionName		contained SpreadsheetWrite Trace FileDelete FileSeek FileWriteLine GetFunctionCalledName GetVFSMetaData IsIPv6
++syn keyword	cfFunctionName		contained IsNull SpreadsheetCreateSheet SpreadsheetDeleteColumn SpreadsheetDeleteColumns SpreadsheetDeleteRow
++syn keyword	cfFunctionName		contained SpreadsheetDeleteRows SpreadsheetFormatCell TransactionCommit TransactionRollback
++syn keyword	cfFunctionName		contained TransactionSetSavePoint ThreadTerminate ThreadJoin Throw Writedump Writelog 
++
++" Deprecated or obsoleted tags and functions.
++syn keyword	cfDeprecatedTag		contained cfauthenticate cfimpersonate cfgraph cfgraphdata
++syn keyword	cfDeprecatedTag		contained cfservlet cfservletparam cftextinput
++syn keyword	cfDeprecatedTag		contained cfinternaladminsecurity cfnewinternaladminsecurity
++syn keyword	cfDeprecatedFunction	contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath
++syn keyword	cfDeprecatedFunction	contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline
++syn keyword	cfDeprecatedFunction	contained ParameterExists AuthenticatedContext AuthenticatedUser
++syn keyword	cfDeprecatedFunction	contained isAuthenticated isAuthorized isProtected
++
++" Add to the HTML clusters.
++syn cluster	htmlTagNameCluster	add=cfTagName,cfCustomTagName,cfDeprecatedTag
++syn cluster	htmlArgCluster		add=cfArg,cfHashRegion,cfScope
++syn cluster	htmlPreproc		add=cfHashRegion
+ 
+-syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool
++syn cluster	cfExpressionCluster	contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool,cfComment
+ 
+ " Evaluation; skip strings ( this helps with cases like nested IIf() )
+-syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError
++"		containedin to add to the TOP of cfOutputRegion.
++syn region	cfHashRegion		start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contained containedin=cfOutputRegion contains=@cfExpressionCluster,cfScriptParenError
++
++" Hashmarks are significant inside cfoutput tags.
++" cfoutput tags may be nested indefinitely.
++syn region	cfOutputRegion		matchgroup=NONE transparent start=+<cfoutput>+ end=+</cfoutput>+ contains=TOP
+ 
+ " <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit
+ " evaluation) and have '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 
++syn region	cfSetRegion		start="<cfset\>" start="<cfreturn\>" start="<cfelseif\>" start="<cfif\>" end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptStatement
++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, but can be nested.
++syn region	cfComment		start='<!---' end='--->' contains=cfCommentTodo,cfComment
++syn keyword	cfCommentTodo		contained TODO FIXME XXX TBD WTF 
+ 
+ " CFscript 
+-syn match   cfScriptLineComment      contained "\/\/.*$" contains=cfCommentTodo
+-syn region  cfScriptComment	     contained start="/\*"  end="\*/" contains=cfCommentTodo
++" TODO better support for new component/function def syntax
++" TODO better support for 'new'
++" TODO highlight metadata (@ ...) inside comments.
++syn match	cfScriptLineComment	contained "\/\/.*$" contains=cfCommentTodo
++syn region	cfScriptComment		contained start="/\*"	end="\*/" contains=cfCommentTodo
++syn match	cfScriptBraces		contained "[{}]"
++syn keyword	cfScriptStatement	contained return var
+ " 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\+\>"
+-syn keyword cfScriptConditional      contained if else
+-syn keyword cfScriptRepeat	     contained while for in
+-syn keyword cfScriptBranch	     contained break switch case default try catch continue
+-syn keyword cfScriptFunction	     contained function
+-syn keyword cfScriptType	     contained var
+-syn match   cfScriptBraces	     contained "[{}]"
+-syn keyword cfScriptStatement        contained return
++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\+\>"
++syn keyword	cfScriptConditional	contained if else
++syn keyword	cfScriptRepeat		contained while for in
++syn keyword	cfScriptBranch		contained break switch case default try catch continue finally
++syn keyword	cfScriptKeyword		contained function
++" argumentCollection is a special argument to function calls
++syn keyword	cfScriptSpecial		contained argumentcollection
++" ColdFusion 9:
++syn keyword	cfScriptStatement	contained new import
++" CFscript equivalents of some tags
++syn keyword	cfScriptKeyword		contained abort component exit import include
++syn keyword	cfScriptKeyword		contained interface param pageencoding property rethrow thread transaction
++" function/component syntax
++syn keyword	cfScriptSpecial		contained required extends
+ 
+-syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,cfScriptType,@cfExpressionCluster,cfScriptStatement
++
++syn cluster	cfScriptCluster	contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfDeprecatedFunction,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,@cfExpressionCluster,cfScriptStatement,cfScriptSpecial,cfScriptKeyword
+ 
+ " Errors caused by wrong parenthesis; skip strings
+-syn region  cfScriptParen       contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster
+-syn match   cfScrParenError 	contained +)+
++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
++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
+ 
+ " CFML
+-syn cluster cfmlCluster contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock
++syn cluster	cfmlCluster	contains=cfComment,@htmlTagNameCluster,@htmlPreproc,cfSetRegion,cfscriptBlock,cfOutputRegion
+ 
+-" cfquery = sql
+-unlet b:current_syntax
+-syn include @cfSql <sfile>:p:h/sql.vim
++" cfquery = sql syntax
++if exists("b:current_syntax")
++  unlet b:current_syntax
++endif
++syn include @cfSql $VIMRUNTIME/syntax/sql.vim
+ unlet b:current_syntax
+-syn region  cfqueryTag  contained start=+<cfquery+ end=+>+    keepend   contains=cfTagName,htmlTag
+-syn region  cfSqlregion start=+<cfquery[^>]*>+ keepend end=+<\/cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag
++syn region	cfqueryTag	contained start=+<cfquery+ end=+>+ keepend contains=cfTagName,htmlTag
++syn region	cfSqlregion	start=+<cfquery\_[^>]*>+ keepend end=+</cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag,cfHashRegion
++
++" Define the highlighting.
++command -nargs=+ CfHiLink hi def link <args>
+ 
+-" 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 cfDeprecated	     	Error
+-  HiLink cfScrParenError	cfScriptError
+-
+-  HiLink cfqueryTag htmlTag
+-  
+-  delcommand HiLink
++if exists("d_noinclude_html")
++  " The default html-style highlighting copied from html.vim.
++  CfHiLink htmlTag		Function
++  CfHiLink htmlEndTag		Identifier
++  CfHiLink htmlArg		Type
++  CfHiLink htmlTagName		htmlStatement
++  CfHiLink htmlValue		String
++  CfHiLink htmlPreProc		PreProc
++  CfHiLink htmlString		String
++  CfHiLink htmlStatement	Statement
++  CfHiLink htmlValue		String
++  CfHiLink htmlTagError		htmlError
++  CfHiLink htmlError		Error
+ endif
+ 
++CfHiLink cfTagName		Statement
++CfHiLink cfCustomTagName	Statement
++CfHiLink cfArg			Type
++CfHiLink cfFunctionName		Function
++CfHiLink cfHashRegion		PreProc
++CfHiLink cfComment		Comment
++CfHiLink cfCommentTodo		Todo
++CfHiLink cfOperator		Operator
++CfHiLink cfOperatorMatch	Operator
++CfHiLink cfScope		Title
++CfHiLink cfBool			Constant
++
++CfHiLink cfscriptBlock		Special
++CfHiLink cfscriptTag		htmlTag
++CfHiLink cfSetRegion		PreProc
++CfHiLink cfSetLHSRegion		htmlTag
++CfHiLink cfSetTagEnd		htmlTag
++
++CfHiLink cfScriptLineComment	Comment
++CfHiLink cfScriptComment	Comment
++CfHiLink cfScriptStringS	String
++CfHiLink cfScriptStringD	String
++CfHiLink cfScriptNumber		cfScriptValue
++CfHiLink cfScriptConditional	Conditional
++CfHiLink cfScriptRepeat		Repeat
++CfHiLink cfScriptBranch		Conditional
++CfHiLink cfScriptSpecial	Type
++CfHiLink cfScriptStatement	Statement
++CfHiLink cfScriptBraces		Function
++CfHiLink cfScriptKeyword	Function
++CfHiLink cfScriptError		Error
++CfHiLink cfDeprecatedTag	Error
++CfHiLink cfDeprecatedFunction	Error
++CfHiLink cfScrParenError	cfScriptError
++
++CfHiLink cfqueryTag		htmlTag
++
++delcommand CfHiLink
++
+ let b:current_syntax = "cf"
+ 
+-" vim: ts=8 sw=2
++" vim: nowrap sw=2 ts=8 noet
+diff -Nur runtime/syntax/chaiscript.vim runtime/syntax/chaiscript.vim
+--- runtime/syntax/chaiscript.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/chaiscript.vim	2011-01-18 10:40:56.265138204 -0800
+@@ -0,0 +1,94 @@
++" Vim syntax file
++" Language:	ChaiScript
++" Maintainer:	Jason Turner <lefticus 'at' gmail com>
++
++" Quit when a (custom) syntax file was already loaded
++if exists("b:current_syntax")
++  finish
++end
++
++syn case match
++
++" syncing method
++syn sync fromstart
++
++" Strings
++syn region chaiscriptString        start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=chaiscriptSpecial,chaiscriptEval,@Spell
++
++" Escape characters
++syn match  chaiscriptSpecial       contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}" 
++
++" String evals
++syn region chaiscriptEval          contained start="${" end="}" 
++ 
++" integer number
++syn match  chaiscriptNumber        "\<\d\+\>"
++
++" floating point number, with dot, optional exponent
++syn match  chaiscriptFloat         "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>"
++
++" floating point number, starting with a dot, optional exponent
++syn match  chaiscriptFloat         "\.\d\+\%(e[-+]\=\d\+\)\=\>"
++
++" floating point number, without dot, with exponent
++syn match  chaiscriptFloat         "\<\d\+e[-+]\=\d\+\>"
++
++" Hex strings
++syn match  chaiscriptNumber        "\<0x\x\+\>"
++
++" Binary strings
++syn match  chaiscriptNumber        "\<0b[01]\+\>"
++
++" Various language features
++syn keyword chaiscriptCond         if else
++syn keyword chaiscriptRepeat       while for do
++syn keyword chaiscriptStatement    break continue return
++syn keyword chaiscriptExceptions   try catch throw
++
++"Keyword
++syn keyword chaiscriptKeyword      def true false attr
++
++"Built in types
++syn keyword chaiscriptType         fun var
++
++"Built in funcs, keep it simple
++syn keyword chaiscriptFunc         eval throw
++
++"Let's treat all backtick operator function lookups as built in too
++syn region  chaiscriptFunc         matchgroup=chaiscriptFunc start="`" end="`"
++
++" Account for the "[1..10]" syntax, treating it as an operator
++" Intentionally leaving out all of the normal, well known operators
++syn match   chaiscriptOperator     "\.\."
++
++" Guard seperator as an operator
++syn match   chaiscriptOperator     ":"
++
++" Comments
++syn match   chaiscriptComment      "//.*$" contains=@Spell
++syn region  chaiscriptComment      matchgroup=chaiscriptComment start="/\*" end="\*/" contains=@Spell
++
++
++
++hi def link chaiscriptExceptions	Exception
++hi def link chaiscriptKeyword		Keyword
++hi def link chaiscriptStatement		Statement
++hi def link chaiscriptRepeat		Repeat
++hi def link chaiscriptString		String
++hi def link chaiscriptNumber		Number
++hi def link chaiscriptFloat		Float
++hi def link chaiscriptOperator		Operator
++hi def link chaiscriptConstant		Constant
++hi def link chaiscriptCond		Conditional
++hi def link chaiscriptFunction		Function
++hi def link chaiscriptComment		Comment
++hi def link chaiscriptTodo		Todo
++hi def link chaiscriptError		Error
++hi def link chaiscriptSpecial		SpecialChar
++hi def link chaiscriptFunc		Identifier
++hi def link chaiscriptType		Type
++hi def link chaiscriptEval	        Special
++
++let b:current_syntax = "chaiscript"
++
++" vim: nowrap sw=2 sts=2 ts=8 noet
+diff -Nur runtime/syntax/cmake.vim runtime/syntax/cmake.vim
+--- runtime/syntax/cmake.vim	2007-11-18 07:20:24.000000000 -0800
++++ runtime/syntax/cmake.vim	2011-01-18 10:40:56.269610940 -0800
+@@ -1,19 +1,11 @@
+-" =============================================================================
+-"
+-"   Program:   CMake - Cross-Platform Makefile Generator
+-"   Module:    $RCSfile: cmake-syntax.vim,v $
+-"   Language:  VIM
+-"   Date:      $Date: 2006/09/23 21:09:08 $
+-"   Version:   $Revision: 1.6 $
+-"
+-" =============================================================================
+-
+ " Vim syntax file
++" Program:      CMake - Cross-Platform Makefile Generator
++" Module:       $RCSfile: cmake-syntax.vim,v $
+ " Language:     CMake
+ " Author:       Andy Cedilnik <[email protected]>
+-" Maintainer:   Andy Cedilnik <[email protected]>
+-" Last Change:  $Date: 2006/09/23 21:09:08 $
+-" Version:      $Revision: 1.6 $
++" Maintainer:   Karthik Krishnan <[email protected]>
++" Last Change:  $Date: 2008-08-25 14:31:28 $
++" Version:      $Revision: 1.10 $
+ "
+ " Licence:      The CMake license applies to this file. See
+ "               http://www.cmake.org/HTML/Copyright.html
+@@ -28,31 +20,33 @@
+ endif
+ 
+ syn case ignore
+-syn match cmakeComment /#.*$/
+-syn region cmakeRegistry start=/\[/ end=/\]/ skip=/\\[\[\]]/
+-            \ contained
+-syn match cmakeArgument /[^()"]+/
+-            \ contained
+-syn match cmakeVariableValue /\${[^}]*}/
+-            \ contained oneline
+-syn match cmakeEnvironment /\$ENV{.*}/
+-            \ contained
++syn match cmakeEscaped /\(\\\\\|\\"\|\\n\|\\t\)/ contained
++syn region cmakeComment start="#" end="$" contains=cmakeTodo
++syn region cmakeRegistry start=/\[/ end=/]/
++            \ contained oneline contains=CONTAINED,cmakeTodo,cmakeEscaped
++syn region cmakeVariableValue start=/\${/ end=/}/
++            \ contained oneline contains=CONTAINED,cmakeTodo
++syn region cmakeEnvironment start=/\$ENV{/ end=/}/
++            \ contained oneline contains=CONTAINED,cmakeTodo
++syn region cmakeString start=/"/ end=/"/ 
++            \ contains=CONTAINED,cmakeTodo,cmakeOperators
++syn region cmakeArguments start=/(/ end=/)/ 
++            \ contains=ALLBUT,cmakeArguments,cmakeTodo
+ syn keyword cmakeSystemVariables
+-            \ WIN32 UNIX APPLE CYGWIN BORLAND MINGW MSVC MSVC_IDE MSVC60 MSVC70 MSVC71 MSVC80
++            \ WIN32 UNIX APPLE CYGWIN BORLAND MINGW MSVC MSVC_IDE MSVC60 MSVC70 MSVC71 MSVC80 MSVC90
+ syn keyword cmakeOperators
+-            \ AND BOOL CACHE COMMAND DEFINED DOC EQUAL EXISTS FALSE GREATER INTERNAL LESS MATCHES NAME NAMES NAME_WE NOT OFF ON OR PATH PATHS PROGRAM STREQUAL STRGREATER STRING STRLESS TRUE
+-"            \ contained
+-syn region cmakeString start=/"/ end=/"/ skip=/\\"/
+-            \ contains=ALLBUT,cmakeString
+-syn region cmakeArguments start=/\s*(/ end=/)/
+-           \ contains=ALLBUT,cmakeArguments
++            \ ABSOLUTE AND BOOL CACHE COMMAND DEFINED DOC EQUAL EXISTS EXT FALSE GREATER INTERNAL LESS MATCHES NAME NAMES NAME_WE NOT OFF ON OR PATH PATHS PROGRAM STREQUAL STRGREATER STRING STRLESS TRUE
++            \ contained
+ syn keyword cmakeDeprecated ABSTRACT_FILES BUILD_NAME SOURCE_FILES SOURCE_FILES_REMOVE VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WRAP_EXCLUDE_FILES
+-           \ nextgroup=cmakeArgument
+-syn keyword cmakeStatement
+-           \ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ELSEIF ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDIF ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE ENDMACRO
+-           \ nextgroup=cmakeArgumnts
++           \ nextgroup=cmakeArguments
+ 
+-"syn match cmakeMacro /^\s*[A-Z_]\+/ nextgroup=cmakeArgumnts
++" The keywords are generated as:  cmake --help-command-list | tr "\n" " "
++syn keyword cmakeStatement 
++      \ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ELSEIF ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDFUNCTION ENDIF ENDMACRO ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH FUNCTION GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN UNSET USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE
++            \ nextgroup=cmakeArguments
++syn keyword cmakeTodo 
++            \ TODO FIXME XXX 
++            \ contained
+ 
+ " Define the default highlighting.
+ " For version 5.7 and earlier: only when not done already
+@@ -75,7 +69,9 @@
+   HiLink cmakeEnvironment Special
+   HiLink cmakeOperators Operator
+   HiLink cmakeMacro PreProc
+-  HiLink cmakeError	Error
++  HiLink cmakeError Error
++  HiLink cmakeTodo TODO
++  HiLink cmakeEscaped Special
+ 
+   delcommand HiLink
+ endif
+diff -Nur runtime/syntax/config.vim runtime/syntax/config.vim
+--- runtime/syntax/config.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/config.vim	2011-01-18 10:40:56.272284976 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:		configure.in script: M4 with sh
+ " Maintainer:	Christian Hammesr <[email protected]>
+-" Last Change:	2001 May 09
++" Last Change:	2008 Sep 03
+ 
+ " Well, I actually even do not know much about m4. This explains why there
+ " is probably very much missing here, yet !
+@@ -26,7 +26,7 @@
+ syn keyword configkeyword   if then else fi test for in do done
+ syn keyword configspecial   cat rm eval
+ syn region  configstring    start=+"+ skip=+\\"+ end=+"+
+-syn region  configstring    start=+`+ skip=+\\'+ end=+'+
++syn region  configstring    start=+'+ skip=+\\'+ end=+'+
+ syn region  configstring    start=+`+ skip=+\\'+ end=+`+
+ 
+ " Define the default highlighting.
+diff -Nur runtime/syntax/cs.vim runtime/syntax/cs.vim
+--- runtime/syntax/cs.vim	2006-05-03 14:20:02.000000000 -0700
++++ runtime/syntax/cs.vim	2011-01-18 10:40:56.279408252 -0800
+@@ -2,7 +2,7 @@
+ " Language:	C#
+ " Maintainer:	Anduin Withers <[email protected]>
+ " Former Maintainer:	Johannes Zellner <[email protected]>
+-" Last Change:	Sun Apr 30 19:26:18 PDT 2006
++" Last Change:	Fri Aug 14 13:56:37 PDT 2009
+ " Filenames:	*.cs
+ " $Id: cs.vim,v 1.4 2006/05/03 21:20:02 vimboss Exp $
+ "
+@@ -78,8 +78,8 @@
+ syn cluster xmlTagHook add=csXmlTag
+ 
+ syn match   csXmlCommentLeader	+\/\/\/+    contained
+-syn match   csXmlComment	+\/\/\/.*$+ contains=csXmlCommentLeader,@csXml
+-syntax include @csXml <sfile>:p:h/xml.vim
++syn match   csXmlComment	+\/\/\/.*$+ contains=csXmlCommentLeader,@csXml,@Spell
++syntax include @csXml syntax/xml.vim
+ hi def link xmlRegion Comment
+ 
+ 
+@@ -100,7 +100,7 @@
+ " unicode characters
+ syn match   csUnicodeNumber	+\\\(u\x\{4}\|U\x\{8}\)+ contained contains=csUnicodeSpecifier
+ syn match   csUnicodeSpecifier	+\\[uU]+ contained
+-syn region  csVerbatimString	start=+@"+ end=+"+ end=+$+ skip=+""+ contains=csVerbatimSpec,@Spell
++syn region  csVerbatimString	start=+@"+ end=+"+ skip=+""+ contains=csVerbatimSpec,@Spell
+ syn match   csVerbatimSpec	+@"+he=s+1 contained
+ syn region  csString		start=+"+  end=+"+ end=+$+ contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
+ syn match   csCharacter		"'[^']*'" contains=csSpecialChar,csSpecialCharError
+diff -Nur runtime/syntax/cucumber.vim runtime/syntax/cucumber.vim
+--- runtime/syntax/cucumber.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/cucumber.vim	2011-01-18 10:40:56.282809121 -0800
+@@ -0,0 +1,126 @@
++" Vim syntax file
++" Language:     Cucumber
++" Maintainer:   Tim Pope <[email protected]>
++" Filenames:    *.feature
++" Last Change:	2010 May 21
++
++if exists("b:current_syntax")
++    finish
++endif
++
++syn case match
++syn sync minlines=20
++
++let g:cucumber_languages = {
++      \"en": {"and": "And\\>", "background": "Background\\>", "but": "But\\>", "examples": "Scenarios\\>\\|Examples\\>", "feature": "Feature\\>", "given": "Given\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Outline\\>", "then": "Then\\>", "when": "When\\>"},
++      \"ar": {"and": "\\%u0648\\>", "background": "\\%u0627\\%u0644\\%u062e\\%u0644\\%u0641\\%u064a\\%u0629\\>", "but": "\\%u0644\\%u0643\\%u0646\\>", "examples": "\\%u0627\\%u0645\\%u062b\\%u0644\\%u0629\\>", "feature": "\\%u062e\\%u0627\\%u0635\\%u064a\\%u0629\\>", "given": "\\%u0628\\%u0641\\%u0631\\%u0636\\>", "scenario": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648\\>", "scenario_outline": "\\%u0633\\%u064a\\%u0646\\%u0627\\%u0631\\%u064a\\%u0648 \\%u0645\\%u062e\\%u0637\\%u0637\\>", "then": "\\%u0627\\%u0630\\%u0627\\%u064b\\>\\|\\%u062b\\%u0645\\>", "when": "\\%u0639\\%u0646\\%u062f\\%u0645\\%u0627\\>\\|\\%u0645\\%u062a\\%u0649\\>"},
++      \"bg": {"and": "\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u0438\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>", "but": "\\%u041d\\%u043e\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>", "given": "\\%u0414\\%u0430\\%u0434\\%u0435\\%u043d\\%u043e\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0420\\%u0430\\%u043c\\%u043a\\%u0430 \\%u043d\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u041a\\%u043e\\%u0433\\%u0430\\%u0442\\%u043e\\>"},
++      \"ca": {"and": "I\\>", "background": "Antecedents\\>\\|Rerefons\\>", "but": "Per\\%u00f2\\>", "examples": "Exemples\\>", "feature": "Caracter\\%u00edstica\\>\\|Funcionalitat\\>", "given": "At\\%u00e8s\\>\\|Donada\\>\\|Donat\\>\\|Atesa\\>", "scenario": "Escenari\\>", "scenario_outline": "Esquema de l'escenari\\>", "then": "Aleshores\\>\\|Cal\\>", "when": "Quan\\>"},
++      \"cs": {"and": "A tak\\%u00e9\\>\\|A\\>", "background": "Pozad\\%u00ed\\>\\|Kontext\\>", "but": "Ale\\>", "examples": "P\\%u0159\\%u00edklady\\>", "feature": "Po\\%u017eadavek\\>", "given": "Pokud\\>", "scenario": "Sc\\%u00e9n\\%u00e1\\%u0159\\>", "scenario_outline": "N\\%u00e1\\%u010drt Sc\\%u00e9n\\%u00e1\\%u0159e\\>\\|Osnova sc\\%u00e9n\\%u00e1\\%u0159e\\>", "then": "Pak\\>", "when": "Kdy\\%u017e\\>"},
++      \"cy-GB": {"and": "A\\>", "background": "Cefndir\\>", "but": "Ond\\>", "examples": "Enghreifftiau\\>", "feature": "Arwedd\\>", "given": "Anrhegedig a\\>", "scenario": "Scenario\\>", "scenario_outline": "Scenario Amlinellol\\>", "then": "Yna\\>", "when": "Pryd\\>"},
++      \"da": {"and": "Og\\>", "background": "Baggrund\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskab\\>", "given": "Givet\\>", "scenario": "Scenarie\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"},
++      \"de": {"and": "Und\\>", "background": "Grundlage\\>", "but": "Aber\\>", "examples": "Beispiele\\>", "feature": "Funktionalit\\%u00e4t\\>", "given": "Gegeben sei\\>\\|Angenommen\\>", "scenario": "Szenario\\>", "scenario_outline": "Szenariogrundriss\\>", "then": "Dann\\>", "when": "Wenn\\>"},
++      \"en-Scouse": {"and": "An\\>", "background": "Dis is what went down\\>", "but": "Buh\\>", "examples": "Examples\\>", "feature": "Feature\\>", "given": "Youse know when youse got\\>\\|Givun\\>", "scenario": "The thing of it is\\>", "scenario_outline": "Wharrimean is\\>", "then": "Den youse gotta\\>\\|Dun\\>", "when": "Youse know like when\\>\\|Wun\\>"},
++      \"en-au": {"and": "N\\>", "background": "Background\\>", "but": "Cept\\>", "examples": "Cobber\\>", "feature": "Crikey\\>", "given": "Ya know how\\>", "scenario": "Mate\\>", "scenario_outline": "Blokes\\>", "then": "Ya gotta\\>", "when": "When\\>"},
++      \"en-lol": {"and": "AN\\>", "background": "B4\\>", "but": "BUT\\>", "examples": "EXAMPLZ\\>", "feature": "OH HAI\\>", "given": "I CAN HAZ\\>", "scenario": "MISHUN\\>", "scenario_outline": "MISHUN SRSLY\\>", "then": "DEN\\>", "when": "WEN\\>"},
++      \"en-tx": {"and": "And y'all\\>", "background": "Background\\>", "but": "But y'all\\>", "examples": "Examples\\>", "feature": "Feature\\>", "given": "Given y'all\\>", "scenario": "Scenario\\>", "scenario_outline": "All y'all\\>", "then": "Then y'all\\>", "when": "When y'all\\>"},
++      \"eo": {"and": "Kaj\\>", "background": "Fono\\>", "but": "Sed\\>", "examples": "Ekzemploj\\>", "feature": "Trajto\\>", "given": "Donita\\%u0135o\\>", "scenario": "Scenaro\\>", "scenario_outline": "Konturo de la scenaro\\>", "then": "Do\\>", "when": "Se\\>"},
++      \"es": {"and": "Y\\>", "background": "Antecedentes\\>", "but": "Pero\\>", "examples": "Ejemplos\\>", "feature": "Caracter\\%u00edstica\\>", "given": "Dado\\>", "scenario": "Escenario\\>", "scenario_outline": "Esquema del escenario\\>", "then": "Entonces\\>", "when": "Cuando\\>"},
++      \"et": {"and": "Ja\\>", "background": "Taust\\>", "but": "Kuid\\>", "examples": "Juhtumid\\>", "feature": "Omadus\\>", "given": "Eeldades\\>", "scenario": "Stsenaarium\\>", "scenario_outline": "Raamstsenaarium\\>", "then": "Siis\\>", "when": "Kui\\>"},
++      \"fi": {"and": "Ja\\>", "background": "Tausta\\>", "but": "Mutta\\>", "examples": "Tapaukset\\>", "feature": "Ominaisuus\\>", "given": "Oletetaan\\>", "scenario": "Tapaus\\>", "scenario_outline": "Tapausaihio\\>", "then": "Niin\\>", "when": "Kun\\>"},
++      \"fr": {"and": "Et\\>", "background": "Contexte\\>", "but": "Mais\\>", "examples": "Exemples\\>", "feature": "Fonctionnalit\\%u00e9\\>", "given": "Etant donn\\%u00e9\\>\\|Soit\\>", "scenario": "Sc\\%u00e9nario\\>", "scenario_outline": "Plan du sc\\%u00e9nario\\>\\|Plan du Sc\\%u00e9nario\\>", "then": "Alors\\>", "when": "Lorsqu'\\|Lorsque\\>\\|Quand\\>"},
++      \"he": {"and": "\\%u05d5\\%u05d2\\%u05dd\\>", "background": "\\%u05e8\\%u05e7\\%u05e2\\>", "but": "\\%u05d0\\%u05d1\\%u05dc\\>", "examples": "\\%u05d3\\%u05d5\\%u05d2\\%u05de\\%u05d0\\%u05d5\\%u05ea\\>", "feature": "\\%u05ea\\%u05db\\%u05d5\\%u05e0\\%u05d4\\>", "given": "\\%u05d1\\%u05d4\\%u05d9\\%u05e0\\%u05ea\\%u05df\\>", "scenario": "\\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "scenario_outline": "\\%u05ea\\%u05d1\\%u05e0\\%u05d9\\%u05ea \\%u05ea\\%u05e8\\%u05d7\\%u05d9\\%u05e9\\>", "then": "\\%u05d0\\%u05d6\\%u05d9\\>\\|\\%u05d0\\%u05d6\\>", "when": "\\%u05db\\%u05d0\\%u05e9\\%u05e8\\>"},
++      \"hr": {"and": "I\\>", "background": "Pozadina\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primjeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadano\\>\\|Zadani\\>\\|Zadan\\>", "scenario": "Scenarij\\>", "scenario_outline": "Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"},
++      \"hu": {"and": "\\%u00c9s\\>", "background": "H\\%u00e1tt\\%u00e9r\\>", "but": "De\\>", "examples": "P\\%u00e9ld\\%u00e1k\\>", "feature": "Jellemz\\%u0151\\>", "given": "Ha\\>", "scenario": "Forgat\\%u00f3k\\%u00f6nyv\\>", "scenario_outline": "Forgat\\%u00f3k\\%u00f6nyv v\\%u00e1zlat\\>", "then": "Akkor\\>", "when": "Majd\\>"},
++      \"id": {"and": "Dan\\>", "background": "Dasar\\>", "but": "Tapi\\>", "examples": "Contoh\\>", "feature": "Fitur\\>", "given": "Dengan\\>", "scenario": "Skenario\\>", "scenario_outline": "Skenario konsep\\>", "then": "Maka\\>", "when": "Ketika\\>"},
++      \"it": {"and": "E\\>", "background": "Contesto\\>", "but": "Ma\\>", "examples": "Esempi\\>", "feature": "Funzionalit\\%u00e0\\>", "given": "Dato\\>", "scenario": "Scenario\\>", "scenario_outline": "Schema dello scenario\\>", "then": "Allora\\>", "when": "Quando\\>"},
++      \"ja": {"and": "\\%u304b\\%u3064", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u3057\\%u304b\\%u3057\\|\\%u305f\\%u3060\\%u3057\\|\\%u4f46\\%u3057", "examples": "\\%u30b5\\%u30f3\\%u30d7\\%u30eb\\>\\|\\%u4f8b\\>", "feature": "\\%u30d5\\%u30a3\\%u30fc\\%u30c1\\%u30e3\\>\\|\\%u6a5f\\%u80fd\\>", "given": "\\%u524d\\%u63d0", "scenario": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\>", "scenario_outline": "\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30a2\\%u30a6\\%u30c8\\%u30e9\\%u30a4\\%u30f3\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\%u30fc\\%u30c8\\>\\|\\%u30b7\\%u30ca\\%u30ea\\%u30aa\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>\\|\\%u30c6\\%u30f3\\%u30d7\\%u30ec\\>", "then": "\\%u306a\\%u3089\\%u3070", "when": "\\%u3082\\%u3057"},
++      \"ko": {"and": "\\%uadf8\\%ub9ac\\%uace0", "background": "\\%ubc30\\%uacbd\\>", "but": "\\%ud558\\%uc9c0\\%ub9cc\\|\\%ub2e8", "examples": "\\%uc608\\>", "feature": "\\%uae30\\%ub2a5\\>", "given": "\\%uc870\\%uac74\\|\\%uba3c\\%uc800", "scenario": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624\\>", "scenario_outline": "\\%uc2dc\\%ub098\\%ub9ac\\%uc624 \\%uac1c\\%uc694\\>", "then": "\\%uadf8\\%ub7ec\\%uba74", "when": "\\%ub9cc\\%uc77c\\|\\%ub9cc\\%uc57d"},
++      \"lt": {"and": "Ir\\>", "background": "Kontekstas\\>", "but": "Bet\\>", "examples": "Pavyzd\\%u017eiai\\>\\|Scenarijai\\>\\|Variantai\\>", "feature": "Savyb\\%u0117\\>", "given": "Duota\\>", "scenario": "Scenarijus\\>", "scenario_outline": "Scenarijaus \\%u0161ablonas\\>", "then": "Tada\\>", "when": "Kai\\>"},
++      \"lu": {"and": "an\\>\\|a\\>", "background": "Hannergrond\\>", "but": "m\\%u00e4\\>\\|awer\\>", "examples": "Beispiller\\>", "feature": "Funktionalit\\%u00e9it\\>", "given": "ugeholl\\>", "scenario": "Szenario\\>", "scenario_outline": "Plang vum Szenario\\>", "then": "dann\\>", "when": "wann\\>"},
++      \"lv": {"and": "Un\\>", "background": "Situ\\%u0101cija\\>\\|Konteksts\\>", "but": "Bet\\>", "examples": "Piem\\%u0113ri\\>\\|Paraugs\\>", "feature": "Funkcionalit\\%u0101te\\>\\|F\\%u012b\\%u010da\\>", "given": "Kad\\>", "scenario": "Scen\\%u0101rijs\\>", "scenario_outline": "Scen\\%u0101rijs p\\%u0113c parauga\\>", "then": "Tad\\>", "when": "Ja\\>"},
++      \"nl": {"and": "En\\>", "background": "Achtergrond\\>", "but": "Maar\\>", "examples": "Voorbeelden\\>", "feature": "Functionaliteit\\>", "given": "Gegeven\\>\\|Stel\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstract Scenario\\>", "then": "Dan\\>", "when": "Als\\>"},
++      \"no": {"and": "Og\\>", "background": "Bakgrunn\\>", "but": "Men\\>", "examples": "Eksempler\\>", "feature": "Egenskap\\>", "given": "Gitt\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e5r\\>"},
++      \"pl": {"and": "Oraz\\>", "background": "Za\\%u0142o\\%u017cenia\\>", "but": "Ale\\>", "examples": "Przyk\\%u0142ady\\>", "feature": "W\\%u0142a\\%u015bciwo\\%u015b\\%u0107\\>", "given": "Zak\\%u0142adaj\\%u0105c\\>", "scenario": "Scenariusz\\>", "scenario_outline": "Szablon scenariusza\\>", "then": "Wtedy\\>", "when": "Je\\%u017celi\\>"},
++      \"pt": {"and": "E\\>", "background": "Contexto\\>", "but": "Mas\\>", "examples": "Exemplos\\>", "feature": "Funcionalidade\\>", "given": "Dado\\>", "scenario": "Cen\\%u00e1rio\\>\\|Cenario\\>", "scenario_outline": "Esquema do Cen\\%u00e1rio\\>\\|Esquema do Cenario\\>", "then": "Ent\\%u00e3o\\>\\|Entao\\>", "when": "Quando\\>"},
++      \"ro": {"and": "Si\\>", "background": "Conditii\\>", "but": "Dar\\>", "examples": "Exemplele\\>", "feature": "Functionalitate\\>", "given": "Daca\\>", "scenario": "Scenariu\\>", "scenario_outline": "Scenariul de sablon\\>", "then": "Atunci\\>", "when": "Cand\\>"},
++      \"ro-RO": {"and": "\\%u0218i\\>", "background": "Condi\\%u0163ii\\>", "but": "Dar\\>", "examples": "Exemplele\\>", "feature": "Func\\%u021bionalitate\\>", "given": "Dac\\%u0103\\>", "scenario": "Scenariu\\>", "scenario_outline": "Scenariul de \\%u015fablon\\>", "then": "Atunci\\>", "when": "C\\%u00e2nd\\>"},
++      \"ru": {"and": "\\%u041a \\%u0442\\%u043e\\%u043c\\%u0443 \\%u0436\\%u0435\\>\\|\\%u0418\\>", "background": "\\%u041f\\%u0440\\%u0435\\%u0434\\%u044b\\%u0441\\%u0442\\%u043e\\%u0440\\%u0438\\%u044f\\>", "but": "\\%u041d\\%u043e\\>\\|\\%u0410\\>", "examples": "\\%u0417\\%u043d\\%u0430\\%u0447\\%u0435\\%u043d\\%u0438\\%u044f\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>\\|\\%u0424\\%u0438\\%u0447\\%u0430\\>", "given": "\\%u0414\\%u043e\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u044f\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u0415\\%u0441\\%u043b\\%u0438\\>"},
++      \"sk": {"and": "A\\>", "background": "Pozadie\\>", "but": "Ale\\>", "examples": "Pr\\%u00edklady\\>", "feature": "Po\\%u017eiadavka\\>", "given": "Pokia\\%u013e\\>", "scenario": "Scen\\%u00e1r\\>", "scenario_outline": "N\\%u00e1\\%u010drt Scen\\%u00e1ru\\>", "then": "Tak\\>", "when": "Ke\\%u010f\\>"},
++      \"sr-Cyrl": {"and": "\\%u0418\\>", "background": "\\%u041a\\%u043e\\%u043d\\%u0442\\%u0435\\%u043a\\%u0441\\%u0442\\>\\|\\%u041f\\%u043e\\%u0437\\%u0430\\%u0434\\%u0438\\%u043d\\%u0430\\>\\|\\%u041e\\%u0441\\%u043d\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0438\\>", "examples": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0438\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041c\\%u043e\\%u0433\\%u0443\\%u045b\\%u043d\\%u043e\\%u0441\\%u0442\\>\\|\\%u041e\\%u0441\\%u043e\\%u0431\\%u0438\\%u043d\\%u0430\\>", "given": "\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u043e\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0435\\>\\|\\%u0417\\%u0430\\%u0434\\%u0430\\%u0442\\%u0438\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043c\\%u0435\\%u0440\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0458\\%u0430\\>\\|\\%u041a\\%u043e\\%u043d\\%u0446\\%u0435\\%u043f\\%u0442\\>\\|\\%u0421\\%u043a\\%u0438\\%u0446\\%u0430\\>", "then": "\\%u041e\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u041a\\%u0430\\%u0434\\%u0430\\>\\|\\%u041a\\%u0430\\%u0434\\>"},
++      \"sr-Latn": {"and": "I\\>", "background": "Kontekst\\>\\|Pozadina\\>\\|Osnova\\>", "but": "Ali\\>", "examples": "Scenariji\\>\\|Primeri\\>", "feature": "Mogu\\%u0107nost\\>\\|Funkcionalnost\\>\\|Mogucnost\\>\\|Osobina\\>", "given": "Zadato\\>\\|Zadate\\>\\|Zatati\\>", "scenario": "Scenario\\>\\|Primer\\>", "scenario_outline": "Struktura scenarija\\>\\|Koncept\\>\\|Skica\\>", "then": "Onda\\>", "when": "Kada\\>\\|Kad\\>"},
++      \"sv": {"and": "Och\\>", "background": "Bakgrund\\>", "but": "Men\\>", "examples": "Exempel\\>", "feature": "Egenskap\\>", "given": "Givet\\>", "scenario": "Scenario\\>", "scenario_outline": "Abstrakt Scenario\\>", "then": "S\\%u00e5\\>", "when": "N\\%u00e4r\\>"},
++      \"tr": {"and": "Ve\\>", "background": "Ge\\%u00e7mi\\%u015f\\>", "but": "Fakat\\>\\|Ama\\>", "examples": "\\%u00d6rnekler\\>", "feature": "\\%u00d6zellik\\>", "given": "Diyelim ki\\>", "scenario": "Senaryo\\>", "scenario_outline": "Senaryo tasla\\%u011f\\%u0131\\>", "then": "O zaman\\>", "when": "E\\%u011fer ki\\>"},
++      \"uk": {"and": "\\%u0406\\>", "background": "\\%u041f\\%u0435\\%u0440\\%u0435\\%u0434\\%u0443\\%u043c\\%u043e\\%u0432\\%u0430\\>", "but": "\\%u0410\\%u043b\\%u0435\\>", "examples": "\\%u041f\\%u0440\\%u0438\\%u043a\\%u043b\\%u0430\\%u0434\\%u0438\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0456\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u041f\\%u0440\\%u0438\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\%u043e, \\%u0449\\%u043e\\>\\|\\%u041f\\%u0440\\%u0438\\%u043f\\%u0443\\%u0441\\%u0442\\%u0438\\%u043c\\%u043e\\>\\|\\%u041d\\%u0435\\%u0445\\%u0430\\%u0439\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0456\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430 \\%u0441\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0456\\%u044e\\>", "then": "\\%u0422\\%u043e\\>", "when": "\\%u042f\\%u043a\\%u0449\\%u043e\\>"},
++      \"uz": {"and": "\\%u0412\\%u0430\\>", "background": "\\%u0422\\%u0430\\%u0440\\%u0438\\%u0445\\>", "but": "\\%u041b\\%u0435\\%u043a\\%u0438\\%u043d\\>\\|\\%u0411\\%u0438\\%u0440\\%u043e\\%u043a\\>\\|\\%u0410\\%u043c\\%u043c\\%u043e\\>", "examples": "\\%u041c\\%u0438\\%u0441\\%u043e\\%u043b\\%u043b\\%u0430\\%u0440\\>", "feature": "\\%u0424\\%u0443\\%u043d\\%u043a\\%u0446\\%u0438\\%u043e\\%u043d\\%u0430\\%u043b\\>", "given": "\\%u0410\\%u0433\\%u0430\\%u0440\\>", "scenario": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439\\>", "scenario_outline": "\\%u0421\\%u0446\\%u0435\\%u043d\\%u0430\\%u0440\\%u0438\\%u0439 \\%u0441\\%u0442\\%u0440\\%u0443\\%u043a\\%u0442\\%u0443\\%u0440\\%u0430\\%u0441\\%u0438\\>", "then": "\\%u0423\\%u043d\\%u0434\\%u0430\\>", "when": "\\%u0410\\%u0433\\%u0430\\%u0440\\>"},
++      \"vi": {"and": "V\\%u00e0\\>", "background": "B\\%u1ed1i c\\%u1ea3nh\\>", "but": "Nh\\%u01b0ng\\>", "examples": "D\\%u1eef li\\%u1ec7u\\>", "feature": "T\\%u00ednh n\\%u0103ng\\>", "given": "Bi\\%u1ebft\\>\\|Cho\\>", "scenario": "T\\%u00ecnh hu\\%u1ed1ng\\>\\|K\\%u1ecbch b\\%u1ea3n\\>", "scenario_outline": "Khung t\\%u00ecnh hu\\%u1ed1ng\\>\\|Khung k\\%u1ecbch b\\%u1ea3n\\>", "then": "Th\\%u00ec\\>", "when": "Khi\\>"},
++      \"zh-CN": {"and": "\\%u800c\\%u4e14", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u5982", "scenario": "\\%u573a\\%u666f\\>", "scenario_outline": "\\%u573a\\%u666f\\%u5927\\%u7eb2\\>", "then": "\\%u90a3\\%u4e48", "when": "\\%u5f53"},
++      \"zh-TW": {"and": "\\%u800c\\%u4e14\\|\\%u4e26\\%u4e14", "background": "\\%u80cc\\%u666f\\>", "but": "\\%u4f46\\%u662f", "examples": "\\%u4f8b\\%u5b50\\>", "feature": "\\%u529f\\%u80fd\\>", "given": "\\%u5047\\%u8a2d", "scenario": "\\%u5834\\%u666f\\>\\|\\%u5287\\%u672c\\>", "scenario_outline": "\\%u5834\\%u666f\\%u5927\\%u7db1\\>\\|\\%u5287\\%u672c\\%u5927\\%u7db1\\>", "then": "\\%u90a3\\%u9ebc", "when": "\\%u7576"}}
++
++function! s:pattern(key)
++  let language = matchstr(getline(1),'#\s*language:\s*\zs\S\+')
++  if &fileencoding == 'latin1' && language == ''
++    let language = 'en'
++  endif
++  if has_key(g:cucumber_languages, language)
++    let languages = [g:cucumber_languages[language]]
++  else
++    let languages = values(g:cucumber_languages)
++  end
++  return '\<\%('.join(map(languages,'get(v:val,a:key,"\\%(a\\&b\\)")'),'\|').'\)'
++endfunction
++
++function! s:Add(name)
++  let next = " skipempty skipwhite nextgroup=".join(map(["Region","AndRegion","ButRegion","Comment","Table"],'"cucumber".a:name.v:val'),",")
++  exe "syn region cucumber".a:name.'Region matchgroup=cucumber'.a:name.' start="\%(^\s*\)\@<=\%('.s:pattern(tolower(a:name)).'\)" end="$"'.next
++  exe 'syn region cucumber'.a:name.'AndRegion matchgroup=cucumber'.a:name.'And start="\%(^\s*\)\@<='.s:pattern('and').'" end="$" contained'.next
++  exe 'syn region cucumber'.a:name.'ButRegion matchgroup=cucumber'.a:name.'But start="\%(^\s*\)\@<='.s:pattern('but').'" end="$" contained'.next
++  exe 'syn match cucumber'.a:name.'Comment "\%(^\s*\)\@<=#.*" contained'.next
++  exe 'syn match cucumber'.a:name.'Table "\%(^\s*\)\@<=|.*" contained contains=cucumberDelimiter'.next
++  exe 'hi def link cucumber'.a:name.'Comment cucumberComment'
++  exe 'hi def link cucumber'.a:name.'But cucumber'.a:name.'And'
++  exe 'hi def link cucumber'.a:name.'And cucumber'.a:name
++  exe 'syn cluster cucumberStepRegions add=cucumber'.a:name.'Region,cucumber'.a:name.'AndRegion,cucumber'.a:name.'ButRegion'
++endfunction
++
++syn match   cucumberComment  "\%(^\s*\)\@<=#.*"
++syn match   cucumberComment  "\%(\%^\s*\)\@<=#.*" contains=cucumberLanguage
++syn match   cucumberLanguage "\%(#\s*\)\@<=language:" contained
++syn match   cucumberUnparsed "\S.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained
++syn match   cucumberUnparsedComment "#.*" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained
++
++exe 'syn match cucumberFeature "\%(^\s*\)\@<='.s:pattern('feature').':" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty'
++exe 'syn match cucumberBackground "\%(^\s*\)\@<='.s:pattern('background').':"'
++exe 'syn match cucumberScenario "\%(^\s*\)\@<='.s:pattern('scenario').':"'
++exe 'syn match cucumberScenarioOutline "\%(^\s*\)\@<='.s:pattern('scenario_outline').':"'
++exe 'syn match cucumberExamples "\%(^\s*\)\@<='.s:pattern('examples').':" nextgroup=cucumberExampleTable skipempty skipwhite'
++
++syn match   cucumberPlaceholder   "<[^<>]*>" contained containedin=@cucumberStepRegions
++syn match   cucumberExampleTable  "\%(^\s*\)\@<=|.*" contains=cucumberDelimiter
++syn match   cucumberDelimiter     "|" contained
++syn match   cucumberTags          "\%(^\s*\)\@<=\%(@[^@[:space:]]\+\s\+\)*@[^@[:space:]]\+\s*$"
++syn region  cucumberString   start=+\%(^\s*\)\@<="""+ end=+"""+
++
++call s:Add('Then')
++call s:Add('When')
++call s:Add('Given')
++
++hi def link cucumberUnparsedComment   cucumberComment
++hi def link cucumberComment           Comment
++hi def link cucumberLanguage          SpecialComment
++hi def link cucumberFeature           Macro
++hi def link cucumberBackground        Define
++hi def link cucumberScenario          Define
++hi def link cucumberScenarioOutline   Define
++hi def link cucumberExamples          Define
++hi def link cucumberPlaceholder       Constant
++hi def link cucumberDelimiter         Delimiter
++hi def link cucumberTags              Tag
++hi def link cucumberString            String
++hi def link cucumberGiven             Conditional
++hi def link cucumberWhen              Function
++hi def link cucumberThen              Type
++
++let b:current_syntax = "cucumber"
++
++" vim:set sts=2 sw=2:
+diff -Nur runtime/syntax/d.vim runtime/syntax/d.vim
+--- runtime/syntax/d.vim	2006-04-30 09:01:36.000000000 -0700
++++ runtime/syntax/d.vim	2011-04-03 09:27:21.780958987 -0700
+@@ -1,29 +1,44 @@
+-" Vim syntax file for the D programming language (version 0.149).
++" Vim syntax file for the D programming language (version 1.053 and 2.039).
+ "
+ " Language:	D
+-" Maintainer:	Jason Mills<[email protected]>
+-"   When emailing me, please put the word vim somewhere in the subject
+-"   to ensure the email does not get marked as spam.
+-" Last Change:	2006 Apr 30
+-" Version:	0.15
++" Maintainer:	Jason Mills<[email protected]>
++" Last Change:	2010 Jan 07
++" Version:	0.18
++"
++" Contributors:
++"   - Kirk McDonald: version 0.17 updates, with minor modifications
++"     (http://paste.dprogramming.com/dplmb7qx?view=hidelines)
++"   - Jesse K. Phillips: patch for some keywords and attributes (annotations), with modifications
++"   - Tim Keating: patch to fix a bug in highlighting the `\` literal
++"   - Frank Benoit: Fixed a bug that caused some identifiers and numbers to highlight as octal number errors.
++"
++" Please email me with bugs, comments, and suggestions.
+ "
+ " Options:
+-"   d_comment_strings - set to highlight strings and numbers in comments
++"   d_comment_strings - Set to highlight strings and numbers in comments.
+ "
+-"   d_hl_operator_overload - set to highlight D's specially named functions
+-"   that when overloaded implement unary and binary operators (e.g. cmp).
++"   d_hl_operator_overload - Set to highlight D's specially named functions
++"   that when overloaded implement unary and binary operators (e.g. opCmp).
+ "
+ " Todo:
+-"   - Must determine a better method of sync'ing than simply setting minlines
+-"   to a large number for /+ +/.
++"   - Determine a better method of sync'ing than simply setting minlines
++"   to a large number.
+ "
+-"   - Several keywords (namely, in and out) are both storage class and
+-"   statements, depending on their context. Must use some matching to figure
+-"   out which and highlight appropriately. For now I have made such keywords
+-"   statements.
++"   - Several keywords (e.g., in, out, inout) are both storage class and
++"   statements, depending on their context. Perhaps use pattern matching to
++"   figure out which and highlight appropriately. For now I have made such
++"   keywords storage classes so their highlighting is consistent with other
++"   keywords that are commonly used with them, but are true storage classes,
++"   such as lazy. Similarly, I made some statement keywords (e.g. body) storage
++"   classes.
+ "
+ "   - Mark contents of the asm statement body as special
+ "
++"   - Maybe highlight the 'exit', 'failure', and 'success' parts of the
++"   scope() statement.
++"
++"   - Highlighting DDoc comments.
++"
+ 
+ " Quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+@@ -33,46 +48,59 @@
+ " Keyword definitions
+ "
+ syn keyword dExternal		import package module extern
+-syn keyword dConditional	if else switch iftype
++syn keyword dConditional	if else switch
+ syn keyword dBranch		goto break continue
+-syn keyword dRepeat		while for do foreach
++syn keyword dRepeat		while for do foreach foreach_reverse
+ syn keyword dBoolean		true false
+ syn keyword dConstant		null
+-syn keyword dConstant		__FILE__ __LINE__ __DATE__ __TIME__ __TIMESTAMP__
++syn keyword dConstant		__FILE__ __LINE__ __EOF__ __VERSION__
++syn keyword dConstant		__DATE__ __TIME__ __TIMESTAMP__ __VENDOR__
++
+ syn keyword dTypedef		alias typedef
+-syn keyword dStructure		template interface class enum struct union
++syn keyword dStructure		template interface class struct union
++syn keyword dEnum		enum
+ 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 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
+-  syn keyword dOpOverload	opAddAssign opSubAssign opMulAssign opDivAssign
++  syn keyword dOpOverload	opCat_r opEquals opEquals opCmp
++  syn keyword dOpOverload	opAssign opAddAssign opSubAssign opMulAssign opDivAssign
+   syn keyword dOpOverload	opModAssign opAndAssign opOrAssign opXorAssign
+   syn keyword dOpOverload	opShlAssign opShrAssign opUShrAssign opCatAssign
+   syn keyword dOpOverload	opIndex opIndexAssign opCall opSlice opSliceAssign 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 opIn opIn_r
++  syn keyword dOpOverload	opPow opDispatch opStar opDot opApply opApplyReverse
+ endif
+ syn keyword dType		ushort int uint long ulong float
+ syn keyword dType		void byte ubyte double bit char wchar ucent cent
+-syn keyword dType		short bool dchar
++syn keyword dType		short bool dchar string wstring dstring
+ syn keyword dType		real ireal ifloat idouble creal cfloat cdouble
+ syn keyword dDebug		deprecated unittest
+ syn keyword dExceptions		throw try catch finally
+ syn keyword dScopeDecl		public protected private export
+-syn keyword dStatement		version debug return with invariant body scope
+-syn keyword dStatement		in out inout asm mixin
+-syn keyword dStatement		function delegate
+-syn keyword dStorageClass	auto static override final const abstract volatile
+-syn keyword dStorageClass	synchronized
++syn keyword dStatement		version debug return with
++syn keyword dStatement		function delegate __traits asm mixin macro
++syn keyword dStorageClass	in out inout ref lazy scope body
++syn keyword dStorageClass	pure nothrow
++syn keyword dStorageClass	auto static override final abstract volatile __gshared __thread
++syn keyword dStorageClass	synchronized immutable shared const invariant lazy
+ syn keyword dPragma		pragma
+ 
++" Attributes/annotations
++syn match dAnnotation	"@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
+ 
+ " Assert is a statement and a module name.
+ syn match dAssert "^assert\>"
+ syn match dAssert "[^.]\s*\<assert\>"ms=s+1
+ 
++" dTokens is used by the token string highlighting
++syn cluster dTokens contains=dExternal,dConditional,dBranch,dRepeat,dBoolean
++syn cluster dTokens add=dConstant,dTypedef,dStructure,dOperator,dOpOverload
++syn cluster dTokens add=dType,dDebug,dExceptions,dScopeDecl,dStatement
++syn cluster dTokens add=dStorageClass,dPragma,dAssert,dAnnotation
++
+ " Marks contents of the asm statment body as special
+ "
+ " TODO
+@@ -85,12 +113,14 @@
+ " Labels
+ "
+ " We contain dScopeDecl so public: private: etc. are not highlighted like labels
+-syn match dUserLabel	"^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl
++syn match dUserLabel    "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl,dEnum
+ syn keyword dLabel	case default
+ 
++syn cluster dTokens add=dUserLabel,dLabel
++
+ " Comments
+ "
+-syn keyword dTodo	contained TODO FIXME TEMP XXX
++syn keyword dTodo	contained TODO FIXME TEMP REFACTOR REVIEW HACK BUG XXX
+ syn match dCommentStar	contained "^\s*\*[^/]"me=e-1
+ syn match dCommentStar	contained "^\s*\*$"
+ syn match dCommentPlus	contained "^\s*+[^/]"me=e-1
+@@ -114,6 +144,8 @@
+ hi link dCommentStar		dBlockComment
+ hi link dCommentPlus		dNestedComment
+ 
++syn cluster dTokens add=dBlockComment,dNestedComment,dLineComment
++
+ " /+ +/ style comments and strings that span multiple lines can cause
+ " problems. To play it safe, set minlines to a large number.
+ syn sync minlines=200
+@@ -125,24 +157,55 @@
+ syn match dSpecialCharError contained "[^']"
+ 
+ " Escape sequences (oct,specal char,hex,wchar, character entities \&xxx;)
+-" These are not contained because they are considered string litterals
++" These are not contained because they are considered string literals.
+ syn match dEscSequence	"\\\(\o\{1,3}\|[\"\\'\\?ntbrfva]\|u\x\{4}\|U\x\{8}\|x\x\x\)"
+-syn match dEscSequence "\\&[^;& \t]\+;"
++syn match dEscSequence	"\\&[^;& \t]\+;"
+ syn match dCharacter	"'[^']*'" contains=dEscSequence,dSpecialCharError
+ syn match dCharacter	"'\\''" contains=dEscSequence
+ syn match dCharacter	"'[^\\]'"
+ 
++syn cluster dTokens add=dEscSequence,dCharacter
++
+ " Unicode characters
+ "
+ syn match dUnicode "\\u\d\{4\}"
+ 
+-
+ " String.
+ "
+-syn region dString	start=+"+ end=+"[cwd]\=+ contains=dEscSequence,@Spell
+-syn region dRawString	start=+`+ skip=+\\`+ end=+`[cwd]\=+ contains=@Spell
+-syn region dRawString	start=+r"+ skip=+\\"+ end=+"[cwd]\=+ contains=@Spell
+-syn region dHexString	start=+x"+ skip=+\\"+ end=+"[cwd]\=+ contains=@Spell
++syn region dString	start=+"+ end=+"[cwd]\=+ skip=+\\\\\|\\"+ contains=dEscSequence,@Spell
++syn region dRawString	start=+`+ end=+`[cwd]\=+ contains=@Spell
++syn region dRawString	start=+r"+ end=+"[cwd]\=+ contains=@Spell
++syn region dHexString	start=+x"+ end=+"[cwd]\=+ contains=@Spell
++syn region dDelimString	start=+q"\z(.\)+ end=+\z1"+ contains=@Spell
++syn region dHereString	start=+q"\z(\I\i*\)\n+ end=+\n\z1"+ contains=@Spell
++
++" Nesting delimited string contents
++"
++syn region dNestParenString start=+(+ end=+)+ contained transparent contains=dNestParenString,@Spell
++syn region dNestBrackString start=+\[+ end=+\]+ contained transparent contains=dNestBrackString,@Spell
++syn region dNestAngleString start=+<+ end=+>+ contained transparent contains=dNestAngleString,@Spell
++syn region dNestCurlyString start=+{+ end=+}+ contained transparent contains=dNestCurlyString,@Spell
++
++" Nesting delimited strings
++"
++syn region dParenString	matchgroup=dParenString start=+q"(+ end=+)"+ contains=dNestParenString,@Spell
++syn region dBrackString	matchgroup=dBrackString start=+q"\[+ end=+\]"+ contains=dNestBrackString,@Spell
++syn region dAngleString	matchgroup=dAngleString start=+q"<+ end=+>"+ contains=dNestAngleString,@Spell
++syn region dCurlyString	matchgroup=dCurlyString start=+q"{+ end=+}"+ contains=dNestCurlyString,@Spell
++
++hi link dParenString dNestString
++hi link dBrackString dNestString
++hi link dAngleString dNestString
++hi link dCurlyString dNestString
++
++syn cluster dTokens add=dString,dRawString,dHexString,dDelimString,dNestString
++
++" Token strings
++"
++syn region dNestTokenString start=+{+ end=+}+ contained contains=dNestTokenString,@dTokens
++syn region dTokenString matchgroup=dTokenStringBrack transparent start=+q{+ end=+}+ contains=dNestTokenString,@dTokens
++
++syn cluster dTokens add=dTokenString
+ 
+ " Numbers
+ "
+@@ -177,6 +240,8 @@
+ "floating point number, without dot, with exponent
+ syn match dHexFloat	display "\<0x[0-9a-f_]\+p[-+]\=[0-9_]\+[fl]\=i\=\>"
+ 
++syn cluster dTokens add=dDec,dHex,dOctal,dOctalError,dBinary,dFloat,dHexFloat
++
+ syn case match
+ 
+ " Pragma (preprocessor) support
+@@ -205,6 +270,10 @@
+ hi def link dStorageClass	StorageClass
+ hi def link dBoolean		Boolean
+ hi def link dUnicode		Special
++hi def link dTokenStringBrack	String
++hi def link dHereString		String
++hi def link dNestString		String
++hi def link dDelimString	String
+ hi def link dRawString		String
+ hi def link dString		String
+ hi def link dHexString		String
+@@ -213,9 +282,10 @@
+ hi def link dSpecialCharError	Error
+ hi def link dOctalError		Error
+ hi def link dOperator		Operator
+-hi def link dOpOverload		Operator
++hi def link dOpOverload		Identifier
+ hi def link dConstant		Constant
+ hi def link dTypedef		Typedef
++hi def link dEnum		Structure
+ hi def link dStructure		Structure
+ hi def link dTodo		Todo
+ hi def link dType		Type
+@@ -224,7 +294,8 @@
+ hi def link dNestedComment	Comment
+ hi def link dExternal		Include
+ hi def link dPragma		PreProc
++hi def link dAnnotation		PreProc
+ 
+ let b:current_syntax = "d"
+-   
++
+ " vim: ts=8 noet
+diff -Nur runtime/syntax/debchangelog.vim runtime/syntax/debchangelog.vim
+--- runtime/syntax/debchangelog.vim	2008-07-06 10:51:40.000000000 -0700
++++ runtime/syntax/debchangelog.vim	2011-04-03 09:27:21.784601627 -0700
+@@ -3,8 +3,8 @@
+ " Maintainer:  Debian Vim Maintainers <[email protected]>
+ " Former Maintainers: Gerfried Fuchs <[email protected]>
+ "                     Wichert Akkerman <[email protected]>
+-" Last Change: 2008-01-16
+-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debchangelog.vim;hb=debian
++" Last Change: 2010 May 06
++" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debchangelog.vim
+ 
+ " Standard syntax initialization
+ if version < 600
+@@ -17,9 +17,9 @@
+ syn case ignore
+ 
+ " Define some common expressions we can use later on
+-syn match debchangelogName	contained "^[[:alpha:]][[:alnum:].+-]\+ "
++syn match debchangelogName	contained "^[[:alnum:]][[:alnum:].+-]\+ "
+ syn match debchangelogUrgency	contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
+-syn match debchangelogTarget	contained "\v %(%(old)=stable|frozen|unstable|%(testing-|%(old)=stable-)=proposed-updates|experimental|%(sarge|etch|lenny)-%(backports|volatile)|%(testing|%(old)=stable)-security|%(dapper|feisty|gutsy|hardy|intrepid)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
++syn match debchangelogTarget	contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|jaunty|karmic|lucid|maverick)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+ syn match debchangelogVersion	contained "(.\{-})"
+ syn match debchangelogCloses	contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
+ syn match debchangelogLP	contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
+diff -Nur runtime/syntax/debcontrol.vim runtime/syntax/debcontrol.vim
+--- runtime/syntax/debcontrol.vim	2008-07-06 10:51:40.000000000 -0700
++++ runtime/syntax/debcontrol.vim	2011-04-03 09:27:21.793450383 -0700
+@@ -1,14 +1,10 @@
+ " Vim syntax file
+-" Language:	Debian control files
++" Language:    Debian control files
+ " Maintainer:  Debian Vim Maintainers <[email protected]>
+ " Former Maintainers: Gerfried Fuchs <[email protected]>
+ "                     Wichert Akkerman <[email protected]>
+-" Last Change: 2008-02-23
+-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
+-
+-" Comments are very welcome - but please make sure that you are commenting on
+-" the latest version of this file.
+-" SPAM is _NOT_ welcome - be ready to be reported!
++" Last Change: 2009 Aug 17
++" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debcontrol.vim
+ 
+ " Standard syntax initialization
+ if version < 600
+@@ -28,10 +24,10 @@
+ syn match debControlSpace " "
+ 
+ " Define some common expressions we can use later on
+-syn match debcontrolArchitecture contained "\(all\|any\|alpha\|amd64\|arm\(e[bl]\)\=\|hppa\|i386\|ia64\|m32r\|m68k\|mipsel\|mips\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc64\|sparc\|hurd-i386\|kfreebsd-\(i386\|gnu\)\|knetbsd-i386\|netbsd-\(alpha\|i386\)\)"
++syn match debcontrolArchitecture contained "\%(all\|any\|alpha\|amd64\|arm\%(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|lpia\|m32r\|m68k\|mips\%(el\)\=\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc\%(64\)\=\|hurd-i386\|kfreebsd-\%(i386\|amd64\|gnu\)\|knetbsd-i386\|kopensolaris-i386\|netbsd-\%(alpha\|i386\)\)"
+ syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
+ syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
+-syn match debcontrolSection contained "\(\(contrib\|non-free\|non-US/main\|non-US/contrib\|non-US/non-free\|restricted\|universe\|multiverse\)/\)\=\(admin\|base\|comm\|devel\|doc\|editors\|electronics\|embedded\|games\|gnome\|graphics\|hamradio\|interpreters\|kde\|libs\|libdevel\|mail\|math\|misc\|net\|news\|oldlibs\|otherosfs\|perl\|python\|science\|shells\|sound\|text\|tex\|utils\|web\|x11\|debian-installer\)"
++syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
+ syn match debcontrolPackageType contained "u\?deb"
+ syn match debcontrolVariable contained "\${.\{-}}"
+ syn match debcontrolDmUpload contained "\cyes"
+@@ -41,7 +37,7 @@
+ syn match debcontrolHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+ syn match debcontrolVcsSvn contained "\vsvn%(\+ssh)?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+ syn match debcontrolVcsCvs contained "\v%(\-d *)?:pserver:[^@]+\@[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?:/[^[:space:]]*%( [^[:space:]]+)?$"
+-syn match debcontrolVcsGit contained "\vgit://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
++syn match debcontrolVcsGit contained "\v%(git|http)://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$"
+ 
+ " An email address
+ syn match	debcontrolEmail	"[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+"
+@@ -53,7 +49,7 @@
+ syn case ignore
+ 
+ " List of all legal keys
+-syn match debcontrolKey contained "^\(Source\|Package\|Section\|Priority\|Maintainer\|Uploaders\|Build-Depends\|Build-Conflicts\|Build-Depends-Indep\|Build-Conflicts-Indep\|Standards-Version\|Pre-Depends\|Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Essential\|Architecture\|Description\|Bugs\|Origin\|Enhances\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
++syn match debcontrolKey contained "^\%(Source\|Package\|Section\|Priority\|\%(XSBC-Original-\)\=Maintainer\|Uploaders\|Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|Standards-Version\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Essential\|Architecture\|Description\|Bugs\|Origin\|X[SB]-Python-Version\|Homepage\|\(XS-\)\=Vcs-\(Browser\|Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\)\|XC-Package-Type\|\%(XS-\)\=DM-Upload-Allowed\): *"
+ 
+ " Fields for which we do strict syntax checking
+ syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
+@@ -62,15 +58,15 @@
+ syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
+ syn region debcontrolStrictField start="^XC-Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
+ syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
+-syn region debcontrolStrictField start="^\%(XS-\)\?DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
++syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolKey,debcontrolDmUpload oneline
+ 
+ " Catch-all for the other legal fields
+-syn region debcontrolField start="^\(Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X\(S\|B\)-Python-Version\|XSBC-Original-Maintainer\|\(XS-\)\?Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
+-syn region debcontrolMultiField start="^\(Build-\(Conflicts\|Depends\)\(-Indep\)\=\|\(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ ]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable
++syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Essential\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
++syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Provides\|Replaces\|Conflicts\|Enhances\|Breaks\|Uploaders\|Description\):" skip="^ " end="^$"me=s-1 end="^[^ #]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
+ 
+ " Associate our matches and regions with pretty colours
+ if version >= 508 || !exists("did_debcontrol_syn_inits")
+diff -Nur runtime/syntax/debsources.vim runtime/syntax/debsources.vim
+--- runtime/syntax/debsources.vim	2008-07-06 10:51:40.000000000 -0700
++++ runtime/syntax/debsources.vim	2011-04-03 09:27:21.803496191 -0700
+@@ -2,8 +2,8 @@
+ " Language:     Debian sources.list
+ " Maintainer:   Debian Vim Maintainers <[email protected]>
+ " Former Maintainer: Matthijs Mohlmann <[email protected]>
+-" Last Change: 2008-04-25
+-" URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/syntax/debsources.vim;hb=debian
++" Last Change: 2010 May 06
++" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debsources.vim
+ 
+ " Standard syntax initialization
+ if version < 600
+@@ -19,11 +19,11 @@
+ syn match debsourcesKeyword        /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/
+ 
+ " Match comments
+-syn match debsourcesComment        /#.*/
++syn match debsourcesComment        /#.*/  contains=@Spell
+ 
+ " Match uri's
+ syn match debsourcesUri            +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' 	<>"]\++
+-syn match debsourcesDistrKeyword   +\([[:alnum:]_./]*\)\(sarge\|etch\|lenny\|\(old\)\=stable\|testing\|unstable\|sid\|experimental\|dapper\|feisty\|gutsy\|hardy\|intrepid\)\([-[:alnum:]_./]*\)+
++syn match debsourcesDistrKeyword   +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|dapper\|hardy\|jaunty\|karmic\|lucid\|maverick\)\([-[:alnum:]_./]*\)+
+ 
+ " Associate our matches and regions with pretty colours
+ hi def link debsourcesLine            Error
+@@ -33,5 +33,3 @@
+ hi def link debsourcesUri             Constant
+ 
+ let b:current_syntax = "debsources"
+-
+-" vim: ts=8
+diff -Nur runtime/syntax/django.vim runtime/syntax/django.vim
+--- runtime/syntax/django.vim	2007-05-06 03:32:18.000000000 -0700
++++ runtime/syntax/django.vim	2011-01-18 10:40:56.294271251 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:	Django template
+ " Maintainer:	Dave Hodder <[email protected]>
+-" Last Change:	2007 Apr 21
++" Last Change:	2010 May 19
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -18,6 +18,9 @@
+ 
+ " Django template built-in tags and parameters
+ " 'comment' doesn't appear here because it gets special treatment
++syn keyword djangoStatement contained autoescape csrf_token empty
++" FIXME ==, !=, <, >, <=, and >= should be djangoStatements:
++" syn keyword djangoStatement contained == != < > <= >=
+ syn keyword djangoStatement contained and as block endblock by cycle debug else
+ syn keyword djangoStatement contained extends filter endfilter firstof for
+ syn keyword djangoStatement contained endfor if endif ifchanged endifchanged
+@@ -35,15 +38,15 @@
+ " Django templete built-in filters
+ syn keyword djangoFilter contained add addslashes capfirst center cut date
+ syn keyword djangoFilter contained default default_if_none dictsort
+-syn keyword djangoFilter contained dictsortreversed divisibleby escape
++syn keyword djangoFilter contained dictsortreversed divisibleby escape escapejs
+ syn keyword djangoFilter contained filesizeformat first fix_ampersands
+-syn keyword djangoFilter contained floatformat get_digit join length length_is
++syn keyword djangoFilter contained floatformat get_digit join last length length_is
+ syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
+ syn keyword djangoFilter contained lower make_list phone2numeric pluralize
+ syn keyword djangoFilter contained pprint random removetags rjust slice slugify
+-syn keyword djangoFilter contained stringformat striptags
++syn keyword djangoFilter contained safe safeseq stringformat striptags
+ syn keyword djangoFilter contained time timesince timeuntil title
+-syn keyword djangoFilter contained truncatewords unordered_list upper urlencode
++syn keyword djangoFilter contained truncatewords truncatewords_html unordered_list upper urlencode
+ syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
+ 
+ " Keywords to highlight within comments
+@@ -53,7 +56,7 @@
+ syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/
+ 
+ " Mark illegal characters within tag and variables blocks
+-syn match djangoTagError contained "#}\|{{\|[^%]}}\|[<>!&#]"
++syn match djangoTagError contained "#}\|{{\|[^%]}}\|[&#]"
+ syn match djangoVarError contained "#}\|{%\|%}\|[<>!&#%]"
+ 
+ " Django template tag and variable blocks
+diff -Nur runtime/syntax/dosbatch.vim runtime/syntax/dosbatch.vim
+--- runtime/syntax/dosbatch.vim	2008-05-10 13:38:38.000000000 -0700
++++ runtime/syntax/dosbatch.vim	2011-01-18 10:40:56.296178604 -0800
+@@ -2,7 +2,7 @@
+ " Language:	MSDOS batch file (with NT command extensions)
+ " Maintainer:	Mike Williams <[email protected]>
+ " Filenames:    *.bat
+-" Last Change:	10th May 2008
++" Last Change:	6th September 2009
+ " Web Page:     http://www.eandem.co.uk/mrw/vim
+ "
+ " Options Flags:
+@@ -36,7 +36,7 @@
+ syn case match
+ syn keyword dosbatchOperator    EQU NEQ LSS LEQ GTR GEQ
+ syn case ignore
+-syn match dosbatchOperator      "\s[-+\*/%]\s"
++syn match dosbatchOperator      "\s[-+\*/%!~]\s"
+ syn match dosbatchOperator      "="
+ syn match dosbatchOperator      "[-+\*/%]="
+ syn match dosbatchOperator      "\s\(&\||\|^\|<<\|>>\)=\=\s"
+@@ -51,10 +51,10 @@
+ syn match dosbatchCmd		"(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator
+ 
+ " Numbers - surround with ws to not include in dir and filenames
+-syn match dosbatchInteger       "[[:space:]=(/:]\d\+"lc=1
+-syn match dosbatchHex		"[[:space:]=(/:]0x\x\+"lc=1
+-syn match dosbatchBinary	"[[:space:]=(/:]0b[01]\+"lc=1
+-syn match dosbatchOctal		"[[:space:]=(/:]0\o\+"lc=1
++syn match dosbatchInteger       "[[:space:]=(/:,!~-]\d\+"lc=1
++syn match dosbatchHex		"[[:space:]=(/:,!~-]0x\x\+"lc=1
++syn match dosbatchBinary	"[[:space:]=(/:,!~-]0b[01]\+"lc=1
++syn match dosbatchOctal		"[[:space:]=(/:,!~-]0\o\+"lc=1
+ syn cluster dosbatchNumber      contains=dosbatchInteger,dosbatchHex,dosbatchBinary,dosbatchOctal
+ 
+ " Command line switches
+@@ -69,15 +69,15 @@
+ syn match dosbatchIdentifier    contained "\s\h\w*\>"
+ syn match dosbatchVariable	"%\h\w*%"
+ syn match dosbatchVariable	"%\h\w*:\*\=[^=]*=[^%]*%"
+-syn match dosbatchVariable	"%\h\w*:\~\d\+,\d\+%" contains=dosbatchInteger
++syn match dosbatchVariable	"%\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=%" contains=dosbatchInteger
+ syn match dosbatchVariable	"!\h\w*!"
+-syn match dosbatchVariable	"!\h\w*:\*\=[^=]*=[^%]*!"
+-syn match dosbatchVariable	"!\h\w*:\~\d\+,\d\+!" contains=dosbatchInteger
++syn match dosbatchVariable	"!\h\w*:\*\=[^=]*=[^!]*!"
++syn match dosbatchVariable	"!\h\w*:\~[-]\=\d\+\(,[-]\=\d\+\)\=!" contains=dosbatchInteger
+ syn match dosbatchSet		"\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator
+ 
+ " Args to bat files and for loops, etc
+ syn match dosbatchArgument	"%\(\d\|\*\)"
+-syn match dosbatchArgument	"%%[a-z]\>"
++syn match dosbatchArgument	"%[a-z]\>"
+ if dosbatch_cmdextversion == 1
+   syn match dosbatchArgument	"%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
+ else
+@@ -92,7 +92,9 @@
+ 
+ " Comments - usual rem but also two colons as first non-space is an idiom
+ syn match dosbatchComment	"^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
++syn match dosbatchComment	"^@rem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+ syn match dosbatchComment	"\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
++syn match dosbatchComment	"\s@rem\($\|\s.*$\)"lc=5 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+ syn match dosbatchComment	"\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+ 
+ " Comments in ()'s - still to handle spaces before rem
+diff -Nur runtime/syntax/doxygen.vim runtime/syntax/doxygen.vim
+--- runtime/syntax/doxygen.vim	2008-07-22 11:41:00.000000000 -0700
++++ runtime/syntax/doxygen.vim	2011-01-18 10:40:56.297899890 -0800
+@@ -2,8 +2,8 @@
+ " Language:     doxygen on top of c, cpp, idl, java, php
+ " Maintainer:   Michael Geddes <[email protected]>
+ " Author:       Michael Geddes
+-" Last Change:  July 2008
+-" Version:      1.22
++" Last Change:  Jan 2009
++" Version:      1.23
+ "
+ " Copyright 2004-2008 Michael Geddes
+ " Please feel free to use, modify & distribute all or part of this script,
+@@ -239,7 +239,7 @@
+   " #Link hilighting.
+   syn match doxygenHashLink /\([a-zA-Z_][0-9a-zA-Z_]*\)\?#\(\.[0-9a-zA-Z_]\@=\|[a-zA-Z0-9_]\+\|::\|()\)\+/ contained contains=doxygenHashSpecial
+   syn match doxygenHashSpecial /#/ contained
+-  syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@]\+/ contained
++  syn match doxygenHyperLink /\(\s\|^\s*\*\?\)\@<=\(http\|https\|ftp\):\/\/[-0-9a-zA-Z_?&=+#%/.!':;@~]\+/ contained
+ 
+   " Handle \page.  This does not use doxygenBrief.
+   syn match doxygenPage "[\\@]page\>"me=s+1 contained skipwhite nextgroup=doxygenPagePage
+diff -Nur runtime/syntax/erlang.vim runtime/syntax/erlang.vim
+--- runtime/syntax/erlang.vim	2008-03-15 07:01:37.000000000 -0700
++++ runtime/syntax/erlang.vim	2011-01-18 10:40:56.303738659 -0800
+@@ -50,7 +50,7 @@
+     " Operators
+     syn match   erlangOperator         "+\|-\|\*\|\/"
+     syn keyword erlangOperator         div rem or xor bor bxor bsl bsr
+-    syn keyword erlangOperator         and band not bnot
++    syn keyword erlangOperator         and band not bnot andalso orelse
+     syn match   erlangOperator         "==\|/=\|=:=\|=/=\|<\|=<\|>\|>="
+     syn match   erlangOperator         "++\|--\|=\|!\|<-"
+ 
+@@ -123,7 +123,7 @@
+ 
+ if ! exists ("erlang_keywords")
+     " Constants and Directives
+-    syn match   erlangDirective  "-behaviour\|-behaviour"
++    syn match   erlangDirective  "-behaviour\|-behavior"
+     syn match   erlangDirective  "-compile\|-define\|-else\|-endif\|-export\|-file"
+     syn match   erlangDirective  "-ifdef\|-ifndef\|-import\|-include_lib\|-include"
+     syn match   erlangDirective  "-module\|-record\|-undef"
+diff -Nur runtime/syntax/eruby.vim runtime/syntax/eruby.vim
+--- runtime/syntax/eruby.vim	2008-06-29 07:00:31.000000000 -0700
++++ runtime/syntax/eruby.vim	2011-01-18 10:40:56.304185133 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:		eRuby
+-" Maintainer:		Tim Pope <[email protected]>
+-" Info:			$Id: eruby.vim,v 1.23 2008/06/29 04:18:43 tpope Exp $
++" Maintainer:		Tim Pope <[email protected]>
++" Last Change:		2010 Apr 15
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+@@ -22,7 +22,10 @@
+   let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+   let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
+   if b:eruby_subtype == ''
+-    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\)\+$','',''),'\.\zs\w\+$')
++    let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+')
++  endif
++  if b:eruby_subtype == ''
++    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$')
+   endif
+   if b:eruby_subtype == 'rhtml'
+     let b:eruby_subtype = 'html'
+@@ -56,13 +59,13 @@
+ syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment
+ 
+ exe 'syn region  erubyOneLiner   matchgroup=erubyDelimiter start="^%\{1,'.b:eruby_nest_level.'\}%\@!"    end="$"     contains=@rubyTop	     containedin=ALLBUT,@erubyRegions keepend oneline'
+-exe 'syn region  erubyBlock      matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}%\@!-\=" end="-\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop        containedin=ALLBUT,@erubyRegions keepend'
+-exe 'syn region  erubyExpression matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}="       end="-\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop        containedin=ALLBUT,@erubyRegions keepend'
+-exe 'syn region  erubyComment    matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}#"       end="-\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend'
++exe 'syn region  erubyBlock      matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}%\@!-\=" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend'
++exe 'syn region  erubyExpression matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}=\{1,4}" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend'
++exe 'syn region  erubyComment    matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}#"       end="%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend'
+ 
+ " Define the default highlighting.
+ 
+-hi def link erubyDelimiter		Delimiter
++hi def link erubyDelimiter		PreProc
+ hi def link erubyComment		Comment
+ 
+ let b:current_syntax = 'eruby'
+diff -Nur runtime/syntax/fan.vim runtime/syntax/fan.vim
+--- runtime/syntax/fan.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/fan.vim	2011-01-18 10:40:56.308308080 -0800
+@@ -0,0 +1,132 @@
++" Vim syntax file
++" Language:     Fantom
++" Maintainer:   Kamil Toman <[email protected]>
++" Last Change:  2010 May 27
++" Based on Java syntax file by Claudio Fleiner <[email protected]>
++
++" Quit when a syntax file was already loaded
++if exists("b:current_syntax")
++  finish
++endif
++
++" keyword definitions
++syn keyword fanExternal	        using native
++syn keyword fanError		goto void serializable volatile
++syn keyword fanConditional	if else switch
++syn keyword fanRepeat		do while for foreach each
++syn keyword fanBoolean		true false
++syn keyword fanConstant 	null
++syn keyword fanTypedef		this super
++syn keyword fanOperator	        new is isnot as
++syn keyword fanLongOperator     plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare
++syn keyword fanType		Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj
++syn keyword fanStatement	return
++syn keyword fanStorageClass	static const final
++syn keyword fanSlot      	virtual override once
++syn keyword fanField      	readonly
++syn keyword fanExceptions	throw try catch finally
++syn keyword fanAssert		assert
++syn keyword fanTypedef		class enum mixin
++syn match   fanFacet            "@[_a-zA-Z][_a-zA-Z0-9_]*\>"
++syn keyword fanBranch		break continue
++syn keyword fanScopeDecl	public internal protected private abstract
++
++if exists("fan_space_errors")
++  if !exists("fan_no_trail_space_error")
++    syn match   fanSpaceError  "\s\+$"
++  endif
++  if !exists("fan_no_tab_space_error")
++    syn match   fanSpaceError  " \+\t"me=e-1
++  endif
++endif
++
++syn region  fanLabelRegion     transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter
++syn keyword fanLabel		default
++syn keyword fanLabel		case
++
++" The following cluster contains all fan groups except the contained ones
++syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel
++
++" Comments
++syn keyword fanTodo		 contained TODO FIXME XXX
++syn region  fanComment		 start="/\*"  end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell
++syn match   fanCommentStar      contained "^\s*\*[^/]"me=e-1
++syn match   fanCommentStar      contained "^\s*\*$"
++syn match   fanLineComment      "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell
++syn match   fanDocComment       "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell
++hi def link fanCommentString fanString
++hi def link fanComment2String fanString
++hi def link fanCommentCharacter fanCharacter
++
++syn cluster fanTop add=fanComment,fanLineComment,fanDocComment
++
++" match the special comment /**/
++syn match   fanComment		 "/\*\*/"
++
++" Strings and constants
++syn match   fanSpecialError    	 	contained "\\."
++syn match   fanSpecialCharError 	contained "[^']"
++syn match   fanSpecialChar      	contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
++syn match   fanStringSubst      	contained "\$[A-Za-z][A-Za-z_.]*"
++syn match   fanStringSubst      	contained "\${[^}]*}"
++syn region  fanString		start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
++syn region  fanTripleString	start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
++syn region  fanDSL		start=+<|+ end=+|>+ 
++syn match   fanUri		 "`[^`]*`"
++syn match   fanCharacter	 "'[^']*'" contains=fanSpecialChar,fanSpecialCharError
++syn match   fanCharacter	 "'\\''" contains=fanSpecialChar
++syn match   fanCharacter	 "'[^\\]'"
++syn match   fanNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
++syn match   fanNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
++syn match   fanNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
++syn match   fanNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
++
++syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError
++
++" The default highlighting.
++hi def link fanBranch			Conditional
++hi def link fanLabel			Label
++hi def link fanUserLabel		Label
++hi def link fanConditional		Conditional
++hi def link fanRepeat			Repeat
++hi def link fanExceptions		Exception
++hi def link fanAssert			Statement
++hi def link fanStorageClass		StorageClass
++hi def link fanSlot        		StorageClass
++hi def link fanField        		StorageClass
++hi def link fanScopeDecl		StorageClass
++hi def link fanBoolean		Boolean
++hi def link fanSpecial		Special
++hi def link fanSpecialError		Error
++hi def link fanSpecialCharError	Error
++hi def link fanTripleString		String
++hi def link fanString			String
++hi def link fanDSL			String
++hi def link fanCharacter		String
++hi def link fanStringSubst		Identifier
++hi def link fanUri			SpecialChar
++hi def link fanSpecialChar		SpecialChar
++hi def link fanNumber			Number
++hi def link fanError			Error
++hi def link fanStringError		Error
++hi def link fanStatement		Statement
++hi def link fanOperator		Operator
++hi def link fanLongOperator		Operator
++hi def link fanComment		Comment
++hi def link fanDocComment		Comment
++hi def link fanLineComment		Comment
++hi def link fanConstant		Constant
++hi def link fanTypedef		Typedef
++hi def link fanTodo			Todo
++hi def link fanFacet                  PreProc
++
++hi def link fanCommentTitle		SpecialComment
++hi def link fanCommentStar		SpecialComment
++hi def link fanType			Identifier
++hi def link fanExternal		Include
++
++hi def link fanSpaceError		Error
++
++let b:current_syntax = "fan"
++
++" vim: ts=8
+diff -Nur runtime/syntax/form.vim runtime/syntax/form.vim
+--- runtime/syntax/form.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/form.vim	2011-01-18 10:40:56.310948585 -0800
+@@ -1,7 +1,10 @@
+ " Vim syntax file
+ " Language:	FORM
++" Version: 2.0
+ " Maintainer:	Michael M. Tung <[email protected]>
+-" Last Change:	2001 May 10
++" Last Change: <Thu Oct 23 13:11:21 CEST 2008>
++" Past Change: <October 2008 Thomas Reiter [email protected]>
++" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
+ 
+ " First public release based on 'Symbolic Manipulation with FORM'
+ " by J.A.M. Vermaseren, CAN, Netherlands, 1991.
+@@ -18,30 +21,73 @@
+ 
+ syn case ignore
+ 
+-" A bunch of useful FORM keywords
++" a bunch of useful FORM keywords
+ syn keyword formType		global local
+ syn keyword formHeaderStatement	symbol symbols cfunction cfunctions
+ syn keyword formHeaderStatement	function functions vector vectors
+-syn keyword formHeaderStatement	set sets index indices
++syn keyword formHeaderStatement tensor tensors ctensor ctensors
++syn keyword formHeaderStatement	set sets index indices table ctable
+ syn keyword formHeaderStatement	dimension dimensions unittrace
+-syn keyword formStatement	id identify drop skip
+-syn keyword formStatement	write nwrite
+-syn keyword formStatement	format print nprint load save
+-syn keyword formStatement	bracket brackets
+-syn keyword formStatement	multiply count match only discard
+-syn keyword formStatement	trace4 traceN contract symmetrize antisymmetrize
+-syn keyword formConditional	if else endif while
++syn keyword formConditional	if else elseif endif while
+ syn keyword formConditional	repeat endrepeat label goto
++syn keyword formConditional     argument endargument exit
++syn keyword formConditional     inexpression inside term
++syn keyword formConditional     endinexpression endinside endterm
++syn keyword formStatement       abrackets also antibrackets antisymmetrize
++syn keyword formStatement       argexplode argimplode apply auto autodeclare
++syn keyword formStatement       brackets chainin chainout chisholm cleartable
++syn keyword formStatement       collect commuting compress contract
++syn keyword formStatement       cyclesymmetrize deallocatetable delete
++syn keyword formStatement       dimension discard disorder drop factarg fill
++syn keyword formStatement       fillexpression fixindex format funpowers hide
++syn keyword formStatement       identify idnew idold ifmatch inparallel
++syn keyword formStatement       insidefirst keep load makeinteger many metric
++syn keyword formStatement       moduleoption modulus multi multiply ndrop
++syn keyword formStatement       nfunctions nhide normalize notinparallel
++syn keyword formStatement       nprint nskip ntable ntensors nunhide nwrite
++syn keyword formStatement       off on once only polyfun pophide print
++syn keyword formStatement       printtable propercount pushhide ratio
++syn keyword formStatement       rcyclesymmetrize redefine renumber
++syn keyword formStatement       replaceinarg replaceloop save select
++syn keyword formStatement       setexitflag skip slavepatchsize sort splitarg
++syn keyword formStatement       splitfirstarg splitlastarg sum symmetrize
++syn keyword formStatement       tablebase testuse threadbucketsize totensor
++syn keyword formStatement       tovector trace4 tracen tryreplace unhide
++syn keyword formStatement       unittrace vectors write
++" for compatibility with older FORM versions:
++syn keyword formStatement       id bracket count match traceN
+ 
+ " some special functions
+-syn keyword formStatement	g_ gi_ g5_ g6_ g7_ 5_ 6_ 7_
+-syn keyword formStatement	e_ d_ delta_ theta_ sum_ sump_
++syn keyword formStatement       abs_ bernoulli_ binom_ conjg_ count_
++syn keyword formStatement       d_ dd_ delta_ deltap_ denom_ distrib_
++syn keyword formStatement       dum_ dummy_ dummyten_ e_ exp_ fac_
++syn keyword formStatement       factorin_ firstbracket_ g5_ g6_ g7_
++syn keyword formStatement       g_ gcd_ gi_ integer_ invfac_ match_
++syn keyword formStatement       max_ maxpowerof_ min_ minpowerof_
++syn keyword formStatement       mod_ nargs_ nterms_ pattern_ poly_
++syn keyword formStatement       polyadd_ polydiv_ polygcd_ polyintfac_
++syn keyword formStatement       polymul_ polynorm_ polyrem_ polysub_
++syn keyword formStatement       replace_ reverse_ root_ setfun_ sig_
++syn keyword formStatement       sign_ sum_ sump_ table_ tbl_ term_
++syn keyword formStatement       termsin_ termsinbracket_ theta_ thetap_ 
++syn keyword formStatement	5_ 6_ 7_
++
++syn keyword formReserved        sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
++syn keyword formReserved        atan_ atan2_ sinh_ cosh_ tanh_ asinh_
++syn keyword formReserved        acosh_ atanh_ li2_ lin_ 
++
++syn keyword formTodo            contained TODO FIXME XXX
++
++syn match   formSpecial         display contained "\\\(n\|t\|b\|\\\|\"\)"
++syn match   formSpecial         display contained "%\(%\|e\|E\|s\|f\|\$\)"
++syn match   formSpecial         "\<N\d\+_[?]"
+ 
+ " pattern matching for keywords
+-syn match   formComment		"^\ *\*.*$"
+-syn match   formComment		"\;\ *\*.*$"
+-syn region  formString		start=+"+  end=+"+
++syn match   formComment		"^\ *\*.*$" contains=formTodo
++syn match   formComment		"\;\ *\*.*$" contains=formTodo
++syn region  formString		start=+"+  end=+"+ contains=formSpecial
+ syn region  formString		start=+'+  end=+'+
++syn region  formNestedString	start=+`+  end=+'+ contains=formNestedString
+ syn match   formPreProc		"^\=\#[a-zA-z][a-zA-Z0-9]*\>"
+ syn match   formNumber		"\<\d\+\>"
+ syn match   formNumber		"\<\d\+\.\d*\>"
+@@ -50,6 +96,13 @@
+ syn match   formNumber		"-\.\d" contains=Number
+ syn match   formNumber		"i_\+\>"
+ syn match   formNumber		"fac_\+\>"
++" pattern matching wildcards
++syn match   formNumber		"?[A-z0-9]*"
++" dollar-variables (new in 3.x)
++syn match   formNumber		"\\$[A-z0-9]*"
++" scalar products
++syn match   formNumber		"^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>"
++
+ syn match   formDirective	"^\=\.[a-zA-z][a-zA-Z0-9]*\>"
+ 
+ " hi User Labels
+@@ -74,6 +127,10 @@
+   HiLink formDirective		PreProc
+   HiLink formType		Type
+   HiLink formString		String
++  HiLink formNestedString	String
++  HiLink formReserved           Error
++  HiLink formTodo               Todo
++  HiLink formSpecial            SpecialChar
+ 
+   if !exists("form_enhanced_color")
+     HiLink formHeaderStatement	Statement
+diff -Nur runtime/syntax/forth.vim runtime/syntax/forth.vim
+--- runtime/syntax/forth.vim	2008-07-18 04:10:01.000000000 -0700
++++ runtime/syntax/forth.vim	2011-01-18 10:40:56.311677077 -0800
+@@ -1,11 +1,11 @@
+ " Vim syntax file
+ " Language:    FORTH
+ " Maintainer:  Christian V. J. Br�ssow <[email protected]>
+-" Last Change: Sa 09 Feb 2008 13:27:29 CET
++" Last Change: Di 07 Jul 2009 21:38:45 CEST
+ " Filenames:   *.fs,*.ft
+ " URL:	       http://www.cvjb.de/comp/vim/forth.vim
+ 
+-" $Id: forth.vim,v 1.11 2008/02/09 13:17:01 bruessow Exp $
++" $Id: forth.vim,v 1.12 2008/07/07 21:39:12 bruessow Exp $
+ 
+ " The list of keywords is incomplete, compared with the offical ANS
+ " wordlist. If you use this language, please improve it, and send me
+@@ -17,6 +17,11 @@
+ 
+ " Many Thanks to...
+ "
++" 2009-06-28:
++" Josh Grams send a patch to allow the parenthesis comments at the
++" beginning of a line. That patch also fixed a typo in one of the
++" comments.
++"
+ " 2008-02-09:
+ " Shawn K. Quinn <sjquinn at speakeasy dot net> send a big patch with
+ " new words commonly used in Forth programs or defined by GNU Forth.
+@@ -209,7 +214,7 @@
+ syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
+ syn keyword forthConversion F>S S>F
+ 
+-" interptreter, wordbook, compiler
++" interpreter, wordbook, compiler
+ syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE
+ syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET
+ syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( )
+@@ -258,7 +263,7 @@
+ syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError
+ syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError
+ syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError
+-syn region forthComment start='\s(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
++syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
+ syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError
+ 
+ " Include files
+diff -Nur runtime/syntax/fortran.vim runtime/syntax/fortran.vim
+--- runtime/syntax/fortran.vim	2006-04-22 04:22:12.000000000 -0700
++++ runtime/syntax/fortran.vim	2011-04-03 09:27:21.808926009 -0700
+@@ -2,7 +2,7 @@
+ " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
+ " Version:	0.88
+ " URL:		http://www.unb.ca/chem/ajit/syntax/fortran.vim
+-" Last Change:	2006 Apr. 22
++" Last Change:	2008 Nov 01
+ " Maintainer:	Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
+ " Usage:	Do :help fortran-syntax from Vim
+ " Credits:
+@@ -300,7 +300,7 @@
+     syn match fortranLabelError	"^.\{-,4}[^0-9 ]" contains=fortranTab
+     syn match fortranLabelError	"^.\{4}\d\S"
+   endif
+-  syn match fortranComment		excludenl "^[!c*].*$" contains=@fortranCommentGroup
++  syn match fortranComment		excludenl "^[!c*].*$" contains=@fortranCommentGroup,@spell
+   syn match fortranLeftMargin		transparent "^ \{5}"
+   syn match fortranContinueMark		display "^.\{5}\S"lc=5
+ else
+diff -Nur runtime/syntax/fstab.vim runtime/syntax/fstab.vim
+--- runtime/syntax/fstab.vim	2008-01-16 12:52:16.000000000 -0800
++++ runtime/syntax/fstab.vim	2011-01-18 10:40:56.314654460 -0800
+@@ -2,14 +2,15 @@
+ " Language: fstab file
+ " Maintaner: Radu Dineiu <[email protected]>
+ " URL: http://ld.yi.org/vim/fstab.vim
+-" Last Change: 2008 Jan 16
+-" Version: 0.92
++" Last Change: 2009 Feb 04
++" Version: 0.93
+ "
+ " Credits:
+ "   David Necas (Yeti) <[email protected]>
+ "   Stefano Zacchiroli <[email protected]>
+ "   Georgi Georgiev <[email protected]>
+ "   James Vega <[email protected]>
++"   Elias Probst <[email protected]>
+ "
+ " Options:
+ "   let fstab_unknown_fs_errors = 1
+@@ -46,7 +47,7 @@
+ " Type
+ syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
+ syn match fsTypeUnknown /\s\+\zs\w\+/ contained
+-syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
++syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
+ 
+ " Options
+ " -------
+@@ -91,7 +92,21 @@
+ syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
+ syn keyword fsOptionsExt3Journal contained update inum
+ syn keyword fsOptionsExt3Data contained journal ordered writeback
+-syn keyword fsOptionsKeywords contained noload
++syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl noacl
++
++" Options: ext4
++syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal
++syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data
++syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier
++syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber
++syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber
++syn keyword fsOptionsExt4Journal contained update inum
++syn keyword fsOptionsExt4Data contained journal ordered writeback
++syn match fsOptionsExt4Barrier /[0-1]/
++syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh
+ 
+ " Options: fat
+ syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize
+@@ -241,6 +256,9 @@
+ 	HiLink fsOptionsExt2Errors String
+ 	HiLink fsOptionsExt3Journal String
+ 	HiLink fsOptionsExt3Data String
++	HiLink fsOptionsExt4Journal String
++	HiLink fsOptionsExt4Data String
++	HiLink fsOptionsExt4Barrier Number
+ 	HiLink fsOptionsFatCheck String
+ 	HiLink fsOptionsConv String
+ 	HiLink fsOptionsFatType Number
+diff -Nur runtime/syntax/gdb.vim runtime/syntax/gdb.vim
+--- runtime/syntax/gdb.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/gdb.vim	2011-01-18 10:40:56.316129441 -0800
+@@ -2,7 +2,7 @@
+ " Language:	GDB command files
+ " Maintainer:	Claudio Fleiner <[email protected]>
+ " URL:		http://www.fleiner.com/vim/syntax/gdb.vim
+-" Last Change:	2003 Jan 04
++" Last Change:	2009 May 25
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -35,7 +35,7 @@
+ " some commonly used abreviations
+ syn keyword gdbStatement c disp undisp disas p
+ 
+-syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end$"
++syn region gdbDocument matchgroup=gdbFuncDef start="\<document\>.*$" matchgroup=gdbFuncDef end="^end\s*$"
+ 
+ syn match gdbStatement "\<add-shared-symbol-files\>"
+ syn match gdbStatement "\<add-symbol-file\>"
+diff -Nur runtime/syntax/git.vim runtime/syntax/git.vim
+--- runtime/syntax/git.vim	2008-04-15 20:15:49.000000000 -0700
++++ runtime/syntax/git.vim	2011-01-18 10:40:56.317112541 -0800
+@@ -1,10 +1,10 @@
+ " Vim syntax file
+ " Language:	generic git output
+-" Maintainer:	Tim Pope <[email protected]>
+-" Last Change:	2008 Mar 21
++" Maintainer:	Tim Pope <[email protected]>
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+-    finish
++  finish
+ endif
+ 
+ syn case match
+@@ -13,14 +13,19 @@
+ syn include @gitDiff syntax/diff.vim
+ 
+ syn region gitHead start=/\%^/ end=/^$/
+-syn region gitHead start=/\%(^commit \x\{40\}$\)\@=/ end=/^$/
++syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
+ 
+ " For git reflog and git show ...^{tree}, avoid sync issues
+ syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/
+ syn match gitHead /^\x\{40\} \x\{40}\t.*/
+ 
+-syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff fold
+-syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --git \|$\)\@=/ contains=@gitDiff
++syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold
++syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff
++
++syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
++syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
++syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
++syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
+ 
+ syn match  gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
+ syn match  gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
+@@ -29,8 +34,6 @@
+ syn match  gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
+ syn match  gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
+ syn match  gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite
+-syn match  gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
+-syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
+ 
+ syn match  gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite
+ syn match  gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite
+@@ -42,14 +45,20 @@
+ syn match  gitType      /\<\%(tag\|commit\|tree\|blob\)\>/     contained nextgroup=gitHash skipwhite
+ syn match  gitStage     /\<\d\t\@=/                            contained
+ syn match  gitReference /\S\+\S\@!/                            contained
+-syn match  gitHash      /\<\x\{40\}\>/                         contained nextgroup=gitIdentity,gitStage skipwhite
++syn match  gitHash      /\<\x\{40\}\>/                         contained nextgroup=gitIdentity,gitStage,gitHash skipwhite
+ syn match  gitHash      /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite
++syn match  gitHashAbbrev /\<\x\{4,40\}\>/           contained nextgroup=gitHashAbbrev skipwhite
+ syn match  gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite
+-syn match  gitHashAbbrev /\<\x\{40\}\>/             contained nextgroup=gitHashAbbrev skipwhite
++
++syn match  gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
++syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
++
++syn match  gitNotesHeader /^Notes:\ze\n    /
+ 
+ hi def link gitDateHeader        gitIdentityHeader
+ hi def link gitIdentityHeader    gitIdentityKeyword
+ hi def link gitIdentityKeyword   Label
++hi def link gitNotesHeader       gitKeyword
+ hi def link gitReflogHeader      gitKeyword
+ hi def link gitKeyword           Keyword
+ hi def link gitIdentity          String
+@@ -63,5 +72,7 @@
+ hi def link gitReference         Function
+ hi def link gitStage             gitType
+ hi def link gitType              Type
++hi def link gitDiffAdded         diffAdded
++hi def link gitDiffRemoved       diffRemoved
+ 
+ let b:current_syntax = "git"
+diff -Nur runtime/syntax/gitcommit.vim runtime/syntax/gitcommit.vim
+--- runtime/syntax/gitcommit.vim	2008-04-15 15:46:45.000000000 -0700
++++ runtime/syntax/gitcommit.vim	2011-01-18 10:40:56.317485961 -0800
+@@ -1,63 +1,81 @@
+ " Vim syntax file
+ " Language:	git commit file
+-" Maintainer:	Tim Pope <[email protected]>
++" Maintainer:	Tim Pope <[email protected]>
+ " Filenames:	*.git/COMMIT_EDITMSG
+-" Last Change:	2008 Apr 09
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+-    finish
++  finish
+ endif
+ 
+ syn case match
+ syn sync minlines=50
+ 
+ if has("spell")
+-    syn spell toplevel
++  syn spell toplevel
+ endif
+ 
+ syn include @gitcommitDiff syntax/diff.vim
+-syn region gitcommitDiff start=/\%(^diff --git \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff
++syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff
+ 
+ syn match   gitcommitFirstLine	"\%^[^#].*"  nextgroup=gitcommitBlank skipnl
+-syn match   gitcommitSummary  	"^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
++syn match   gitcommitSummary	"^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
+ syn match   gitcommitOverflow	".*" contained contains=@Spell
+ syn match   gitcommitBlank	"^[^#].*" contained contains=@Spell
+ syn match   gitcommitComment	"^#.*"
+-syn region  gitcommitHead	start=/^#   / end=/^#$/ contained transparent
++syn match   gitcommitHead	"^\%(#   .*\n\)\+#$" contained transparent
+ syn match   gitcommitOnBranch	"\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+-syn match   gitcommitBranch	"\S\+" contained
++syn match   gitcommitOnBranch	"\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
++syn match   gitcommitBranch	"[^ \t']\+" contained
++syn match   gitcommitNoBranch	"\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment
+ syn match   gitcommitHeader	"\%(^# \)\@<=.*:$"	contained containedin=gitcommitComment
++syn region  gitcommitAuthor	matchgroup=gitCommitHeader start=/\%(^# \)\@<=\%(Author\|Committer\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent
++syn match   gitcommitNoChanges	"\%(^# \)\@<=No changes$" contained containedin=gitcommitComment
+ 
+ syn region  gitcommitUntracked	start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold
+ syn match   gitcommitUntrackedFile  "\t\@<=.*"	contained
+ 
+ syn region  gitcommitDiscarded	start=/^# Changed but not updated:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold
+ syn region  gitcommitSelected	start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold
++syn region  gitcommitUnmerged	start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold
+ 
+ syn match   gitcommitDiscardedType	"\t\@<=[a-z][a-z ]*[a-z]: "he=e-2	contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite
+ syn match   gitcommitSelectedType	"\t\@<=[a-z][a-z ]*[a-z]: "he=e-2	contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite
++syn match   gitcommitUnmergedType	"\t\@<=[a-z][a-z ]*[a-z]: "he=e-2	contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite
+ syn match   gitcommitDiscardedFile	".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
+ syn match   gitcommitSelectedFile	".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
++syn match   gitcommitUnmergedFile	".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
+ syn match   gitcommitDiscardedArrow	" -> " contained nextgroup=gitcommitDiscardedFile
+ syn match   gitcommitSelectedArrow	" -> " contained nextgroup=gitcommitSelectedFile
++syn match   gitcommitUnmergedArrow	" -> " contained nextgroup=gitcommitSelectedFile
++
++syn match   gitcommitWarning		"\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl
++syn match   gitcommitWarning		"^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained
++syn match   gitcommitWarning		"^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$"
+ 
+ hi def link gitcommitSummary		Keyword
+ hi def link gitcommitComment		Comment
+ hi def link gitcommitUntracked		gitcommitComment
+ hi def link gitcommitDiscarded		gitcommitComment
+ hi def link gitcommitSelected		gitcommitComment
++hi def link gitcommitUnmerged		gitcommitComment
+ hi def link gitcommitOnBranch		Comment
+ hi def link gitcommitBranch		Special
++hi def link gitcommitNoBranch		gitCommitBranch
+ hi def link gitcommitDiscardedType	gitcommitType
+ hi def link gitcommitSelectedType	gitcommitType
++hi def link gitcommitUnmergedType	gitcommitType
+ hi def link gitcommitType		Type
++hi def link gitcommitNoChanges		gitcommitHeader
+ hi def link gitcommitHeader		PreProc
+ hi def link gitcommitUntrackedFile	gitcommitFile
+ hi def link gitcommitDiscardedFile	gitcommitFile
+ hi def link gitcommitSelectedFile	gitcommitFile
++hi def link gitcommitUnmergedFile	gitcommitFile
+ hi def link gitcommitFile		Constant
+ hi def link gitcommitDiscardedArrow	gitcommitArrow
+ hi def link gitcommitSelectedArrow	gitcommitArrow
++hi def link gitcommitUnmergedArrow	gitcommitArrow
+ hi def link gitcommitArrow		gitcommitComment
+ "hi def link gitcommitOverflow		Error
+ hi def link gitcommitBlank		Error
+diff -Nur runtime/syntax/gitconfig.vim runtime/syntax/gitconfig.vim
+--- runtime/syntax/gitconfig.vim	2008-06-04 08:45:44.000000000 -0700
++++ runtime/syntax/gitconfig.vim	2011-01-18 10:40:56.317804164 -0800
+@@ -1,11 +1,11 @@
+ " Vim syntax file
+ " Language:	git config file
+-" Maintainer:	Tim Pope <[email protected]>
++" Maintainer:	Tim Pope <[email protected]>
+ " Filenames:	gitconfig, .gitconfig, *.git/config
+-" Last Change:	2008 Jun 04
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+-    finish
++  finish
+ endif
+ 
+ setlocal iskeyword+=-
+diff -Nur runtime/syntax/gitrebase.vim runtime/syntax/gitrebase.vim
+--- runtime/syntax/gitrebase.vim	2008-04-16 01:12:25.000000000 -0700
++++ runtime/syntax/gitrebase.vim	2011-01-18 10:40:56.318296019 -0800
+@@ -1,11 +1,11 @@
+ " Vim syntax file
+ " Language:	git rebase --interactive
+-" Maintainer:	Tim Pope <[email protected]>
++" Maintainer:	Tim Pope <[email protected]>
+ " Filenames:	git-rebase-todo
+-" Last Change:	2008 Apr 16
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+-    finish
++  finish
+ endif
+ 
+ syn case match
+@@ -13,19 +13,23 @@
+ syn match   gitrebaseHash   "\v<\x{7,40}>"                             contained
+ syn match   gitrebaseCommit "\v<\x{7,40}>"  nextgroup=gitrebaseSummary skipwhite
+ syn match   gitrebasePick   "\v^p%(ick)=>"   nextgroup=gitrebaseCommit skipwhite
++syn match   gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
+ syn match   gitrebaseEdit   "\v^e%(dit)=>"   nextgroup=gitrebaseCommit skipwhite
+ syn match   gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
++syn match   gitrebaseFixup  "\v^f%(ixup)=>"  nextgroup=gitrebaseCommit skipwhite
+ syn match   gitrebaseSummary ".*"               contains=gitrebaseHash contained
+ syn match   gitrebaseComment "^#.*"             contains=gitrebaseHash
+-syn match   gitrebaseSquashError "\v%^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
++syn match   gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite
+ 
+ hi def link gitrebaseCommit         gitrebaseHash
+ hi def link gitrebaseHash           Identifier
+ hi def link gitrebasePick           Statement
++hi def link gitrebaseReword         Number
+ hi def link gitrebaseEdit           PreProc
+ hi def link gitrebaseSquash         Type
++hi def link gitrebaseFixup          Special
+ hi def link gitrebaseSummary        String
+ hi def link gitrebaseComment        Comment
+-hi def link gitrebaseSquashError     Error
++hi def link gitrebaseSquashError    Error
+ 
+ let b:current_syntax = "gitrebase"
+diff -Nur runtime/syntax/gitsendemail.vim runtime/syntax/gitsendemail.vim
+--- runtime/syntax/gitsendemail.vim	2008-03-01 09:18:06.000000000 -0800
++++ runtime/syntax/gitsendemail.vim	2011-01-18 10:40:56.318590337 -0800
+@@ -2,10 +2,10 @@
+ " Language:	git send-email message
+ " Maintainer:	Tim Pope
+ " Filenames:	*.msg.[0-9]* (first line is "From ... # This line is ignored.")
+-" Last Change:	2007 Dec 16
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+-    finish
++  finish
+ endif
+ 
+ runtime! syntax/mail.vim
+diff -Nur runtime/syntax/groovy.vim runtime/syntax/groovy.vim
+--- runtime/syntax/groovy.vim	2006-03-24 08:29:41.000000000 -0800
++++ runtime/syntax/groovy.vim	2011-04-03 09:27:21.810203546 -0700
+@@ -228,6 +228,7 @@
+   " syntax include @groovyHtml <sfile>:p:h/html.vim
+    syntax include @groovyHtml runtime! syntax/html.vim
+   unlet b:current_syntax
++  syntax spell default  " added by Bram
+   syn region  groovyDocComment    start="/\*\*"  end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell
+   syn region  groovyCommentTitle  contained matchgroup=groovyDocComment start="/\*\*"   matchgroup=groovyCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@groovyHtml,groovyCommentStar,groovyTodo,@Spell,groovyDocTags
+ 
+diff -Nur runtime/syntax/haml.vim runtime/syntax/haml.vim
+--- runtime/syntax/haml.vim	2008-08-08 15:29:41.000000000 -0700
++++ runtime/syntax/haml.vim	2011-04-03 09:27:21.810755055 -0700
+@@ -1,7 +1,8 @@
+ " Vim syntax file
+ " Language:     Haml
+-" Maintainer:   Tim Pope <[email protected]>
++" Maintainer:   Tim Pope <[email protected]>
+ " Filenames:    *.haml
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -20,46 +21,58 @@
+ 
+ syn case match
+ 
+-syn cluster hamlComponent    contains=hamlAttributes,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
+-syn cluster hamlEmbeddedRuby contains=hamlAttributes,hamlObject,hamlRuby,hamlRubyFilter
++syn region  rubyCurlyBlock   start="{" end="}" contains=@hamlRubyTop contained containedin=rubyInterpolation
++syn cluster hamlRubyTop add=rubyCurlyBlock
++
++syn cluster hamlComponent    contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
++syn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter
+ syn cluster hamlTop          contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment
+ 
+-syn match   hamlBegin "^\s*[<>&]\@!" nextgroup=hamlTag,hamlAttributes,hamlClassChar,hamlIdChar,hamlObject,hamlRuby,hamlPlainChar,hamlInterpolatable
++syn match   hamlBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable
+ 
+ syn match   hamlTag        "%\w\+" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent
+-syn region  hamlAttributes matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent
+-syn region  hamlObject     matchgroup=hamlObjectDelimiter   start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent
++syn region  hamlAttributes     matchgroup=hamlAttributesDelimiter start="(" end=")" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent
++syn region  hamlAttributesHash matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent
++syn region  hamlObject         matchgroup=hamlObjectDelimiter     start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent
+ syn match   hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
+ syn match   hamlSelfCloser "/" contained
+ syn match   hamlClassChar "\." contained nextgroup=hamlClass
+-syn match   hamlIdChar    "#"  contained nextgroup=hamlId
++syn match   hamlIdChar "#{\@!" contained nextgroup=hamlId
+ syn match   hamlClass "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
+ syn match   hamlId    "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
+ syn region  hamlDocType start="^\s*!!!" end="$"
+ 
+-syn region  hamlRuby   matchgroup=hamlRubyOutputChar start="[=~]" end="$" contained contains=@hamlRubyTop keepend
+-syn region  hamlRuby   matchgroup=hamlRubyChar       start="-"    end="$" contained contains=@hamlRubyTop keepend
++syn region  hamlRuby   matchgroup=hamlRubyOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
++syn region  hamlRuby   matchgroup=hamlRubyChar       start="-"           skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
+ syn match   hamlPlainChar "\\" contained
+-syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="==" end="$" keepend contained contains=hamlInterpolation
+-syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contained contains=@hamlRubyTop
++syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="!\===\|!=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop
++syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="&==\|&=\@!"   end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape
++syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop
++syn match  hamlInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
+ syn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start="<%[=-]\=" end="-\=%>" contained contains=@hamlRubyTop
+ 
+-syn match   hamlHelper  "\<action_view?\|\.\@<!\<\%(flatten\|open\|puts\)" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop,rubyInterpolation
+-syn keyword hamlHelper   capture_haml find_and_preserve  html_attrs init_haml_helpers list_of preced preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop,rubyInterpolation
++syn region  hamlAttributeString start=+\%(=\s*\)\@<='+ skip=+\%(\\\\\)*\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape
++syn region  hamlAttributeString start=+\%(=\s*\)\@<="+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=hamlInterpolation,hamlInterpolationEscape
++syn match   hamlAttributeVariable "\%(=\s*\)\@<=\%(@@\=\|\$\)\=\w\+" contained
++
++syn match   hamlHelper  "\<action_view?\|\<block_is_haml?\|\<is_haml?\|\.\@<!\<flatten" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop,rubyInterpolation
++syn keyword hamlHelper   capture_haml escape_once find_and_preserve haml_concat haml_indent haml_tag html_attrs html_esape init_haml_helpers list_of non_haml precede preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop,rubyInterpolation
+ 
+ syn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline
+-syn region  hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|erb\|redcloth\|textile\|markdown\)\s*$" end="^\%(\z1 \)\@!" contains=@hamlHtmlTop,rubyInterpolation
+-syn region  hamlEscapedFilter matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\)\s*$" end="^\%(\z1 \)\@!" contains=rubyInterpolation
+-syn region  hamlErbFilter  matchgroup=hamlFilter start="^\z(\s*\):erb\s*$" end="^\%(\z1 \)\@!" contains=@hamlHtmlTop,hamlErbInterpolation
+-syn region  hamlRubyFilter  matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \)\@!" contains=@hamlRubyTop
+-syn region  hamlSassFilter  matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \)\@!" contains=@hamlSassTop
++syn region  hamlPlainFilter      matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|redcloth\|textile\|markdown\|maruku\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,rubyInterpolation
++syn region  hamlEscapedFilter    matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\|cdata\)\s*$"    end="^\%(\z1 \| *$\)\@!" contains=rubyInterpolation
++syn region  hamlErbFilter        matchgroup=hamlFilter start="^\z(\s*\):erb\s*$"        end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlErbInterpolation
++syn region  hamlRubyFilter       matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$"       end="^\%(\z1 \| *$\)\@!" contains=@hamlRubyTop
++syn region  hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,rubyInterpolation keepend
++syn region  hamlCSSFilter        matchgroup=hamlFilter start="^\z(\s*\):css\s*$"        end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,rubyInterpolation keepend
++syn region  hamlSassFilter       matchgroup=hamlFilter start="^\z(\s*\):sass\s*$"       end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop
+ 
+-syn region  hamlJavascriptBlock start="^\z(\s*\)%script" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \)\@!" contains=@hamlTop,@htmlJavaScript keepend
+-syn region  hamlCssBlock        start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \)\@!" contains=@hamlTop,@htmlCss keepend
++syn region  hamlJavascriptBlock start="^\z(\s*\)%script" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend
++syn region  hamlCssBlock        start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError  end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend
+ syn match   hamlError "\$" contained
+ 
+-syn region  hamlComment     start="^\z(\s*\)-#" end="^\%(\z1 \)\@!" contains=rubyTodo
+-syn region  hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \)\@!" contains=@hamlTop,rubyTodo
++syn region  hamlComment     start="^\z(\s*\)-#" end="^\%(\z1 \| *$\)\@!" contains=rubyTodo
++syn region  hamlHtmlComment start="^\z(\s*\)/"  end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,rubyTodo
+ syn match   hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment
+ 
+ hi def link hamlSelfCloser             Special
+@@ -74,6 +87,9 @@
+ hi def link hamlRubyOutputChar         hamlRubyChar
+ hi def link hamlRubyChar               Special
+ hi def link hamlInterpolationDelimiter Delimiter
++hi def link hamlInterpolationEscape    Special
++hi def link hamlAttributeString        String
++hi def link hamlAttributeVariable      Identifier
+ hi def link hamlDocType                PreProc
+ hi def link hamlFilter                 PreProc
+ hi def link hamlAttributesDelimiter    Delimiter
+@@ -86,4 +102,8 @@
+ 
+ let b:current_syntax = "haml"
+ 
++if main_syntax == "haml"
++  unlet main_syntax
++endif
++
+ " vim:set sw=2:
+diff -Nur runtime/syntax/haskell.vim runtime/syntax/haskell.vim
+--- runtime/syntax/haskell.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/haskell.vim	2011-01-18 10:40:56.324892187 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:		Haskell
+ " Maintainer:		Haskell Cafe mailinglist <[email protected]>
+-" Last Change:		2004 Feb 23
++" Last Change:		2008 Dec 15
+ " Original Author:	John Williams <[email protected]>
+ "
+ " Thanks to Ryan Crumley for suggestions and John Meacham for
+@@ -30,6 +30,7 @@
+ "	       in eol comment character class
+ " 2004 Feb 23: Made the leading comments somewhat clearer where it comes
+ "	       to attribution of work.
++" 2008 Dec 15: Added comments as contained element in import statements
+ 
+ " Remove any old syntax stuff hanging around
+ if version < 600
+@@ -67,7 +68,7 @@
+ " because otherwise they would match as keywords at the start of a
+ " "literate" comment (see lhs.vim).
+ syn match hsModule		"\<module\>"
+-syn match hsImport		"\<import\>.*"he=s+6 contains=hsImportMod
++syn match hsImport		"\<import\>.*"he=s+6 contains=hsImportMod,hsLineComment,hsBlockComment
+ syn match hsImportMod		contained "\<\(as\|qualified\|hiding\)\>"
+ syn match hsInfix		"\<\(infix\|infixl\|infixr\)\>"
+ syn match hsStructure		"\<\(class\|data\|deriving\|instance\|default\|where\)\>"
+diff -Nur runtime/syntax/help.vim runtime/syntax/help.vim
+--- runtime/syntax/help.vim	2006-05-12 23:42:22.000000000 -0700
++++ runtime/syntax/help.vim	2011-04-03 09:27:21.811440324 -0700
+@@ -1,14 +1,14 @@
+ " Vim syntax file
+ " Language:	Vim help file
+ " Maintainer:	Bram Moolenaar ([email protected])
+-" Last Change:	2006 May 13
++" Last Change:	2009 May 18
+ 
+ " Quit when a (custom) syntax file was already loaded
+ if exists("b:current_syntax")
+   finish
+ endif
+ 
+-syn match helpHeadline		"^[-A-Z .]\+[ \t]\+\*"me=e-1
++syn match helpHeadline		"^[-A-Z .][-A-Z0-9 .()]*[ \t]\+\*"me=e-1
+ syn match helpSectionDelim	"^=\{3,}.*===$"
+ syn match helpSectionDelim	"^-\{3,}.*--$"
+ syn region helpExample		matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
+@@ -116,6 +116,17 @@
+   exe "runtime syntax/help_" . strpart(expand("%"), s:i + 1, 2) . ".vim"
+ endif
+ 
++" Italian
++if v:lang =~ '\<IT\>' || v:lang =~? "italian"
++  syn keyword helpNote		nota Nota NOTA nota: Nota: NOTA: notare Notare
++  syn match helpSpecial		"Nma"me=e-2
++  syn match helpSpecial		"Nme"me=e-2
++  syn match helpSpecial		"Nmi"me=e-2
++  syn match helpSpecial		"Nmo"me=e-2
++  syn match helpSpecial		"\[interv.]"
++  syn region helpNotVi		start="{non" start="{solo" start="{disponibile" end="}" contains=helpLeadBlank,helpHyperTextJump
++endif
++
+ syn sync minlines=40
+ 
+ 
+diff -Nur runtime/syntax/indent.vim runtime/syntax/indent.vim
+--- runtime/syntax/indent.vim	2007-06-17 08:02:22.000000000 -0700
++++ runtime/syntax/indent.vim	2011-01-18 10:40:56.333973983 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         indent(1) configuration file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2007-06-17
++" Latest Revision:  2010-01-23
+ "   indent_is_bsd:  If exists, will change somewhat to match BSD implementation
+ "
+ " TODO: is the deny-all (a la lilo.vim nice or no?)...
+@@ -27,7 +27,7 @@
+                           \ contains=indentTodo,@Spell
+ 
+ if !exists("indent_is_bsd")
+-  syn match indentOptions '-i\|--indentation-level'
++  syn match indentOptions '-i\|--indentation-level\|-il\|--indent-level'
+                         \ nextgroup=indentNumber skipwhite skipempty
+ endif
+ syn match   indentOptions '-\%(bli\|c\%([bl]i\|[dip]\)\=\|di\=\|ip\=\|lc\=\|pp\=i\|sbi\|ts\|-\%(brace-indent\|comment-indentation\|case-brace-indentation\|declaration-comment-column\|continuation-indentation\|case-indentation\|else-endif-column\|line-comments-indentation\|declaration-indentation\|indent-level\|parameter-indentation\|line-length\|comment-line-length\|paren-indentation\|preprocessor-indentation\|struct-brace-indentation\|tab-size\)\)'
+@@ -123,6 +123,7 @@
+                         \ -ut --use-tabs
+                         \ -v --verbose
+                         \ -version --version
++                        \ -linux --linux-style
+ 
+ if exists("indent_is_bsd")
+   syn keyword indentOptions -ip -ei -nei
+diff -Nur runtime/syntax/java.vim runtime/syntax/java.vim
+--- runtime/syntax/java.vim	2007-12-20 15:14:48.000000000 -0800
++++ runtime/syntax/java.vim	2011-01-18 10:40:56.339598275 -0800
+@@ -1,8 +1,7 @@
+-" Vim syntax file
+-" Language:     Java
+-" Maintainer:   Claudio Fleiner <[email protected]>
++" Vim syntax file " Language:	  Java
++" Maintainer:	Claudio Fleiner <[email protected]>
+ " URL:		http://www.fleiner.com/vim/syntax/java.vim
+-" Last Change:  2007 Dec 21
++" Last Change:	2010 March 23
+ 
+ " Please check :help java.vim for comments on some of the options available.
+ 
+@@ -15,6 +14,7 @@
+   endif
+   " we define it here so that included files can test for it
+   let main_syntax='java'
++  syn region javaFold start="{" end="}" transparent fold
+ endif
+ 
+ " don't use standard HiLink, it will not work with included syntax files
+@@ -58,8 +58,8 @@
+ 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 match   javaAnnotation	"@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$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		"\.\.\."
+@@ -68,7 +68,7 @@
+ if exists("java_highlight_java_lang_ids")
+   let java_highlight_all=1
+ endif
+-if exists("java_highlight_all")  || exists("java_highlight_java")  || exists("java_highlight_java_lang")
++if exists("java_highlight_all")  || exists("java_highlight_java")  || exists("java_highlight_java_lang") 
+   " java.lang.*
+   syn match javaLangClass "\<System\>"
+   syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
+@@ -109,23 +109,18 @@
+ 
+ if exists("java_space_errors")
+   if !exists("java_no_trail_space_error")
+-    syn match   javaSpaceError  "\s\+$"
++    syn match	javaSpaceError	"\s\+$"
+   endif
+   if !exists("java_no_tab_space_error")
+-    syn match   javaSpaceError  " \+\t"me=e-1
++    syn match	javaSpaceError	" \+\t"me=e-1
+   endif
+ endif
+ 
+-syn region  javaLabelRegion     transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
+-syn match   javaUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
++syn region  javaLabelRegion	transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
++syn match   javaUserLabel	"^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
+ syn keyword javaLabel		default
+ 
+ if !exists("java_allow_cpp_keywords")
+-  " The default used to be to highlight C++ keywords.  But several people
+-  " don't like that, so default to not highlighting these.
+-  let java_allow_cpp_keywords = 1
+-endif
+-if !java_allow_cpp_keywords
+   syn keyword javaError auto delete extern friend inline redeclared
+   syn keyword javaError register signed sizeof struct template typedef union
+   syn keyword javaError unsigned operator
+@@ -139,7 +134,7 @@
+ syn keyword javaTodo		 contained TODO FIXME XXX
+ if exists("java_comment_strings")
+   syn region  javaCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
+-  syn region  javaComment2String   contained start=+"+  end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell
++  syn region  javaComment2String   contained start=+"+	end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell
+   syn match   javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
+   syn match   javaCommentCharacter contained "'\\''" contains=javaSpecialChar
+   syn match   javaCommentCharacter contained "'[^\\]'"
+@@ -147,9 +142,9 @@
+   syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
+ endif
+ syn region  javaComment		 start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
+-syn match   javaCommentStar      contained "^\s*\*[^/]"me=e-1
+-syn match   javaCommentStar      contained "^\s*\*$"
+-syn match   javaLineComment      "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
++syn match   javaCommentStar	 contained "^\s*\*[^/]"me=e-1
++syn match   javaCommentStar	 contained "^\s*\*$"
++syn match   javaLineComment	 "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
+ JavaHiLink javaCommentString javaString
+ JavaHiLink javaComment2String javaString
+ JavaHiLink javaCommentCharacter javaCharacter
+@@ -161,14 +156,19 @@
+   " syntax coloring for javadoc comments (HTML)
+   syntax include @javaHtml <sfile>:p:h/html.vim
+   unlet b:current_syntax
+-  syn region  javaDocComment    start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
+-  syn region  javaCommentTitle  contained matchgroup=javaDocComment start="/\*\*"   matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
+-
+-  syn region javaDocTags         contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
+-  syn match  javaDocTags         contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
+-  syn match  javaDocParam        contained "\s\S\+"
+-  syn match  javaDocTags         contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
+-  syn region javaDocSeeTag       contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
++  " HTML enables spell checking for all text that is not in a syntax item. This
++  " is wrong for Java (all identifiers would be spell-checked), so it's undone
++  " here.
++  syntax spell default
++
++  syn region  javaDocComment	start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
++  syn region  javaCommentTitle	contained matchgroup=javaDocComment start="/\*\*"   matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
++
++  syn region javaDocTags	 contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
++  syn match  javaDocTags	 contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
++  syn match  javaDocParam	 contained "\s\S\+"
++  syn match  javaDocTags	 contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
++  syn region javaDocSeeTag	 contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
+   syn match  javaDocSeeTagParam  contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
+   syntax case match
+ endif
+@@ -177,9 +177,9 @@
+ syn match   javaComment		 "/\*\*/"
+ 
+ " Strings and constants
+-syn match   javaSpecialError     contained "\\."
++syn match   javaSpecialError	 contained "\\."
+ syn match   javaSpecialCharError contained "[^']"
+-syn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
++syn match   javaSpecialChar	 contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+ syn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
+ " next line disabled, it can cause a crash for a long line
+ "syn match   javaStringError	  +"\([^"\\]\|\\.\)*$+
+@@ -205,8 +205,8 @@
+   else
+     " This line catches method declarations at any indentation>0, but it assumes
+     " two things:
+-    "   1. class names are always capitalized (ie: Button)
+-    "   2. method names are never capitalized (except constructors, of course)
++    "	1. class names are always capitalized (ie: Button)
++    "	2. method names are never capitalized (except constructors, of course)
+     syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses
+   endif
+   syn match  javaBraces  "[{}]"
+@@ -218,7 +218,7 @@
+   " Strings and constants
+   syn match   javaDebugSpecial		contained "\\\d\d\d\|\\."
+   syn region  javaDebugString		contained start=+"+  end=+"+  contains=javaDebugSpecial
+-  syn match   javaDebugStringError      +"\([^"\\]\|\\.\)*$+
++  syn match   javaDebugStringError	+"\([^"\\]\|\\.\)*$+
+   syn match   javaDebugCharacter	contained "'[^\\]'"
+   syn match   javaDebugSpecialCharacter contained "'\\.'"
+   syn match   javaDebugSpecialCharacter contained "'\\''"
+@@ -264,17 +264,17 @@
+ endif
+ 
+ " catch errors caused by wrong parenthesis
+-syn region  javaParenT  transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1
++syn region  javaParenT	transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1
+ syn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
+ syn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT  contained
+-syn match   javaParenError       ")"
++syn match   javaParenError	 ")"
+ " catch errors caused by wrong square parenthesis
+-syn region  javaParenT  transparent matchgroup=javaParen  start="\["  end="\]" contains=@javaTop,javaParenT1
++syn region  javaParenT	transparent matchgroup=javaParen  start="\["  end="\]" contains=@javaTop,javaParenT1
+ syn region  javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
+ syn region  javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT  contained
+-syn match   javaParenError       "\]"
++syn match   javaParenError	 "\]"
+ 
+-JavaHiLink javaParenError       javaError
++JavaHiLink javaParenError	javaError
+ 
+ if !exists("java_minlines")
+   let java_minlines = 10
+@@ -287,7 +287,7 @@
+     let did_java_syn_inits = 1
+   endif
+   JavaHiLink javaFuncDef		Function
+-  JavaHiLink javaVarArg                 Function
++  JavaHiLink javaVarArg			Function
+   JavaHiLink javaBraces			Function
+   JavaHiLink javaBranch			Conditional
+   JavaHiLink javaUserLabelRef		javaUserLabel
+@@ -319,7 +319,7 @@
+   JavaHiLink javaConstant		Constant
+   JavaHiLink javaTypedef		Typedef
+   JavaHiLink javaTodo			Todo
+-  JavaHiLink javaAnnotation             PreProc
++  JavaHiLink javaAnnotation		PreProc
+ 
+   JavaHiLink javaCommentTitle		SpecialComment
+   JavaHiLink javaDocTags		Special
+diff -Nur runtime/syntax/javascript.vim runtime/syntax/javascript.vim
+--- runtime/syntax/javascript.vim	2006-06-20 01:07:23.000000000 -0700
++++ runtime/syntax/javascript.vim	2011-01-18 10:40:56.340370139 -0800
+@@ -7,7 +7,7 @@
+ "		(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:	2006 Jun 19
++" Last Change:	2010 Mar 25
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -28,16 +28,14 @@
+   unlet javaScript_fold
+ endif
+ 
+-syn case ignore
+-
+ 
+ syn keyword javaScriptCommentTodo      TODO FIXME XXX TBD contained
+ syn match   javaScriptLineComment      "\/\/.*" contains=@Spell,javaScriptCommentTodo
+ syn match   javaScriptCommentSkip      "^[ \t]*\*\($\|[ \t]\+\)"
+ syn region  javaScriptComment	       start="/\*"  end="\*/" contains=@Spell,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]\+\>"
+@@ -51,7 +49,7 @@
+ syn keyword javaScriptStatement		return with
+ syn keyword javaScriptBoolean		true false
+ syn keyword javaScriptNull		null undefined
+-syn keyword javaScriptIdentifier	arguments this var
++syn keyword javaScriptIdentifier	arguments this var let
+ syn keyword javaScriptLabel		case default
+ syn keyword javaScriptException		try catch finally throw
+ syn keyword javaScriptMessage		alert confirm prompt status
+@@ -61,7 +59,7 @@
+ 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\>"
++    syn match	javaScriptFunction	"\<function\>"
+     syn region	javaScriptFunctionFold	start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
+ 
+     syn sync match javaScriptSync	grouphere javaScriptFunctionFold "\<function\>"
+@@ -70,7 +68,7 @@
+     setlocal foldmethod=syntax
+     setlocal foldtext=getline(v:foldstart)
+ else
+-    syn keyword	javaScriptFunction      function
++    syn keyword javaScriptFunction	function
+     syn match	javaScriptBraces	   "[{}\[\]]"
+     syn match	javaScriptParens	   "[()]"
+ endif
+diff -Nur runtime/syntax/kconfig.vim runtime/syntax/kconfig.vim
+--- runtime/syntax/kconfig.vim	2006-04-19 13:49:04.000000000 -0700
++++ runtime/syntax/kconfig.vim	2011-01-18 10:40:56.349027448 -0800
+@@ -1,6 +1,6 @@
+ " Vim syntax file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-04-14
++" Latest Revision:  2009-05-25
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -666,9 +666,9 @@
+ 
+ syn match   kconfigComment            display '#.*$' contains=kconfigTodo
+ 
+-syn keyword kconfigKeyword            config menuconfig comment menu mainmenu
++syn keyword kconfigKeyword            config menuconfig comment mainmenu
+ 
+-syn keyword kconfigConditional        choice endchoice if endif
++syn keyword kconfigConditional        menu endmenu choice endchoice if endif
+ 
+ syn keyword kconfigPreProc            source
+                                       \ nextgroup=kconfigPath
+diff -Nur runtime/syntax/lex.vim runtime/syntax/lex.vim
+--- runtime/syntax/lex.vim	2005-09-06 10:27:26.000000000 -0700
++++ runtime/syntax/lex.vim	2011-04-03 09:27:21.812553886 -0700
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language:	Lex
+-" Maintainer:	Dr. Charles E. Campbell, Jr. <[email protected]>
+-" Last Change:	Sep 06, 2005
+-" Version:	7
++" Maintainer:	Charles E. Campbell, Jr. <[email protected]>
++" Last Change:	Sep 11, 2009
++" Version:	10
+ " URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Option:
+@@ -16,7 +16,7 @@
+   finish
+ endif
+ 
+-" Read the C syntax to start with
++" Read the C/C++ syntax to start with
+ if version >= 600
+   if exists("lex_uses_cpp")
+     runtime! syntax/cpp.vim
+@@ -36,32 +36,60 @@
+ " --- Lex stuff ---
+ " --- ========= ---
+ 
+-"I'd prefer to use lex.* , but it doesn't handle forward definitions yet
++"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet
+ syn cluster lexListGroup		contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
+-syn cluster lexListPatCodeGroup	contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
++syn cluster lexListPatCodeGroup	contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
+ 
+ " Abbreviations Section
+-syn region lexAbbrvBlock	start="^\(\h\+\s\|%{\)" end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
++if has("folding")
++ syn region lexAbbrvBlock	fold start="^\(\h\+\s\|%{\)"	end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
++else
++ syn region lexAbbrvBlock	start="^\(\h\+\s\|%{\)"	end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
++endif
+ syn match  lexAbbrv		"^\I\i*\s"me=e-1			skipwhite	contained nextgroup=lexAbbrvRegExp
+ syn match  lexAbbrv		"^%[sx]"					contained
+ syn match  lexAbbrvRegExp	"\s\S.*$"lc=1				contained nextgroup=lexAbbrv,lexInclude
+-syn region lexInclude	matchgroup=lexSep	start="^%{" end="%}"	contained	contains=ALLBUT,@lexListGroup
+-syn region lexAbbrvComment	start="^\s\+/\*"	end="\*/"			contains=@Spell
+-syn region lexStartState	matchgroup=lexAbbrv	start="^%\a\+"	end="$"			contained
++if has("folding")
++ syn region lexInclude	fold matchgroup=lexSep	start="^%{"	end="%}"	contained	contains=ALLBUT,@lexListGroup
++ syn region lexAbbrvComment	fold			start="^\s\+/\*"	end="\*/"	contains=@Spell
++ syn region lexStartState	fold matchgroup=lexAbbrv	start="^%\a\+"	end="$"	contained
++else
++ syn region lexInclude	matchgroup=lexSep		start="^%{"	end="%}"	contained	contains=ALLBUT,@lexListGroup
++ syn region lexAbbrvComment				start="^\s\+/\*"	end="\*/"	contains=@Spell
++ syn region lexStartState	matchgroup=lexAbbrv		start="^%\a\+"	end="$"	contained
++endif
+ 
+ "%% : Patterns {Actions}
+-syn region lexPatBlock	matchgroup=Todo	start="^%%$" matchgroup=Todo end="^%%$"	skipnl skipwhite contains=lexPat,lexPatTag,lexPatComment
+-syn region lexPat		start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1	contained nextgroup=lexMorePat,lexPatSep contains=lexPatString,lexSlashQuote,lexBrace
+-syn region lexBrace	start="\[" skip=+\\\\\|\\+		end="]"		contained
+-syn region lexPatString	matchgroup=String start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
+-syn match  lexPatTag	"^<\I\i*\(,\I\i*\)*>*"			contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
++if has("folding")
++ syn region lexPatBlock	fold matchgroup=Todo	start="^%%$" matchgroup=Todo	end="^%%$"	skipnl skipwhite	contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
++ syn region lexPat		fold			start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1		contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
++ syn region lexBrace	fold			start="\[" skip=+\\\\\|\\+	end="]"			contained
++ syn region lexPatString	fold matchgroup=String	start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
++else
++ syn region lexPatBlock	matchgroup=Todo		start="^%%$" matchgroup=Todo	end="^%%$"	skipnl skipwhite	contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
++ syn region lexPat					start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1		contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
++ syn region lexBrace				start="\[" skip=+\\\\\|\\+	end="]"			contained
++ syn region lexPatString	matchgroup=String		start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
++endif
++syn match  lexPatTag	"^<\I\i*\(,\I\i*\)*>"			contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
++syn match  lexPatTagZone	"^<\I\i*\(,\I\i*\)*>\s*\ze{"		contained nextgroup=lexPatTagZoneStart
+ syn match  lexPatTag	+^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+		contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
+-syn region lexPatComment	start="^\s*/\*" end="\*/"		skipnl	contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
++if has("folding")
++ syn region  lexPatTagZoneStart matchgroup=lexPatTag	fold	start='{' end='}'	contained contains=lexPat,lexPatComment
++ syn region lexPatComment	start="\s\+/\*" end="\*/"	fold	skipnl	contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
++else
++ syn region  lexPatTagZoneStart matchgroup=lexPatTag		start='{' end='}'	contained contains=lexPat,lexPatComment
++ syn region lexPatComment	start="\s\+/\*" end="\*/"		skipnl	contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
++endif
+ syn match  lexPatCodeLine	".*$"					contained contains=ALLBUT,@lexListGroup
+ syn match  lexMorePat	"\s*|\s*$"			skipnl	contained nextgroup=lexPat,lexPatTag,lexPatComment
+ syn match  lexPatSep	"\s\+"					contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
+ syn match  lexSlashQuote	+\(\\\\\)*\\"+				contained
+-syn region lexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}"	skipnl contained contains=ALLBUT,@lexListPatCodeGroup
++if has("folding")
++ syn region lexPatCode matchgroup=Delimiter start="{" end="}"	fold	skipnl contained contains=ALLBUT,@lexListPatCodeGroup
++else
++ syn region lexPatCode matchgroup=Delimiter start="{" end="}"		skipnl contained contains=ALLBUT,@lexListPatCodeGroup
++endif
+ 
+ syn keyword lexCFunctions	BEGIN	input	unput	woutput	yyleng	yylook	yytext
+ syn keyword lexCFunctions	ECHO	output	winput	wunput	yyless	yymore	yywrap
+@@ -80,9 +108,10 @@
+ syn sync match lexSyncPat	groupthere lexPatBlock	"^%%$"
+ 
+ " The default highlighting.
+-hi def link lexSlashQuote	lexPat
+-hi def link lexBrace	lexPat
+ hi def link lexAbbrvComment	lexPatComment
++hi def link lexBrace	lexPat
++hi def link lexPatTagZone	lexPatTag
++hi def link lexSlashQuote	lexPat
+ 
+ hi def link lexAbbrvRegExp	Macro
+ hi def link lexAbbrv	SpecialChar
+diff -Nur runtime/syntax/lhaskell.vim runtime/syntax/lhaskell.vim
+--- runtime/syntax/lhaskell.vim	2008-07-01 10:47:29.000000000 -0700
++++ runtime/syntax/lhaskell.vim	2011-01-18 10:40:56.353456350 -0800
+@@ -4,8 +4,8 @@
+ "			\begin{code} \end{code} blocks
+ " Maintainer:		Haskell Cafe mailinglist <[email protected]>
+ " Original Author:	Arthur van Leeuwen <[email protected]>
+-" Last Change:		2008 Jul 01
+-" Version:		1.02
++" Last Change:		2010 Apr 11
++" Version:		1.04
+ "
+ " Thanks to Ian Lynagh for thoughtful comments on initial versions and
+ " for the inspiration for writing this in the first place.
+@@ -29,8 +29,10 @@
+ " 2004 February 20: Cleaned up the guessing and overriding a bit
+ " 2004 February 23: Cleaned up syntax highlighting for \begin{code} and
+ "		    \end{code}, added some clarification to the attributions
+-" 2008 July 1:      Removed % from guess list, as it totally breaks  plain
+-"		    text markup guessing
++" 2008 July 1:      Removed % from guess list, as it totally breaks plain
++"                   text markup guessing
++" 2009 April 29:    Fixed highlighting breakage in TeX mode, 
++"                   thanks to Kalman Noel
+ "
+ 
+ 
+@@ -73,14 +75,14 @@
+ "   - \begin{env}       (for env != code)
+ "   - \part, \chapter, \section, \subsection, \subsubsection, etc
+ if b:lhs_markup == "unknown"
+-    if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub \)*section\|\\chapter|\\part','W') != 0
++    if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
+ 	let b:lhs_markup = "tex"
+     else
+ 	let b:lhs_markup = "plain"
+     endif
+ endif
+ 
+-" If user wants us to highlight TeX syntax or guess thinks it's TeX,  read it.
++" If user wants us to highlight TeX syntax or guess thinks it's TeX, read it.
+ if b:lhs_markup == "tex"
+     if version < 600
+ 	source <sfile>:p:h/tex.vim
+@@ -91,6 +93,9 @@
+ 	" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
+ 	setlocal isk+=_
+     endif
++    syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
++else
++    syntax cluster lhsTeXContainer contains=.*
+ endif
+ 
+ " Literate Haskell is Haskell in between text, so at least read Haskell
+@@ -101,14 +106,13 @@
+     syntax include @haskellTop syntax/haskell.vim
+ endif
+ 
+-syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack
+-syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,@beginCode
++syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
++syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
+ 
+ syntax match lhsBirdTrack "^>" contained
+ 
+ syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
+ syntax region beginCodeCode  matchgroup=texDelimiter start="{" end="}"
+-syntax cluster beginCode    contains=beginCodeBegin,beginCodeCode
+ 
+ " Define the default highlighting.
+ " For version 5.7 and earlier: only when not done already
+diff -Nur runtime/syntax/lifelines.vim runtime/syntax/lifelines.vim
+--- runtime/syntax/lifelines.vim	2006-04-13 03:10:45.000000000 -0700
++++ runtime/syntax/lifelines.vim	2011-01-18 10:40:56.354243290 -0800
+@@ -1,15 +1,12 @@
+ " Vim syntax file
+-" Language:	LifeLines (v 3.0.50) http://lifelines.sourceforge.net
+-" Maintainer:	Patrick Texier <[email protected]>
+-" Location:	http://www.genindre.org/ftp/lifelines/lifelines.vim
+-" Last Change:	2005 Dec 22.
++" Language:	LifeLines (v 3.0.62) <http://lifelines.sourceforge.net>
++" Maintainer:	Patrick Texier <[email protected]>
++" Location:	<http://patrick.texier.free.fr/vim/syntax/lifelines.vim>
++" Last Change:	2010 May 7
+ 
+ " option to highlight error obsolete statements
+-" add the following line to your .vimrc file or here :
+-" (level2 is for baptism)
+-
+-" let lifelines_deprecated=1
+-" let lifelines_deprecated_level2=1
++" add the following line to your .vimrc file :
++" let lifelines_deprecated = 1
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -20,94 +17,102 @@
+   finish
+ endif
+ 
+-" A bunch of useful lifelines keywords 3.0.50
++" A bunch of useful LifeLines keywords 3.0.62
+ 
+-syn keyword	lifelinesStatement		set
+-syn keyword	lifelinesUser			getindi geindiset getfam getint getstr choosechild
+-syn keyword	lifelinesUser			chooseindi choosespouse choosesubset menuchoose
+-syn keyword	lifelinesUser			choosefam 
+-syn keyword	lifelinesProc			proc func return call
+-syn keyword	lifelinesInclude		include
+-syn keyword	lifelinesDef			global
++syn keyword	lifelinesDecl		char_encoding require option include
++syn keyword	lifelinesStatement	set
++syn keyword	lifelinesUser		getindi geindiset getfam getint getstr choosechild
++syn keyword	lifelinesUser		chooseindi choosespouse choosesubset menuchoose
++syn keyword	lifelinesUser		choosefam 
++syn keyword	lifelinesProc		proc func return call
++syn keyword	lifelinesInclude	include
++syn keyword	lifelinesDef		global
+ syn keyword	lifelinesConditional	if else elsif switch
+-syn keyword	lifelinesRepeat			continue break while
+-syn keyword	lifelinesLogical		and or not eq ne lt gt le ge strcmp eqstr nestr
+-syn keyword	lifelinesArithm			add sub mul div mod exp neg incr decr
+-syn keyword lifelinesArithm			cos sin tan arccos arcsin arctan
+-syn keyword lifelinesArithm			deg2dms dms2deg spdist
+-syn keyword	lifelinesIndi			name fullname surname givens trimname birth
+-syn keyword	lifelinesIndi			death burial
+-syn keyword	lifelinesIndi			father mother nextsib prevsib sex male female
+-syn keyword	lifelinesIndi			pn nspouses nfamilies parents title key
+-syn keyword	lifelinesIndi			soundex inode root indi firstindi nextindi
+-syn keyword	lifelinesIndi			previndi spouses families forindi indiset
+-syn keyword	lifelinesIndi			addtoset deletefromset  union intersect
+-syn keyword	lifelinesIndi			difference parentset childset spouseset siblingset
+-syn keyword	lifelinesIndi			ancestorset descendentset descendantset uniqueset
+-syn keyword	lifelinesIndi			namesort keysort valuesort genindiset getindiset
+-syn keyword	lifelinesIndi			forindiset lastindi writeindi
+-syn keyword	lifelinesIndi			inset
+-syn keyword	lifelinesFam			marriage husband wife nchildren firstchild
+-syn keyword	lifelinesFam			lastchild fnode fam firstfam nextfam lastfam
+-syn keyword	lifelinesFam			prevfam children forfam writefam
+-syn keyword lifelinesFam			fathers mothers Parents
+-syn keyword	lifelinesList			list empty length enqueue dequeue requeue
+-syn keyword	lifelinesList			push pop setel getel forlist inlist dup clear
+-syn keyword	lifelinesTable			table insert lookup
+-syn keyword	lifelinesGedcom			xref tag value parent child sibling savenode
+-syn keyword	lifelinesGedcom			fornodes traverse createnode addnode 
+-syn keyword lifelinesGedcom			detachnode foreven fornotes forothr forsour
+-syn keyword	lifelinesGedcom			reference dereference getrecord
+-syn keyword	lifelinesFunct			date place year long short gettoday dayformat
+-syn keyword	lifelinesFunct			monthformat dateformat extractdate eraformat
+-syn keyword	lifelinesFunct			complexdate complexformat complexpic datepic
+-syn keyword	lifelinesFunct			extractnames extractplaces extracttokens lower
+-syn keyword lifelinesFunct			yearformat
+-syn keyword	lifelinesFunct			upper capitalize trim rjustify 
+-syn keyword lifelinesFunct			concat strconcat strlen substring index
+-syn keyword lifelinesFunct			titlecase gettext
+-syn keyword	lifelinesFunct			d card ord alpha roman strsoundex strtoint
+-syn keyword	lifelinesFunct			atoi linemode pagemod col row pos pageout nl
+-syn keyword	lifelinesFunct			sp qt newfile outfile copyfile print lock unlock test
+-syn keyword	lifelinesFunct			database version system stddate program
+-syn keyword	lifelinesFunct			pvalue pagemode level extractdatestr debug
+-syn keyword	lifelinesFunct			f float int free getcol getproperty heapused
+-syn keyword lifelinesFunct			sort rsort
+-syn keyword lifelinesFunct			deleteel
+-syn keyword lifelinesFunct			bytecode convertcode setlocale
++syn keyword	lifelinesRepeat		continue break while
++syn keyword	lifelinesLogical	and or not eq ne lt gt le ge strcmp eqstr nestr
++syn keyword	lifelinesArithm		add sub mul div mod exp neg incr decr
++syn keyword	lifelinesArithm		cos sin tan arccos arcsin arctan
++syn keyword	lifelinesArithm		deg2dms dms2deg spdist
++syn keyword	lifelinesIndi		name fullname surname givens trimname birth
++syn keyword	lifelinesIndi		death burial baptism
++syn keyword	lifelinesIndi		father mother nextsib prevsib sex male female
++syn keyword	lifelinesIndi		pn nspouses nfamilies parents title key
++syn keyword	lifelinesIndi		soundex inode root indi firstindi nextindi
++syn keyword	lifelinesIndi		previndi spouses families forindi indiset
++syn keyword	lifelinesIndi		addtoset deletefromset  union intersect
++syn keyword	lifelinesIndi		difference parentset childset spouseset siblingset
++syn keyword	lifelinesIndi		ancestorset descendentset descendantset uniqueset
++syn keyword	lifelinesIndi		namesort keysort valuesort genindiset getindiset
++syn keyword	lifelinesIndi		forindiset lastindi writeindi
++syn keyword	lifelinesIndi		inset
++syn keyword	lifelinesFam		marriage husband wife nchildren firstchild
++syn keyword	lifelinesFam		lastchild fnode fam firstfam nextfam lastfam
++syn keyword	lifelinesFam		prevfam children forfam writefam
++syn keyword	lifelinesFam		fathers mothers Parents
++syn keyword	lifelinesList		list empty length enqueue dequeue requeue
++syn keyword	lifelinesList		push pop setel getel forlist inlist dup clear
++syn keyword	lifelinesTable		table insert lookup
++syn keyword	lifelinesGedcom		xref tag value parent child sibling savenode
++syn keyword	lifelinesGedcom		fornodes traverse createnode addnode 
++syn keyword	lifelinesGedcom		detachnode foreven fornotes forothr forsour
++syn keyword	lifelinesGedcom		reference dereference getrecord
++syn keyword	lifelinesGedcom		gengedcomstrong 
++syn keyword	lifelinesFunct		date place year long short gettoday dayformat
++syn keyword	lifelinesFunct		monthformat dateformat extractdate eraformat
++syn keyword	lifelinesFunct		complexdate complexformat complexpic datepic
++syn keyword	lifelinesFunct		extractnames extractplaces extracttokens lower
++syn keyword	lifelinesFunct		yearformat
++syn keyword	lifelinesFunct		upper capitalize trim rjustify 
++syn keyword 	lifelinesFunct		concat strconcat strlen substring index
++syn keyword	lifelinesFunct		titlecase gettext
++syn keyword	lifelinesFunct		d card ord alpha roman strsoundex strtoint
++syn keyword	lifelinesFunct		atoi linemode pagemod col row pos pageout nl
++syn keyword	lifelinesFunct		sp qt newfile outfile copyfile print lock unlock test
++syn keyword	lifelinesFunct		database version system stddate program
++syn keyword	lifelinesFunct		pvalue pagemode level extractdatestr debug
++syn keyword	lifelinesFunct		f float int free getcol getproperty heapused
++syn keyword 	lifelinesFunct		sort rsort
++syn keyword	lifelinesFunct		deleteel
++syn keyword	lifelinesFunct		bytecode convertcode setlocale
++" New dates functions (since 3.0.51)
++syn keyword	lifelinesFunct		jd2date date2jd dayofweek setdate
+ 
+-" option to highlight error obsolete statements
+-" please read ll-reportmanual
++" options to highlight as error obsolete statements
++" please read ll-reportmanual.
+ 
+ if exists("lifelines_deprecated")
+-	syn keyword lifelinesError			getintmsg getindimsg getstrmsg
+-	syn keyword	lifelinesError			gengedcom gengedcomstrong gengedcomweak deletenode
+-	syn keyword lifelinesError			save strsave
+-	syn keyword	lifelinesError			lengthset
+-else
+-	syn keyword lifelinesUser			getintmsg getindimsg getstrmsg
+-	syn keyword	lifelinesGedcom			gengedcom gengedcomstrong gengedcomweak deletenode
+-	syn keyword lifelinesFunct			save strsave
+-	syn keyword	lifelinesIndi			lengthset
+-endif
+-if exists("lifelines_deprecated_level2")
+-	syn keyword	lifelinesError			baptism
++	syn keyword lifelinesError	getintmsg getindimsg getstrmsg
++	syn keyword lifelinesError	gengedcom gengedcomweak deletenode
++	syn keyword lifelinesError	save strsave
++	syn keyword lifelinesError	lengthset
++	if version >= 700
++		let g:omni_syntax_group_exclude_lifelines = 'lifelinesError'
++	endif
+ else
+-	syn keyword	lifelinesIndi			baptism
++	syn keyword lifelinesUser	getintmsg getindimsg getstrmsg
++	syn keyword lifelinesGedcom	gengedcom gengedcomweak deletenode
++	syn keyword lifelinesFunct	save strsave
++	syn keyword lifelinesIndi	lengthset
+ endif
+ 
+-syn region	lifelinesString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lifelinesSpecial
++syn region	lifelinesString	start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lifelinesSpecial
+ 
+-syn match	lifelinesSpecial		"\\\(\\\|\(n\|t\)\)" contained
++syn match	lifelinesSpecial	"\\\(\\\|\(n\|t\)\)" contained
+ 
+-syn region	lifelinesComment	start="/\*"  end="\*/" 
++syn keyword	lifelinesTodo		contained TODO FIXME XXX
++syn region	lifelinesComment	start="/\*"  end="\*/" contains=lifelinesTodo
+ 
+ " integers
+-syn match	lifelinesNumber		"-\=\<\d\+\>"
++syn match	lifelinesNumber	"-\=\<\d\+\>"
+ "floats, with dot
+-syn match	lifelinesNumber		"-\=\<\d\+\.\d*\>"
++syn match	lifelinesNumber	"-\=\<\d\+\.\d*\>"
+ "floats, starting with a dot
+-syn match	lifelinesNumber		"-\=\.\d\+\>"
++syn match	lifelinesNumber	"-\=\.\d\+\>"
++
++" folding using {}
++if version >= 600
++	syn region lifelinesFoldBlock	start="{" end="}" transparent fold
++endif
+ 
+ "catch errors caused by wrong parenthesis
+ "adapted from original c.vim written by Bram Moolenaar
+@@ -130,31 +135,33 @@
+   endif
+ 
+   HiLink lifelinesConditional	Conditional
+-  HiLink lifelinesArithm		Operator
+-  HiLink lifelinesLogical		Conditional
+-  HiLink lifelinesInclude		Include
+-  HiLink lifelinesComment		Comment
+-  HiLink lifelinesStatement		Statement
+-  HiLink lifelinesUser			Statement
+-  HiLink lifelinesFunct			Statement
+-  HiLink lifelinesTable			Statement
+-  HiLink lifelinesGedcom		Statement
+-  HiLink lifelinesList			Statement
+-  HiLink lifelinesRepeat		Repeat
+-  HiLink lifelinesFam			Statement
+-  HiLink lifelinesIndi			Statement
+-  HiLink lifelinesProc			Statement
+-  HiLink lifelinesDef			Statement
+-  HiLink lifelinesString		String
+-  HiLink lifelinesSpecial		Special
+-  HiLink lifelinesNumber		Number
++  HiLink lifelinesArithm	Operator
++  HiLink lifelinesLogical	Conditional
++  HiLink lifelinesInclude	Include
++  HiLink lifelinesComment	Comment
++  HiLink lifelinesStatement	Statement
++  HiLink lifelinesUser		Statement
++  HiLink lifelinesFunct		Statement
++  HiLink lifelinesTable		Statement
++  HiLink lifelinesGedcom	Statement
++  HiLink lifelinesList		Statement
++  HiLink lifelinesRepeat	Repeat
++  HiLink lifelinesFam		Statement
++  HiLink lifelinesIndi		Statement
++  HiLink lifelinesProc		Statement
++  HiLink lifelinesDef		Statement
++  HiLink lifelinesString	String
++  HiLink lifelinesSpecial	Special
++  HiLink lifelinesNumber	Number
+   HiLink lifelinesParenError	Error
+   HiLink lifelinesErrInParen	Error
+-  HiLink lifelinesError			Error
++  HiLink lifelinesError		Error
++  HiLink lifelinesTodo		Todo
++  HiLink lifelinesDecl		PreProc
+ 
+   delcommand HiLink
+ endif
+ 
+ let b:current_syntax = "lifelines"
+ 
+-" vim: ts=8
++" vim: ts=8 sw=4
+diff -Nur runtime/syntax/lilo.vim runtime/syntax/lilo.vim
+--- runtime/syntax/lilo.vim	2004-07-20 10:53:05.000000000 -0700
++++ runtime/syntax/lilo.vim	2011-01-18 10:40:56.354681574 -0800
+@@ -1,10 +1,8 @@
+ " Vim syntax file
+-" This is a GENERATED FILE. Please always refer to source file at the URI below.
+ " Language: lilo configuration (lilo.conf)
+-" Maintainer: David Ne\v{c}as (Yeti) <[email protected]>
+-" Last Change: 2004-07-20
+-" URL: http://trific.ath.cx/Ftp/vim/syntax/lilo.vim
+-
++" Maintainer: Niels Horn <[email protected]>
++" Previous Maintainer: David Necas (Yeti) <[email protected]>
++" Last Change: 2010-02-03
+ 
+ " Setup
+ if version >= 600
+@@ -64,7 +62,7 @@
+ 
+ " String
+ syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+-syn keyword liloKernelOpt append nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
++syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+ syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty
+ 
+ " Hex number
+diff -Nur runtime/syntax/liquid.vim runtime/syntax/liquid.vim
+--- runtime/syntax/liquid.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/liquid.vim	2011-01-18 10:40:56.355714017 -0800
+@@ -0,0 +1,137 @@
++" Vim syntax file
++" Language:     Liquid
++" Maintainer:   Tim Pope <[email protected]>
++" Filenames:    *.liquid
++" Last Change:	2010 May 21
++
++if exists('b:current_syntax')
++  finish
++endif
++
++if !exists('main_syntax')
++  let main_syntax = 'liquid'
++endif
++
++if !exists('g:liquid_default_subtype')
++  let g:liquid_default_subtype = 'html'
++endif
++
++if !exists('b:liquid_subtype') && main_syntax == 'liquid'
++  let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
++  let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+')
++  if b:liquid_subtype == ''
++    let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+')
++  endif
++  if b:liquid_subtype == ''
++    let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$')
++  endif
++  if b:liquid_subtype == ''
++    let b:liquid_subtype = g:liquid_default_subtype
++  endif
++endif
++
++if exists('b:liquid_subtype') && b:liquid_subtype != ''
++  exe 'runtime! syntax/'.b:liquid_subtype.'.vim'
++  unlet! b:current_syntax
++endif
++
++syn case match
++
++if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml'
++  " YAML Front Matter
++  syn include @liquidYamlTop syntax/yaml.vim
++  unlet! b:current_syntax
++  syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell
++endif
++
++if !exists('g:liquid_highlight_types')
++  let g:liquid_highlight_types = []
++endif
++
++if !exists('s:subtype')
++  let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : ''
++
++  for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")')
++    if s:type =~ '\.'
++      let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
++    endif
++    exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
++    unlet! b:current_syntax
++  endfor
++  unlet! s:type
++
++  if s:subtype == ''
++    unlet! b:liquid_subtype
++  else
++    let b:liquid_subtype = s:subtype
++  endif
++  unlet s:subtype
++endif
++
++syn region  liquidStatement  matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend
++syn region  liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression  containedin=ALLBUT,@liquidExempt keepend
++syn region  liquidComment    matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend
++
++syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,@liquidStatement,liquidYamlHead
++syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression
++syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop
++
++syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained
++syn keyword liquidKeyword endhighlight contained
++syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend
++
++for s:type in g:liquid_highlight_types
++  exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained'
++  exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
++endfor
++unlet! s:type
++
++syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained
++syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained
++syn match liquidNumber "-\=\<\d\+\>" contained
++syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained
++syn keyword liquidBoolean true false contained
++syn keyword liquidNull null nil contained
++syn match liquidEmpty "\<empty\>" contained
++
++syn keyword liquidOperator and or not contained
++syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter
++
++syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained
++
++syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained
++syn keyword liquidRepeat      for endfor tablerow endtablerow in contained
++syn match   liquidRepeat      "\%({%\s*\)\@<=empty\>" contained
++syn keyword liquidKeyword     assign cycle include with contained
++
++syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained
++syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained
++syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained
++
++syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained
++syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained
++syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained
++
++hi def link liquidDelimiter             PreProc
++hi def link liquidComment               Comment
++hi def link liquidTypeHighlight         Type
++hi def link liquidConditional           Conditional
++hi def link liquidRepeat                Repeat
++hi def link liquidKeyword               Keyword
++hi def link liquidOperator              Operator
++hi def link liquidString                String
++hi def link liquidQuote                 Delimiter
++hi def link liquidNumber                Number
++hi def link liquidFloat                 Float
++hi def link liquidEmpty                 liquidNull
++hi def link liquidNull                  liquidBoolean
++hi def link liquidBoolean               Boolean
++hi def link liquidFilter                Function
++hi def link liquidForloop               Identifier
++hi def link liquidForloopAttribute      Identifier
++
++let b:current_syntax = 'liquid'
++
++if exists('main_syntax') && main_syntax == 'liquid'
++  unlet main_syntax
++endif
+diff -Nur runtime/syntax/lisp.vim runtime/syntax/lisp.vim
+--- runtime/syntax/lisp.vim	2007-11-14 08:37:14.000000000 -0800
++++ runtime/syntax/lisp.vim	2011-04-03 09:27:21.813654511 -0700
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language:    Lisp
+ " Maintainer:  Dr. Charles E. Campbell, Jr. <[email protected]>
+-" Last Change: Oct 19, 2007
+-" Version:     20
++" Last Change: Mar 05, 2009
++" Version:     21
+ " URL:	       http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ "  Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
+@@ -534,7 +534,8 @@
+ 
+ " ---------------------------------------------------------------------
+ " Numbers: supporting integers and floating point numbers {{{1
+-syn match lispNumber		"-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
++syn match lispNumber		"-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
++syn match lispNumber		"-\=\(\d\+/\d\+\)"
+ 
+ syn match lispSpecial		"\*\w[a-z_0-9-]*\*"
+ syn match lispSpecial		!#|[^()'`,"; \t]\+|#!
+diff -Nur runtime/syntax/logtalk.vim runtime/syntax/logtalk.vim
+--- runtime/syntax/logtalk.vim	2008-07-06 11:09:17.000000000 -0700
++++ runtime/syntax/logtalk.vim	2011-01-18 10:40:56.358767190 -0800
+@@ -2,7 +2,7 @@
+ "
+ " Language:	Logtalk
+ " Maintainer:	Paulo Moura <[email protected]>
+-" Last Change:	June 16, 2008
++" Last Change:	Oct 31, 2008
+ 
+ 
+ " Quit when a syntax file was already loaded:
+@@ -51,9 +51,9 @@
+ 
+ " Logtalk opening entity directives
+ 
+-syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- object("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel
+-syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- protocol("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
+-syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- category("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
++syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- object("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
++syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- protocol("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
++syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- category("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
+ 
+ 
+ " Logtalk closing entity directives
+diff -Nur runtime/syntax/mail.vim runtime/syntax/mail.vim
+--- runtime/syntax/mail.vim	2008-01-18 04:28:18.000000000 -0800
++++ runtime/syntax/mail.vim	2011-01-18 10:40:56.363647532 -0800
+@@ -2,7 +2,7 @@
+ " Language:		Mail file
+ " Previous Maintainer:	Felix von Leitner <[email protected]>
+ " Maintainer:		Gautam Iyer <[email protected]>
+-" Last Change:		Thu 17 Jan 2008 11:25:44 AM PST
++" Last Change:		Thu 06 Nov 2008 10:10:55 PM PST
+ 
+ " Quit when a syntax file was already loaded
+ if exists("b:current_syntax")
+@@ -24,28 +24,35 @@
+ " emails
+ " According to RFC 2822 any printable ASCII character can appear in a field
+ " name, except ':'.
+-syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1
++syn region	mailHeader	contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold
+ syn match	mailHeaderKey	contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$"
++
++" Nothing else depends on case. 
++syn case ignore
++
++" Headers in properly quoted (with "> " or ">") emails are matched
++syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold
++
+ " Usenet headers
+ syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"
+ 
+-syn case ignore
+-" Nothing else depends on case. Headers in properly quoted (with "> " or ">")
+-" emails are matched
+-syn region	mailHeader	keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1
+ 
+ syn region	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$"
+-syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$"
++syn match	mailHeaderKey	contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold
+ syn match	mailHeaderKey	contained contains=@NoSpell "\v(^(\> ?)*)@<=date:"
+-syn match	mailSubject	contained "\v^subject:.*$"
++syn match	mailSubject	contained "\v^subject:.*$" fold
+ syn match	mailSubject	contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$"
+ 
+ " Anything in the header between < and > is an email address
+ syn match	mailHeaderEmail	contained contains=@NoSpell "<.\{-}>"
+ 
+ " Mail Signatures. (Begin with "-- ", end with change in quote level)
+-syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1
+-syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1
++syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold
++syn region	mailSignature	keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold
++
++" Treat verbatim Text special.
++syn region	mailVerbatim	contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold 
++syn region	mailVerbatim	contains=@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold 
+ 
+ " URLs start with a known protocol or www,web,w3.
+ syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' 	<>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' 	<>"]+)[a-z0-9/]`
+@@ -59,13 +66,13 @@
+ syn match mailQuoteExp5	contained "\v^(\> ?){5}"
+ syn match mailQuoteExp6	contained "\v^(\> ?){6}"
+ 
+-" Even and odd quoted lines. order is imporant here!
+-syn match mailQuoted1	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\([a-z]\+>\|[]|}>]\).*$"
+-syn match mailQuoted2	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}.*$"
+-syn match mailQuoted3	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}.*$"
+-syn match mailQuoted4	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}.*$"
+-syn match mailQuoted5	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}.*$"
+-syn match mailQuoted6	contains=mailHeader,@mailLinks,mailSignature,@NoSpell "^\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{6}.*$"
++" Even and odd quoted lines. Order is important here!
++syn region	mailQuoted6	keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region	mailQuoted5	keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region	mailQuoted4	keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region	mailQuoted3	keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region	mailQuoted2	keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold
++syn region	mailQuoted1	keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold
+ 
+ " Need to sync on the header. Assume we can do that within 100 lines
+ if exists("mail_minlines")
+@@ -75,6 +82,7 @@
+ endif
+ 
+ " Define the default highlighting.
++hi def link mailVerbatim	Special
+ hi def link mailHeader		Statement
+ hi def link mailHeaderKey	Type
+ hi def link mailSignature	PreProc
+diff -Nur runtime/syntax/man.vim runtime/syntax/man.vim
+--- runtime/syntax/man.vim	2007-12-30 05:19:15.000000000 -0800
++++ runtime/syntax/man.vim	2011-01-18 10:40:56.365338676 -0800
+@@ -1,9 +1,9 @@
+ " Vim syntax file
+ " Language:	Man page
+-" Maintainer:	Nam SungHyun <[email protected]>
++" Maintainer:	SungHyun Nam <[email protected]>
+ " Previous Maintainer:	Gautam H. Mudunuri <[email protected]>
+ " Version Info:
+-" Last Change:	2007 Dec 30
++" Last Change:	2008 Sep 17
+ 
+ " Additional highlighting by Johannes Tanzler <[email protected]>:
+ "	* manSubHeading
+diff -Nur runtime/syntax/maple.vim runtime/syntax/maple.vim
+--- runtime/syntax/maple.vim	2006-09-26 13:49:41.000000000 -0700
++++ runtime/syntax/maple.vim	2011-01-18 10:40:56.366853223 -0800
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language:	Maple V (based on release 4)
+ " Maintainer:	Dr. Charles E. Campbell, Jr. <[email protected]>
+-" Last Change:	Sep 11, 2006
+-" Version:	9
++" Last Change:	Jan 05, 2010
++" Version:	10
+ " URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Package Function Selection: {{{1
+@@ -164,9 +164,11 @@
+ " Split into booleans, conditionals, operators, repeat-logic, etc
+ syn keyword mvBool	true	false	FAIL
+ syn keyword mvCond	elif	else	fi	if	then
++syn match   mvCond	"end\s\+if"
+ 
+ syn keyword mvRepeat	by	for	in	to
+ syn keyword mvRepeat	do	from	od	while
++syn match   mvRepeat	"end\s\+do"
+ 
+ syn keyword mvSpecial	NULL
+ syn match   mvSpecial	"\[\]\|{}"
+diff -Nur runtime/syntax/markdown.vim runtime/syntax/markdown.vim
+--- runtime/syntax/markdown.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/markdown.vim	2011-01-18 10:40:56.367181988 -0800
+@@ -0,0 +1,105 @@
++" Vim syntax file
++" Language:     Markdown
++" Maintainer:   Tim Pope <[email protected]>
++" Filenames:    *.markdown
++" Last Change:	2010 May 21
++
++if exists("b:current_syntax")
++  finish
++endif
++
++runtime! syntax/html.vim
++unlet! b:current_syntax
++
++syn sync minlines=10
++syn case ignore
++
++syn match markdownValid '[<>]\S\@!'
++syn match markdownValid '&\%(#\=\w*;\)\@!'
++
++syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock
++
++syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule
++syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop
++
++syn match markdownH1 ".\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule
++syn match markdownH2 ".\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule
++
++syn match markdownHeadingRule "^[=-]\+$" contained
++
++syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!"      end="#*\s*$" keepend oneline contains=@markdownInline contained
++syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!"     end="#*\s*$" keepend oneline contains=@markdownInline contained
++syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!"    end="#*\s*$" keepend oneline contains=@markdownInline contained
++syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!"   end="#*\s*$" keepend oneline contains=@markdownInline contained
++syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!"  end="#*\s*$" keepend oneline contains=@markdownInline contained
++syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline contained
++
++syn match markdownBlockquote ">\s" contained nextgroup=@markdownBlock
++
++syn region markdownCodeBlock start="    \|\t" end="$" contained
++
++" TODO: real nesting
++syn match markdownListMarker " \{0,4\}[-*+]\%(\s\+\S\)\@=" contained
++syn match markdownOrderedListMarker " \{0,4}\<\d\+\.\%(\s*\S\)\@=" contained
++
++syn match markdownRule "\* *\* *\*[ *]*$" contained
++syn match markdownRule "- *- *-[ -]*$" contained
++
++syn match markdownLineBreak "\s\{2,\}$"
++
++syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite
++syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained
++syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained
++syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained
++syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
++syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
++
++syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" keepend nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
++syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
++syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
++syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
++
++syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart
++syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart
++syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart
++syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart
++syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart
++syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart
++syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" transparent keepend contains=markdownLineStart
++syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
++
++syn match markdownEscape "\\[][\\`*_{}()#+.!-]"
++
++hi def link markdownH1                    htmlH1
++hi def link markdownH2                    htmlH2
++hi def link markdownH3                    htmlH3
++hi def link markdownH4                    htmlH4
++hi def link markdownH5                    htmlH5
++hi def link markdownH6                    htmlH6
++hi def link markdownHeadingRule           markdownRule
++hi def link markdownHeadingDelimiter      Delimiter
++hi def link markdownOrderedListMarker     markdownListMarker
++hi def link markdownListMarker            htmlTagName
++hi def link markdownBlockquote            Comment
++hi def link markdownRule                  PreProc
++
++hi def link markdownLinkText              htmlLink
++hi def link markdownIdDeclaration         Typedef
++hi def link markdownId                    Type
++hi def link markdownAutomaticLink         markdownUrl
++hi def link markdownUrl                   Float
++hi def link markdownUrlTitle              String
++hi def link markdownIdDelimiter           markdownLinkDelimiter
++hi def link markdownUrlDelimiter          htmlTag
++hi def link markdownUrlTitleDelimiter     Delimiter
++
++hi def link markdownItalic                htmlItalic
++hi def link markdownBold                  htmlBold
++hi def link markdownBoldItalic            htmlBoldItalic
++hi def link markdownCodeDelimiter         Delimiter
++
++hi def link markdownEscape                Special
++
++let b:current_syntax = "markdown"
++
++" vim:set sw=2:
+diff -Nur runtime/syntax/matlab.vim runtime/syntax/matlab.vim
+--- runtime/syntax/matlab.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/matlab.vim	2011-01-18 10:40:56.368978189 -0800
+@@ -1,8 +1,10 @@
+ " Vim syntax file
+ " Language:	Matlab
+-" Maintainer:	Preben 'Peppe' Guldberg <[email protected]>
++" Maintainer:	Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com
++" Credits:	Preben 'Peppe' Guldberg <[email protected]>
+ "		Original author: Mario Eusebio
+-" Last Change:	30 May 2003
++" Last Change:	Wed Jan 13 11:12:34 CET 2010
++" 		- 'global' and 'persistent' keyword are now recognized
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -16,8 +18,12 @@
+ syn keyword matlabLabel			case switch
+ syn keyword matlabConditional		else elseif end if otherwise
+ syn keyword matlabRepeat		do for while
++" MT_ADDON - added exception-specific keywords
++syn keyword matlabExceptions		try catch
++syn keyword matlabOO			classdef properties events methods
+ 
+ syn keyword matlabTodo			contained  TODO
++syn keyword matlabScope			global persistent
+ 
+ " If you do not want these operators lit, uncommment them and the "hi link" below
+ syn match matlabArithmeticOperator	"[-+]"
+@@ -31,7 +37,8 @@
+ "syn match matlabIdentifier		"\<\a\w*\>"
+ 
+ " String
+-syn region matlabString			start=+'+ end=+'+	oneline
++" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence 
++syn region matlabString			start=+'+ end=+'+	oneline skip=+''+
+ 
+ " If you don't like tabs
+ syn match matlabTab			"\t"
+@@ -51,6 +58,9 @@
+ syn match matlabSemicolon		";"
+ 
+ syn match matlabComment			"%.*$"	contains=matlabTodo,matlabTab
++" MT_ADDON - correctly highlights words after '...' as comments
++syn match matlabComment			"\.\.\..*$"	contains=matlabTodo,matlabTab
++syn region matlabMultilineComment	start=+%{+ end=+%}+ contains=matlabTodo,matlabTab
+ 
+ syn keyword matlabOperator		break zeros default margin round ones rand
+ syn keyword matlabOperator		ceil floor size clear zeros eye mean std cov
+@@ -75,10 +85,11 @@
+   endif
+ 
+   HiLink matlabTransposeOperator	matlabOperator
+-  HiLink matlabOperator		Operator
+-  HiLink matlabLineContinuation	Special
++  HiLink matlabOperator			Operator
++  HiLink matlabLineContinuation		Special
+   HiLink matlabLabel			Label
+   HiLink matlabConditional		Conditional
++  HiLink matlabExceptions		Conditional
+   HiLink matlabRepeat			Repeat
+   HiLink matlabTodo			Todo
+   HiLink matlabString			String
+@@ -86,12 +97,15 @@
+   HiLink matlabTransposeOther		Identifier
+   HiLink matlabNumber			Number
+   HiLink matlabFloat			Float
+-  HiLink matlabFunction		Function
++  HiLink matlabFunction			Function
+   HiLink matlabError			Error
+-  HiLink matlabImplicit		matlabStatement
++  HiLink matlabImplicit			matlabStatement
+   HiLink matlabStatement		Statement
++  HiLink matlabOO			Statement
+   HiLink matlabSemicolon		SpecialChar
+   HiLink matlabComment			Comment
++  HiLink matlabMultilineComment		Comment
++  HiLink matlabScope			Type
+ 
+   HiLink matlabArithmeticOperator	matlabOperator
+   HiLink matlabRelationalOperator	matlabOperator
+diff -Nur runtime/syntax/maxima.vim runtime/syntax/maxima.vim
+--- runtime/syntax/maxima.vim	2006-04-10 01:17:50.000000000 -0700
++++ runtime/syntax/maxima.vim	2011-01-18 10:40:56.369470289 -0800
+@@ -227,7 +227,7 @@
+ " Comments:
+ " maxima supports /* ... */ (like C)
+ syn keyword maximaTodo contained	TODO Todo DEBUG
+-syn region  maximaCommentBlock	start="/\*" end="\*/"	contains=maximaString,maximaTodo
++syn region  maximaCommentBlock	start="/\*" end="\*/"	contains=maximaString,maximaTodo,maximaCommentBlock
+ 
+ " synchronizing
+ syn sync match maximaSyncComment	grouphere maximaCommentBlock "/*"
+diff -Nur runtime/syntax/mib.vim runtime/syntax/mib.vim
+--- runtime/syntax/mib.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/mib.vim	2011-01-18 10:40:56.371659796 -0800
+@@ -1,22 +1,15 @@
+ " Vim syntax file
+-" Language:	Vim syntax file for SNMPv1 and SNMPv2 MIB and SMI files
+-" Author:	David Pascoe <[email protected]>
+-" Written:	Wed Jan 28 14:37:23 GMT--8:00 1998
+-" Last Changed:	Thu Feb 27 10:18:16 WST 2003
+-
+-" 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")
++" Language:        Vim syntax file for SNMPv1 and SNMPv2 MIB and SMI files
++" Maintainer:      Martin Smat <[email protected]>
++" Original Author: David Pascoe <[email protected]>
++" Written:     	   Wed Jan 28 14:37:23 GMT--8:00 1998
++" Last Changed:    Mon Mar 23 2010
++
++if exists("b:current_syntax")
+   finish
+ endif
+ 
+-if version >= 600
+-  setlocal iskeyword=@,48-57,_,128-167,224-235,-,:,=
+-else
+-  set iskeyword=@,48-57,_,128-167,224-235,-,:,=
+-endif
++setlocal iskeyword=@,48-57,_,128-167,224-235,-
+ 
+ syn keyword mibImplicit ACCESS ANY AUGMENTS BEGIN BIT BITS BOOLEAN CHOICE
+ syn keyword mibImplicit COMPONENTS CONTACT-INFO DEFINITIONS DEFVAL
+@@ -29,7 +22,7 @@
+ syn keyword mibImplicit OBJECTS OF OPTIONAL ORGANIZATION REFERENCE
+ syn keyword mibImplicit REVISION SEQUENCE SET SIZE STATUS SYNTAX
+ syn keyword mibImplicit TEXTUAL-CONVENTION TRAP-TYPE TRUE UNITS VARIABLES
+-syn keyword mibImplicit WRITE-SYNTAX ::=
++syn keyword mibImplicit WRITE-SYNTAX
+ syn keyword mibValue accessible-for-notify current DisplayString
+ syn keyword mibValue deprecated mandatory not-accessible obsolete optional
+ syn keyword mibValue read-create read-only read-write write-only INTEGER
+@@ -47,31 +40,18 @@
+ syn keyword mibEpilogue leaf-name
+ syn keyword mibEpilogue DEFAULT contained
+ 
+-syn match  mibComment		"\ *--.*$"
+-syn match  mibNumber		"\<['0-9a-fA-FhH]*\>"
++syn match  mibOperator  "::="
++syn match  mibComment   "\ *--.\{-}\(--\|$\)"
++syn match  mibNumber    "\<['0-9a-fA-FhH]*\>"
+ syn region mibDescription start="\"" end="\"" contains=DEFAULT
+ 
+-" Define the default highlighting.
+-" 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_mib_syn_inits")
+-  if version < 508
+-    let did_mib_syn_inits = 1
+-    command -nargs=+ HiLink hi link <args>
+-  else
+-    command -nargs=+ HiLink hi def link <args>
+-  endif
+-
+-  HiLink mibImplicit	     Statement
+-  HiLink mibComment	     Comment
+-  HiLink mibConstants	     String
+-  HiLink mibNumber	     Number
+-  HiLink mibDescription      Identifier
+-  HiLink mibEpilogue	     SpecialChar
+-  HiLink mibValue	     Structure
+-  delcommand HiLink
+-endif
++hi def link mibImplicit	     Statement
++hi def link mibOperator      Statement
++hi def link mibComment       Comment
++hi def link mibConstants     String
++hi def link mibNumber        Number
++hi def link mibDescription   Identifier
++hi def link mibEpilogue	     SpecialChar
++hi def link mibValue         Structure
+ 
+ let b:current_syntax = "mib"
+-
+-" vim: ts=8
+diff -Nur runtime/syntax/mysql.vim runtime/syntax/mysql.vim
+--- runtime/syntax/mysql.vim	2007-12-19 20:09:52.000000000 -0800
++++ runtime/syntax/mysql.vim	2011-01-18 10:40:56.381197164 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:     mysql
+ " Maintainer:   Kenneth J. Pronovici <[email protected]>
+-" Last Change:  $LastChangedDate: 2007-12-19 10:59:39 -0600 (Wed, 19 Dec 2007) $
++" Last Change:  $LastChangedDate: 2010-04-22 09:48:02 -0500 (Thu, 22 Apr 2010) $
+ " Filenames:    *.mysql
+ " URL:          ftp://cedar-solutions.com/software/mysql.vim
+ " Note:         The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
+@@ -36,7 +36,7 @@
+ syn keyword mysqlKeyword         natural no
+ syn keyword mysqlKeyword         on optimize option optionally order outer outfile
+ syn keyword mysqlKeyword         pack_keys partial password primary privileges procedure process processlist
+-syn keyword mysqlKeyword         read references reload rename replace restrict returns revoke row rows
++syn keyword mysqlKeyword         read references reload rename replace restrict returns revoke right row rows
+ syn keyword mysqlKeyword         second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off
+ syn keyword mysqlKeyword         sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting
+ syn keyword mysqlKeyword         status straight_join string
+@@ -57,12 +57,12 @@
+ " Numbers and hexidecimal values
+ syn match mysqlNumber            "-\=\<[0-9]*\>"
+ syn match mysqlNumber            "-\=\<[0-9]*\.[0-9]*\>"
+-syn match mysqlNumber            "-\=\<[0-9]*e[+-]\=[0-9]*\>"
++syn match mysqlNumber            "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>"
+ syn match mysqlNumber            "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>"
+ syn match mysqlNumber            "\<0x[abcdefABCDEF0-9]*\>"
+ 
+ " User variables
+-syn match mysqlVariable          "@\a*[A-Za-z0-9]*[._]*[A-Za-z0-9]*"
++syn match mysqlVariable          "@\a*[A-Za-z0-9]*\([._]*[A-Za-z0-9]\)*"
+ 
+ " Comments (c-style, mysql-style and modified sql-style)
+ syn region mysqlComment          start="/\*"  end="\*/"
+@@ -75,7 +75,7 @@
+ " This gets a bit ugly.  There are two different problems we have to
+ " deal with.
+ "
+-" The first problem is that some keywoards like 'float' can be used
++" The first problem is that some keywords like 'float' can be used
+ " both with and without specifiers, i.e. 'float', 'float(1)' and
+ " 'float(@var)' are all valid.  We have to account for this and we
+ " also have to make sure that garbage like floatn or float_(1) is not
+diff -Nur runtime/syntax/netrc.vim runtime/syntax/netrc.vim
+--- runtime/syntax/netrc.vim	2006-04-21 05:39:13.000000000 -0700
++++ runtime/syntax/netrc.vim	2011-01-18 10:40:56.384778128 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         netrc(5) configuration file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-04-19
++" Latest Revision:  2010-01-03
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -11,12 +11,13 @@
+ set cpo&vim
+ 
+ syn keyword netrcKeyword    machine nextgroup=netrcMachine skipwhite skipnl
+-syn keyword netrcKeyword    login nextgroup=netrcLogin,netrcSpecial
+-                            \ skipwhite skipnl
++syn keyword netrcKeyword    account
++                          \ login
++                          \ nextgroup=netrcLogin,netrcSpecial skipwhite skipnl
+ syn keyword netrcKeyword    password nextgroup=netrcPassword skipwhite skipnl
+ syn keyword netrcKeyword    default
+-syn keyword netrcKeyword    macdef nextgroup=netrcInit,netrcMacroName
+-                            \ skipwhite skipnl
++syn keyword netrcKeyword    macdef
++                          \ nextgroup=netrcInit,netrcMacroName skipwhite skipnl
+ syn region  netrcMacro      contained start='.' end='^$'
+ 
+ syn match   netrcMachine    contained display '\S\+'
+@@ -25,14 +26,14 @@
+ syn match   netrcLogin      contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+ syn match   netrcPassword   contained display '\S\+'
+ syn match   netrcPassword   contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+-syn match   netrcMacroName  contained display '\S\+' nextgroup=netrcMacro
+-                            \ skipwhite skipnl
++syn match   netrcMacroName  contained display '\S\+'
++                          \ nextgroup=netrcMacro skipwhite skipnl
+ syn match   netrcMacroName  contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+-                            \ nextgroup=netrcMacro skipwhite skipnl
++                          \ nextgroup=netrcMacro skipwhite skipnl
+ 
+ syn keyword netrcSpecial    contained anonymous
+-syn match   netrcInit       contained '\<init$' nextgroup=netrcMacro
+-                            \ skipwhite skipnl
++syn match   netrcInit       contained '\<init$'
++                          \ nextgroup=netrcMacro skipwhite skipnl
+ 
+ syn sync fromstart
+ 
+diff -Nur runtime/syntax/netrw.vim runtime/syntax/netrw.vim
+--- runtime/syntax/netrw.vim	2008-03-28 11:35:41.000000000 -0700
++++ runtime/syntax/netrw.vim	2011-04-03 09:27:21.816573618 -0700
+@@ -1,7 +1,7 @@
+ " Language   : Netrw Remote-Directory Listing Syntax
+ " Maintainer : Charles E. Campbell, Jr.
+-" Last change: Feb 06, 2008
+-" Version    : 12
++" Last change: Jan 14, 2009
++" Version    : 16
+ " ---------------------------------------------------------------------
+ 
+ " Syntax Clearing: {{{1
+@@ -16,85 +16,91 @@
+ syn cluster NetrwGroup		contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt
+ syn cluster NetrwTreeGroup	contains=netrwDir,netrwSymLink,netrwExe
+ 
+-syn match  netrwSpecial		"\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)"		contains=netrwClassify
+-syn match  netrwDir		"\.\{1,2}/"						contains=netrwClassify
+-syn match  netrwDir		"\%(\S\+ \)*\S\+/"					contains=netrwClassify
+-syn match  netrwSizeDate	"\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s"			contains=netrwDateSep skipwhite nextgroup=netrwTime
+-syn match  netrwSymLink		"\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)"  			contains=netrwClassify
+-syn match  netrwExe		"\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" 			contains=netrwClassify
+-syn match  netrwTreeBar		"^\%(| \)*"						contains=netrwTreeBarSpace	nextgroup=@netrwTreeGroup
+-syn match  netrwTreeBarSpace	" "				contained
+-
+-syn match  netrwClassify	"[*=|@/]\ze\%(\s\{2,}\|$\)"	contained
+-syn match  netrwDateSep		"/"				contained
+-syn match  netrwTime		"\d\{1,2}:\d\{2}:\d\{2}"	contained		contains=netrwTimeSep
++syn match  netrwPlain		"\(\S\+ \)*\S\+"					contains=@NoSpell
++syn match  netrwSpecial		"\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)"		contains=netrwClassify,@NoSpell
++syn match  netrwDir		"\.\{1,2}/"						contains=netrwClassify,@NoSpell
++syn match  netrwDir		"\%(\S\+ \)*\S\+/"					contains=netrwClassify,@NoSpell
++syn match  netrwSizeDate	"\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s"	skipwhite	contains=netrwDateSep,@NoSpell	nextgroup=netrwTime
++syn match  netrwSymLink		"\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)"  			contains=netrwClassify,@NoSpell
++syn match  netrwExe		"\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" 			contains=netrwClassify,@NoSpell
++syn match  netrwTreeBar		"^\%([-+|] \)\+"					contains=netrwTreeBarSpace	nextgroup=@netrwTreeGroup
++syn match  netrwTreeBarSpace	" "					contained
++
++syn match  netrwClassify	"[*=|@/]\ze\%(\s\{2,}\|$\)"		contained
++syn match  netrwDateSep		"/"					contained
++syn match  netrwTime		"\d\{1,2}:\d\{2}:\d\{2}"		contained	contains=netrwTimeSep
+ syn match  netrwTimeSep		":"
+ 
+-syn match  netrwComment		'".*\%(\t\|$\)'						contains=@NetrwGroup
+-syn match  netrwHide		'^"\s*\(Hid\|Show\)ing:'	skipwhite nextgroup=netrwHidePat
++syn match  netrwComment		'".*\%(\t\|$\)'						contains=@NetrwGroup,@NoSpell
++syn match  netrwHide		'^"\s*\(Hid\|Show\)ing:'	skipwhite		contains=@NoSpell		nextgroup=netrwHidePat
+ syn match  netrwSlash		"/"				contained
+-syn match  netrwHidePat		"[^,]\+"			contained skipwhite nextgroup=netrwHideSep
+-syn match  netrwHideSep		","				contained transparent skipwhite nextgroup=netrwHidePat
+-syn match  netrwSortBy		"Sorted by"			contained transparent skipwhite nextgroup=netrwList
+-syn match  netrwSortSeq		"Sort sequence:"		contained transparent skipwhite nextgroup=netrwList
+-syn match  netrwCopyTgt		"Copy/Move Tgt:"		contained transparent skipwhite nextgroup=netrwList
+-syn match  netrwList		".*$"				contained		contains=netrwComma
++syn match  netrwHidePat		"[^,]\+"			contained skipwhite	contains=@NoSpell		nextgroup=netrwHideSep
++syn match  netrwHideSep		","				contained skipwhite					nextgroup=netrwHidePat
++syn match  netrwSortBy		"Sorted by"			contained transparent skipwhite				nextgroup=netrwList
++syn match  netrwSortSeq		"Sort sequence:"		contained transparent skipwhite			 	nextgroup=netrwList
++syn match  netrwCopyTgt		"Copy/Move Tgt:"		contained transparent skipwhite				nextgroup=netrwList
++syn match  netrwList		".*$"				contained		contains=netrwComma,@NoSpell
+ syn match  netrwComma		","				contained
+-syn region netrwQuickHelp	matchgroup=Comment start="Quick Help:\s\+" end="$"	contains=netrwHelpCmd keepend contained
+-syn match  netrwHelpCmd		"\S\ze:"			contained skipwhite nextgroup=netrwCmdSep
++syn region netrwQuickHelp	matchgroup=Comment start="Quick Help:\s\+" end="$"	contains=netrwHelpCmd,@NoSpell	keepend contained
++syn match  netrwHelpCmd		"\S\ze:"			contained skipwhite	contains=@NoSpell		nextgroup=netrwCmdSep
+ syn match  netrwCmdSep		":"				contained nextgroup=netrwCmdNote
+-syn match  netrwCmdNote		".\{-}\ze  "			contained
+-syn match  netrwVersion		"(netrw.*)"			contained
++syn match  netrwCmdNote		".\{-}\ze  "			contained		contains=@NoSpell
++syn match  netrwVersion		"(netrw.*)"			contained		contains=@NoSpell
+ 
+ " -----------------------------
+ " Special filetype highlighting {{{1
+ " -----------------------------
+ if exists("g:netrw_special_syntax") && netrw_special_syntax
+- syn match netrwBak		"\(\S\+ \)*\S\+\.bak\>"				contains=netrwTreeBar
+- syn match netrwCompress	"\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>"	contains=netrwTreeBar
+- syn match netrwData		"\(\S\+ \)*\S\+\.dat\>"				contains=netrwTreeBar
+- syn match netrwHdr		"\(\S\+ \)*\S\+\.h\>"				contains=netrwTreeBar
+- syn match netrwLib		"\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>"		contains=netrwTreeBar
+- syn match netrwMakeFile	"\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>"	contains=netrwTreeBar
+- syn match netrwObj		"\(\S\+ \)*\S*\.\%(o\|obj\)\>"			contains=netrwTreeBar
+- syn match netrwTags    	"\<tags\>"					contains=netrwTreeBar
+- syn match netrwTags		"\<\(ANmenu\|ANtags\)\>"			contains=netrwTreeBar
+- syn match netrwTilde		"\(\S\+ \)*\S\+\~\>"				contains=netrwTreeBar
+- syn match netrwTmp		"\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>"	contains=netrwTreeBar
++ syn match netrwBak		"\(\S\+ \)*\S\+\.bak\>"				contains=netrwTreeBar,@NoSpell
++ syn match netrwCompress	"\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>"	contains=netrwTreeBar,@NoSpell
++ if has("unix")
++  syn match netrwCoreDump	"\<core\%(\.\d\+\)\=\>"				contains=netrwTreeBar,@NoSpell
++ endif
++ syn match netrwData		"\(\S\+ \)*\S\+\.dat\>"				contains=netrwTreeBar,@NoSpell
++ syn match netrwHdr		"\(\S\+ \)*\S\+\.h\>"				contains=netrwTreeBar,@NoSpell
++ syn match netrwLib		"\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>"		contains=netrwTreeBar,@NoSpell
++ syn match netrwMakeFile	"\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>"	contains=netrwTreeBar,@NoSpell
++ syn match netrwObj		"\(\S\+ \)*\S*\.\%(o\|obj\)\>"			contains=netrwTreeBar,@NoSpell
++ syn match netrwTags    	"\<tags\>"					contains=netrwTreeBar,@NoSpell
++ syn match netrwTags		"\<\(ANmenu\|ANtags\)\>"			contains=netrwTreeBar,@NoSpell
++ syn match netrwTilde		"\(\S\+ \)*\S\+\~\>"				contains=netrwTreeBar,@NoSpell
++ syn match netrwTmp		"\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>"	contains=netrwTreeBar,@NoSpell
+ endif
+ 
+ " ---------------------------------------------------------------------
+ " Highlighting Links: {{{1
+ if !exists("did_drchip_netrwlist_syntax")
+  let did_drchip_netrwlist_syntax= 1
+- hi link netrwClassify	Function
+- hi link netrwCmdSep	Delimiter
+- hi link netrwComment	Comment
+- hi link netrwDir	Directory
+- hi link netrwHelpCmd	Function
+- hi link netrwHidePat	Statement
+- hi link netrwList	Statement
+- hi link netrwVersion	Identifier
+- hi link netrwSymLink	Question
+- hi link netrwExe	PreProc
+- hi link netrwDateSep	Delimiter
+-
+- hi link netrwTreeBar	Special
+- hi link netrwTimeSep	netrwDateSep
+- hi link netrwComma	netrwComment
+- hi link netrwHide	netrwComment
+- hi link netrwMarkFile	Identifier
++ hi default link netrwClassify	Function
++ hi default link netrwCmdSep	Delimiter
++ hi default link netrwComment	Comment
++ hi default link netrwDir	Directory
++ hi default link netrwHelpCmd	Function
++ hi default link netrwHidePat	Statement
++ hi default link netrwHideSep	netrwComment
++ hi default link netrwList	Statement
++ hi default link netrwVersion	Identifier
++ hi default link netrwSymLink	Question
++ hi default link netrwExe	PreProc
++ hi default link netrwDateSep	Delimiter
++
++ hi default link netrwTreeBar	Special
++ hi default link netrwTimeSep	netrwDateSep
++ hi default link netrwComma	netrwComment
++ hi default link netrwHide	netrwComment
++ hi default link netrwMarkFile	Identifier
+ 
+  " special syntax highlighting (see :he g:netrw_special_syntax)
+- hi link netrwBak	NonText
+- hi link netrwCompress	Folded
+- hi link netrwData	DiffChange
+- hi link netrwLib	DiffChange
+- hi link netrwMakefile	DiffChange
+- hi link netrwObj	Folded
+- hi link netrwTilde	Folded
+- hi link netrwTmp	Folded
+- hi link netrwTags	Folded
++ hi default link netrwBak	NonText
++ hi default link netrwCompress	Folded
++ hi default link netrwCoreDump	WarningMsg
++ hi default link netrwData	DiffChange
++ hi default link netrwLib	DiffChange
++ hi default link netrwMakefile	DiffChange
++ hi default link netrwObj	Folded
++ hi default link netrwTilde	Folded
++ hi default link netrwTmp	Folded
++ hi default link netrwTags	Folded
+ endif
+ 
+ " Current Syntax: {{{1
+diff -Nur runtime/syntax/obj.vim runtime/syntax/obj.vim
+--- runtime/syntax/obj.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/obj.vim	2011-01-18 10:40:56.394098776 -0800
+@@ -0,0 +1,96 @@
++" Vim syntax file
++" Language:	3D wavefront's obj file
++" Maintainer:	Vincent Berthoux <[email protected]>
++" File Types:	.obj (used in 3D)
++" Last Change:  2010 May 18
++"
++" For version 5.x: Clear all syntax items
++" For version 6.x: Quit when a syntax file was already loaded
++if version < 600
++  syntax clear
++elseif exists("b:current_syntax")
++  finish
++endif
++
++syn match       objError        "^\a\+"
++
++syn match       objKeywords     "^cstype\s"
++syn match       objKeywords     "^ctech\s"
++syn match       objKeywords     "^stech\s"
++syn match       objKeywords     "^deg\s"
++syn match       objKeywords     "^curv\(2\?\)\s"
++syn match       objKeywords     "^parm\s"
++syn match       objKeywords     "^surf\s"
++syn match       objKeywords     "^end\s"
++syn match       objKeywords     "^bzp\s"
++syn match       objKeywords     "^bsp\s"
++syn match       objKeywords     "^res\s"
++syn match       objKeywords     "^cdc\s"
++syn match       objKeywords     "^con\s"
++
++syn match       objKeywords     "^shadow_obj\s"
++syn match       objKeywords     "^trace_obj\s"
++syn match       objKeywords     "^usemap\s"
++syn match       objKeywords     "^lod\s"
++syn match       objKeywords     "^maplib\s"
++syn match       objKeywords     "^d_interp\s"
++syn match       objKeywords     "^c_interp\s"
++syn match       objKeywords     "^bevel\s"
++syn match       objKeywords     "^mg\s"
++syn match       objKeywords     "^s\s"
++syn match       objKeywords     "^con\s"
++syn match       objKeywords     "^trim\s"
++syn match       objKeywords     "^hole\s"
++syn match       objKeywords     "^scrv\s"
++syn match       objKeywords     "^sp\s"
++syn match       objKeywords     "^step\s"
++syn match       objKeywords     "^bmat\s"
++syn match       objKeywords     "^csh\s"
++syn match       objKeywords     "^call\s"
++
++syn match       objComment      "^#.*"
++syn match       objVertex       "^v\s"
++syn match       objFace         "^f\s"
++syn match       objVertice      "^vt\s"
++syn match       objNormale      "^vn\s"
++syn match       objGroup        "^g\s.*"
++syn match       objMaterial     "^usemtl\s.*"
++syn match       objInclude      "^mtllib\s.*"
++
++syn match       objFloat        "-\?\d\+\.\d\+\(e\(+\|-\)\d\+\)\?"
++syn match       objInt          "\d\+"
++syn match       objIndex        "\d\+\/\d*\/\d*"
++
++" Define the default highlighting.
++" 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_cabal_syn_inits")
++  if version < 508
++    let did_cabal_syn_inits = 1
++    command -nargs=+ HiLink hi link <args>
++  else
++    command -nargs=+ HiLink hi def link <args>
++  endif
++
++  HiLink objError           Error
++  HiLink objComment         Comment
++  HiLink objInclude         PreProc
++  HiLink objFloat           Float
++  HiLink objInt             Number
++  HiLink objGroup           Structure
++  HiLink objIndex           Constant
++  HiLink objMaterial        Label
++
++  HiLink objVertex          Keyword
++  HiLink objNormale         Keyword
++  HiLink objVertice         Keyword
++  HiLink objFace            Keyword
++  HiLink objKeywords        Keyword
++
++
++  delcommand HiLink
++endif
++
++let b:current_syntax = "obj"
++
++" vim: ts=8
+diff -Nur runtime/syntax/papp.vim runtime/syntax/papp.vim
+--- runtime/syntax/papp.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/papp.vim	2011-01-18 10:40:56.398226869 -0800
+@@ -2,7 +2,7 @@
+ "
+ " Language:	papp
+ " Maintainer:	Marc Lehmann <[email protected]>
+-" Last Change:	2003 May 11
++" Last Change:	2009 Nov 11
+ " Filenames:    *.papp *.pxml *.pxsl
+ " URL:		http://papp.plan9.de/
+ 
+@@ -37,6 +37,7 @@
+     syn include @PAppHtml syntax/html.vim
+   endif
+   unlet b:current_syntax
++  syntax spell default  " added by Bram
+ endif
+ 
+ if version < 600
+diff -Nur runtime/syntax/perl.vim runtime/syntax/perl.vim
+--- runtime/syntax/perl.vim	2006-11-27 13:03:35.000000000 -0800
++++ runtime/syntax/perl.vim	2011-04-03 09:27:21.817631648 -0700
+@@ -1,24 +1,24 @@
+ " Vim syntax file
+-" Language:	Perl
+-" Maintainer:	Nick Hibma <[email protected]>
+-" Last Change:	2006 November 23
+-" Location:	http://www.van-laarhoven.org/vim/syntax/perl.vim
++" Language:     Perl 5
++" Maintainer:   Andy Lester <[email protected]>
++" URL:          http://github.com/petdance/vim-perl/tree/master
++" Last Change:  2009-09-2
++" Contributors: Andy Lester <[email protected]>
++"               Hinrik Örn Sigurðsson <[email protected]>
++"               Lukas Mai <l.mai.web.de>
++"               Nick Hibma <[email protected]>
++"               Sonia Heimann <[email protected]>
++"               and many others.
+ "
+ " Please download most recent version first before mailing
+ " any comments.
+-" See also the file perl.vim.regression.pl to check whether your
+-" modifications work in the most odd cases
+-" http://www.van-laarhoven.org/vim/syntax/perl.vim.regression.pl
+ "
+-" Original version: Sonia Heimann <[email protected]>
+-" Thanks to many people for their contribution.
+-
+ " The following parameters are available for tuning the
+ " perl syntax highlighting, with defaults given:
+ "
+ " unlet perl_include_pod
+-" unlet perl_want_scope_in_variables
+-" unlet perl_extended_vars
++" unlet perl_no_scope_in_variables
++" unlet perl_no_extended_vars
+ " unlet perl_string_as_statement
+ " unlet perl_no_sync_on_sub
+ " unlet perl_no_sync_on_global_var
+@@ -28,17 +28,37 @@
+ " let perl_nofold_packages = 1
+ " let perl_nofold_subs = 1
+ 
+-" Remove any old syntax stuff that was loaded (5.x) or quit when a syntax file
+-" was already loaded (6.x).
+ if version < 600
+-  syntax clear
++  echoerr ">=vim-6.0 is required to run perl.vim"
++  finish
+ elseif exists("b:current_syntax")
+   finish
+ endif
+ 
+-" Unset perl_fold if it set but vim doesn't support it.
+-if version < 600 && exists("perl_fold")
+-  unlet perl_fold
++"
++" Folding
++
++if exists("perl_fold")
++  " Note: this bit must come before the actual highlighting of the "package"
++  " keyword, otherwise this will screw up Pod lines that match /^package/
++  if !exists("perl_nofold_packages")
++    syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
++  endif
++  if !exists("perl_nofold_subs")
++    syn region perlSubFold     start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend
++    syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
++  endif
++
++  if exists("perl_fold_blocks")
++    syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)foreach\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
++    syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
++  endif
++
++  setlocal foldmethod=syntax
++  syn sync fromstart
++else
++  " fromstart above seems to set minlines even if perl_fold is not set.
++  syn sync minlines=0
+ endif
+ 
+ 
+@@ -65,64 +85,48 @@
+ endif
+ 
+ 
++syn cluster perlTop		contains=TOP
++syn region  perlGenericBlock	matchgroup=perlGenericBlock start="{" end="}" contained transparent
++
++
+ " All keywords
+ "
+-if exists("perl_fold") && exists("perl_fold_blocks")
+-  syn match perlConditional		"\<if\>"
+-  syn match perlConditional		"\<elsif\>"
+-  syn match perlConditional		"\<unless\>"
+-  syn match perlConditional		"\<else\>" nextgroup=perlElseIfError skipwhite skipnl skipempty
+-else
+-  syn keyword perlConditional		if elsif unless
+-  syn keyword perlConditional		else nextgroup=perlElseIfError skipwhite skipnl skipempty
+-endif
+-syn keyword perlConditional		switch eq ne gt lt ge le cmp not and or xor err
+-if exists("perl_fold") && exists("perl_fold_blocks")
+-  syn match perlRepeat			"\<while\>"
+-  syn match perlRepeat			"\<for\>"
+-  syn match perlRepeat			"\<foreach\>"
+-  syn match perlRepeat			"\<do\>"
+-  syn match perlRepeat			"\<until\>"
+-  syn match perlRepeat			"\<continue\>"
+-else
+-  syn keyword perlRepeat		while for foreach do until continue
+-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
+-else
+-  syn keyword perlControl		BEGIN END CHECK INIT
+-endif
++syn match perlConditional		"\<\%(if\|elsif\|unless\|given\|when\|default\)\>"
++syn match perlConditional		"\<else\>" nextgroup=perlElseIfError skipwhite skipnl skipempty
++syn match perlRepeat			"\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>"
++syn match perlOperator			"\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>"
++syn match perlControl			"\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>"
++
++syn match perlStatementStorage		"\<\%(my\|our\|local\|state\)\>"
++syn match perlStatementControl		"\<\%(return\|last\|next\|redo\|goto\|break\)\>"
++syn match perlStatementScalar		"\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>"
++syn match perlStatementRegexp		"\<\%(pos\|quotemeta\|split\|study\)\>"
++syn match perlStatementNumeric		"\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
++syn match perlStatementList		"\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
++syn match perlStatementHash		"\<\%(delete\|each\|exists\|keys\|values\)\>"
++syn match perlStatementIOfunc		"\<\%(syscall\|dbmopen\|dbmclose\)\>"
++syn match perlStatementFiledesc		"\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite
++syn match perlStatementFiledesc		"\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite
++syn match perlStatementVector		"\<vec\>"
++syn match perlStatementFiles		"\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
++syn match perlStatementFiles		"-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
++syn match perlStatementFlow		"\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>"
++syn match perlStatementInclude		"\<require\>"
++syn match perlStatementInclude		"\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
++syn match perlStatementProc		"\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
++syn match perlStatementSocket		"\<\%(acept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
++syn match perlStatementIPC		"\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
++syn match perlStatementNetwork		"\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>"
++syn match perlStatementPword		"\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>"
++syn match perlStatementTime		"\<\%(gmtime\|localtime\|time\)\>"
++
++syn match perlStatementMisc		"\<\%(warn\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>"
+ 
+-syn keyword perlStatementStorage	my local our
+-syn keyword perlStatementControl	goto return last next redo
+-syn keyword perlStatementScalar		chomp chop chr crypt index lc lcfirst length ord pack reverse rindex sprintf substr uc ucfirst
+-syn keyword perlStatementRegexp		pos quotemeta split study
+-syn keyword perlStatementNumeric	abs atan2 cos exp hex int log oct rand sin sqrt srand
+-syn keyword perlStatementList		splice unshift shift push pop split join reverse grep map sort unpack
+-syn keyword perlStatementHash		each exists keys values tie tied untie
+-syn keyword perlStatementIOfunc		carp confess croak dbmclose dbmopen die syscall
+-syn keyword perlStatementFiledesc	binmode close closedir eof fileno getc lstat print printf readdir readline readpipe rewinddir select stat tell telldir write nextgroup=perlFiledescStatementNocomma skipwhite
+-syn keyword perlStatementFiledesc	fcntl flock ioctl open opendir read seek seekdir sysopen sysread sysseek syswrite truncate nextgroup=perlFiledescStatementComma skipwhite
+-syn keyword perlStatementVector		pack vec
+-syn keyword perlStatementFiles		chdir chmod chown chroot glob link mkdir readlink rename rmdir symlink umask unlink utime
+-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\|base\|fields\)\>\)\="
+-syn keyword perlStatementScope		import
+-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
+-syn keyword perlStatementNetwork	endhostent endnetent endprotoent endservent gethostbyaddr gethostbyname gethostent getnetbyaddr getnetbyname getnetent getprotobyname getprotobynumber getprotoent getservbyname getservbyport getservent sethostent setnetent setprotoent setservent
+-syn keyword perlStatementPword		getpwuid getpwnam getpwent setpwent endpwent getgrent getgrgid getlogin getgrnam setgrent endgrent
+-syn keyword perlStatementTime		gmtime localtime time times
++syn keyword perlTodo			TODO TBD FIXME XXX NOTE contained
+ 
+-syn keyword perlStatementMisc		warn formline reset scalar delete prototype lock
+-syn keyword perlStatementNew		new
++syn region perlStatementIndirObjWrap	matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|print\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlGenericBlock
+ 
+-syn keyword perlTodo			TODO TBD FIXME XXX contained
++syn match perlLabel      "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
+ 
+ " Perl Identifiers.
+ "
+@@ -135,52 +139,55 @@
+ " variable - there again, too complicated and too slow.
+ 
+ " Special variables first ($^A, ...) and ($|, $', ...)
+-syn match  perlVarPlain		 "$^[ADEFHILMOPSTWX]\="
++syn match  perlVarPlain		 "$^[ACDEFHILMNOPRSTVWX]\="
+ syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
+-syn match  perlVarPlain		 "$\(0\|[1-9][0-9]*\)"
++syn match  perlVarPlain		 "$\%(0\|[1-9]\d*\)"
+ " Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
+-syn match  perlVarPlain		 "$:[^:]"
++syn match  perlVarPlain		 "$::\@!"
+ " These variables are not recognized within matches.
+ syn match  perlVarNotInMatches	 "$[|)]"
+ " This variable is not recognized within matches delimited by m//.
+ syn match  perlVarSlash		 "$/"
+ 
+ " And plain identifiers
+-syn match  perlPackageRef	 "\(\h\w*\)\=\(::\|'\)\I"me=e-1 contained
++syn match  perlPackageRef	 "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained
+ 
+-" To highlight packages in variables as a scope reference - i.e. in $pack::var,
+-" pack:: is a scope, just set "perl_want_scope_in_variables"
+-" If you *want* complex things like @{${"foo"}} to be processed,
+-" just set the variable "perl_extended_vars"...
+-
+-" FIXME value between {} should be marked as string. is treated as such by Perl.
+-" At the moment it is marked as something greyish instead of read. Probably todo
+-" with transparency. Or maybe we should handle the bare word in that case. or make it into
+-
+-if exists("perl_want_scope_in_variables")
+-  syn match  perlVarPlain	"\\\=\([@$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+-  syn match  perlVarPlain2	"\\\=%\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+-  syn match  perlFunctionName	"\\\=&\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember
++" To not highlight packages in variables as a scope reference - i.e. in
++" $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables"
++" If you don't want complex things like @{${"foo"}} to be processed,
++" just set the variable "perl_no_extended_vars"...
++
++if !exists("perl_no_scope_in_variables")
++  syn match  perlVarPlain       "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn match  perlVarPlain2                   "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef
++  syn match  perlFunctionName                "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+ else
+-  syn match  perlVarPlain	"\\\=\([@$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+-  syn match  perlVarPlain2	"\\\=%\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+-  syn match  perlFunctionName	"\\\=&\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember
+-endif
+-
+-if exists("perl_extended_vars")
+-  syn cluster perlExpr		contains=perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,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
+-  syn region perlVarMember	matchgroup=perlVarPlain start="\(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
+-  syn match  perlVarSimpleMember	"\(->\)\={\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember contains=perlVarSimpleMemberName contained
++  syn match  perlVarPlain       "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn match  perlVarPlain2                   "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)"
++  syn match  perlFunctionName                "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++endif
++
++if !exists("perl_no_extended_vars")
++  syn cluster perlExpr		contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlGenericBlock
++  syn region perlArrow		matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
++  syn region perlArrow		matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
++  syn region perlArrow		matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
++  syn match  perlArrow		"->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
++  syn region perlArrow		matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
++  syn region perlVarBlock	matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn region perlVarBlock2	matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn match  perlVarPlain2	"[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn match  perlVarPlain	"\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn region perlVarMember	matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn match  perlVarSimpleMember	"\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained
+   syn match  perlVarSimpleMemberName	"\I\i*" contained
+-  syn region perlVarMember	matchgroup=perlVarPlain start="\(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
+-  syn match  perlMethod		"\(->\)\I\i*" contained
++  syn region perlVarMember	matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
++  syn match perlPackageConst	"__PACKAGE__" nextgroup=perlMethod
++  syn match  perlMethod		"->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod
+ endif
+ 
+ " File Descriptors
+-syn match  perlFiledescRead	"[<]\h\w\+[>]"
++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
+@@ -188,16 +195,20 @@
+ 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	"\[\(\]\|-\)\=[^\[\]]*\(\[\|\-\)\=\]" contained
++syn match  perlSpecialString	"\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
++syn match  perlSpecialStringU2	"\\." extend contained transparent contains=NONE
++syn match  perlSpecialStringU	"\\\\" contained
++syn match  perlSpecialMatch	"\\[1-9]" contained extend
++syn match  perlSpecialMatch	"\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained
++syn match  perlSpecialMatch	"\\k\%(<\h\w*>\|'\h\w*'\)" contained
++syn match  perlSpecialMatch	"{\d\+\%(,\%(\d\+\)\=\)\=}" 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.
+-" syn match perlSpecialBEOM    "^\^\|\$$" contained
++syn match  perlSpecialMatch	"(?[impsx]*\%(-[imsx]\+\)\=)" contained
++syn match  perlSpecialMatch	"(?\%([-+]\=\d\+\|R\))" contained
++syn match  perlSpecialMatch	"(?\%(&\|P[>=]\)\h\w*)" contained
++syn match  perlSpecialMatch	"(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained
+ 
+ " Possible errors
+ "
+@@ -205,177 +216,195 @@
+ syn match  perlNotEmptyLine	"^\s\+$" contained
+ " Highlight '} else if (...) {', it should be '} else { if (...) { ' or
+ " '} elsif (...) {'.
+-"syn keyword perlElseIfError	if contained
++syn match perlElseIfError	"[^[:space:]{]\+" contained
+ 
+ " Variable interpolation
+ "
+ " These items are interpolated inside "" strings and similar constructs.
+ syn cluster perlInterpDQ	contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock
+ " These items are interpolated inside '' strings and similar constructs.
+-syn cluster perlInterpSQ	contains=perlSpecialStringU
++syn cluster perlInterpSQ	contains=perlSpecialStringU,perlSpecialStringU2
+ " These items are interpolated inside m// matches and s/// substitutions.
+-syn cluster perlInterpSlash	contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock,perlSpecialBEOM
++syn cluster perlInterpSlash	contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock
+ " These items are interpolated inside m## matches and s### substitutions.
+ syn cluster perlInterpMatch	contains=@perlInterpSlash,perlVarSlash
+ 
+ " Shell commands
+-syn region  perlShellCommand	matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ
++syn region  perlShellCommand	matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend
+ 
+ " Constants
+ "
+ " Numbers
+-syn match  perlNumber	"[-+]\=\(\<\d[[:digit:]_]*L\=\>\|0[xX]\x[[:xdigit:]_]*\>\)"
+-syn match  perlFloat	"[-+]\=\<\d[[:digit:]_]*[eE][\-+]\=\d\+"
+-syn match  perlFloat	"[-+]\=\<\d[[:digit:]_]*\.[[:digit:]_]*\([eE][\-+]\=\d\+\)\="
+-syn match  perlFloat	"[-+]\=\<\.[[:digit:]_]\+\([eE][\-+]\=\d\+\)\="
++syn match  perlNumber	"\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>"
++syn match  perlFloat	"\<\d[[:digit:]_]*[eE][\-+]\=\d\+"
++syn match  perlFloat	"\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\="
++syn match  perlFloat	"\.[[:digit:]_]\+\%([eE][\-+]\=\d\+\)\="
++
++syn match  perlString	"\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV
++syn match  perlVStringV	"\<v" contained
++
++
++syn region perlParensSQ		start=+(+ end=+)+ extend contained transparent contains=perlParensSQ,@perlInterpSQ keepend
++syn region perlBracketsSQ	start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsSQ,@perlInterpSQ keepend
++syn region perlBracesSQ		start=+{+ end=+}+ extend contained transparent contains=perlBracesSQ,@perlInterpSQ keepend
++syn region perlAnglesSQ		start=+<+ end=+>+ extend contained transparent contains=perlAnglesSQ,@perlInterpSQ keepend
++
++syn region perlParensDQ		start=+(+ end=+)+ extend contained transparent contains=perlParensDQ,@perlInterpDQ keepend
++syn region perlBracketsDQ	start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsDQ,@perlInterpDQ keepend
++syn region perlBracesDQ		start=+{+ end=+}+ extend contained transparent contains=perlBracesDQ,@perlInterpDQ keepend
++syn region perlAnglesDQ		start=+<+ end=+>+ extend contained transparent contains=perlAnglesDQ,@perlInterpDQ keepend
+ 
+ 
+ " Simple version of searches and matches
+-" caters for m//, m##, m{} and m[] (and the !/ variant)
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+[m!]/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+[m!]#+ end=+#[cgimosx]*+ contains=@perlInterpMatch
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+[m!]{+ end=+}[cgimosx]*+ contains=@perlInterpMatch
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+[m!]\[+ end=+\][cgimosx]*+ contains=@perlInterpMatch
+-
+-" A special case for m!!x which allows for comments and extra whitespace in the pattern
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+[m!]!+ end=+![cgimosx]*+ contains=@perlInterpSlash,perlComment
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[cgimopsx]*+ contains=@perlInterpMatch keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[cgimopsx]*+ contains=@perlInterpMatch keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[cgimopsx]*+ contains=@perlInterpSQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[cgimopsx]*+ contains=@perlInterpSlash keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[cgimopsx]*+ contains=@perlInterpMatch,perlParensDQ keepend
++
++" A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[cgimopsx]*+ contains=@perlInterpMatch,perlAnglesDQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend
+ 
+ " 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=+^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\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[cgimopsx]*+ contains=@perlInterpSlash
+ 
+ 
+ " Substitutions
+-" caters for s///, s### and s[][]
+ " perlMatch is the first part, perlSubstitution* is the substitution part
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s'+  end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s"+  end=+"+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionDQ
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s/+  end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionSlash
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s#+  end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionHash
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s\[+ end=+\]+ contains=@perlInterpMatch nextgroup=perlSubstitutionBracket skipwhite skipempty skipnl
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s{+ end=+}+ contains=@perlInterpMatch nextgroup=perlSubstitutionCurly skipwhite skipempty skipnl
+-syn region perlSubstitutionSQ		matchgroup=perlMatchStartEnd start=+'+  end=+'[ecgimosx]*+ contained contains=@perlInterpSQ
+-syn region perlSubstitutionDQ		matchgroup=perlMatchStartEnd start=+"+  end=+"[ecgimosx]*+ contained contains=@perlInterpDQ
+-syn region perlSubstitutionSlash	matchgroup=perlMatchStartEnd start=+/+  end=+/[ecgimosx]*+ contained contains=@perlInterpDQ
+-syn region perlSubstitutionHash		matchgroup=perlMatchStartEnd start=+#+  end=+#[ecgimosx]*+ contained contains=@perlInterpDQ
+-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
+-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
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+  end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+  end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+  end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
++syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[ecgimopsx]*+ keepend contained contains=@perlInterpDQ
++syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+(+ end=+)[ecgimopsx]*+ contained contains=@perlInterpDQ,perlParensDQ keepend
++syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+\[+ end=+\][ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend
++syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+{+ end=+}[ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend
++syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+<+ end=+>[ecgimopsx]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend
++syn region perlSubstitutionSQ		matchgroup=perlMatchStartEnd start=+'+  end=+'[ecgimopsx]*+ contained contains=@perlInterpSQ keepend 
+ 
+-" Substitutions
+-" caters for tr///, tr### and tr[][]
++" Translations
+ " perlMatch is the first part, perlTranslation* is the second, translator part.
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationSQ
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)"+ end=+"+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationDQ
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)/+ end=+/+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationSlash
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationHash
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\(tr\|y\)\[+ end=+\]+ contains=@perlInterpSQ nextgroup=perlTranslationBracket skipwhite skipempty skipnl
+-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\(tr\|y\){+ end=+}+ contains=@perlInterpSQ nextgroup=perlTranslationCurly skipwhite skipempty skipnl
+-syn region perlTranslationSQ		matchgroup=perlMatchStartEnd start=+'+ end=+'[cds]*+ contained
+-syn region perlTranslationDQ		matchgroup=perlMatchStartEnd start=+"+ end=+"[cds]*+ contained
+-syn region perlTranslationSlash		matchgroup=perlMatchStartEnd start=+/+ end=+/[cds]*+ contained
+-syn region perlTranslationHash		matchgroup=perlMatchStartEnd start=+#+ end=+#[cds]*+ contained
+-syn region perlTranslationBracket	matchgroup=perlMatchStartEnd start=+\[+ end=+\][cds]*+ contained
+-syn region perlTranslationCurly		matchgroup=perlMatchStartEnd start=+{+ end=+}[cds]*+ contained
+-
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\>\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
++syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
++syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1[cds]*+ contained
++syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+(+ end=+)[cds]*+ contains=perlParensSQ contained
++syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+\[+ end=+\][cds]*+ contains=perlBracketsSQ contained
++syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+{+ end=+}[cds]*+ contains=perlBracesSQ contained
++syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+<+ end=+>[cds]*+ contains=perlAnglesSQ contained
+ 
+-" The => operator forces a bareword to the left of it to be interpreted as
+-" a string
+-syn match  perlString "\<\I\i*\s*=>"me=e-2
+ 
+ " Strings and q, qq, qw and qr expressions
+ 
+-" Brackets in qq()
+-syn region perlBrackets	start=+(+ end=+)+ contained transparent contains=perlBrackets,@perlStringSQ
+-
+-syn region perlStringUnexpanded	matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ
+-syn region perlString		matchgroup=perlStringStartEnd start=+"+  end=+"+ contains=@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
+-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
+-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
+-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw/+  end=+/+ contains=@perlInterpSQ
+-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qr#+  end=+#[imosx]*+ contains=@perlInterpMatch
+-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qr|+  end=+|[imosx]*+ contains=@perlInterpMatch
+-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qr(+  end=+)[imosx]*+ contains=@perlInterpMatch
+-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qr{+  end=+}[imosx]*+ contains=@perlInterpMatch
+-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qr/+  end=+/[imosx]*+ contains=@perlInterpSlash
++syn region perlStringUnexpanded	matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend
++syn region perlString		matchgroup=perlStringStartEnd start=+"+  end=+"+ contains=@perlInterpDQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend
++
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*(+ end=+)+ contains=@perlInterpDQ,perlParensDQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*\[+ end=+\]+ contains=@perlInterpDQ,perlBracketsDQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend
++
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+  end=+\z1+ contains=@perlInterpSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+  end=+#+ contains=@perlInterpSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+  end=+)+ contains=@perlInterpSQ,perlParensSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+  end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+  end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+  end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend
++
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+  end=+\z1[imosx]*+ contains=@perlInterpMatch keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+  end=+/[imosx]*+ contains=@perlInterpSlash keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+  end=+#[imosx]*+ contains=@perlInterpMatch keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+  end=+'[imosx]*+ contains=@perlInterpSQ keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+  end=+)[imosx]*+ contains=@perlInterpMatch,perlParensDQ keepend
++
++" A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+  end=+}[imosx]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+  end=+>[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend
++syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+  end=+\][imosx]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend
+ 
+ " Constructs such as print <<EOF [...] EOF, 'here' documents
+ "
+-if version >= 600
+-  " XXX Any statements after the identifier are in perlString colour (i.e.
+-  " 'if $a' in 'print <<EOF if $a').
+-  if exists("perl_fold")
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+    end=+^\z1$+ contains=@perlInterpDQ fold
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*"\z(.\{-}\)"+ end=+^\z1$+ contains=@perlInterpDQ fold
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*'\z(.\{-}\)'+ end=+^\z1$+ contains=@perlInterpSQ fold
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*""+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine fold
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine fold
+-    syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<['"]\z(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)['"]+ end=+^\z1$+ contains=ALL fold
+-  else
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+      end=+^\z1$+ contains=@perlInterpDQ
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*"\z(.\{-}\)"+ end=+^\z1$+ contains=@perlInterpDQ
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*'\z(.\{-}\)'+ end=+^\z1$+ contains=@perlInterpSQ
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*""+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine
+-    syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine
+-    syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<\(['"]\|\)\z(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL
+-  endif
++" XXX Any statements after the identifier are in perlString colour (i.e.
++" 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it
++" seems due to the 'auto-extending nature' of regions.
++if exists("perl_fold")
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+    end=+^\z1$+ contains=@perlInterpDQ fold
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ fold
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ fold
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*""+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine fold
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine fold
++  syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL fold
+ else
+-  syn match perlUntilEOFStart	"<<EOF.*"lc=5 nextgroup=perlUntilEOFDQ skipnl transparent
+-  syn match perlUntilEOFStart	"<<\s*\"EOF\".*" nextgroup=perlUntilEOFDQ skipnl transparent
+-  syn match perlUntilEOFStart	"<<\s*'EOF'.*" nextgroup=perlUntilEOFSQ skipnl transparent
+-  syn match perlUntilEOFStart	"<<\s*\"\".*" nextgroup=perlUntilEmptyDQ skipnl transparent
+-  syn match perlUntilEOFStart	"<<\s*''.*" nextgroup=perlUntilEmptySQ skipnl transparent
+-  syn region perlUntilEOFDQ	matchgroup=perlStringStartEnd start=++ end="^EOF$" contains=@perlInterpDQ contained
+-  syn region perlUntilEOFSQ	matchgroup=perlStringStartEnd start=++ end="^EOF$" contains=@perlInterpSQ contained
+-  syn region perlUntilEmptySQ	matchgroup=perlStringStartEnd start=++ end="^$" contains=@perlInterpDQ,perlNotEmptyLine contained
+-  syn region perlUntilEmptyDQ	matchgroup=perlStringStartEnd start=++ end="^$" contains=@perlInterpSQ,perlNotEmptyLine contained
+-  syn match perlHereIdentifier	"<<EOF"
+-  syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<\(['"]\|\)\(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\(END_\(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)$+ contains=ALL
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+    end=+^\z1$+ contains=@perlInterpDQ
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*""+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine
++  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine
++  syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL
+ endif
+ 
+ 
+ " Class declarations
+ "
+-syn match  perlPackageDecl	"^\s*\<package\s\+\S\+" contains=perlStatementPackage
++syn match   perlPackageDecl		"\<package\s\+\%(\h\|::\)\%(\w\|::\)*" contains=perlStatementPackage
+ syn keyword perlStatementPackage	package contained
+ 
+ " Functions
+ "       sub [name] [(prototype)] {
+ "
+-syn region perlFunction		start="\s*\<sub\>" end="[;{]"he=e-1 contains=perlStatementSub,perlFunctionPrototype,perlFunctionPRef,perlFunctionName,perlComment
+-syn keyword perlStatementSub	sub contained
++syn match perlSubError "[^[:space:];{#]" contained
++if v:version == 701 && !has('patch221')  " XXX I hope that's the right one
++    syn match perlSubAttributes ":" contained
++else
++    syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained
++    syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ
++    syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError
++    syn match perlSubAttributes "" contained nextgroup=perlSubError
++    syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
++endif
++syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
++syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes contained contains=perlSubPrototypeError
++syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype
++
++syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
+ 
+-syn match  perlFunctionPrototype	"([^)]*)" contained
+-if exists("perl_want_scope_in_variables")
++if !exists("perl_no_scope_in_variables")
+    syn match  perlFunctionPRef	"\h\w*::" contained
+    syn match  perlFunctionName	"\h\w*[^:]" contained
+ else
+    syn match  perlFunctionName	"\h[[:alnum:]_:]*" contained
+ endif
+ 
++" The => operator forces a bareword to the left of it to be interpreted as
++" a string
++syn match  perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
++
+ " All other # are comments, except ^#!
+-syn match  perlComment		"#.*" contains=perlTodo
++syn match  perlComment		"#.*" contains=perlTodo,@Spell
+ syn match  perlSharpBang	"^#!.*"
+ 
+ " Formats
+ syn region perlFormat		matchgroup=perlStatementIOFunc start="^\s*\<format\s\+\k\+\s*=\s*$"rs=s+6 end="^\s*\.\s*$" contains=perlFormatName,perlFormatField,perlVarPlain,perlVarPlain2
+ syn match  perlFormatName	"format\s\+\k\+\s*="lc=7,me=e-1 contained
+-syn match  perlFormatField	"[@^][|<>~]\+\(\.\.\.\)\=" contained
++syn match  perlFormatField	"[@^][|<>~]\+\%(\.\.\.\)\=" contained
+ syn match  perlFormatField	"[@^]#[#.]*" contained
+ syn match  perlFormatField	"@\*" contained
+ syn match  perlFormatField	"@[^A-Za-z_|<>~#*]"me=e-1 contained
+@@ -383,161 +412,113 @@
+ 
+ " __END__ and __DATA__ clauses
+ if exists("perl_fold")
+-  syntax region perlDATA		start="^__\(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold
++  syntax region perlDATA		start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold
+ else
+-  syntax region perlDATA		start="^__\(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA
++  syntax region perlDATA		start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA
+ endif
+ 
++command -nargs=+ HiLink hi def link <args>
+ 
+-"
+-" Folding
+-
+-if exists("perl_fold")
+-  if !exists("perl_nofold_packages")
+-    syn region perlPackageFold start="^package \S\+;\s*\(#.*\)\=$" end="^1;\s*\(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
+-  endif
+-  if !exists("perl_nofold_subs")
+-    syn region perlSubFold     start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\(#.*\)\=$" transparent fold keepend
+-    syn region perlSubFold start="^\z(\s*\)\<\(BEGIN\|END\|CHECK\|INIT\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
+-  endif
+-
+-  if exists("perl_fold_blocks")
+-    syn region perlBlockFold start="^\z(\s*\)\(if\|elsif\|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 perlBlockFold start="^\z(\s*\)\(do\|else\)\(\s*{\)\=\s*\(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\(#.*\)\=$" transparent fold keepend
+-  endif
+-
+-  setlocal foldmethod=syntax
+-  syn sync fromstart
++" The default highlighting.
++HiLink perlSharpBang		PreProc
++HiLink perlControl		PreProc
++HiLink perlInclude		Include
++HiLink perlSpecial		Special
++HiLink perlString		String
++HiLink perlCharacter		Character
++HiLink perlNumber		Number
++HiLink perlFloat		Float
++HiLink perlType			Type
++HiLink perlIdentifier		Identifier
++HiLink perlLabel		Label
++HiLink perlStatement		Statement
++HiLink perlConditional		Conditional
++HiLink perlRepeat		Repeat
++HiLink perlOperator		Operator
++HiLink perlFunction		Keyword
++HiLink perlSubName		Function
++HiLink perlSubPrototype		Type
++HiLink perlSubAttributes	PreProc
++HiLink perlSubAttributesCont	perlSubAttributes
++HiLink perlComment		Comment
++HiLink perlTodo			Todo
++if exists("perl_string_as_statement")
++  HiLink perlStringStartEnd	perlStatement
+ else
+-  " fromstart above seems to set minlines even if perl_fold is not set.
+-  syn sync minlines=0
++  HiLink perlStringStartEnd	perlString
+ endif
++HiLink perlVStringV		perlStringStartEnd
++HiLink perlList			perlStatement
++HiLink perlMisc			perlStatement
++HiLink perlVarPlain		perlIdentifier
++HiLink perlVarPlain2		perlIdentifier
++HiLink perlArrow		perlIdentifier
++HiLink perlFiledescRead		perlIdentifier
++HiLink perlFiledescStatement	perlIdentifier
++HiLink perlVarSimpleMember	perlIdentifier
++HiLink perlVarSimpleMemberName 	perlString
++HiLink perlVarNotInMatches	perlIdentifier
++HiLink perlVarSlash		perlIdentifier
++HiLink perlQQ			perlString
++HiLink perlHereDoc		perlString
++HiLink perlStringUnexpanded	perlString
++HiLink perlSubstitutionSQ	perlString
++HiLink perlSubstitutionGQQ	perlString
++HiLink perlTranslationGQ	perlString
++HiLink perlMatch		perlString
++HiLink perlMatchStartEnd	perlStatement
++HiLink perlFormatName		perlIdentifier
++HiLink perlFormatField		perlString
++HiLink perlPackageDecl		perlType
++HiLink perlStorageClass		perlType
++HiLink perlPackageRef		perlType
++HiLink perlStatementPackage	perlStatement
++HiLink perlStatementStorage	perlStatement
++HiLink perlStatementControl	perlStatement
++HiLink perlStatementScalar	perlStatement
++HiLink perlStatementRegexp	perlStatement
++HiLink perlStatementNumeric	perlStatement
++HiLink perlStatementList	perlStatement
++HiLink perlStatementHash	perlStatement
++HiLink perlStatementIOfunc	perlStatement
++HiLink perlStatementFiledesc	perlStatement
++HiLink perlStatementVector	perlStatement
++HiLink perlStatementFiles	perlStatement
++HiLink perlStatementFlow	perlStatement
++HiLink perlStatementInclude	perlStatement
++HiLink perlStatementProc	perlStatement
++HiLink perlStatementSocket	perlStatement
++HiLink perlStatementIPC		perlStatement
++HiLink perlStatementNetwork	perlStatement
++HiLink perlStatementPword	perlStatement
++HiLink perlStatementTime	perlStatement
++HiLink perlStatementMisc	perlStatement
++HiLink perlStatementIndirObj	perlStatement
++HiLink perlFunctionName		perlIdentifier
++HiLink perlMethod		perlIdentifier
++HiLink perlFunctionPRef		perlType
++HiLink perlPOD			perlComment
++HiLink perlShellCommand		perlString
++HiLink perlSpecialAscii		perlSpecial
++HiLink perlSpecialDollar	perlSpecial
++HiLink perlSpecialString	perlSpecial
++HiLink perlSpecialStringU	perlSpecial
++HiLink perlSpecialMatch		perlSpecial
++HiLink perlDATA			perlComment
+ 
++" Possible errors
++HiLink perlNotEmptyLine		Error
++HiLink perlElseIfError		Error
++HiLink perlSubPrototypeError	Error
++HiLink perlSubError		Error
+ 
+-if version >= 508 || !exists("did_perl_syn_inits")
+-  if version < 508
+-    let did_perl_syn_inits = 1
+-    command -nargs=+ HiLink hi link <args>
+-  else
+-    command -nargs=+ HiLink hi def link <args>
+-  endif
+-
+-  " The default highlighting.
+-  HiLink perlSharpBang		PreProc
+-  HiLink perlControl		PreProc
+-  HiLink perlInclude		Include
+-  HiLink perlSpecial		Special
+-  HiLink perlString		String
+-  HiLink perlCharacter		Character
+-  HiLink perlNumber		Number
+-  HiLink perlFloat		Float
+-  HiLink perlType		Type
+-  HiLink perlIdentifier		Identifier
+-  HiLink perlLabel		Label
+-  HiLink perlStatement		Statement
+-  HiLink perlConditional	Conditional
+-  HiLink perlRepeat		Repeat
+-  HiLink perlOperator		Operator
+-  HiLink perlFunction		Function
+-  HiLink perlFunctionPrototype	perlFunction
+-  HiLink perlComment		Comment
+-  HiLink perlTodo		Todo
+-  if exists("perl_string_as_statement")
+-    HiLink perlStringStartEnd	perlStatement
+-  else
+-    HiLink perlStringStartEnd	perlString
+-  endif
+-  HiLink perlList		perlStatement
+-  HiLink perlMisc		perlStatement
+-  HiLink perlVarPlain		perlIdentifier
+-  HiLink perlVarPlain2		perlIdentifier
+-  HiLink perlFiledescRead	perlIdentifier
+-  HiLink perlFiledescStatement	perlIdentifier
+-  HiLink perlVarSimpleMember	perlIdentifier
+-  HiLink perlVarSimpleMemberName perlString
+-  HiLink perlVarNotInMatches	perlIdentifier
+-  HiLink perlVarSlash		perlIdentifier
+-  HiLink perlQQ			perlString
+-  if version >= 600
+-    HiLink perlHereDoc		perlString
+-  else
+-    HiLink perlHereIdentifier	perlStringStartEnd
+-    HiLink perlUntilEOFDQ	perlString
+-    HiLink perlUntilEOFSQ	perlString
+-    HiLink perlUntilEmptyDQ	perlString
+-    HiLink perlUntilEmptySQ	perlString
+-    HiLink perlUntilEOF		perlString
+-  endif
+-  HiLink perlStringUnexpanded	perlString
+-  HiLink perlSubstitutionSQ	perlString
+-  HiLink perlSubstitutionDQ	perlString
+-  HiLink perlSubstitutionSlash	perlString
+-  HiLink perlSubstitutionHash	perlString
+-  HiLink perlSubstitutionBracket perlString
+-  HiLink perlSubstitutionCurly 	perlString
+-  HiLink perlSubstitutionPling	perlString
+-  HiLink perlTranslationSlash	perlString
+-  HiLink perlTranslationHash	perlString
+-  HiLink perlTranslationBracket	perlString
+-  HiLink perlTranslationCurly	perlString
+-  HiLink perlMatch		perlString
+-  HiLink perlMatchStartEnd	perlStatement
+-  HiLink perlFormatName		perlIdentifier
+-  HiLink perlFormatField	perlString
+-  HiLink perlPackageDecl	perlType
+-  HiLink perlStorageClass	perlType
+-  HiLink perlPackageRef		perlType
+-  HiLink perlStatementPackage	perlStatement
+-  HiLink perlStatementSub	perlStatement
+-  HiLink perlStatementStorage	perlStatement
+-  HiLink perlStatementControl	perlStatement
+-  HiLink perlStatementScalar	perlStatement
+-  HiLink perlStatementRegexp	perlStatement
+-  HiLink perlStatementNumeric	perlStatement
+-  HiLink perlStatementList	perlStatement
+-  HiLink perlStatementHash	perlStatement
+-  HiLink perlStatementIOfunc	perlStatement
+-  HiLink perlStatementFiledesc	perlStatement
+-  HiLink perlStatementVector	perlStatement
+-  HiLink perlStatementFiles	perlStatement
+-  HiLink perlStatementFlow	perlStatement
+-  HiLink perlStatementScope	perlStatement
+-  HiLink perlStatementInclude	perlStatement
+-  HiLink perlStatementProc	perlStatement
+-  HiLink perlStatementSocket	perlStatement
+-  HiLink perlStatementIPC	perlStatement
+-  HiLink perlStatementNetwork	perlStatement
+-  HiLink perlStatementPword	perlStatement
+-  HiLink perlStatementTime	perlStatement
+-  HiLink perlStatementMisc	perlStatement
+-  HiLink perlStatementNew	perlStatement
+-  HiLink perlFunctionName	perlIdentifier
+-  HiLink perlMethod		perlIdentifier
+-  HiLink perlFunctionPRef	perlType
+-  HiLink perlPOD		perlComment
+-  HiLink perlShellCommand	perlString
+-  HiLink perlSpecialAscii	perlSpecial
+-  HiLink perlSpecialDollar	perlSpecial
+-  HiLink perlSpecialString	perlSpecial
+-  HiLink perlSpecialStringU	perlSpecial
+-  HiLink perlSpecialMatch	perlSpecial
+-  HiLink perlSpecialBEOM	perlSpecial
+-  HiLink perlDATA		perlComment
+-
+-  HiLink perlBrackets		Error
+-
+-  " Possible errors
+-  HiLink perlNotEmptyLine	Error
+-  HiLink perlElseIfError	Error
+-
+-  delcommand HiLink
+-endif
++delcommand HiLink
+ 
+ " Syncing to speed up processing
+ "
+ if !exists("perl_no_sync_on_sub")
+   syn sync match perlSync	grouphere NONE "^\s*\<package\s"
+-  syn sync match perlSync	grouphere perlFunction "^\s*\<sub\s"
++  syn sync match perlSync	grouphere NONE "^\s*\<sub\>"
+   syn sync match perlSync	grouphere NONE "^}"
+ endif
+ 
+@@ -559,4 +540,5 @@
+ 
+ let b:current_syntax = "perl"
+ 
+-" vim: ts=8
++" XXX Change to sts=4:sw=4
++" vim:ts=8:sts=2:sw=2:expandtab:ft=vim
+diff -Nur runtime/syntax/perl6.vim runtime/syntax/perl6.vim
+--- runtime/syntax/perl6.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/perl6.vim	2011-01-18 10:40:56.404049892 -0800
+@@ -0,0 +1,2249 @@
++" Vim syntax file
++" Language:     Perl 6
++" Maintainer:   Andy Lester <[email protected]>
++" Homepage:     http://github.com/petdance/vim-perl/tree/master
++" Last Change:  2009-07-04
++
++" Contributors: Luke Palmer <[email protected]>
++"               Moritz Lenz <[email protected]>
++"               Hinrik Örn Sigurðsson <[email protected]>
++"
++" This is a big undertaking. Perl 6 is the sort of language that only Perl
++" can parse. But I'll do my best to get vim to.
++"
++" You can associate the extension ".pl" with the filetype "perl6" by setting
++"     autocmd BufNewFile,BufRead *.pl setf perl6
++" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to
++" put a modeline near the beginning or end of your Perl 6 files instead:
++"     # vim: filetype=perl6
++
++" TODO:
++"   * Deal with s:Perl5//
++"   * m:s// is a match, not a substitution
++"   * Make these highlight as strings, not operators:
++"       <==> <=:=> <===> <=~> <« »> «>» «<»
++"   * Allow more keywords to match as function calls(leave() is export(), etc)
++"   * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup)
++"   * Fix s''' substitutions being matched as package names
++"   * Match s/// and m/// better, so things like "$s/" won't match
++"   * Add more support for folding (:help syn-fold)
++"   * Add more syntax syncing hooks (:help syn-sync)
++"   * Q//:
++"       :to, :heredoc
++"       interpolate \q:s{$scalar} (though the spec isn't very clear on it)
++"
++" Impossible TODO?:
++"   * Unspace
++"   * Unicode bracketing characters for quoting (there are so many)
++"   * Various tricks depending on context. I.e. we can't know when Perl
++"     expects «*» to be a string or a hyperoperator. The latter is presumably
++"     more common, so that's what we assume.
++"   * Selective highlighting of Pod formatting codes with the :allow option
++"   * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//.
++"     Currently only the first adverb is considered significant. Anything
++"     more would require an exponential amount of regexes, making this
++"     already slow syntax file even slower.
++"
++" If you want to have Pir code inside Q:PIR// strings highlighted, do:
++"  let perl6_embedded_pir=1
++"
++" The above requires pir.vim, which you can find in Parrot's repository:
++" https://svn.parrot.org/parrot/trunk/editor/
++"
++" Some less than crucial things have been made optional to speed things up.
++" Look at the comments near the if/else branches in this file to see exactly
++" which features are affected. "perl6_extended_all" enables everything.
++"
++" The defaults are:
++"
++"  unlet perl6_extended_comments
++"  unlet perl6_extended_q
++"  unlet perl6_extended_all
++
++" 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
++
++" identifiers
++syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*"
++
++" This is used in the for loops below
++" Don't use the "syn keyword" construct because that always has higher
++" priority than matches/regions, so the words can't be autoquoted with
++" the "=>" and "p5=>" operators. All the lookaround stuff is to make sure
++" we don't match them as part of some other identifier.
++let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@<!\\%("
++let s:after_keyword = "\\)\\%(\\k\\|[-']\\K\\@=\\)\\@!\""
++
++" Billions of keywords
++let s:keywords = {
++ \ "p6Attention": [
++ \   "ACHTUNG ATTN ATTENTION FIXME NB TODO TBD WTF XXX NOTE",
++ \ ],
++ \ "p6DeclareRoutine": [
++ \   "macro sub submethod method multi proto only rule token regex category",
++ \ ],
++ \ "p6Module": [
++ \   "module class role package enum grammar slang subset",
++ \ ],
++ \ "p6Variable": [
++ \   "self",
++ \ ],
++ \ "p6Include": [
++ \   "use require",
++ \ ],
++ \ "p6Conditional": [
++ \   "if else elsif unless",
++ \ ],
++ \ "p6VarStorage": [
++ \   "let my our state temp has constant",
++ \ ],
++ \ "p6Repeat": [
++ \   "for loop repeat while until gather given",
++ \ ],
++ \ "p6FlowControl": [
++ \   "take do when next last redo return contend maybe defer",
++ \   "default exit make continue break goto leave async lift",
++ \ ],
++ \ "p6TypeConstraint": [
++ \   "is as but trusts of returns handles where augment supersede",
++ \ ],
++ \ "p6ClosureTrait": [
++ \   "BEGIN CHECK INIT START FIRST ENTER LEAVE KEEP",
++ \   "UNDO NEXT LAST PRE POST END CATCH CONTROL TEMP",
++ \ ],
++ \ "p6Exception": [
++ \   "die fail try warn",
++ \ ],
++ \ "p6Property": [
++ \   "prec irs ofs ors export deep binary unary reparsed rw parsed cached",
++ \   "readonly defequiv will ref copy inline tighter looser equiv assoc",
++ \   "required",
++ \ ],
++ \ "p6Number": [
++ \   "NaN Inf",
++ \ ],
++ \ "p6Pragma": [
++ \   "oo fatal",
++ \ ],
++ \ "p6Type": [
++ \   "Object Any Junction Whatever Capture Match",
++ \   "Signature Proxy Matcher Package Module Class",
++ \   "Grammar Scalar Array Hash KeyHash KeySet KeyBag",
++ \   "Pair List Seq Range Set Bag Mapping Void Undef",
++ \   "Failure Exception Code Block Routine Sub Macro",
++ \   "Method Submethod Regex Str Blob Char Byte",
++ \   "Codepoint Grapheme StrPos StrLen Version Num",
++ \   "Complex num complex Bit bit bool True False",
++ \   "Increasing Decreasing Ordered Callable AnyChar",
++ \   "Positional Associative Ordering KeyExtractor",
++ \   "Comparator OrderingPair IO KitchenSink Role",
++ \   "Int int int1 int2 int4 int8 int16 int32 int64",
++ \   "Rat rat rat1 rat2 rat4 rat8 rat16 rat32 rat64",
++ \   "Buf buf buf1 buf2 buf4 buf8 buf16 buf32 buf64",
++ \   "UInt uint uint1 uint2 uint4 uint8 uint16 uint32",
++ \   "uint64 Abstraction utf8 utf16 utf32",
++ \ ],
++ \ "p6Operator": [
++ \   "div x xx mod also leg cmp before after eq ne le lt",
++ \   "gt ge eqv ff fff and andthen Z X or xor",
++ \   "orelse extra m mm rx s tr",
++ \ ],
++\ }
++
++for [group, words] in items(s:keywords)
++    let s:words_space = join(words, " ")
++    let s:temp = split(s:words_space)
++    let s:words = join(s:temp, "\\|")
++    exec "syn match ". group ." ". s:before_keyword . s:words . s:after_keyword
++endfor
++unlet s:keywords s:words_space s:temp s:words
++
++" More operators
++" Don't put a "\+" at the end of the character class. That makes it so
++" greedy that the "%" " in "+%foo" won't be allowed to match as a sigil,
++" among other things
++syn match p6Operator display "[-+/*~?|=^!%&,<>.;\\]"
++syn match p6Operator display "\%(:\@<!::\@!\|::=\|\.::\)"
++" these require whitespace on the left side
++syn match p6Operator display "\%(\s\|^\)\@<=\%(xx=\|p5=>\)"
++" "i" requires a digit to the left, and no keyword char to the right
++syn match p6Operator display "\d\@<=i\k\@!"
++" index overloading
++syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)"
++
++" all infix operators except nonassocative ones
++let s:infix_a = [
++    \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x",
++    \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt",
++    \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^",
++    \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax",
++    \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=",
++    \ "+ - \\*\\* \\* // / \\~ || |",
++\ ]
++" nonassociative infix operators
++let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^"
++
++let s:infix_a_long = join(s:infix_a, " ")
++let s:infix_a_words = split(s:infix_a_long)
++let s:infix_a_pattern = join(s:infix_a_words, "\\|")
++
++let s:infix_n_words = split(s:infix_n)
++let s:infix_n_pattern = join(s:infix_n_words, "\\|")
++
++let s:both = [s:infix_a_pattern, s:infix_n_pattern]
++let s:infix = join(s:both, "\\|")
++
++let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)"
++let s:infix = "!\\?\\%(" . s:infix . "\\)"
++
++unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern
++unlet s:infix_n s:infix_n_pattern s:both
++
++" [+] reduce
++exec "syn match p6ReduceOp display \"\\k\\@<!\\[[R\\\\]\\?!\\?". s:infix_assoc ."]\\%(«\\|<<\\)\\?\""
++unlet s:infix_assoc
++
++" Reverse and cross operators (Rop, Xop)
++exec "syn match p6ReverseCrossOp display \"[RX]". s:infix ."\""
++
++" q() or whatever() is always a function call
++syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*(\@="
++
++" basically all builtins that can be followed by parentheses
++let s:routines = [
++ \ "eager hyper substr index rindex grep map sort join lines hints chmod",
++ \ "split reduce min max reverse truncate zip cat roundrobin classify",
++ \ "first sum keys values pairs defined delete exists elems end kv any",
++ \ "all one wrap shape key value name pop push shift splice unshift floor",
++ \ "ceiling abs exp log log10 rand sign sqrt sin cos tan round strand",
++ \ "roots cis unpolar polar atan2 pick chop p5chop chomp p5chomp lc",
++ \ "lcfirst uc ucfirst capitalize normalize pack unpack quotemeta comb",
++ \ "samecase sameaccent chars nfd nfc nfkd nfkc printf sprintf caller",
++ \ "evalfile run runinstead nothing want bless chr ord gmtime time eof",
++ \ "localtime gethost getpw chroot getlogin getpeername kill fork wait",
++ \ "perl graphs codes bytes clone print open read write readline say seek",
++ \ "close opendir readdir slurp pos fmt vec link unlink symlink uniq pair",
++ \ "asin atan sec cosec cotan asec acosec acotan sinh cosh tanh asinh",
++ \ "acos acosh atanh sech cosech cotanh sech acosech acotanh asech ok",
++ \ "plan_ok dies_ok lives_ok skip todo pass flunk force_todo use_ok isa_ok",
++ \ "diag is_deeply isnt like skip_rest unlike cmp_ok eval_dies_ok nok_error",
++ \ "eval_lives_ok approx is_approx throws_ok version_lt plan eval succ pred",
++ \ "times nonce once signature new connect operator undef undefine sleep",
++ \ "from to infix postfix prefix circumfix postcircumfix minmax lazy count",
++ \ "unwrap getc pi e context void quasi body each contains rewinddir subst",
++ \ "can isa flush arity assuming rewind callwith callsame nextwith nextsame",
++ \ "attr eval_elsewhere none srand trim trim_start trim_end lastcall WHAT",
++ \ "WHERE HOW WHICH VAR WHO WHENCE ACCEPTS REJECTS does not true iterator by",
++ \ "re im invert flip",
++\ ]
++
++" we want to highlight builtins like split() though, so this comes afterwards
++" TODO: check if this would be faster as one big regex
++let s:words_space = join(s:routines, " ")
++let s:temp = split(s:words_space)
++let s:words = join(s:temp, "\\|")
++exec "syn match p6Routine ". s:before_keyword . s:words . s:after_keyword
++unlet s:before_keyword s:after_keyword s:words_space s:temp s:words s:routines
++
++" packages, must come after all the keywords
++syn match p6Normal display "\%(::\)\@<=\K\%(\k\|[-']\K\@=\)*"
++syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*\%(::\)\@="
++
++" some standard packages
++syn match p6Type display "\%(::\|\k\|\K\@<=[-']\)\@<!\%(Order\%(::Same\|::Increase\|::Decrease\)\?\)\%(\k\|[-']\K\@=\)\@!"
++syn match p6Type display "\%(::\|\k\|\K\@<=[-']\)\@<!\%(Bool\%(::True\|::False\)\?\)\%(\k\|[-']\K\@=\)\@!"
++
++
++syn match p6Shebang    display "\%^#!.*"
++syn match p6BlockLabel display "\%(^\s*\)\@<=\h\w*\s*::\@!\_s\@="
++syn match p6Number     display "\k\@<!_\@!\%(\d\|__\@!\)\+_\@<!\%([eE]_\@!+\?\%(\d\|_\)\+\)\?_\@<!"
++syn match p6Float      display "\k\@<!_\@!\%(\d\|__\@!\)\+_\@<![eE]_\@!-\%(\d\|_\)\+"
++syn match p6Float      display "\k\@<!_\@<!\%(\d\|__\@!\)*_\@<!\.\@<!\._\@!\.\@!\a\@!\%(\d\|_\)\+_\@<!\%([eE]_\@!\%(\d\|_\)\+\)\?"
++
++syn match p6NumberBase display "[obxd]" contained
++syn match p6Number     display "\<0\%(o[0-7][0-7_]*\)\@="     nextgroup=p6NumberBase
++syn match p6Number     display "\<0\%(b[01][01_]*\)\@="       nextgroup=p6NumberBase
++syn match p6Number     display "\<0\%(x\x[[:xdigit:]_]*\)\@=" nextgroup=p6NumberBase
++syn match p6Number     display "\<0\%(d\d[[:digit:]_]*\)\@="  nextgroup=p6NumberBase
++syn match p6Number     display "\%(\<0o\)\@<=[0-7][0-7_]*"
++syn match p6Number     display "\%(\<0b\)\@<=[01][01_]*"
++syn match p6Number     display "\%(\<0x\)\@<=\x[[:xdigit:]_]*"
++syn match p6Number     display "\%(\<0d\)\@<=\d[[:digit:]_]*"
++
++syn match p6Version    display "\<v\d\@=" nextgroup=p6VersionNum
++syn match p6VersionNum display "\d\+" nextgroup=p6VersionDot contained
++syn match p6VersionDot display "\.\%(\d\|\*\)\@=" nextgroup=p6VersionNum contained
++
++" try to distinguish the "is" function from the "is" trail auxiliary
++syn match p6Routine     display "\%(\%(\S\k\@<!\|^\)\s*\)\@<=is\>"
++
++" does is a type constraint sometimes
++syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@="
++
++" int is a type sometimes
++syn match p6Type        display "\<int\>\%(\s*(\|\s\+\d\)\@!"
++
++" these Routine names are also Properties, if preceded by "is"
++syn match p6Property    display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)"
++
++" The sigil in ::*Package
++syn match p6PackageTwigil display "\%(::\)\@<=\*"
++
++" $<match>
++syn region p6MatchVarSigil
++    \ matchgroup=p6Variable
++    \ start="\$\%(<<\@!\)\@="
++    \ end=">\@<="
++    \ contains=p6MatchVar
++
++syn region p6MatchVar
++    \ matchgroup=p6Twigil
++    \ start="<"
++    \ end=">"
++    \ contained
++
++" Contextualizers
++syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>"
++syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@="
++
++" the "$" placeholder in "$var1, $, var2 = @list"
++syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@<!::\@!\)\)\@!"
++syn match p6Placeholder display "\$\%(\K\|\%([.^*?=!~]\|:\@<!::\@!\)\)\@!\%(,\s*\)\@="
++
++" Quoting
++
++" one cluster for every quote adverb
++syn cluster p6Interp_s
++    \ add=p6InterpScalar
++syn cluster p6Interp_scalar
++    \ add=p6InterpScalar
++
++syn cluster p6Interp_a
++    \ add=p6InterpArray
++syn cluster p6Interp_array
++    \ add=p6InterpArray
++
++syn cluster p6Interp_h
++    \ add=p6InterpHash
++syn cluster p6Interp_hash
++    \ add=p6InterpHash
++
++syn cluster p6Interp_f
++    \ add=p6InterpFunction
++syn cluster p6Interp_f
++    \ add=p6InterpFunction
++
++syn cluster p6Interp_c
++    \ add=p6InterpClosure
++syn cluster p6Interp_closure
++    \ add=p6InterpClosure
++
++
++if exists("perl6_extended_q") || exists("perl6_extended_all")
++    syn cluster p6Interp_ww
++        \ add=p6StringSQ
++        \ add=p6StringDQ
++    syn cluster p6Interp_quotewords
++        \ add=p6StringSQ
++        \ add=p6StringDQ
++endif
++
++syn cluster p6Interp_q
++    \ add=p6EscQQ
++    \ add=p6EscBackSlash
++syn cluster p6Interp_single
++    \ add=p6EscQQ
++    \ add=p6EscBackSlash
++
++syn cluster p6Interp_b
++    \ add=@p6Interp_q
++    \ add=p6Escape
++    \ add=p6EscOpenCurly
++    \ add=p6EscCodePoint
++    \ add=p6EscHex
++    \ add=p6EscOct
++    \ add=p6EscOctOld
++    \ add=p6EscNull
++syn cluster p6Interp_backslash
++    \ add=@p6Interp_q
++    \ add=p6Escape
++    \ add=p6EscOpenCurly
++    \ add=p6EscCodePoint
++    \ add=p6EscHex
++    \ add=p6EscOct
++    \ add=p6EscOctOld
++    \ add=p6EscNull
++
++syn cluster p6Interp_qq
++    \ add=@p6Interp_scalar
++    \ add=@p6Interp_array
++    \ add=@p6Interp_hash
++    \ add=@p6Interp_function
++    \ add=@p6Interp_closure
++    \ add=@p6Interp_backslash
++syn cluster p6Interp_double
++    \ add=@p6Interp_scalar
++    \ add=@p6Interp_array
++    \ add=@p6Interp_hash
++    \ add=@p6Interp_function
++    \ add=@p6Interp_closure
++    \ add=@p6Interp_backslash
++
++syn region p6InterpScalar
++    \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
++    \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\|\%(\d\+\|!\|/\|¢\)\)\)"
++    \ end="\z1\zs"
++    \ contained
++    \ contains=TOP
++    \ keepend
++
++syn region p6InterpScalar
++    \ matchgroup=p6Context
++    \ start="\$\ze()\@!"
++    \ skip="([^)]*)"
++    \ end=")\zs"
++    \ contained
++    \ contains=TOP
++
++syn region p6InterpArray
++    \ start="\ze\z(@\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
++    \ end="\z1\zs"
++    \ contained
++    \ contains=TOP
++    \ keepend
++
++syn region p6InterpArray
++    \ matchgroup=p6Context
++    \ start="@\ze()\@!"
++    \ start="@@\ze()\@!"
++    \ skip="([^)]*)"
++    \ end=")\zs"
++    \ contained
++    \ contains=TOP
++
++syn region p6InterpHash
++    \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\)\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
++    \ end="\z1\zs"
++    \ contained
++    \ contains=TOP
++    \ keepend
++
++syn region p6InterpHash
++    \ matchgroup=p6Context
++    \ start="%\ze()\@!"
++    \ skip="([^)]*)"
++    \ end=")\zs"
++    \ contained
++    \ contains=TOP
++
++syn region p6InterpFunction
++    \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\@=\)\?\K\%(\k\|[-']\K\@=\)*\%(\.\%(\K\%(\k\|[-']\K\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
++    \ end="\z1\zs"
++    \ contained
++    \ contains=TOP
++    \ keepend
++
++syn region p6InterpFunction
++    \ matchgroup=p6Context
++    \ start="&\ze()\@!"
++    \ skip="([^)]*)"
++    \ end=")\zs"
++    \ contained
++    \ contains=TOP
++
++syn region p6InterpClosure
++    \ start="\\\@<!{}\@!"
++    \ skip="{[^}]*}"
++    \ end="}"
++    \ contained
++    \ contains=TOP
++    \ keepend
++
++" generic escape
++syn match p6Escape          display "\\\S" contained
++
++" escaped closing delimiters
++syn match p6EscQuote        display "\\'" contained
++syn match p6EscDoubleQuote  display "\\\"" contained
++syn match p6EscCloseAngle   display "\\>" contained
++syn match p6EscCloseFrench  display "\\»" contained
++syn match p6EscBackTick     display "\\`" contained
++syn match p6EscForwardSlash display "\\/" contained
++syn match p6EscVerticalBar  display "\\|" contained
++syn match p6EscExclamation  display "\\!" contained
++syn match p6EscComma        display "\\," contained
++syn match p6EscDollar       display "\\\$" contained
++syn match p6EscCloseCurly   display "\\}" contained
++syn match p6EscCloseBracket display "\\\]" contained
++
++" misc escapes
++syn match p6EscOctOld    display "\\\d\{1,3}" contained
++syn match p6EscNull      display "\\0\d\@!" contained
++syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint
++syn match p6EscHex       display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence
++syn match p6EscOct       display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence
++syn match p6EscQQ        display "\\qq" contained nextgroup=p6QQSequence
++syn match p6EscOpenCurly display "\\{" contained
++syn match p6EscHash      display "\\#" contained
++syn match p6EscBackSlash display "\\\\" contained
++
++syn region p6QQSequence
++    \ matchgroup=p6Escape
++    \ start="\["
++    \ skip="\[[^\]]*]"
++    \ end="]"
++    \ contained
++    \ transparent
++    \ contains=@p6Interp_qq
++
++syn match p6CodePoint   display "\%(\d\+\|\S\)" contained
++syn region p6CodePoint
++    \ matchgroup=p6Escape
++    \ start="\["
++    \ end="]"
++    \ contained
++
++syn match p6HexSequence display "\x\+" contained
++syn region p6HexSequence
++    \ matchgroup=p6Escape
++    \ start="\["
++    \ end="]"
++    \ contained
++
++syn match p6OctSequence display "\o\+" contained
++syn region p6OctSequence
++    \ matchgroup=p6Escape
++    \ start="\["
++    \ end="]"
++    \ contained
++
++" matches :key, :!key, :$var, :key<var>, etc
++" Since we don't know in advance how the adverb ends, we use a trick.
++" Consume nothing with the start pattern (\ze at the beginning),
++" while capturing the whole adverb into \z1 and then putting it before
++" the match start (\zs) of the end pattern.
++syn region p6Adverb
++    \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)"
++    \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\)\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\)"
++    \ end="\z1\zs"
++    \ contained
++    \ contains=TOP
++    \ keepend
++
++" <words>
++" FIXME: not sure how to distinguish this from the "less than" operator
++" in all cases. For now, it matches if any of the following is true:
++"
++" * There is whitespace missing on either side of the "<", since
++"   people tend to put spaces around "less than"
++" * It comes after "enum", "for", "any", "all", or "none"
++" * It's the first or last thing on a line (ignoring whitespace)
++" * It's preceded by "= "
++"
++" It never matches when:
++"
++" * Preceded by [<+~=] (e.g. <<foo>>, =<$foo>)
++" * Followed by [-=] (e.g. <--, <=, <==)
++syn region p6StringAngle
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
++    \ start="\%(\s\|[<+~=]\)\@<!<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
++    \ start="[<+~=]\@<!<\%(\s\|<\|=>\|[-=]\{1,2}>\@!\)\@!"
++    \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
++    \ start="[<+~=]\@<!<\%(\s*$\)\@="
++    \ start="\%(=\s\+\)\@=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
++    \ skip="\\\@<!\\>"
++    \ end=">"
++    \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle
++
++syn region p6InnerAnglesOne
++    \ matchgroup=p6StringAngle
++    \ start="<"
++    \ skip="\\\@<!\\>"
++    \ end=">"
++    \ transparent
++    \ contained
++    \ contains=p6InnerAnglesOne
++
++" <<words>>
++syn region p6StringAngles
++    \ matchgroup=p6Quote
++    \ start="<<=\@!"
++    \ skip="\\\@<!\\>"
++    \ end=">>"
++    \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ
++
++syn region p6InnerAnglesTwo
++    \ matchgroup=p6StringAngles
++    \ start="<<"
++    \ skip="\\\@<!\\>"
++    \ end=">>"
++    \ transparent
++    \ contained
++    \ contains=p6InnerAnglesTwo
++
++" «words»
++syn region p6StringFrench
++    \ matchgroup=p6Quote
++    \ start="«"
++    \ skip="\\\@<!\\»"
++    \ end="»"
++    \ contains=p6InnerFrench,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseFrench,p6Adverb,p6StringSQ,p6StringDQ
++
++syn region p6InnerFrench
++    \ matchgroup=p6StringFrench
++    \ start="«"
++    \ skip="\\\@<!\\»"
++    \ end="»"
++    \ transparent
++    \ contained
++    \ contains=p6InnerFrench
++
++" 'string'
++syn region p6StringSQ
++    \ matchgroup=p6Quote
++    \ start="'"
++    \ skip="\\\@<!\\'"
++    \ end="'"
++    \ contains=@p6Interp_q,p6EscQuote
++
++" "string"
++syn region p6StringDQ
++    \ matchgroup=p6Quote
++    \ start=+"+
++    \ skip=+\\\@<!\\"+
++    \ end=+"+
++    \ contains=@p6Interp_qq,p6EscDoubleQuote
++
++" Q// and friends.
++
++syn match p6QuoteQ display "\%([Qq]\%(ww\|to\|[qwxsahfcb]\)\?\)\>" nextgroup=p6QPairs skipwhite skipempty
++syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*"
++
++if exists("perl6_embedded_pir")
++    syn include @p6PIR syntax/pir.vim
++endif
++
++" hardcoded set of delimiters
++let s:delims = [
++  \ ["\\\"",         "\\\"", "p6EscDoubleQuote",  "\\\\\\@<!\\\\\\\""],
++  \ ["'",            "'",    "p6EscQuote",        "\\\\\\@<!\\\\'"],
++  \ ["/",            "/",    "p6EscForwardSlash", "\\\\\\@<!\\\\/"],
++  \ ["`",            "`",    "p6EscBackTick",     "\\\\\\@<!\\\\`"],
++  \ ["|",            "|",    "p6EscVerticalBar",  "\\\\\\@<!\\\\|"],
++  \ ["!",            "!",    "p6EscExclamation",  "\\\\\\@<!\\\\!"],
++  \ [",",            ",",    "p6EscComma",        "\\\\\\@<!\\\\,"],
++  \ ["\\$",          "\\$",  "p6EscDollar",       "\\\\\\@<!\\\\\\$"],
++  \ ["{",            "}",    "p6EscCloseCurly",   "\\%(\\\\\\@<!\\\\}\\|{[^}]*}\\)"],
++  \ ["<",            ">",    "p6EscCloseAngle",   "\\%(\\\\\\@<!\\\\>\\|<[^>]*>\\)"],
++  \ ["«",            "»",    "p6EscCloseFrench",  "\\%(\\\\\\@<!\\\\»\\|«[^»]*»\\)"],
++  \ ["\\\[",         "]",    "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]\\|\\[^\\]]*]\\)"],
++  \ ["\\s\\@<=(",    ")",    "p6EscCloseParen",   "\\%(\\\\\\@<!\\\\)\\|([^)]*)\\)"],
++\ ]
++
++" double and triple delimiters too
++if exists("perl6_extended_q") || exists("perl6_extended_all")
++    call add(s:delims, ["««",           "»»",  "p6EscCloseFrench",  "\\%(\\\\\\@<!\\\\»»\\|««\\%([^»]\\|»»\\@!\\)*»»\\)"])
++    call add(s:delims, ["«««",          "»»»", "p6EscCloseFrench",  "\\%(\\\\\\@<!\\\\»»»\\|«««\\%([^»]\\|»\\%(»»\\)\\@!\\)*»»»\\)"])
++    call add(s:delims, ["{{",           "}}",  "p6EscCloseCurly",   "\\%(\\\\\\@<!\\\\}}\\|{{\\%([^}]\\|}}\\@!\\)*}}\\)"])
++    call add(s:delims, ["{{{",          "}}}", "p6EscCloseCurly",   "\\%(\\\\\\@<!\\\\}}}\\|{{{\\%([^}]\\|}\\%(}}\\)\\@!\\)*}}}\\)"])
++    call add(s:delims, ["\\\[\\\[",     "]]",  "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]]\\|\\[\\[\\%([^\\]]\\|]]\\@!\\)*]]\\)"])
++    call add(s:delims, ["\\\[\\\[\\\[", "]]]", "p6EscCloseBracket", "\\%(\\\\\\@<!\\\\]]]\\|\\[\\[\\[\\%([^\\]]\\|]\\%(]]\\)\\@!\\)*]]]\\)"])
++    call add(s:delims, ["\\s\\@<=((",   "))",  "p6EscCloseParen",   "\\%(\\\\\\@<!\\\\))\\|((\\%([^)]\\|))\\@!\\)*))\\)"])
++    call add(s:delims, ["\\s\\@<=(((",  ")))", "p6EscCloseParen",   "\\%(\\\\\\@<!\\\\)))\\|(((\\%([^)]\\|)\\%())\\)\\@!\\)*)))\\)"])
++    call add(s:delims, ["\\s\\@<=<<",   ">>",  "p6EscCloseAngle",   "\\%(\\\\\\@<!\\\\>>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"])
++    call add(s:delims, ["\\s\\@<=<<<",  ">>>", "p6EscCloseAngle",   "\\%(\\\\\\@<!\\\\>>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"])
++endif
++
++if !exists("perl6_extended_q") && !exists("perl6_extended_all")
++    " simple version, no special highlighting within the string
++    for [start_delim, end_delim, end_group, skip] in s:delims
++        exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained"
++    endfor
++
++    if exists("perl6_embedded_pir")
++        " highlight embedded PIR code
++        for [start_delim, end_delim, end_group, skip] in s:delims
++            exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained"
++        endfor
++    endif
++else
++    let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%("
++    let s:after  = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<="
++
++    let s:adverbs = [
++        \ ["s", "scalar"],
++        \ ["a", "array"],
++        \ ["h", "hash"],
++        \ ["f", "function"],
++        \ ["c", "closure"],
++        \ ["b", "backslash"],
++        \ ["w", "words"],
++        \ ["ww", "quotewords"],
++        \ ["x", "exec"],
++    \ ]
++
++    " these can't be conjoined with q and qq (e.g. as qqq and qqqq)
++    let s:q_adverbs = [
++        \ ["q", "single"],
++        \ ["qq", "double"],
++    \ ]
++
++    for [start_delim, end_delim, end_group, skip] in s:delims
++        " Q, q, and qq with any number of (ignored) adverbs
++        exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained"
++        exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained"
++        exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained"
++
++        for [short, long] in s:adverbs
++            " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs
++            exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained"
++            exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained"
++            exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained"
++
++            " Q, q, and qq, with one significant adverb
++            exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained"
++            for [q_short, q_long] in s:q_adverbs
++                exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained"
++            endfor
++            exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained"
++            exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained"
++
++            for [short2, long2] in s:adverbs
++                " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb
++                exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained"
++                for [q_short2, q_long2] in s:q_adverbs
++                    exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained"
++                endfor
++                exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained"
++                exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained"
++            endfor
++        endfor
++    endfor
++    unlet s:before s:after s:adverbs s:q_adverbs
++endif
++unlet s:delims
++
++" Match these so something else above can't. E.g. the "q" in "role q { }"
++" should not be considered a string
++syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*"
++
++" :key
++syn match p6Operator display ":\@<!::\@!!\?" nextgroup=p6Key
++syn match p6Key display "\k\%(\k\|[-']\K\@=\)*" contained
++
++" => and p5=> autoquoting
++syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>"
++syn match p6StringAuto   display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@<!=>"
++syn match p6StringAuto   display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>"
++syn match p6StringAuto   display "\K\%(\k\|[-']\K\@=\)*p5\ze=>"
++
++" Hyperoperators. Needs to come after the quoting operators (<>, «», etc)
++exec "syn match p6HyperOp display \"»"   .s:infix."»\\?\""
++exec "syn match p6HyperOp display \"«\\?".s:infix."«\""
++exec "syn match p6HyperOp display \"»"   .s:infix."«\""
++exec "syn match p6HyperOp display \"«"   .s:infix. "»\""
++
++exec "syn match p6HyperOp display \">>"          .s:infix."\\%(>>\\)\\?\""
++exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\""
++exec "syn match p6HyperOp display \">>"          .s:infix."<<\""
++exec "syn match p6HyperOp display \"<<"          .s:infix.">>\""
++unlet s:infix
++
++" Regexes and grammars
++
++syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty
++syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained
++
++syn region p6RegexBlock
++    \ matchgroup=p6Normal
++    \ start="{"
++    \ end="}"
++    \ contained
++    \ contains=@p6Regexen,@p6Variables
++
++" Perl 6 regex bits
++
++syn cluster p6Regexen
++    \ add=p6RxMeta
++    \ add=p6RxEscape
++    \ add=p6EscHex
++    \ add=p6EscOct
++    \ add=p6EscNull
++    \ add=p6RxAnchor
++    \ add=p6RxCapture
++    \ add=p6RxGroup
++    \ add=p6RxAlternation
++    \ add=p6RxAdverb
++    \ add=p6RxAdverbArg
++    \ add=p6RxStorage
++    \ add=p6RxAssertion
++    \ add=p6RxQuoteWords
++    \ add=p6RxClosure
++    \ add=p6RxStringSQ
++    \ add=p6RxStringDQ
++    \ add=p6Comment
++
++syn match p6RxMeta        display contained ".\%(\k\|\s\)\@<!"
++syn match p6RxAnchor      display contained "[$^]"
++syn match p6RxEscape      display contained "\\\S"
++syn match p6RxCapture     display contained "[()]"
++syn match p6RxAlternation display contained "|"
++syn match p6RxRange       display contained "\.\."
++
++syn region p6RxClosure
++    \ matchgroup=p6Normal
++    \ start="{"
++    \ end="}"
++    \ contained
++    \ containedin=p6RxClosure
++    \ contains=TOP
++syn region p6RxGroup
++    \ matchgroup=p6StringSpecial2
++    \ start="\["
++    \ end="]"
++    \ contained
++    \ contains=@p6Regexen,@p6Variables
++syn region p6RxAssertion
++    \ matchgroup=p6StringSpecial2
++    \ start="<"
++    \ end=">"
++    \ contained
++    \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall
++syn region p6RxAssertCall
++    \ matchgroup=p6Normal
++    \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@="
++    \ end=")\@<="
++    \ contained
++    \ contains=TOP
++syn region p6RxCharClass
++    \ matchgroup=p6StringSpecial2
++    \ start="\%(<[-!+?]\?\)\@<=\["
++    \ skip="\\]"
++    \ end="]"
++    \ contained
++    \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull
++syn region p6RxQuoteWords
++    \ matchgroup=p6StringSpecial2
++    \ start="< "
++    \ end=">"
++    \ contained
++syn region p6RxAdverb
++    \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)"
++    \ end="\z1\zs"
++    \ contained
++    \ contains=TOP
++    \ keepend
++syn region p6RxAdverbArg
++    \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=("
++    \ skip="([^)]*)"
++    \ end=")"
++    \ contained
++    \ contains=TOP
++syn region p6RxStorage
++    \ matchgroup=p6Operator
++    \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@="
++    \ end="$"
++    \ contains=TOP
++    \ contained
++
++" Perl 5 regex bits
++
++syn cluster p6RegexP5Base
++    \ add=p6RxP5Escape
++    \ add=p6RxP5Oct
++    \ add=p6RxP5Hex
++    \ add=p6RxP5EscMeta
++    \ add=p6RxP5CodePoint
++    \ add=p6RxP5Prop
++
++" normal regex stuff
++syn cluster p6RegexP5
++    \ add=@p6RegexP5Base
++    \ add=p6RxP5Quantifier
++    \ add=p6RxP5Meta
++    \ add=p6RxP5QuoteMeta
++    \ add=p6RxP5ParenMod
++    \ add=p6RxP5Verb
++    \ add=p6RxP5Count
++    \ add=p6RxP5Named
++    \ add=p6RxP5ReadRef
++    \ add=p6RxP5WriteRef
++    \ add=p6RxP5CharClass
++    \ add=p6RxP5Anchor
++
++" inside character classes
++syn cluster p6RegexP5Class
++    \ add=@p6RegexP5Base
++    \ add=p6RxP5Posix
++    \ add=p6RxP5Range
++
++syn match p6RxP5Escape     display contained "\\\S"
++syn match p6RxP5CodePoint  display contained "\\c\S\@=" nextgroup=p6RxP5CPId
++syn match p6RxP5CPId       display contained "\S"
++syn match p6RxP5Oct        display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq
++syn match p6RxP5OctSeq     display contained "\o\{1,3}"
++syn match p6RxP5Anchor     display contained "[\^$]"
++syn match p6RxP5Hex        display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq
++syn match p6RxP5HexSeq     display contained "\x\{1,2}"
++syn region p6RxP5HexSeq
++    \ matchgroup=p6RxP5Escape
++    \ start="{"
++    \ end="}"
++    \ contained
++syn region p6RxP5Named
++    \ matchgroup=p6RxP5Escape
++    \ start="\%(\\N\)\@<={"
++    \ end="}"
++    \ contained
++syn match p6RxP5Quantifier display contained "\%([+*]\|(\@<!?\)"
++syn match p6RxP5ReadRef    display contained "\\[1-9]\d\@!"
++syn match p6RxP5ReadRef    display contained "\\k<\@=" nextgroup=p6RxP5ReadRefId
++syn region p6RxP5ReadRefId
++    \ matchgroup=p6RxP5Escape
++    \ start="<"
++    \ end=">"
++    \ contained
++syn match p6RxP5WriteRef   display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId
++syn match p6RxP5WriteRefId display contained "\d\+"
++syn region p6RxP5WriteRefId
++    \ matchgroup=p6RxP5Escape
++    \ start="{"
++    \ end="}"
++    \ contained
++syn match p6RxP5Prop       display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId
++syn match p6RxP5PropId     display contained "\a"
++syn region p6RxP5PropId
++    \ matchgroup=p6RxP5Escape
++    \ start="{"
++    \ end="}"
++    \ contained
++syn match p6RxP5Meta       display contained "[(|).]"
++syn match p6RxP5ParenMod   display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code
++syn match p6RxP5Mod        display contained "?\%(<\?=\|<\?!\|[#:|]\)"
++syn match p6RxP5Mod        display contained "?-\?[impsx]\+"
++syn match p6RxP5Mod        display contained "?\%([-+]\?\d\+\|R\)"
++syn match p6RxP5Mod        display contained "?(DEFINE)"
++syn match p6RxP5Mod        display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef
++syn match p6RxP5ModDef     display contained "\h\w*"
++syn region p6RxP5ModName
++    \ matchgroup=p6StringSpecial
++    \ start="?'"
++    \ end="'"
++    \ contained
++syn region p6RxP5ModName
++    \ matchgroup=p6StringSpecial
++    \ start="?P\?<"
++    \ end=">"
++    \ contained
++syn region p6RxP5Code
++    \ matchgroup=p6StringSpecial
++    \ start="??\?{"
++    \ end="})\@="
++    \ contained
++    \ contains=TOP
++syn match p6RxP5EscMeta    display contained "\\[?*.{}()[\]|\^$]"
++syn match p6RxP5Count      display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId
++syn region p6RxP5CountId
++    \ matchgroup=p6RxP5Escape
++    \ start="{"
++    \ end="}"
++    \ contained
++syn match p6RxP5Verb       display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)"
++syn region p6RxP5QuoteMeta
++    \ matchgroup=p6RxP5Escape
++    \ start="\\Q"
++    \ end="\\E"
++    \ contained
++    \ contains=@p6Variables,p6EscBackSlash
++syn region p6RxP5CharClass
++    \ matchgroup=p6StringSpecial
++    \ start="\[\^\?"
++    \ skip="\\]"
++    \ end="]"
++    \ contained
++    \ contains=@p6RegexP5Class
++syn region p6RxP5Posix
++    \ matchgroup=p6RxP5Escape
++    \ start="\[:"
++    \ end=":]"
++    \ contained
++syn match p6RxP5Range      display contained "-"
++
++" 'string' inside a regex
++syn region p6RxStringSQ
++    \ matchgroup=p6Quote
++    \ start="'"
++    \ skip="\\\@<!\\'"
++    \ end="'"
++    \ contained
++    \ contains=p6EscQuote,p6EscBackSlash
++
++" "string" inside a regex
++syn region p6RxStringDQ
++    \ matchgroup=p6Quote
++    \ start=+"+
++    \ skip=+\\\@<!\\"+
++    \ end=+"+
++    \ contained
++    \ contains=p6EscDoubleQuote,p6EscBackSlash
++
++" $!, $var, $!var, $::var, $package::var $*::package::var, etc
++" Thus must come after the matches for the "$" regex anchor, but before
++" the match for the $ regex delimiter
++syn cluster p6Variables
++    \ add=p6VarSlash
++    \ add=p6VarExclam
++    \ add=p6VarMatch
++    \ add=p6VarNum
++    \ add=p6Variable
++
++syn match p6VarSlash     display "\$/"
++syn match p6VarExclam    display "\$!"
++syn match p6VarMatch     display "\$¢"
++syn match p6VarNum       display "\$\d\+"
++syn match p6Variable     display "\%(@@\|[@&$%]\$*\)\%(::\|\%(\%([.^*?=!~]\|:\@<!::\@!\)\K\)\|\K\)\@=" nextgroup=p6Twigil,p6VarName,p6PackageScope
++syn match p6VarName      display "\K\%(\k\|[-']\K\@=\)*" contained
++syn match p6Twigil       display "\%([.^*?=!~]\|:\@<!::\@!\)\K\@=" nextgroup=p6PackageScope,p6VarName contained
++syn match p6PackageScope display "\%(\K\%(\k\|[-']\K\@=\)*\)\?::" nextgroup=p6PackageScope,p6VarName contained
++
++" Perl 6 regex regions
++
++" /foo/
++" 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.
++" TODO: mostly stolen from perl.vim, might need more work
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%([$@%&*]\@<!\%(\<\%(split\|while\|until\|if\|unless\)\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=//\@!"
++    \ start="^//\@!"
++    \ start=+\s\@<=/[^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!/\@!+
++    \ skip="\\/"
++    \ end="/"
++    \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
++
++" m/foo/, mm/foo/, rx/foo/
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=//\@!"
++    \ skip="\\/"
++    \ end="/"
++    \ keepend
++    \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
++
++" m!foo!, mm!foo!, rx!foo!
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=!!\@!"
++    \ skip="\\!"
++    \ end="!"
++    \ keepend
++    \ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
++
++" m$foo$, mm$foo$, rx$foo$, m|foo|, mm|foo|, rx|foo|, etc
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([\"'`|,$]\)\$\@!"
++    \ skip="\\\z1"
++    \ end="\z1"
++    \ keepend
++    \ contains=@p6Regexen,@p6Variables
++
++" m (foo), mm (foo), rx (foo)
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s\+\)\@<=()\@!)\@!"
++    \ skip="\\)"
++    \ end=")"
++    \ contains=@p6Regexen,@p6Variables
++
++" m[foo], mm[foo], rx[foo]
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\[]\@!]\@!"
++    \ skip="\\]"
++    \ end="]"
++    \ contains=@p6Regexen,@p6Variables
++
++" m{foo}, mm{foo}, rx{foo}
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<={}\@!}\@!"
++    \ skip="\\}"
++    \ end="}"
++    \ contains=@p6Regexen,@p6Variables
++
++" m<foo>, mm<foo>, rx<foo>
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!>\@!"
++    \ skip="\\>"
++    \ end=">"
++    \ contains=@p6Regexen,@p6Variables
++
++" m«foo», mm«foo», rx«foo»
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<\%(mm\?\|rx\)\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!»\@!"
++    \ skip="\\»"
++    \ end="»"
++    \ contains=@p6Regexen,@p6Variables
++
++" Substitutions
++
++" s/foo/bar/
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=/"
++    \ skip="\\/"
++    \ end="/"me=e-1
++    \ keepend
++    \ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
++    \ nextgroup=p6Substitution
++
++syn region p6Substitution
++    \ matchgroup=p6Quote
++    \ start="/"
++    \ skip="\\/"
++    \ end="/"
++    \ contained
++    \ keepend
++    \ contains=@p6Interp_qq
++
++" s!foo!bar!
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=!"
++    \ skip="\\!"
++    \ end="!"me=e-1
++    \ keepend
++    \ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
++    \ nextgroup=p6Substitution
++
++syn region p6Substitution
++    \ matchgroup=p6Quote
++    \ start="!"
++    \ skip="\\!"
++    \ end="!"
++    \ contained
++    \ keepend
++    \ contains=@p6Interp_qq
++
++" s$foo$bar$, s|foo|bar, etc
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([\"'`|,$]\)"
++    \ skip="\\\z1"
++    \ end="\z1"me=e-1
++    \ keepend
++    \ contains=@p6Regexen,@p6Variables
++    \ nextgroup=p6Substitution
++
++syn region p6Substitution
++    \ matchgroup=p6Quote
++    \ start="\z([\"'`|,$]\)"
++    \ skip="\\\z1"
++    \ end="\z1"
++    \ contained
++    \ keepend
++    \ contains=@p6Interp_qq
++
++" s{foo}
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<={}\@!"
++    \ skip="\\}"
++    \ end="}"
++    \ contains=@p6Regexen,@p6Variables
++
++" s[foo]
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\[]\@!"
++    \ skip="\\]"
++    \ end="]"
++    \ contains=@p6Regexen,@p6Variables
++
++" s<foo>
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=<>\@!"
++    \ skip="\\>"
++    \ end=">"
++    \ contains=@p6Regexen,@p6Variables
++
++" s«foo»
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=«»\@!"
++    \ skip="\\»"
++    \ end="»"
++    \ contains=@p6Regexen,@p6Variables
++
++" s (foo)
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<s\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s\+\)\@<=()\@!"
++    \ skip="\\)"
++    \ end=")"
++    \ contains=@p6Regexen,@p6Variables
++
++" Perl 5 regex regions
++
++" m:P5//
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=/"
++    \ skip="\\/"
++    \ end="/"
++    \ contains=@p6RegexP5,p6Variable,p6VarExclam,p6VarMatch,p6VarNum
++
++" m:P5!!
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=!"
++    \ skip="\\!"
++    \ end="!"
++    \ contains=@p6RegexP5,p6Variable,p6VarSlash,p6VarMatch,p6VarNum
++
++" m:P5$$, m:P5||, etc
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=\z([\"'`|,$]\)"
++    \ skip="\\\z1"
++    \ end="\z1"
++    \ contains=@p6RegexP5,@p6Variables
++
++" m:P5 ()
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s\+\)\@<=()\@!"
++    \ skip="\\)"
++    \ end=")"
++    \ contains=@p6RegexP5,@p6Variables
++
++" m:P5[]
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=[]\@!"
++    \ skip="\\]"
++    \ end="]"
++    \ contains=@p6RegexP5,@p6Variables
++
++" m:P5{}
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<={}\@!"
++    \ skip="\\}"
++    \ end="}"
++    \ contains=@p6RegexP5,p6Variables
++
++" m:P5<>
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=<>\@!"
++    \ skip="\\>"
++    \ end=">"
++    \ contains=@p6RegexP5,p6Variables
++
++" m:P5«»
++syn region p6Match
++    \ matchgroup=p6Quote
++    \ start="\%(\<m\s*:P\%(erl\)\?5\s*\)\@<=«»\@!"
++    \ skip="\\»"
++    \ end="»"
++    \ contains=@p6RegexP5,p6Variables
++
++" Transliteration
++
++" tr/foo/bar/, tr|foo|bar, etc
++syn region p6String
++    \ matchgroup=p6Quote
++    \ start="\%(\<tr\%(\s*:!\?\k\%(\k\|[-']\K\@=\)*\%(([^)]*)\)\?\)*\s*\)\@<=\z([/\"'`|!,$]\)"
++    \ skip="\\\z1"
++    \ end="\z1"me=e-1
++    \ contains=p6RxRange
++    \ nextgroup=p6Transliteration
++
++syn region p6Transliteration
++    \ matchgroup=p6Quote
++    \ start="\z([/\"'`|!,$]\)"
++    \ skip="\\\z1"
++    \ end="\z1"
++    \ contained
++    \ contains=@p6Interp_qq
++
++" Comments
++
++" normal end-of-line comment
++syn match p6Comment display "#.*" contains=p6Attention
++
++" Multiline comments. Arbitrary numbers of opening brackets are allowed,
++" but we only define regions for 1 to 3
++syn region p6Comment
++    \ matchgroup=p6Comment
++    \ start="^\@<!#("
++    \ skip="([^)]*)"
++    \ end=")"
++    \ matchgroup=p6Error
++    \ start="^#("
++    \ contains=p6Attention,p6Comment
++syn region p6Comment
++    \ matchgroup=p6Comment
++    \ start="^\@<!#\["
++    \ skip="\[[^\]]*]"
++    \ end="]"
++    \ matchgroup=p6Error
++    \ start="^#\["
++    \ contains=p6Attention,p6Comment
++syn region p6Comment
++    \ matchgroup=p6Comment
++    \ start="^\@<!#{"
++    \ skip="{[^}]*}"
++    \ end="}"
++    \ matchgroup=p6Error
++    \ start="^#{"
++    \ contains=p6Attention,p6Comment
++syn region p6Comment
++    \ matchgroup=p6Comment
++    \ start="^\@<!#<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ matchgroup=p6Error
++    \ start="^#<"
++    \ contains=p6Attention,p6Comment
++syn region p6Comment
++    \ matchgroup=p6Comment
++    \ start="^\@<!#«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ matchgroup=p6Error
++    \ start="^#«"
++    \ contains=p6Attention,p6Comment
++
++" double and triple delimiters
++if exists("perl6_extended_comments") || exists("perl6_extended_all")
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#(("
++        \ skip="((\%([^)\|))\@!]\)*))"
++        \ end="))"
++        \ matchgroup=p6Error
++        \ start="^#(("
++        \ contains=p6Attention,p6Comment
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#((("
++        \ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
++        \ end=")))"
++        \ matchgroup=p6Error
++        \ start="^#((("
++        \ contains=p6Attention,p6Comment
++
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#\[\["
++        \ skip="\[\[\%([^\]]\|]]\@!\)*]]"
++        \ end="]]"
++        \ matchgroup=p6Error
++        \ start="^#\[\["
++        \ contains=p6Attention,p6Comment
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#\[\[\["
++        \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
++        \ end="]]]"
++        \ matchgroup=p6Error
++        \ start="^#\[\[\["
++        \ contains=p6Attention,p6Comment
++
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#{{"
++        \ skip="{{\%([^}]\|}}\@!\)*}}"
++        \ end="}}"
++        \ matchgroup=p6Error
++        \ start="^#{{"
++        \ contains=p6Attention,p6Comment
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#{{{"
++        \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
++        \ end="}}}"
++        \ matchgroup=p6Error
++        \ start="^#{{{"
++        \ contains=p6Attention,p6Comment
++
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#<<"
++        \ skip="<<\%([^>]\|>>\@!\)*>>"
++        \ end=">>"
++        \ matchgroup=p6Error
++        \ start="^#<<"
++        \ contains=p6Attention,p6Comment
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#<<<"
++        \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
++        \ end=">>>"
++        \ matchgroup=p6Error
++        \ start="^#<<<"
++        \ contains=p6Attention,p6Comment
++
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#««"
++        \ skip="««\%([^»]\|»»\@!\)*»»"
++        \ end="»»"
++        \ matchgroup=p6Error
++        \ start="^#««"
++        \ contains=p6Attention,p6Comment
++    syn region p6Comment
++        \ matchgroup=p6Comment
++        \ start="^\@<!#«««"
++        \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
++        \ end="»»»"
++        \ matchgroup=p6Error
++        \ start="^#«««"
++        \ contains=p6Attention,p6Comment
++endif
++
++" Pod
++
++" Abbreviated blocks (implicit code forbidden)
++syn region p6PodAbbrRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=\ze\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodAbbrNoCodeType
++    \ keepend
++
++syn region p6PodAbbrNoCodeType
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodName,p6PodAbbrNoCode
++
++syn match p6PodName contained ".\+" contains=@p6PodFormat
++syn match p6PodComment contained ".\+"
++
++syn region p6PodAbbrNoCode
++    \ start="^"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=@p6PodFormat
++
++" Abbreviated blocks (everything is code)
++syn region p6PodAbbrRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=\zecode\>"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodAbbrCodeType
++    \ keepend
++
++syn region p6PodAbbrCodeType
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodName,p6PodAbbrCode
++
++syn region p6PodAbbrCode
++    \ start="^"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++
++" Abbreviated blocks (everything is a comment)
++syn region p6PodAbbrRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=\zecomment\>"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodAbbrCommentType
++    \ keepend
++
++syn region p6PodAbbrCommentType
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodComment,p6PodAbbrNoCode
++
++" Abbreviated blocks (implicit code allowed)
++syn region p6PodAbbrRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodAbbrType
++    \ keepend
++
++syn region p6PodAbbrType
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodName,p6PodAbbr
++
++syn region p6PodAbbr
++    \ start="^"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=@p6PodFormat,p6PodImplicitCode
++
++" Abbreviated block to end-of-file
++syn region p6PodAbbrRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=\zeEND\>"
++    \ end="\%$"
++    \ contains=p6PodAbbrEOFType
++    \ keepend
++
++syn region p6PodAbbrEOFType
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="\%$"
++    \ contained
++    \ contains=p6PodName,p6PodAbbrEOF
++
++syn region p6PodAbbrEOF
++    \ start="^"
++    \ end="\%$"
++    \ contained
++    \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
++
++" Directives
++syn region p6PodDirectRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=\%(config\|use\)\>"
++    \ end="^\ze\%([^=]\|=\K\|\s*$\)"
++    \ contains=p6PodDirectArgRegion
++    \ keepend
++
++syn region p6PodDirectArgRegion
++    \ matchgroup=p6PodType
++    \ start="\S\+"
++    \ end="^\ze\%([^=]\|=\K\|\s*$\)"
++    \ contained
++    \ contains=p6PodDirectConfigRegion
++
++syn region p6PodDirectConfigRegion
++    \ start=""
++    \ end="^\ze\%([^=]\|=\K\|\s*$\)"
++    \ contained
++    \ contains=@p6PodConfig
++
++" =encoding is a special directive
++syn region p6PodDirectRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=encoding\>"
++    \ end="^\ze\%([^=]\|=\K\|\s*$\)"
++    \ contains=p6PodEncodingArgRegion
++    \ keepend
++
++syn region p6PodEncodingArgRegion
++    \ matchgroup=p6PodName
++    \ start="\S\+"
++    \ end="^\ze\%([^=]\|=\K\|\s*$\)"
++    \ contained
++
++" Paragraph blocks (implicit code forbidden)
++syn region p6PodParaRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=for\>"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodParaNoCodeTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodParaNoCodeTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodParaNoCode,p6PodParaConfigRegion
++
++syn region p6PodParaConfigRegion
++    \ start=""
++    \ end="^\ze\%([^=]\|=\k\@<!\)"
++    \ contained
++    \ contains=@p6PodConfig
++
++syn region p6PodParaNoCode
++    \ start="^[^=]"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=@p6PodFormat
++
++" Paragraph blocks (everything is code)
++syn region p6PodParaRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=for\>\ze\s*code\>"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodParaCodeTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodParaCodeTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodParaCode,p6PodParaConfigRegion
++
++syn region p6PodParaCode
++    \ start="^[^=]"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++
++" Paragraph blocks (implicit code allowed)
++syn region p6PodParaRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contains=p6PodParaTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodParaTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=p6PodPara,p6PodParaConfigRegion
++
++syn region p6PodPara
++    \ start="^[^=]"
++    \ end="^\ze\%(\s*$\|=\K\)"
++    \ contained
++    \ contains=@p6PodFormat,p6PodImplicitCode
++
++" Paragraph block to end-of-file
++syn region p6PodParaRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=for\>\ze\s\+END\>"
++    \ end="\%$"
++    \ contains=p6PodParaEOFTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodParaEOFTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="\%$"
++    \ contained
++    \ contains=p6PodParaEOF,p6PodParaConfigRegion
++
++syn region p6PodParaEOF
++    \ start="^[^=]"
++    \ end="\%$"
++    \ contained
++    \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
++
++" Delimited blocks (implicit code forbidden)
++syn region p6PodDelimRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=begin\>"
++    \ end="^=end\>"
++    \ contains=p6PodDelimNoCodeTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodDelimNoCodeTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze=end\>"
++    \ contained
++    \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion
++
++syn region p6PodDelimConfigRegion
++    \ start=""
++    \ end="^\ze\%([^=]\|=\K\|\s*$\)"
++    \ contained
++    \ contains=@p6PodConfig
++
++syn region p6PodDelimNoCode
++    \ start="^"
++    \ end="^\ze=end\>"
++    \ contained
++    \ contains=@p6PodNestedBlocks,@p6PodFormat
++
++" Delimited blocks (everything is code)
++syn region p6PodDelimRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=begin\>\ze\s*code\>"
++    \ end="^=end\>"
++    \ contains=p6PodDelimCodeTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodDelimCodeTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze=end\>"
++    \ contained
++    \ contains=p6PodDelimCode,p6PodDelimConfigRegion
++
++syn region p6PodDelimCode
++    \ start="^"
++    \ end="^\ze=end\>"
++    \ contained
++    \ contains=@p6PodNestedBlocks
++
++" Delimited blocks (implicit code allowed)
++syn region p6PodDelimRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
++    \ end="^=end\>"
++    \ contains=p6PodDelimTypeRegion
++    \ keepend
++    \ extend
++
++syn region p6PodDelimTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="^\ze=end\>"
++    \ contained
++    \ contains=p6PodDelim,p6PodDelimConfigRegion
++
++syn region p6PodDelim
++    \ start="^"
++    \ end="^\ze=end\>"
++    \ contained
++    \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
++
++" Delimited block to end-of-file
++syn region p6PodDelimRegion
++    \ matchgroup=p6PodPrefix
++    \ start="^=begin\>\ze\s\+END\>"
++    \ end="\%$"
++    \ contains=p6PodDelimEOFTypeRegion
++    \ extend
++
++syn region p6PodDelimEOFTypeRegion
++    \ matchgroup=p6PodType
++    \ start="\K\k*"
++    \ end="\%$"
++    \ contained
++    \ contains=p6PodDelimEOF,p6PodDelimConfigRegion
++
++syn region p6PodDelimEOF
++    \ start="^"
++    \ end="\%$"
++    \ contained
++    \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode
++
++syn cluster p6PodConfig
++    \ add=p6PodConfigOperator
++    \ add=p6PodExtraConfig
++    \ add=p6StringAuto
++    \ add=p6PodAutoQuote
++    \ add=p6StringSQ
++
++syn region p6PodParens
++    \ start="("
++    \ end=")"
++    \ contained
++    \ contains=p6Number,p6StringSQ
++
++syn match p6PodAutoQuote      display contained "=>"
++syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption
++syn match p6PodConfigOption   display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle
++syn match p6PodExtraConfig    display contained "^="
++syn match p6PodVerticalBar    display contained "|"
++syn match p6PodColon          display contained ":"
++syn match p6PodSemicolon      display contained ";"
++syn match p6PodComma          display contained ","
++syn match p6PodImplicitCode   display contained "^\s.*"
++
++syn region p6PodDelimEndRegion
++    \ matchgroup=p6PodType
++    \ start="\%(^=end\>\)\@<="
++    \ end="\K\k*"
++
++" These may appear inside delimited blocks
++syn cluster p6PodNestedBlocks
++    \ add=p6PodAbbrRegion
++    \ add=p6PodDirectRegion
++    \ add=p6PodParaRegion
++    \ add=p6PodDelimRegion
++    \ add=p6PodDelimEndRegion
++
++" Pod formatting codes
++
++syn cluster p6PodFormat
++    \ add=p6PodFormatOne
++    \ add=p6PodFormatTwo
++    \ add=p6PodFormatThree
++    \ add=p6PodFormatFrench
++
++" Balanced angles found inside formatting codes. Ensures proper nesting.
++
++syn region p6PodFormatAnglesOne
++    \ matchgroup=p6PodFormat
++    \ start="<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ transparent
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne
++
++syn region p6PodFormatAnglesTwo
++    \ matchgroup=p6PodFormat
++    \ start="<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ transparent
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo
++
++syn region p6PodFormatAnglesThree
++    \ matchgroup=p6PodFormat
++    \ start="<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ transparent
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree
++
++syn region p6PodFormatAnglesFrench
++    \ matchgroup=p6PodFormat
++    \ start="«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ transparent
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree
++
++" All formatting codes
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="\u<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="\u<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="\u<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="\u«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree
++
++" C<> and V<> don't allow nested formatting formatting codes
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="[CV]<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="[CV]<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAnglesTwo
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="[CV]<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="[CV]«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench
++
++" L<> can have a "|" separator
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="L<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="L<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="L<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="L«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar
++
++" E<> can have a ";" separator
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="E<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="E<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="E<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="E«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon
++
++" M<> can have a ":" separator
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="M<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="M<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="M<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="M«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon
++
++" D<> can have "|" and ";" separators
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="D<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="D<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="D<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="D«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon
++
++" X<> can have "|", "," and ";" separators
++
++syn region p6PodFormatOne
++    \ matchgroup=p6PodFormatCode
++    \ start="X<"
++    \ skip="<[^>]*>"
++    \ end=">"
++    \ contained
++    \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma
++
++syn region p6PodFormatTwo
++    \ matchgroup=p6PodFormatCode
++    \ start="X<<"
++    \ skip="<<[^>]*>>"
++    \ end=">>"
++    \ contained
++    \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma
++
++syn region p6PodFormatThree
++    \ matchgroup=p6PodFormatCode
++    \ start="X<<<"
++    \ skip="<<<[^>]*>>>"
++    \ end=">>>"
++    \ contained
++    \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma
++
++syn region p6PodFormatFrench
++    \ matchgroup=p6PodFormatCode
++    \ start="X«"
++    \ skip="«[^»]*»"
++    \ end="»"
++    \ contained
++    \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma
++
++" Define the default highlighting.
++" 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_perl6_syntax_inits")
++    if version < 508
++        let did_perl6_syntax_inits = 1
++        command -nargs=+ HiLink hi link <args>
++    else
++        command -nargs=+ HiLink hi def link <args>
++    endif
++
++    HiLink p6EscOctOld       p6Error
++    HiLink p6PackageTwigil   p6Twigil
++    HiLink p6StringAngle     p6String
++    HiLink p6StringFrench    p6String
++    HiLink p6StringAngles    p6String
++    HiLink p6StringSQ        p6String
++    HiLink p6StringDQ        p6String
++    HiLink p6StringQ         p6String
++    HiLink p6RxStringSQ      p6String
++    HiLink p6RxStringDQ      p6String
++    HiLink p6Substitution    p6String
++    HiLink p6Transliteration p6String
++    HiLink p6StringAuto      p6String
++    HiLink p6StringP5Auto    p6String
++    HiLink p6Key             p6String
++    HiLink p6Match           p6String
++    HiLink p6RegexBlock      p6String
++    HiLink p6RxP5CharClass   p6String
++    HiLink p6RxP5QuoteMeta   p6String
++    HiLink p6RxCharClass     p6String
++    HiLink p6RxQuoteWords    p6String
++    HiLink p6ReduceOp        p6Operator
++    HiLink p6ReverseCrossOp  p6Operator
++    HiLink p6HyperOp         p6Operator
++    HiLink p6QuoteQ          p6Operator
++    HiLink p6RxRange         p6StringSpecial
++    HiLink p6RxAnchor        p6StringSpecial
++    HiLink p6RxP5Anchor      p6StringSpecial
++    HiLink p6CodePoint       p6StringSpecial
++    HiLink p6RxMeta          p6StringSpecial
++    HiLink p6RxP5Range       p6StringSpecial
++    HiLink p6RxP5CPId        p6StringSpecial
++    HiLink p6RxP5Posix       p6StringSpecial
++    HiLink p6RxP5Mod         p6StringSpecial
++    HiLink p6RxP5HexSeq      p6StringSpecial
++    HiLink p6RxP5OctSeq      p6StringSpecial
++    HiLink p6RxP5WriteRefId  p6StringSpecial
++    HiLink p6HexSequence     p6StringSpecial
++    HiLink p6OctSequence     p6StringSpecial
++    HiLink p6RxP5Named       p6StringSpecial
++    HiLink p6RxP5PropId      p6StringSpecial
++    HiLink p6RxP5Quantifier  p6StringSpecial
++    HiLink p6RxP5CountId     p6StringSpecial
++    HiLink p6RxP5Verb        p6StringSpecial
++    HiLink p6Escape          p6StringSpecial2
++    HiLink p6EscNull         p6StringSpecial2
++    HiLink p6EscHash         p6StringSpecial2
++    HiLink p6EscQQ           p6StringSpecial2
++    HiLink p6EscQuote        p6StringSpecial2
++    HiLink p6EscDoubleQuote  p6StringSpecial2
++    HiLink p6EscBackTick     p6StringSpecial2
++    HiLink p6EscForwardSlash p6StringSpecial2
++    HiLink p6EscVerticalBar  p6StringSpecial2
++    HiLink p6EscExclamation  p6StringSpecial2
++    HiLink p6EscDollar       p6StringSpecial2
++    HiLink p6EscOpenCurly    p6StringSpecial2
++    HiLink p6EscCloseCurly   p6StringSpecial2
++    HiLink p6EscCloseBracket p6StringSpecial2
++    HiLink p6EscCloseAngle   p6StringSpecial2
++    HiLink p6EscCloseFrench  p6StringSpecial2
++    HiLink p6EscBackSlash    p6StringSpecial2
++    HiLink p6RxEscape        p6StringSpecial2
++    HiLink p6RxCapture       p6StringSpecial2
++    HiLink p6RxAlternation   p6StringSpecial2
++    HiLink p6RxP5            p6StringSpecial2
++    HiLink p6RxP5ReadRef     p6StringSpecial2
++    HiLink p6RxP5Oct         p6StringSpecial2
++    HiLink p6RxP5Hex         p6StringSpecial2
++    HiLink p6RxP5EscMeta     p6StringSpecial2
++    HiLink p6RxP5Meta        p6StringSpecial2
++    HiLink p6RxP5Escape      p6StringSpecial2
++    HiLink p6RxP5CodePoint   p6StringSpecial2
++    HiLink p6RxP5WriteRef    p6StringSpecial2
++    HiLink p6RxP5Prop        p6StringSpecial2
++
++    HiLink p6Property       Tag
++    HiLink p6Attention      Todo
++    HiLink p6Type           Type
++    HiLink p6Error          Error
++    HiLink p6BlockLabel     Label
++    HiLink p6Float          Float
++    HiLink p6Normal         Normal
++    HiLink p6Package        Normal
++    HiLink p6PackageScope   Normal
++    HiLink p6Number         Number
++    HiLink p6VersionNum     Number
++    HiLink p6String         String
++    HiLink p6Repeat         Repeat
++    HiLink p6Keyword        Keyword
++    HiLink p6Pragma         Keyword
++    HiLink p6Module         Keyword
++    HiLink p6DeclareRoutine Keyword
++    HiLink p6VarStorage     Special
++    HiLink p6FlowControl    Special
++    HiLink p6NumberBase     Special
++    HiLink p6Twigil         Special
++    HiLink p6StringSpecial2 Special
++    HiLink p6VersionDot     Special
++    HiLink p6Comment        Comment
++    HiLink p6Include        Include
++    HiLink p6Shebang        PreProc
++    HiLink p6ClosureTrait   PreProc
++    HiLink p6Routine        Function
++    HiLink p6Operator       Operator
++    HiLink p6Version        Operator
++    HiLink p6Context        Operator
++    HiLink p6Quote          Delimiter
++    HiLink p6TypeConstraint PreCondit
++    HiLink p6Exception      Exception
++    HiLink p6Placeholder    Identifier
++    HiLink p6Variable       Identifier
++    HiLink p6VarSlash       Identifier
++    HiLink p6VarNum         Identifier
++    HiLink p6VarExclam      Identifier
++    HiLink p6VarMatch       Identifier
++    HiLink p6VarName        Identifier
++    HiLink p6MatchVar       Identifier
++    HiLink p6RxP5ReadRefId  Identifier
++    HiLink p6RxP5ModDef     Identifier
++    HiLink p6RxP5ModName    Identifier
++    HiLink p6Conditional    Conditional
++    HiLink p6StringSpecial  SpecialChar
++
++    HiLink p6PodAbbr         p6Pod
++    HiLink p6PodAbbrEOF      p6Pod
++    HiLink p6PodAbbrNoCode   p6Pod
++    HiLink p6PodAbbrCode     p6PodCode
++    HiLink p6PodPara         p6Pod
++    HiLink p6PodParaEOF      p6Pod
++    HiLink p6PodParaNoCode   p6Pod
++    HiLink p6PodParaCode     p6PodCode
++    HiLink p6PodDelim        p6Pod
++    HiLink p6PodDelimEOF     p6Pod
++    HiLink p6PodDelimNoCode  p6Pod
++    HiLink p6PodDelimCode    p6PodCode
++    HiLink p6PodImplicitCode p6PodCode
++    HiLink p6PodExtraConfig  p6PodPrefix
++    HiLink p6PodVerticalBar  p6PodFormatCode
++    HiLink p6PodColon        p6PodFormatCode
++    HiLink p6PodSemicolon    p6PodFormatCode
++    HiLink p6PodComma        p6PodFormatCode
++    HiLink p6PodFormatOne    p6PodFormat
++    HiLink p6PodFormatTwo    p6PodFormat
++    HiLink p6PodFormatThree  p6PodFormat
++    HiLink p6PodFormatFrench p6PodFormat
++
++    HiLink p6PodType           Type
++    HiLink p6PodConfigOption   String
++    HiLink p6PodCode           PreProc
++    HiLink p6Pod               Comment
++    HiLink p6PodComment        Comment
++    HiLink p6PodAutoQuote      Operator
++    HiLink p6PodConfigOperator Operator
++    HiLink p6PodPrefix         Statement
++    HiLink p6PodName           Identifier
++    HiLink p6PodFormatCode     SpecialChar
++    HiLink p6PodFormat         SpecialComment
++
++    delcommand HiLink
++endif
++
++" Syncing to speed up processing
++"syn sync match p6SyncPod groupthere p6PodAbbrRegion     "^=\K\k*\>"
++"syn sync match p6SyncPod groupthere p6PodDirectRegion   "^=\%(config\|use\|encoding\)\>"
++"syn sync match p6SyncPod groupthere p6PodParaRegion     "^=for\>"
++"syn sync match p6SyncPod groupthere p6PodDelimRegion    "^=begin\>"
++"syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>"
++
++" Let's just sync whole file, the other methods aren't reliable (or I don't
++" know how to use them reliably)
++syn sync fromstart
++
++setlocal foldmethod=syntax
++
++let b:current_syntax = "perl6"
++
++" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
+diff -Nur runtime/syntax/po.vim runtime/syntax/po.vim
+--- runtime/syntax/po.vim	2008-06-15 04:29:12.000000000 -0700
++++ runtime/syntax/po.vim	2011-04-03 09:27:21.818239831 -0700
+@@ -1,10 +1,10 @@
+ " Vim syntax file
+ " Language:	po (gettext)
+ " Maintainer:	Dwayne Bailey <[email protected]>
+-" Last Change:	2008 Jan 08
++" Last Change:	2008 Sep 17
+ " Contributors: Dwayne Bailey (Most advanced syntax highlighting)
+ "               Leonardo Fontenelle (Spell checking)
+-"               Nam SungHyun <[email protected]> (Original maintainer)
++"               SungHyun Nam <[email protected]> (Original maintainer)
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+diff -Nur runtime/syntax/prolog.vim runtime/syntax/prolog.vim
+--- runtime/syntax/prolog.vim	2008-05-04 12:21:09.000000000 -0700
++++ runtime/syntax/prolog.vim	2011-01-18 10:40:56.416504093 -0800
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language:    PROLOG
+ " Maintainers: Thomas Koehler <[email protected]>
+-" Last Change: 2008 April 5
+-" URL:	       http://gott-gehabt/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
++" Last Change: 2009 Dec 04
++" URL:	       http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
+ 
+ " There are two sets of highlighting in here:
+ " If the "prolog_highlighting_clean" variable exists, it is rather sparse.
+@@ -63,7 +63,7 @@
+   syn match   prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|="
+   syn match   prologAsIs     "===\|\\===\|<=\|=>"
+ 
+-  syn match   prologNumber	      "\<[0123456789]*\>"
++  syn match   prologNumber	      "\<[0123456789]*\>'\@!"
+   syn match   prologCommentError      "\*/"
+   syn match   prologSpecialCharacter  ";"
+   syn match   prologSpecialCharacter  "!"
+diff -Nur runtime/syntax/pyrex.vim runtime/syntax/pyrex.vim
+--- runtime/syntax/pyrex.vim	2004-06-07 07:32:36.000000000 -0700
++++ runtime/syntax/pyrex.vim	2011-01-18 10:40:56.418743387 -0800
+@@ -2,7 +2,7 @@
+ " Language:	Pyrex
+ " Maintainer:	Marco Barisione <[email protected]>
+ " URL:		http://marcobari.altervista.org/pyrex_vim.html
+-" Last Change:	2004 May 16
++" Last Change:	2009 Nov 09
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -25,7 +25,7 @@
+ syn keyword pyrexType		int long short float double char object void
+ syn keyword pyrexType		signed unsigned
+ syn keyword pyrexStructure	struct union enum
+-syn keyword pyrexPrecondit	include cimport
++syn keyword pyrexInclude	include cimport
+ syn keyword pyrexAccess		public private property readonly extern
+ " If someome wants Python's built-ins highlighted probably he
+ " also wants Pyrex's built-ins highlighted
+@@ -35,9 +35,9 @@
+ 
+ " This deletes "from" from the keywords and re-adds it as a
+ " match with lower priority than pyrexForFrom
+-syn clear   pythonPreCondit
+-syn keyword pythonPreCondit     import
+-syn match   pythonPreCondit     "from"
++syn clear   pythonInclude
++syn keyword pythonInclude     import
++syn match   pythonInclude     "from"
+ 
+ " With "for[^:]*\zsfrom" VIM does not match "for" anymore, so
+ " I used the slower "\@<=" form
+@@ -54,7 +54,7 @@
+   HiLink pyrexStatement		Statement
+   HiLink pyrexType		Type
+   HiLink pyrexStructure		Structure
+-  HiLink pyrexPrecondit		PreCondit
++  HiLink pyrexInclude		PreCondit
+   HiLink pyrexAccess		pyrexStatement
+   if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins")
+       HiLink pyrexBuiltin	Function
+diff -Nur runtime/syntax/python.vim runtime/syntax/python.vim
+--- runtime/syntax/python.vim	2006-10-15 14:04:19.000000000 -0700
++++ runtime/syntax/python.vim	2011-04-03 09:27:21.819556752 -0700
+@@ -1,143 +1,252 @@
+ " Vim syntax file
+ " Language:	Python
+ " Maintainer:	Neil Schemenauer <[email protected]>
+-" Updated:	2006-10-15
+-"		Added Python 2.4 features 2006 May 4 (Dmitry Vasiliev)
++" Last Change:	2009-10-13
++" Credits:	Zvezdan Petkovic <[email protected]>
++"		Neil Schemenauer <[email protected]>
++"		Dmitry Vasiliev
+ "
+-" Options to control Python syntax highlighting:
++"		This version is a major rewrite by Zvezdan Petkovic.
+ "
+-" For highlighted numbers:
++"		- introduced highlighting of doctests
++"		- updated keywords, built-ins, and exceptions
++"		- corrected regular expressions for
+ "
+-"    let python_highlight_numbers = 1
++"		  * functions
++"		  * decorators
++"		  * strings
++"		  * escapes
++"		  * numbers
++"		  * space error
+ "
+-" For highlighted builtin functions:
++"		- corrected synchronization
++"		- more highlighting is ON by default, except
++"		- space error highlighting is OFF by default
+ "
+-"    let python_highlight_builtins = 1
++" Optional highlighting can be controlled using these variables.
+ "
+-" For highlighted standard exceptions:
++"   let python_no_builtin_highlight = 1
++"   let python_no_doctest_code_highlight = 1
++"   let python_no_doctest_highlight = 1
++"   let python_no_exception_highlight = 1
++"   let python_no_number_highlight = 1
++"   let python_space_error_highlight = 1
+ "
+-"    let python_highlight_exceptions = 1
++" All the options above can be switched on together.
+ "
+-" Highlight erroneous whitespace:
+-"
+-"    let python_highlight_space_errors = 1
+-"
+-" If you want all possible Python highlighting (the same as setting the
+-" preceding options):
+-"
+-"    let python_highlight_all = 1
++"   let python_highlight_all = 1
+ "
+ 
+-" For version 5.x: Clear all syntax items
+-" For version 6.x: Quit when a syntax file was already loaded
++" For version 5.x: Clear all syntax items.
++" For version 6.x: Quit when a syntax file was already loaded.
+ if version < 600
+   syntax clear
+ elseif exists("b:current_syntax")
+   finish
+ endif
+ 
+-
+-syn keyword pythonStatement	break continue del
+-syn keyword pythonStatement	except exec finally
+-syn keyword pythonStatement	pass print raise
+-syn keyword pythonStatement	return try with
+-syn keyword pythonStatement	global assert
+-syn keyword pythonStatement	lambda yield
+-syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite
+-syn match   pythonFunction	"[a-zA-Z_][a-zA-Z0-9_]*" contained
++" Keep Python keywords in alphabetical order inside groups for easy
++" comparison with the table in the 'Python Language Reference'
++" http://docs.python.org/reference/lexical_analysis.html#keywords.
++" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
++" Exceptions come last at the end of each group (class and def below).
++"
++" Keywords 'with' and 'as' are new in Python 2.6
++" (use 'from __future__ import with_statement' in Python 2.5).
++"
++" Some compromises had to be made to support both Python 3.0 and 2.6.
++" We include Python 3.0 features, but when a definition is duplicated,
++" the last definition takes precedence.
++"
++" - 'False', 'None', and 'True' are keywords in Python 3.0 but they are
++"   built-ins in 2.6 and will be highlighted as built-ins below.
++" - 'exec' is a built-in in Python 3.0 and will be highlighted as
++"   built-in below.
++" - 'nonlocal' is a keyword in Python 3.0 and will be highlighted.
++" - 'print' is a built-in in Python 3.0 and will be highlighted as
++"   built-in below (use 'from __future__ import print_function' in 2.6)
++"
++syn keyword pythonStatement	False, None, True
++syn keyword pythonStatement	as assert break continue del exec global
++syn keyword pythonStatement	lambda nonlocal pass print return with yield
++syn keyword pythonStatement	class def nextgroup=pythonFunction skipwhite
++syn keyword pythonConditional	elif else if
+ syn keyword pythonRepeat	for while
+-syn keyword pythonConditional	if elif else
+ syn keyword pythonOperator	and in is not or
+-" AS will be a keyword in Python 3
+-syn keyword pythonPreCondit	import from as
+-syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
+-syn keyword pythonTodo		TODO FIXME XXX contained
++syn keyword pythonException	except finally raise try
++syn keyword pythonInclude	from import
+ 
+ " Decorators (new in Python 2.4)
+ syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
++" The zero-length non-grouping match before the function name is
++" extremely important in pythonFunction.  Without it, everything is
++" interpreted as a function inside the contained environment of
++" doctests.
++" A dot must be allowed because of @MyClass.myfunc decorators.
++syn match   pythonFunction
++      \ "\%(\%(def\s\|class\s\|@\)\s*\)\@<=\h\%(\w\|\.\)*" contained
++
++syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
++syn keyword pythonTodo		FIXME NOTE NOTES TODO XXX contained
+ 
+-" strings
+-syn region pythonString		matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,@Spell
+-syn region pythonString		matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,@Spell
+-syn region pythonString		matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,@Spell
+-syn region pythonString		matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,@Spell
+-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell
+-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell
+-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell
+-syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell
+-syn match  pythonEscape		+\\[abfnrtv'"\\]+ contained
+-syn match  pythonEscape		"\\\o\{1,3}" contained
+-syn match  pythonEscape		"\\x\x\{2}" contained
+-syn match  pythonEscape		"\(\\u\x\{4}\|\\U\x\{8}\)" contained
+-syn match  pythonEscape		"\\$"
++" Triple-quoted strings can contain doctests.
++syn region  pythonString
++      \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
++      \ contains=pythonEscape,@Spell
++syn region  pythonString
++      \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
++      \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
++syn region  pythonRawString
++      \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
++      \ contains=@Spell
++syn region  pythonRawString
++      \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
++      \ contains=pythonSpaceError,pythonDoctest,@Spell
++
++syn match   pythonEscape	+\\[abfnrtv'"\\]+ contained
++syn match   pythonEscape	"\\\o\{1,3}" contained
++syn match   pythonEscape	"\\x\x\{2}" contained
++syn match   pythonEscape	"\%(\\u\x\{4}\|\\U\x\{8}\)" contained
++" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
++syn match   pythonEscape	"\\N{\a\+\%(\s\a\+\)*}" contained
++syn match   pythonEscape	"\\$"
+ 
+ if exists("python_highlight_all")
+-  let python_highlight_numbers = 1
+-  let python_highlight_builtins = 1
+-  let python_highlight_exceptions = 1
+-  let python_highlight_space_errors = 1
++  if exists("python_no_builtin_highlight")
++    unlet python_no_builtin_highlight
++  endif
++  if exists("python_no_doctest_code_highlight")
++    unlet python_no_doctest_code_highlight
++  endif
++  if exists("python_no_doctest_highlight")
++    unlet python_no_doctest_highlight
++  endif
++  if exists("python_no_exception_highlight")
++    unlet python_no_exception_highlight
++  endif
++  if exists("python_no_number_highlight")
++    unlet python_no_number_highlight
++  endif
++  let python_space_error_highlight = 1
+ endif
+ 
+-if exists("python_highlight_numbers")
++" It is very important to understand all details before changing the
++" regular expressions below or their order.
++" The word boundaries are *not* the floating-point number boundaries
++" because of a possible leading or trailing decimal point.
++" The expressions below ensure that all valid number literals are
++" highlighted, and invalid number literals are not.  For example,
++"
++" - a decimal point in '4.' at the end of a line is highlighted,
++" - a second dot in 1.0.0 is not highlighted,
++" - 08 is not highlighted,
++" - 08e0 or 08j are highlighted,
++"
++" and so on, as specified in the 'Python Language Reference'.
++" http://docs.python.org/reference/lexical_analysis.html#numeric-literals
++if !exists("python_no_number_highlight")
+   " numbers (including longs and complex)
+-  syn match   pythonNumber	"\<0x\x\+[Ll]\=\>"
+-  syn match   pythonNumber	"\<\d\+[LljJ]\=\>"
+-  syn match   pythonNumber	"\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+-  syn match   pythonNumber	"\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+-  syn match   pythonNumber	"\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+-endif
+-
+-if exists("python_highlight_builtins")
+-  " builtin functions, types and objects, not really part of the syntax
+-  syn keyword pythonBuiltin	True False bool enumerate set frozenset help
+-  syn keyword pythonBuiltin	reversed sorted sum
+-  syn keyword pythonBuiltin	Ellipsis None NotImplemented __import__ abs
+-  syn keyword pythonBuiltin	apply buffer callable chr classmethod cmp
+-  syn keyword pythonBuiltin	coerce compile complex delattr dict dir divmod
+-  syn keyword pythonBuiltin	eval execfile file filter float getattr globals
+-  syn keyword pythonBuiltin	hasattr hash hex id input int intern isinstance
+-  syn keyword pythonBuiltin	issubclass iter len list locals long map max
+-  syn keyword pythonBuiltin	min object oct open ord pow property range
+-  syn keyword pythonBuiltin	raw_input reduce reload repr round setattr
+-  syn keyword pythonBuiltin	slice staticmethod str super tuple type unichr
+-  syn keyword pythonBuiltin	unicode vars xrange zip
+-endif
+-
+-if exists("python_highlight_exceptions")
+-  " builtin exceptions and warnings
+-  syn keyword pythonException	ArithmeticError AssertionError AttributeError
+-  syn keyword pythonException	DeprecationWarning EOFError EnvironmentError
+-  syn keyword pythonException	Exception FloatingPointError IOError
+-  syn keyword pythonException	ImportError IndentationError IndexError
+-  syn keyword pythonException	KeyError KeyboardInterrupt LookupError
+-  syn keyword pythonException	MemoryError NameError NotImplementedError
+-  syn keyword pythonException	OSError OverflowError OverflowWarning
+-  syn keyword pythonException	ReferenceError RuntimeError RuntimeWarning
+-  syn keyword pythonException	StandardError StopIteration SyntaxError
+-  syn keyword pythonException	SyntaxWarning SystemError SystemExit TabError
+-  syn keyword pythonException	TypeError UnboundLocalError UnicodeError
+-  syn keyword pythonException	UnicodeEncodeError UnicodeDecodeError
+-  syn keyword pythonException	UnicodeTranslateError
+-  syn keyword pythonException	UserWarning ValueError Warning WindowsError
+-  syn keyword pythonException	ZeroDivisionError
++  syn match   pythonNumber	"\<0[oO]\=\o\+[Ll]\=\>"
++  syn match   pythonNumber	"\<0[xX]\x\+[Ll]\=\>"
++  syn match   pythonNumber	"\<0[bB][01]\+[Ll]\=\>"
++  syn match   pythonNumber	"\<\%([1-9]\d*\|0\)[Ll]\=\>"
++  syn match   pythonNumber	"\<\d\+[jJ]\>"
++  syn match   pythonNumber	"\<\d\+[eE][+-]\=\d\+[jJ]\=\>"
++  syn match   pythonNumber
++	\ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@="
++  syn match   pythonNumber
++	\ "\%(^\|\W\)\@<=\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>"
++endif
++
++" Group the built-ins in the order in the 'Python Library Reference' for
++" easier comparison.
++" http://docs.python.org/library/constants.html
++" http://docs.python.org/library/functions.html
++" http://docs.python.org/library/functions.html#non-essential-built-in-functions
++" Python built-in functions are in alphabetical order.
++if !exists("python_no_builtin_highlight")
++  " built-in constants
++  " 'False', 'True', and 'None' are also reserved words in Python 3.0
++  syn keyword pythonBuiltin	False True None
++  syn keyword pythonBuiltin	NotImplemented Ellipsis __debug__
++  " built-in functions
++  syn keyword pythonBuiltin	abs all any bin bool chr classmethod
++  syn keyword pythonBuiltin	compile complex delattr dict dir divmod
++  syn keyword pythonBuiltin	enumerate eval filter float format
++  syn keyword pythonBuiltin	frozenset getattr globals hasattr hash
++  syn keyword pythonBuiltin	help hex id input int isinstance
++  syn keyword pythonBuiltin	issubclass iter len list locals map max
++  syn keyword pythonBuiltin	min next object oct open ord pow print
++  syn keyword pythonBuiltin	property range repr reversed round set
++  syn keyword pythonBuiltin	setattr slice sorted staticmethod str
++  syn keyword pythonBuiltin	sum super tuple type vars zip __import__
++  " Python 2.6 only
++  syn keyword pythonBuiltin	basestring callable cmp execfile file
++  syn keyword pythonBuiltin	long raw_input reduce reload unichr
++  syn keyword pythonBuiltin	unicode xrange
++  " Python 3.0 only
++  syn keyword pythonBuiltin	ascii bytearray bytes exec memoryview
++  " non-essential built-in functions; Python 2.6 only
++  syn keyword pythonBuiltin	apply buffer coerce intern
++endif
++
++" From the 'Python Library Reference' class hierarchy at the bottom.
++" http://docs.python.org/library/exceptions.html
++if !exists("python_no_exception_highlight")
++  " builtin base exceptions (only used as base classes for other exceptions)
++  syn keyword pythonExceptions	BaseException Exception
++  syn keyword pythonExceptions	ArithmeticError EnvironmentError
++  syn keyword pythonExceptions	LookupError
++  " builtin base exception removed in Python 3.0
++  syn keyword pythonExceptions	StandardError
++  " builtin exceptions (actually raised)
++  syn keyword pythonExceptions	AssertionError AttributeError BufferError
++  syn keyword pythonExceptions	EOFError FloatingPointError GeneratorExit
++  syn keyword pythonExceptions	IOError ImportError IndentationError
++  syn keyword pythonExceptions	IndexError KeyError KeyboardInterrupt
++  syn keyword pythonExceptions	MemoryError NameError NotImplementedError
++  syn keyword pythonExceptions	OSError OverflowError ReferenceError
++  syn keyword pythonExceptions	RuntimeError StopIteration SyntaxError
++  syn keyword pythonExceptions	SystemError SystemExit TabError TypeError
++  syn keyword pythonExceptions	UnboundLocalError UnicodeError
++  syn keyword pythonExceptions	UnicodeDecodeError UnicodeEncodeError
++  syn keyword pythonExceptions	UnicodeTranslateError ValueError VMSError
++  syn keyword pythonExceptions	WindowsError ZeroDivisionError
++  " builtin warnings
++  syn keyword pythonExceptions	BytesWarning DeprecationWarning FutureWarning
++  syn keyword pythonExceptions	ImportWarning PendingDeprecationWarning
++  syn keyword pythonExceptions	RuntimeWarning SyntaxWarning UnicodeWarning
++  syn keyword pythonExceptions	UserWarning Warning
+ endif
+ 
+-if exists("python_highlight_space_errors")
++if exists("python_space_error_highlight")
+   " trailing whitespace
+-  syn match   pythonSpaceError   display excludenl "\S\s\+$"ms=s+1
++  syn match   pythonSpaceError	display excludenl "\s\+$"
+   " mixed tabs and spaces
+-  syn match   pythonSpaceError   display " \+\t"
+-  syn match   pythonSpaceError   display "\t\+ "
++  syn match   pythonSpaceError	display " \+\t"
++  syn match   pythonSpaceError	display "\t\+ "
+ endif
+ 
+-" This is fast but code inside triple quoted strings screws it up. It
+-" is impossible to fix because the only way to know if you are inside a
+-" triple quoted string is to start from the beginning of the file. If
+-" you have a fast machine you can try uncommenting the "sync minlines"
+-" and commenting out the rest.
+-syn sync match pythonSync grouphere NONE "):$"
+-syn sync maxlines=200
+-"syn sync minlines=2000
++" Do not spell doctests inside strings.
++" Notice that the end of a string, either ''', or """, will end the contained
++" doctest too.  Thus, we do *not* need to have it as an end pattern.
++if !exists("python_no_doctest_highlight")
++  if !exists("python_no_doctest_code_higlight")
++    syn region pythonDoctest
++	  \ start="^\s*>>>\s" end="^\s*$"
++	  \ contained contains=ALLBUT,pythonDoctest,@Spell
++    syn region pythonDoctestValue
++	  \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
++	  \ contained
++  else
++    syn region pythonDoctest
++	  \ start="^\s*>>>" end="^\s*$"
++	  \ contained contains=@NoSpell
++  endif
++endif
++
++" Sync at the beginning of class, function, or method definition.
++syn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*("
+ 
+ if version >= 508 || !exists("did_python_syn_inits")
+   if version <= 508
+@@ -147,35 +256,40 @@
+     command -nargs=+ HiLink hi def link <args>
+   endif
+ 
+-  " The default methods for highlighting.  Can be overridden later
++  " The default highlight links.  Can be overridden later.
+   HiLink pythonStatement	Statement
+-  HiLink pythonFunction		Function
+   HiLink pythonConditional	Conditional
+   HiLink pythonRepeat		Repeat
+-  HiLink pythonString		String
+-  HiLink pythonRawString	String
+-  HiLink pythonEscape		Special
+   HiLink pythonOperator		Operator
+-  HiLink pythonPreCondit	PreCondit
++  HiLink pythonException	Exception
++  HiLink pythonInclude		Include
++  HiLink pythonDecorator	Define
++  HiLink pythonFunction		Function
+   HiLink pythonComment		Comment
+   HiLink pythonTodo		Todo
+-  HiLink pythonDecorator	Define
+-  if exists("python_highlight_numbers")
+-    HiLink pythonNumber	Number
++  HiLink pythonString		String
++  HiLink pythonRawString	String
++  HiLink pythonEscape		Special
++  if !exists("python_no_number_highlight")
++    HiLink pythonNumber		Number
+   endif
+-  if exists("python_highlight_builtins")
++  if !exists("python_no_builtin_highlight")
+     HiLink pythonBuiltin	Function
+   endif
+-  if exists("python_highlight_exceptions")
+-    HiLink pythonException	Exception
++  if !exists("python_no_exception_highlight")
++    HiLink pythonExceptions	Structure
+   endif
+-  if exists("python_highlight_space_errors")
++  if exists("python_space_error_highlight")
+     HiLink pythonSpaceError	Error
+   endif
++  if !exists("python_no_doctest_highlight")
++    HiLink pythonDoctest	Special
++    HiLink pythonDoctestValue	Define
++  endif
+ 
+   delcommand HiLink
+ endif
+ 
+ let b:current_syntax = "python"
+ 
+-" vim: ts=8
++" vim:set sw=2 sts=2 ts=8 noet:
+diff -Nur runtime/syntax/readline.vim runtime/syntax/readline.vim
+--- runtime/syntax/readline.vim	2007-06-17 08:03:20.000000000 -0700
++++ runtime/syntax/readline.vim	2011-01-18 10:40:56.423443968 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         readline(3) configuration file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2007-06-17
++" Latest Revision:  2009-05-25
+ "   readline_has_bash - if defined add support for bash specific
+ "                       settings/functions
+ 
+@@ -128,6 +128,7 @@
+                                 \ arrow-key-prefix vi-back-to-indent vi-bword
+                                 \ vi-bWord vi-eword vi-eWord vi-fword vi-fWord
+                                 \ vi-next-word
++                                \ vi-movement-mode
+ 
+ if exists("readline_has_bash")
+   syn keyword readlineFunctions contained
+diff -Nur runtime/syntax/remind.vim runtime/syntax/remind.vim
+--- runtime/syntax/remind.vim	2006-05-12 10:55:59.000000000 -0700
++++ runtime/syntax/remind.vim	2011-01-18 10:40:56.424622674 -0800
+@@ -1,12 +1,13 @@
+ " Vim syntax file
+ " Language:	Remind
+ " Maintainer:	Davide Alberani <[email protected]>
+-" Last Change:	10 May 2006
+-" Version:	0.3
++" Last Change:	18 Sep 2009
++" Version:	0.5
+ " URL:		http://erlug.linux.it/~da/vim/syntax/remind.vim
+ "
+-" remind is a sophisticated reminder service; you can download remind from:
+-" http://www.roaringpenguin.com/penguin/open_source_remind.php
++" remind is a sophisticated reminder service
++" you can download remind from:
++"   http://www.roaringpenguin.com/penguin/open_source_remind.php
+ 
+ if version < 600
+   syntax clear
+@@ -14,24 +15,30 @@
+   finish
+ endif
+ 
+-" shut case off
++" shut case off.
+ syn case ignore
+ 
+ syn keyword remindCommands	REM OMIT SET FSET UNSET
+-syn keyword remindExpiry	UNTIL SCANFROM SCAN WARN SCHED
++syn keyword remindExpiry	UNTIL FROM SCANFROM SCAN WARN SCHED
+ syn keyword remindTag		PRIORITY TAG
+ syn keyword remindTimed		AT DURATION
+ syn keyword remindMove		ONCE SKIP BEFORE AFTER
+-syn keyword remindSpecial	INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP
++syn keyword remindSpecial	INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR
+ syn keyword remindRun		MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON
+ syn keyword remindConditional	IF ELSE ENDIF IFTRIG
++syn keyword remindDebug		DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
+ syn match remindComment		"#.*$"
+ syn region remindString		start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline
+ syn region remindString		start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline
+-syn keyword remindDebug		DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE
+ syn match remindVar		"\$[_a-zA-Z][_a-zA-Z0-9]*"
+ syn match remindSubst		"%[^ ]"
+ syn match remindAdvanceNumber	"\(\*\|+\|-\|++\|--\)[0-9]\+"
++" XXX: use different separators for dates and times?
++syn match remindDateSeparators	"[/:@\.-]" contained
++syn match remindTimes		"[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators
++" XXX: why not match only valid dates?  Ok, checking for 'Feb the 30' would
++"       be impossible, but at least check for valid months and times.
++syn match remindDates		"'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators
+ " This will match trailing whitespaces that seem to break rem2ps.
+ " Courtesy of Michael Dunn.
+ syn match remindWarning		display excludenl "\S\s\+$"ms=s+1
+@@ -54,11 +61,14 @@
+   HiLink remindRun		Function
+   HiLink remindConditional	Conditional
+   HiLink remindComment		Comment
++  HiLink remindTimes		String
+   HiLink remindString		String
+   HiLink remindDebug		Debug
+   HiLink remindVar		Identifier
+   HiLink remindSubst		Constant
+   HiLink remindAdvanceNumber	Number
++  HiLink remindDateSeparators	Comment
++  HiLink remindDates		String
+   HiLink remindWarning		Error
+ 
+   delcommand HiLink
+diff -Nur runtime/syntax/rhelp.vim runtime/syntax/rhelp.vim
+--- runtime/syntax/rhelp.vim	2008-04-10 12:24:17.000000000 -0700
++++ runtime/syntax/rhelp.vim	2011-04-03 09:27:21.820409267 -0700
+@@ -1,13 +1,17 @@
+ " Vim syntax file
+ " Language:    R Help File
+ " Maintainer:  Johannes Ranke <[email protected]>
+-" Last Change: 2008 Apr 10
+-" Version:     0.7.1
+-" SVN:		   $Id: rhelp.vim 81 2008-04-10 08:30:11Z ranke $
++" Last Change: 2010 Apr 22
++" Version:     0.7.3
++" SVN:		   $Id: rhelp.vim 88 2010-04-22 19:37:09Z ranke $
+ " Remarks:     - Now includes R syntax highlighting in the appropriate
+ "                sections if an r.vim file is in the same directory or in the
+ "                default debian location.
+ "              - There is no Latex markup in equations
++"              - Thanks to Will Gray for finding and fixing a bug
++"              - No support for \if, \ifelse and \out as I don't understand
++"                them and have no examples at hand (help welcome).
++"              - No support for \var tag within quoted string (dito)
+ 
+ " Version Clears: {{{1
+ " For version 5.x: Clear all syntax items
+@@ -36,6 +40,7 @@
+ syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
+ syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained
+ syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained
++syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end=/}/ contains=@R
+ 
+ " Strings {{{1
+ syn region rhelpString start=/"/ end=/"/ 
+@@ -54,10 +59,60 @@
+ syn match rhelpKeyword  "---"
+ syn match rhelpKeyword  "<"
+ syn match rhelpKeyword  ">"
++syn match rhelpKeyword	"\\ge"
++syn match rhelpKeyword	"\\le"
++syn match rhelpKeyword	"\\alpha"
++syn match rhelpKeyword	"\\beta"
++syn match rhelpKeyword	"\\gamma"
++syn match rhelpKeyword	"\\delta"
++syn match rhelpKeyword	"\\epsilon"
++syn match rhelpKeyword	"\\zeta"
++syn match rhelpKeyword	"\\eta"
++syn match rhelpKeyword	"\\theta"
++syn match rhelpKeyword	"\\iota"
++syn match rhelpKeyword	"\\kappa"
++syn match rhelpKeyword	"\\lambda"
++syn match rhelpKeyword	"\\mu"
++syn match rhelpKeyword	"\\nu"
++syn match rhelpKeyword	"\\xi"
++syn match rhelpKeyword	"\\omicron"
++syn match rhelpKeyword	"\\pi"
++syn match rhelpKeyword	"\\rho"
++syn match rhelpKeyword	"\\sigma"
++syn match rhelpKeyword	"\\tau"
++syn match rhelpKeyword	"\\upsilon"
++syn match rhelpKeyword	"\\phi"
++syn match rhelpKeyword	"\\chi"
++syn match rhelpKeyword	"\\psi"
++syn match rhelpKeyword	"\\omega"
++syn match rhelpKeyword	"\\Alpha"
++syn match rhelpKeyword	"\\Beta"
++syn match rhelpKeyword	"\\Gamma"
++syn match rhelpKeyword	"\\Delta"
++syn match rhelpKeyword	"\\Epsilon"
++syn match rhelpKeyword	"\\Zeta"
++syn match rhelpKeyword	"\\Eta"
++syn match rhelpKeyword	"\\Theta"
++syn match rhelpKeyword	"\\Iota"
++syn match rhelpKeyword	"\\Kappa"
++syn match rhelpKeyword	"\\Lambda"
++syn match rhelpKeyword	"\\Mu"
++syn match rhelpKeyword	"\\Nu"
++syn match rhelpKeyword	"\\Xi"
++syn match rhelpKeyword	"\\Omicron"
++syn match rhelpKeyword	"\\Pi"
++syn match rhelpKeyword	"\\Rho"
++syn match rhelpKeyword	"\\Sigma"
++syn match rhelpKeyword	"\\Tau"
++syn match rhelpKeyword	"\\Upsilon"
++syn match rhelpKeyword	"\\Phi"
++syn match rhelpKeyword	"\\Chi"
++syn match rhelpKeyword	"\\Psi"
++syn match rhelpKeyword	"\\Omega"
+ 
+ " Links {{{1
+ syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
+-syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend
++syn region rhelpLink matchgroup=rhelpSection start="\\link\[.\{-}\]{" end="}" contained keepend
+ syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend
+ 
+ " Type Styles {{{1
+@@ -111,6 +166,7 @@
+ 
+ " Freely named Sections {{{1
+ syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/ 
++syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end=/}/ 
+ 
+ " R help file comments {{{1
+ syn match rhelpComment /%.*$/ contained 
+diff -Nur runtime/syntax/rnoweb.vim runtime/syntax/rnoweb.vim
+--- runtime/syntax/rnoweb.vim	2007-05-05 10:55:31.000000000 -0700
++++ runtime/syntax/rnoweb.vim	2011-01-18 10:40:56.427943263 -0800
+@@ -1,9 +1,9 @@
+ " Vim syntax file
+ " Language:    R noweb Files
+ " Maintainer:  Johannes Ranke <[email protected]>
+-" Last Change: 2007 M�r 30
+-" Version:     0.8
+-" SVN:	       $Id: rnoweb.vim,v 1.3 2007/05/05 17:55:31 vimboss Exp $
++" Last Change: 2009 May 05
++" Version:     0.9
++" SVN:	       $Id: rnoweb.vim 84 2009-05-03 19:52:47Z ranke $
+ " Remarks:     - This file is inspired by the proposal of 
+ "				 Fernando Henrique Ferraz Pereira da Rosa <[email protected]>
+ "			     http://www.ime.usp.br/~feferraz/en/sweavevim.html
+@@ -25,6 +25,7 @@
+ unlet b:current_syntax
+ 
+ syn cluster texMatchGroup add=@rnoweb
++syn cluster texMathMatchGroup add=rnowebSexpr
+ syn cluster texEnvGroup add=@rnoweb
+ syn cluster texFoldGroup add=@rnoweb
+ syn cluster texDocGroup		add=@rnoweb
+diff -Nur runtime/syntax/rst.vim runtime/syntax/rst.vim
+--- runtime/syntax/rst.vim	2006-07-03 16:49:39.000000000 -0700
++++ runtime/syntax/rst.vim	2011-01-18 10:40:56.429697840 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         reStructuredText documentation format
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-07-04
++" Latest Revision:  2010-01-23
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -12,12 +12,9 @@
+ 
+ syn case ignore
+ 
+-" FIXME: The problem with these two is that Vim doesn’t seem to like
+-" matching across line boundaries.
+-"
+-" syn match   rstSections /^.*\n[=`:.'"~^_*+#-]\+$/
++syn match   rstSections "^\%(\([=`:.'"~^_*+#-]\)\1\+\n\)\=.\+\n\([=`:.'"~^_*+#-]\)\2\+$"
+ 
+-" syn match   rstTransition  /^\s*[=`:.'"~^_*+#-]\{4,}\s*$/
++syn match   rstTransition  /^[=`:.'"~^_*+#-]\{4,}\s*$/
+ 
+ syn cluster rstCruft                contains=rstEmphasis,rstStrongEmphasis,
+       \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference,
+@@ -140,12 +137,12 @@
+ 
+ " TODO: Use better syncing.  I don’t know the specifics of syncing well enough,
+ " though.
+-syn sync minlines=50
++syn sync minlines=50 linebreaks=1
+ 
+ hi def link rstTodo                         Todo
+ hi def link rstComment                      Comment
+-"hi def link rstSections                     Type
+-"hi def link rstTransition                   Type
++hi def link rstSections                     Type
++hi def link rstTransition                   Type
+ hi def link rstLiteralBlock                 String
+ hi def link rstQuotedLiteralBlock           String
+ hi def link rstDoctestBlock                 PreProc
+diff -Nur runtime/syntax/ruby.vim runtime/syntax/ruby.vim
+--- runtime/syntax/ruby.vim	2008-06-29 07:00:31.000000000 -0700
++++ runtime/syntax/ruby.vim	2011-01-18 10:40:56.431216552 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:		Ruby
+ " Maintainer:		Doug Kearns <[email protected]>
+-" Info:			$Id: ruby.vim,v 1.152 2008/06/29 04:33:41 tpope Exp $
++" Last Change:		2009 Dec 2
+ " URL:			http://vim-ruby.rubyforge.org
+ " Anon CVS:		See above site
+ " Release Coordinator:	Doug Kearns <[email protected]>
+@@ -19,7 +19,7 @@
+   setlocal foldmethod=syntax
+ endif
+ 
+-syn cluster rubyNotTop			contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyTodo
++syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo
+ 
+ if exists("ruby_space_errors")
+   if !exists("ruby_no_trail_space_error")
+@@ -38,76 +38,79 @@
+ endif
+ 
+ " Expression Substitution and Backslash Notation
+-syn match rubyStringEscape	"\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"							 contained display
+-syn match rubyStringEscape	"\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
++syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"						    contained display
++syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
++syn match rubyQuoteEscape  "\\[\\']"											    contained display
+ 
+ syn region rubyInterpolation	      matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop
+-syn match  rubyInterpolation	      "#\%(\$\|@@\=\)\w\+"    display contained  contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable
++syn match  rubyInterpolation	      "#\%(\$\|@@\=\)\w\+"    display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable
+ syn match  rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained
+-syn match  rubyInterpolation	      "#\$\%(-\w\|\W\)"       display contained  contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable
++syn match  rubyInterpolation	      "#\$\%(-\w\|\W\)"       display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable
+ syn match  rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)"    display contained
+-syn region rubyNoInterpolation	      start="\\#{" end="}"    contained
++syn region rubyNoInterpolation	      start="\\#{" end="}"            contained
+ syn match  rubyNoInterpolation	      "\\#{"		      display contained
+ syn match  rubyNoInterpolation	      "\\#\%(\$\|@@\=\)\w\+"  display contained
+-syn match  rubyNoInterpolation	      "\\#\$\W"               display contained
++syn match  rubyNoInterpolation	      "\\#\$\W"		      display contained
+ 
+ syn match rubyDelimEscape	"\\[(<{\[)>}\]]" transparent display contained contains=NONE
+ 
+-syn region rubyNestedParentheses	start="("	skip="\\\\\|\\)"	matchgroup=rubyString end=")"	transparent contained
+-syn region rubyNestedCurlyBraces	start="{"	skip="\\\\\|\\}"	matchgroup=rubyString end="}"	transparent contained
+-syn region rubyNestedAngleBrackets	start="<"	skip="\\\\\|\\>"	matchgroup=rubyString end=">"	transparent contained
+-syn region rubyNestedSquareBrackets	start="\["	skip="\\\\\|\\\]"	matchgroup=rubyString end="\]"	transparent contained
++syn region rubyNestedParentheses    start="("  skip="\\\\\|\\)"  matchgroup=rubyString end=")"	transparent contained
++syn region rubyNestedCurlyBraces    start="{"  skip="\\\\\|\\}"  matchgroup=rubyString end="}"	transparent contained
++syn region rubyNestedAngleBrackets  start="<"  skip="\\\\\|\\>"  matchgroup=rubyString end=">"	transparent contained
++syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]"	transparent contained
+ 
+ " These are mostly Oniguruma ready
+-syn region rubyRegexpComment	matchgroup=rubyRegexpSpecial   start="(?#"									skip="\\)"  end=")"  contained
+-syn region rubyRegexpParens	matchgroup=rubyRegexpSpecial   start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)"	skip="\\)"  end=")"  contained transparent contains=@rubyRegexpSpecial
+-syn region rubyRegexpBrackets	matchgroup=rubyRegexpCharClass start="\[\^\="									skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline
+-syn match  rubyRegexpCharClass	"\\[DdHhSsWw]"		contained display
+-syn match  rubyRegexpCharClass	"\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]"		contained
+-syn match  rubyRegexpEscape	"\\[].*?+^$|\\/(){}[]"	contained display
+-syn match  rubyRegexpQuantifier	"[*?+][?+]\="		contained display
+-syn match  rubyRegexpQuantifier	"{\d\+\%(,\d*\)\=}?\="	contained display
+-syn match  rubyRegexpAnchor	"[$^]\|\\[ABbGZz]"	contained display
+-syn match  rubyRegexpDot	"\."			contained display
+-syn match  rubyRegexpSpecial	"|"			contained display
+-syn match  rubyRegexpSpecial	"\\[1-9]\d\=\d\@!"	contained display
++syn region rubyRegexpComment	matchgroup=rubyRegexpSpecial   start="(?#"								  skip="\\)"  end=")"  contained
++syn region rubyRegexpParens	matchgroup=rubyRegexpSpecial   start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)"  end=")"  contained transparent contains=@rubyRegexpSpecial
++syn region rubyRegexpBrackets	matchgroup=rubyRegexpCharClass start="\[\^\="								  skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline
++syn match  rubyRegexpCharClass	"\\[DdHhSsWw]"	       contained display
++syn match  rubyRegexpCharClass	"\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained
++syn match  rubyRegexpEscape	"\\[].*?+^$|\\/(){}[]" contained
++syn match  rubyRegexpQuantifier	"[*?+][?+]\="	       contained display
++syn match  rubyRegexpQuantifier	"{\d\+\%(,\d*\)\=}?\=" contained display
++syn match  rubyRegexpAnchor	"[$^]\|\\[ABbGZz]"     contained display
++syn match  rubyRegexpDot	"\."		       contained display
++syn match  rubyRegexpSpecial	"|"		       contained display
++syn match  rubyRegexpSpecial	"\\[1-9]\d\=\d\@!"     contained display
+ syn match  rubyRegexpSpecial	"\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
+ syn match  rubyRegexpSpecial	"\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
+ syn match  rubyRegexpSpecial	"\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
+ syn match  rubyRegexpSpecial	"\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
+ 
+-syn cluster rubyStringSpecial		contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape
+-syn cluster rubyExtendedStringSpecial	contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
+-syn cluster rubyRegexpSpecial		contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment
++syn cluster rubyStringSpecial	      contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape
++syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
++syn cluster rubyRegexpSpecial	      contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment
+ 
+ " Numbers and ASCII Codes
+ syn match rubyASCIICode	"\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
+-syn match rubyInteger	"\<0[xX]\x\+\%(_\x\+\)*\>"								display
+-syn match rubyInteger	"\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\>"						display
+-syn match rubyInteger	"\<0[oO]\=\o\+\%(_\o\+\)*\>"								display
+-syn match rubyInteger	"\<0[bB][01]\+\%(_[01]\+\)*\>"								display
+-syn match rubyFloat	"\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\>"					display
+-syn match rubyFloat	"\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\>"	display
++syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*\>"								display
++syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\>"						display
++syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*\>"								display
++syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*\>"								display
++syn match rubyFloat	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\>"					display
++syn match rubyFloat	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\>"	display
+ 
+ " Identifiers
+ syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
+ syn match rubyBlockArgument	    "&[_[:lower:]][_[:alnum:]]"		 contains=NONE display transparent
+ 
+-syn match  rubyConstant			"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
+-syn match  rubyClassVariable		"@@\h\w*" display
+-syn match  rubyInstanceVariable		"@\h\w*"  display
+-syn match  rubyGlobalVariable		"$\%(\h\w*\|-.\)"
+-syn match  rubySymbol			"[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|==\|=\~\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)"
+-syn match  rubySymbol			"[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
+-syn match  rubySymbol			"[]})\"':]\@<!:\%(\$\|@@\=\)\=\h\w*"
+-syn match  rubySymbol			"[]})\"':]\@<!:\h\w*\%([?!=]>\@!\)\="
+-syn region rubySymbol			start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\""
+-syn region rubySymbol			start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
++syn match  rubyConstant		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
++syn match  rubyClassVariable	"@@\h\w*" display
++syn match  rubyInstanceVariable "@\h\w*"  display
++syn match  rubyGlobalVariable	"$\%(\h\w*\|-.\)"
++syn match  rubySymbol		"[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|==\|=\~\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)"
++syn match  rubySymbol		"[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
++syn match  rubySymbol		"[]})\"':]\@<!:\%(\$\|@@\=\)\=\h\w*"
++syn match  rubySymbol		"[]})\"':]\@<!:\h\w*\%([?!=]>\@!\)\="
++syn match  rubySymbol		"\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1
++syn match  rubySymbol		"[]})\"':]\@<!\h\w*[!?]\=:\s\@="he=e-1
++syn region rubySymbol		start="[]})\"':]\@<!:'"  end="'"  skip="\\\\\|\\'"  contains=rubyQuoteEscape fold
++syn region rubySymbol		start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
+ 
+-syn match  rubyBlockParameter		"\h\w*" contained
+-syn region rubyBlockParameterList	start="\%(\%(\<do\>\|{\)\s*\)\@<=|" end="|" oneline display contains=rubyBlockParameter
++syn match  rubyBlockParameter	  "\h\w*" contained
++syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\s*\)\@<=|" end="|" oneline display contains=rubyBlockParameter
+ 
+-syn match rubyInvalidVariable    "$[^ A-Za-z_-]"
++syn match rubyInvalidVariable	 "$[^ A-Za-z_-]"
+ syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]#
+ syn match rubyPredefinedVariable "$_\>"											   display
+ syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>"									   display
+@@ -125,48 +128,48 @@
+ syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
+ 
+ " Generalized Regular Expression
+-syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"	end="\z1[iomxneus]*"	 skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
+-syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{"				end="}[iomxneus]*"	 skip="\\\\\|\\}"   contains=@rubyRegexpSpecial fold
+-syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<"				end=">[iomxneus]*"	 skip="\\\\\|\\>"   contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
+-syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\["				end="\][iomxneus]*"	 skip="\\\\\|\\\]"  contains=@rubyRegexpSpecial fold
+-syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r("				end=")[iomxneus]*"	 skip="\\\\\|\\)"   contains=@rubyRegexpSpecial fold
++syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"	end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
++syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{"				end="}[iomxneus]*"   skip="\\\\\|\\}"	contains=@rubyRegexpSpecial fold
++syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<"				end=">[iomxneus]*"   skip="\\\\\|\\>"	contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
++syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\["				end="\][iomxneus]*"  skip="\\\\\|\\\]"	contains=@rubyRegexpSpecial fold
++syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r("				end=")[iomxneus]*"   skip="\\\\\|\\)"	contains=@rubyRegexpSpecial fold
+ 
+ " Normal String and Shell Command Output
+ syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
+-syn region rubyString matchgroup=rubyStringDelimiter start="'"	end="'"  skip="\\\\\|\\'"			       fold
++syn region rubyString matchgroup=rubyStringDelimiter start="'"	end="'"  skip="\\\\\|\\'"  contains=rubyQuoteEscape    fold
+ syn region rubyString matchgroup=rubyStringDelimiter start="`"	end="`"  skip="\\\\\|\\`"  contains=@rubyStringSpecial fold
+ 
+ " Generalized Single Quoted String, Symbol and Array of Strings
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"  end="\z1" skip="\\\\\|\\\z1" fold
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{"				    end="}"   skip="\\\\\|\\}"	 fold	contains=rubyNestedCurlyBraces,rubyDelimEscape
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<"				    end=">"   skip="\\\\\|\\>"	 fold	contains=rubyNestedAngleBrackets,rubyDelimEscape
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\["				    end="\]"  skip="\\\\\|\\\]"	 fold	contains=rubyNestedSquareBrackets,rubyDelimEscape
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]("				    end=")"   skip="\\\\\|\\)"	 fold	contains=rubyNestedParentheses,rubyDelimEscape
+-syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"   end="\z1" skip="\\\\\|\\\z1" fold
+-syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]{"				    end="}"   skip="\\\\\|\\}"	 fold	contains=rubyNestedCurlyBraces,rubyDelimEscape
+-syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]<"				    end=">"   skip="\\\\\|\\>"	 fold	contains=rubyNestedAngleBrackets,rubyDelimEscape
+-syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\["				    end="\]"  skip="\\\\\|\\\]"	 fold	contains=rubyNestedSquareBrackets,rubyDelimEscape
+-syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]("				    end=")"   skip="\\\\\|\\)"	 fold	contains=rubyNestedParentheses,rubyDelimEscape
++syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
++syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{"				   end="}"   skip="\\\\\|\\}"	fold contains=rubyNestedCurlyBraces,rubyDelimEscape
++syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<"				   end=">"   skip="\\\\\|\\>"	fold contains=rubyNestedAngleBrackets,rubyDelimEscape
++syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\["				   end="\]"  skip="\\\\\|\\\]"	fold contains=rubyNestedSquareBrackets,rubyDelimEscape
++syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]("				   end=")"   skip="\\\\\|\\)"	fold contains=rubyNestedParentheses,rubyDelimEscape
++syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"  end="\z1" skip="\\\\\|\\\z1" fold
++syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]{"				   end="}"   skip="\\\\\|\\}"	fold contains=rubyNestedCurlyBraces,rubyDelimEscape
++syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]<"				   end=">"   skip="\\\\\|\\>"	fold contains=rubyNestedAngleBrackets,rubyDelimEscape
++syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\["				   end="\]"  skip="\\\\\|\\\]"	fold contains=rubyNestedSquareBrackets,rubyDelimEscape
++syn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]("				   end=")"   skip="\\\\\|\\)"	fold contains=rubyNestedParentheses,rubyDelimEscape
+ 
+ " Generalized Double Quoted String and Array of Strings and Shell Command Output
+ " Note: %= is not matched here as the beginning of a double quoted string
+ syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)"	    end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
+ syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={"				    end="}"   skip="\\\\\|\\}"	 contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<"				    end=">"   skip="\\\\\|\\>"	 contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
++syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={"				    end="}"   skip="\\\\\|\\}"	 contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape    fold
++syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<"				    end=">"   skip="\\\\\|\\>"	 contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape  fold
+ syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\["				    end="\]"  skip="\\\\\|\\\]"	 contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
+-syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=("				    end=")"   skip="\\\\\|\\)"	 contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
++syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=("				    end=")"   skip="\\\\\|\\)"	 contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape    fold
+ 
+ " Here Document
+-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\h\w*\)+   end=+$+ oneline contains=ALLBUT,@rubyNotTop
++syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\h\w*\)+	 end=+$+ oneline contains=ALLBUT,@rubyNotTop
+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+ 
+-syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2    matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+-syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+-syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart		      fold keepend
+-syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2  matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
++syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
++syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
++syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart			fold keepend
++syn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+ 
+ syn region rubyString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+ syn region rubyString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
+@@ -177,36 +180,47 @@
+   let b:ruby_no_expensive = 1
+ end
+ 
+-syn match  rubyAliasDeclaration    "[^[:space:];#.()]\+"  contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
+-syn match  rubyAliasDeclaration2   "[^[:space:];#.()]\+"  contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
+-syn match  rubyMethodDeclaration   "[^[:space:];#(]\+"	  contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
+-syn match  rubyClassDeclaration    "[^[:space:];#<]\+"	  contained contains=rubyConstant,rubyOperator
+-syn match  rubyModuleDeclaration   "[^[:space:];#<]\+"	  contained contains=rubyConstant,rubyOperator
+-syn match  rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:].:?!=]\@!" contained containedin=rubyMethodDeclaration
++syn match  rubyAliasDeclaration    "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
++syn match  rubyAliasDeclaration2   "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
++syn match  rubyMethodDeclaration   "[^[:space:];#(]\+"	 contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
++syn match  rubyClassDeclaration    "[^[:space:];#<]\+"	 contained contains=rubyConstant,rubyOperator
++syn match  rubyModuleDeclaration   "[^[:space:];#<]\+"	 contained contains=rubyConstant,rubyOperator
++syn match  rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
+ syn match  rubyFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
+ syn match  rubyFunction "\%([[:space:].]\|^\)\@<=\%(\[\]=\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|==\|=\~\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
+ 
+-syn cluster rubyDeclaration	contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter
++syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter
++
++" Keywords
++" Note: the following keywords have already been defined:
++" begin case class def do end for if module unless until while
++syn match   rubyControl	       "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
++syn match   rubyOperator       "\<defined?" display
++syn match   rubyKeyword	       "\<\%(super\|yield\)\>[?!]\@!"
++syn match   rubyBoolean	       "\<\%(true\|false\)\>[?!]\@!"
++syn match   rubyPseudoVariable "\<\%(nil\|self\|__FILE__\|__LINE__\)\>[?!]\@!"
++syn match   rubyBeginEnd       "\<\%(BEGIN\|END\)\>[?!]\@!"
+ 
+ " Expensive Mode - match 'end' with the appropriate opening keyword for syntax
+ " based folding and special highlighting of module/class/method definitions
+ if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
+-  syn match  rubyDefine "\<alias\>"		nextgroup=rubyAliasDeclaration	skipwhite skipnl
+-  syn match  rubyDefine "\<def\>"		nextgroup=rubyMethodDeclaration skipwhite skipnl
+-  syn match  rubyDefine "\<undef\>"		nextgroup=rubyFunction skipwhite skipnl
+-  syn match  rubyClass	"\<class\>"		nextgroup=rubyClassDeclaration	skipwhite skipnl
+-  syn match  rubyModule "\<module\>"		nextgroup=rubyModuleDeclaration skipwhite skipnl
+-  syn region rubyBlock start="\<def\>"		matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
+-  syn region rubyBlock start="\<class\>"	matchgroup=rubyClass  end="\<end\>" contains=ALLBUT,@rubyNotTop fold
+-  syn region rubyBlock start="\<module\>"	matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold
++  syn match  rubyDefine "\<alias\>"  nextgroup=rubyAliasDeclaration  skipwhite skipnl
++  syn match  rubyDefine "\<def\>"    nextgroup=rubyMethodDeclaration skipwhite skipnl
++  syn match  rubyDefine "\<undef\>"  nextgroup=rubyFunction	     skipwhite skipnl
++  syn match  rubyClass	"\<class\>"  nextgroup=rubyClassDeclaration  skipwhite skipnl
++  syn match  rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
++
++  syn region rubyMethodBlock start="\<def\>"	matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
++  syn region rubyBlock	     start="\<class\>"	matchgroup=rubyClass  end="\<end\>"		       contains=ALLBUT,@rubyNotTop fold
++  syn region rubyBlock	     start="\<module\>" matchgroup=rubyModule end="\<end\>"		       contains=ALLBUT,@rubyNotTop fold
+ 
+   " modifiers
+-  syn match  rubyConditionalModifier "\<\%(if\|unless\)\>"   display
+-  syn match  rubyRepeatModifier	     "\<\%(while\|until\)\>" display
++  syn match rubyConditionalModifier "\<\%(if\|unless\)\>"    display
++  syn match rubyRepeatModifier	     "\<\%(while\|until\)\>" display
+ 
+-  syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
++  syn region rubyDoBlock      matchgroup=rubyControl start="\<do\>" end="\<end\>"                 contains=ALLBUT,@rubyNotTop fold
+   " curly bracket block or hash literal
+-  syn region rubyCurlyBlock   start="{" end="}" contains=ALLBUT,@rubyNotTop fold
++  syn region rubyCurlyBlock   start="{" end="}"							  contains=ALLBUT,@rubyNotTop fold
+   syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold
+ 
+   " statements without 'do'
+@@ -214,9 +228,12 @@
+   syn region rubyCaseExpression	       matchgroup=rubyConditional start="\<case\>"  end="\<end\>" contains=ALLBUT,@rubyNotTop fold
+   syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
+ 
+-  syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!"  contained containedin=rubyCaseExpression
++  syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!"	contained containedin=rubyCaseExpression
+   syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression
+ 
++  syn match rubyExceptional	  "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression
++  syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock
++
+   " statements with optional 'do'
+   syn region rubyOptionalDoLine   matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
+   syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold
+@@ -227,23 +244,13 @@
+   exec "syn sync minlines=" . ruby_minlines
+ 
+ else
+-  syn match   rubyControl "\<def\>[?!]\@!"	nextgroup=rubyMethodDeclaration skipwhite skipnl
+-  syn match   rubyControl "\<class\>[?!]\@!"	nextgroup=rubyClassDeclaration	skipwhite skipnl
+-  syn match   rubyControl "\<module\>[?!]\@!"	nextgroup=rubyModuleDeclaration skipwhite skipnl
+-  syn match   rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|then\|when\|end\)\>[?!]\@!"
+-  syn match   rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
++  syn match rubyControl "\<def\>[?!]\@!"    nextgroup=rubyMethodDeclaration skipwhite skipnl
++  syn match rubyControl "\<class\>[?!]\@!"  nextgroup=rubyClassDeclaration  skipwhite skipnl
++  syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl
++  syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!"
++  syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
+ endif
+ 
+-" Keywords
+-" Note: the following keywords have already been defined:
+-" begin case class def do end for if module unless until while
+-syn match   rubyControl		"\<\%(and\|break\|ensure\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
+-syn match   rubyOperator	"\<defined?" display
+-syn match   rubyKeyword		"\<\%(super\|yield\)\>[?!]\@!"
+-syn match   rubyBoolean		"\<\%(true\|false\)\>[?!]\@!"
+-syn match   rubyPseudoVariable	"\<\%(nil\|self\|__FILE__\|__LINE__\)\>[?!]\@!"
+-syn match   rubyBeginEnd	"\<\%(BEGIN\|END\)\>[?!]\@!"
+-
+ " Special Methods
+ if !exists("ruby_no_special_methods")
+   syn keyword rubyAccess    public protected private module_function
+@@ -260,9 +267,9 @@
+ endif
+ 
+ " Comments and Documentation
+-syn match   rubySharpBang     "\%^#!.*" display
+-syn keyword rubyTodo	      FIXME NOTE TODO OPTIMIZE XXX contained
+-syn match   rubyComment       "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
++syn match   rubySharpBang "\%^#!.*" display
++syn keyword rubyTodo	  FIXME NOTE TODO OPTIMIZE XXX contained
++syn match   rubyComment   "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
+ if !exists("ruby_no_comment_fold")
+   syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
+   syn region rubyDocumentation	  start="^=begin\ze\%(\s.*\)\=$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell fold
+@@ -271,30 +278,32 @@
+ endif
+ 
+ " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>"			transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>"			transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>"			transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>"	transparent contains=NONE
+-
+-syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]"		transparent contains=NONE
+-syn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]"		transparent contains=NONE
+-
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>"	transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>"		transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>"	transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>"			transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|private\|proc\|protected\)\>"			transparent contains=NONE
+-syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|raise\|throw\|trap\)\>"			transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>"		  transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>"		  transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>"		  transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE
++
++syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE
++syn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE
++
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>"   transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>"	    transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>"		    transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|private\|proc\|protected\)\>"		    transparent contains=NONE
++syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|raise\|throw\|trap\)\>"		    transparent contains=NONE
+ 
+ " __END__ Directive
+ syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
+ 
+ hi def link rubyClass			rubyDefine
+ hi def link rubyModule			rubyDefine
++hi def link rubyMethodExceptional	rubyDefine
+ hi def link rubyDefine			Define
+ hi def link rubyFunction		Function
+ hi def link rubyConditional		Conditional
+ hi def link rubyConditionalModifier	rubyConditional
++hi def link rubyExceptional		rubyConditional
+ hi def link rubyRepeat			Repeat
+ hi def link rubyRepeatModifier		rubyRepeat
+ hi def link rubyOptionalDo		rubyRepeat
+@@ -334,6 +343,7 @@
+ hi def link rubyDocumentation		Comment
+ hi def link rubyTodo			Todo
+ 
++hi def link rubyQuoteEscape		rubyStringEscape
+ hi def link rubyStringEscape		Special
+ hi def link rubyInterpolationDelimiter	Delimiter
+ hi def link rubyNoInterpolation		rubyString
+diff -Nur runtime/syntax/samba.vim runtime/syntax/samba.vim
+--- runtime/syntax/samba.vim	2004-09-21 02:51:35.000000000 -0700
++++ runtime/syntax/samba.vim	2011-01-18 10:40:56.431719689 -0800
+@@ -2,8 +2,10 @@
+ " Language:	samba configuration files (smb.conf)
+ " Maintainer:	Rafael Garcia-Suarez <[email protected]>
+ " URL:		http://rgarciasuarez.free.fr/vim/syntax/samba.vim
+-" Last change:	2004 September 21
+-
++" Last change:	2009 Aug 06
++"
++"               New maintainer wanted!
++"
+ " Don't forget to run your config file through testparm(1)!
+ 
+ " For version 5.x: Clear all syntax items
+@@ -51,7 +53,7 @@
+ syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole
+ syn keyword sambaKeyword contained only open oplock oplocks options order os
+ syn keyword sambaKeyword contained output packet page panic passwd password
+-syn keyword sambaKeyword contained passwords path permissions pipe port
++syn keyword sambaKeyword contained passwords path permissions pipe port ports
+ syn keyword sambaKeyword contained postexec postscript prediction preexec
+ syn keyword sambaKeyword contained prefered preferred preload preserve print
+ syn keyword sambaKeyword contained printable printcap printer printers
+diff -Nur runtime/syntax/sass.vim runtime/syntax/sass.vim
+--- runtime/syntax/sass.vim	2008-07-03 13:07:15.000000000 -0700
++++ runtime/syntax/sass.vim	2011-04-03 09:27:21.829872426 -0700
+@@ -1,7 +1,8 @@
+ " Vim syntax file
+ " Language:     Sass
+-" Maintainer:   Tim Pope <[email protected]>
++" Maintainer:   Tim Pope <[email protected]>
+ " Filenames:    *.sass
++" Last Change:	2010 May 21
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -15,9 +16,11 @@
+ syn cluster sassCssAttributes contains=css.*Attr,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
+ 
+ syn match sassProperty "^\s*\zs\s\%([[:alnum:]-]\+:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
++syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassScript
+ syn match sassCssAttribute ".*$" contained contains=@sassCssAttributes,sassConstant
++syn match sassScript ".*$" contained contains=@sassCssAttributes,sassConstant
+ syn match sassConstant "![[:alnum:]_-]\+"
+-syn match sassConstantAssignment "\%(![[:alnum:]_]\+\s*\)\@<==" nextgroup=sassCssAttribute skipwhite
++syn match sassConstantAssignment "\%(![[:alnum:]_]\+\s*\)\@<=\%(||\)\==" nextgroup=sassScript skipwhite
+ syn match sassMixin  "^=.*"
+ syn match sassMixing "^\s\+\zs+.*"
+ 
+@@ -32,6 +35,9 @@
+ " TODO: Arithmetic (including strings and concatenation)
+ 
+ syn region sassInclude start="@import" end=";\|$" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
++syn region sassDebugLine matchgroup=sassDebug start="@debug\>" end="$" contains=@sassCssAttributes,sassConstant
++syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\)\>" end="$" contains=sassFor,@sassCssAttributes,sassConstant
++syn keyword sassFor from to through contained
+ 
+ syn keyword sassTodo        FIXME NOTE TODO OPTIMIZE XXX contained
+ syn region  sassComment     start="^\z(\s*\)//"  end="^\%(\z1 \)\@!" contains=sassTodo
+@@ -44,6 +50,9 @@
+ hi def link sassMixin                   PreProc
+ hi def link sassTodo                    Todo
+ hi def link sassInclude                 Include
++hi def link sassDebug                   Debug
++hi def link sassControl                 PreProc
++hi def link sassFor                     PreProc
+ hi def link sassEscape                  Special
+ hi def link sassIdChar                  Special
+ hi def link sassClassChar               Special
+diff -Nur runtime/syntax/scheme.vim runtime/syntax/scheme.vim
+--- runtime/syntax/scheme.vim	2007-06-16 13:09:14.000000000 -0700
++++ runtime/syntax/scheme.vim	2011-01-18 10:40:56.433707228 -0800
+@@ -1,6 +1,6 @@
+ " Vim syntax file
+-" Language:	Scheme (R5RS)
+-" Last Change:	2007 Jun 16
++" Language:	Scheme (R5RS + some R6RS extras)
++" Last Change:	2009 Nov 27
+ " Maintainer:	Sergey Khorev <[email protected]>
+ " Original author:	Dirk van Deun <[email protected]>
+ 
+@@ -26,8 +26,8 @@
+ 
+ " Fascist highlighting: everything that doesn't fit the rules is an error...
+ 
+-syn match	schemeError	oneline    ![^ \t()\[\]";]*!
+-syn match	schemeError	oneline    ")"
++syn match	schemeError	![^ \t()\[\]";]*!
++syn match	schemeError	")"
+ 
+ " Quoted and backquoted stuff
+ 
+@@ -71,6 +71,8 @@
+ syn keyword schemeSyntax begin do delay set! else =>
+ syn keyword schemeSyntax quote quasiquote unquote unquote-splicing
+ syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules
++" R6RS
++syn keyword schemeSyntax define-record-type fields protocol
+ 
+ syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
+ syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
+@@ -109,30 +111,39 @@
+ syn keyword schemeFunc dynamic-wind port? values call-with-values
+ syn keyword schemeFunc scheme-report-environment null-environment
+ syn keyword schemeFunc interaction-environment
++" R6RS
++syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable
++syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set!
++syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update!
++syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys
++syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function
++syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash 
++syn keyword schemeFunc find for-all exists filter partition fold-left fold-right
++syn keyword schemeFunc remp remove remv remq memp assp cons*
+ 
+ " ... so that a single + or -, inside a quoted context, would not be
+ " interpreted as a number (outside such contexts, it's a schemeFunc)
+ 
+-syn match	schemeDelimiter	oneline    !\.[ \t\[\]()";]!me=e-1
+-syn match	schemeDelimiter	oneline    !\.$!
++syn match	schemeDelimiter	!\.[ \t\[\]()";]!me=e-1
++syn match	schemeDelimiter	!\.$!
+ " ... and a single dot is not a number but a delimiter
+ 
+ " This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
+ 
+-syn match	schemeOther	oneline    ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
+-syn match	schemeError	oneline    ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
++syn match	schemeOther	,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
++syn match	schemeError	,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+ 
+-syn match	schemeOther	oneline    "\.\.\."
+-syn match	schemeError	oneline    !\.\.\.[^ \t\[\]()";]\+!
++syn match	schemeOther	"\.\.\."
++syn match	schemeError	!\.\.\.[^ \t\[\]()";]\+!
+ " ... a special identifier
+ 
+-syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t\[\]()";],me=e-1
+-syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
+-syn match	schemeError	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+-
+-syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
+-syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
+-syn match	schemeError	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
++syn match	schemeConstant	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1
++syn match	schemeConstant	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$,
++syn match	schemeError	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
++
++syn match	schemeConstant	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
++syn match	schemeConstant	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
++syn match	schemeError	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
+ 
+ " Non-quoted lists, and strings:
+ 
+@@ -153,23 +164,27 @@
+ " Writing out the complete description of Scheme numerals without
+ " using variables is a day's work for a trained secretary...
+ 
+-syn match	schemeOther	oneline    ![+-][ \t\[\]()";]!me=e-1
+-syn match	schemeOther	oneline    ![+-]$!
++syn match	schemeOther	![+-][ \t\[\]()";]!me=e-1
++syn match	schemeOther	![+-]$!
+ "
+ " This is a useful lax approximation:
+-syn match	schemeNumber	oneline    "[-#+0-9.][-#+/[email protected]]*"
+-syn match	schemeError	oneline    ![-#+0-9.][-#+/[email protected]]*[^-#+/[email protected] \t\[\]()";][^ \t\[\]()";]*!
++syn match	schemeNumber	"[-#+.]\=[0-9][-#+/[email protected]]*"
++syn match	schemeError	![-#+0-9.][-#+/[email protected]]*[^-#+/[email protected] \t\[\]()";][^ \t\[\]()";]*!
+ 
+-syn match	schemeBoolean	oneline    "#[tf]"
+-syn match	schemeError	oneline    !#[tf][^ \t\[\]()";]\+!
++syn match	schemeBoolean	"#[tf]"
++syn match	schemeError	!#[tf][^ \t\[\]()";]\+!
++
++syn match	schemeCharacter	"#\\"
++syn match	schemeCharacter	"#\\."
++syn match       schemeError	!#\\.[^ \t\[\]()";]\+!
++syn match	schemeCharacter	"#\\space"
++syn match	schemeError	!#\\space[^ \t\[\]()";]\+!
++syn match	schemeCharacter	"#\\newline"
++syn match	schemeError	!#\\newline[^ \t\[\]()";]\+!
++
++" R6RS
++syn match schemeCharacter "#\\x[0-9a-fA-F]\+"
+ 
+-syn match	schemeChar	oneline    "#\\"
+-syn match	schemeChar	oneline    "#\\."
+-syn match       schemeError	oneline    !#\\.[^ \t\[\]()";]\+!
+-syn match	schemeChar	oneline    "#\\space"
+-syn match	schemeError	oneline    !#\\space[^ \t\[\]()";]\+!
+-syn match	schemeChar	oneline    "#\\newline"
+-syn match	schemeError	oneline    !#\\newline[^ \t\[\]()";]\+!
+ 
+ if exists("b:is_mzscheme") || exists("is_mzscheme")
+     " MzScheme extensions
+@@ -177,11 +192,11 @@
+     syn region	schemeComment start="#|" end="|#"
+ 
+     " #%xxx are the special MzScheme identifiers
+-    syn match schemeOther oneline    "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++    syn match schemeOther "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+     " anything limited by |'s is identifier
+-    syn match schemeOther oneline    "|[^|]\+|"
++    syn match schemeOther "|[^|]\+|"
+ 
+-    syn match	schemeChar	oneline    "#\\\%(return\|tab\)"
++    syn match	schemeCharacter	"#\\\%(return\|tab\)"
+ 
+     " Modules require stmt
+     syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename
+@@ -234,8 +249,8 @@
+     " multiline comment
+     syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment
+ 
+-    syn match schemeOther oneline    "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+-    syn match schemeExtSyntax oneline    "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++    syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++    syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+ 
+     syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
+     syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library
+@@ -266,7 +281,7 @@
+     endif
+ 
+     " suggested by Alex Queiroz
+-    syn match schemeExtSyntax oneline    "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
++    syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+     syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ 
+ endif
+ 
+@@ -290,7 +305,7 @@
+   HiLink schemeFunc		Function
+ 
+   HiLink schemeString		String
+-  HiLink schemeChar		Character
++  HiLink schemeCharacter	Character
+   HiLink schemeNumber		Number
+   HiLink schemeBoolean		Boolean
+ 
+diff -Nur runtime/syntax/screen.vim runtime/syntax/screen.vim
+--- runtime/syntax/screen.vim	2006-04-21 05:41:02.000000000 -0700
++++ runtime/syntax/screen.vim	2011-01-18 10:40:56.435186857 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         screen(1) configuration file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-04-19
++" Latest Revision:  2010-01-03
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -15,54 +15,219 @@
+ syn keyword screenTodo      contained TODO FIXME XXX NOTE
+ 
+ syn region  screenComment   display oneline start='#' end='$'
+-                            \ contains=screenTodo,@Spell
++                          \ contains=screenTodo,@Spell
+ 
+ syn region  screenString    display oneline start=+"+ skip=+\\"+ end=+"+
+-                            \ contains=screenVariable,screenSpecial
++                          \ contains=screenVariable,screenSpecial
+ 
+ syn region  screenLiteral   display oneline start=+'+ skip=+\\'+ end=+'+
+ 
+-syn match   screenVariable  contained display '$\(\h\w*\|{\h\w*}\)'
++syn match   screenVariable  contained display '$\%(\h\w*\|{\h\w*}\)'
+ 
+ syn keyword screenBoolean   on off
+ 
+ syn match   screenNumbers   display '\<\d\+\>'
+ 
+ syn match   screenSpecials  contained
+-                            \ '%\([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)'
++                          \ '%\%([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)'
+ 
+-syn keyword screenCommands  acladd aclchg acldel aclgrp aclumask activity
+-                            \ addacl allpartial at attrcolor autodetach
+-                            \ bell_msg bind bindkey bufferfile caption chacl
+-                            \ chdir clear colon command compacthist console
+-                            \ copy copy_regcrlf debug detach digraph dinfo
+-                            \ crlf displays dumptermcap echo exec fit focus
+-                            \ height help history info kill lastmsg license
+-                            \ lockscreen markkeys meta msgminwait msgwait
+-                            \ multiuser nethack next nonblock number only
+-                            \ other partial_state password paste pastefont
+-                            \ pow_break pow_detach_msg prev printcmd process
+-                            \ quit readbuf readreg redisplay register
+-                            \ remove removebuf reset resize screen select
+-                            \ sessionname setenv shelltitle silencewait
+-                            \ verbose sleep sorendition split startup_message
+-                            \ stuff su suspend time title umask version wall
+-                            \ width writebuf xoff xon defmode hardstatus
+-                            \ altscreen break breaktype copy_reg defbreaktype
+-                            \ defencoding deflog encoding eval ignorecase
+-                            \ ins_reg maxwin partial pow_detach setsid source
+-                            \ unsetenv windowlist windows defautonuke autonuke
+-                            \ defbce bce defc1 c1 defcharset charset defescape
+-                            \ escape defflow flow defkanji kanji deflogin
+-                            \ login defmonitor monitor defhstatus hstatus
+-                            \ defobuflimit obuflimit defscrollback scrollback
+-                            \ defshell shell defsilence silence defslowpaste
+-                            \ slowpaste defutf8 utf8 defwrap wrap defwritelock
+-                            \ writelock defzombie zombie defgr gr hardcopy
+-                            \ hardcopy_append hardcopydir hardstatus log
+-                            \ logfile login logtstamp mapdefault mapnotnext
+-                            \ maptimeout term termcap terminfo termcapinfo
+-                            \ vbell vbell_msg vbellwait
++syn keyword screenCommands
++                          \ acladd
++                          \ aclchg
++                          \ acldel
++                          \ aclgrp
++                          \ aclumask
++                          \ activity
++                          \ addacl
++                          \ allpartial
++                          \ altscreen
++                          \ at
++                          \ attrcolor
++                          \ autodetach
++                          \ autonuke
++                          \ backtick
++                          \ bce
++                          \ bd_bc_down
++                          \ bd_bc_left
++                          \ bd_bc_right
++                          \ bd_bc_up
++                          \ bd_bell
++                          \ bd_braille_table
++                          \ bd_eightdot
++                          \ bd_info
++                          \ bd_link
++                          \ bd_lower_left
++                          \ bd_lower_right
++                          \ bd_ncrc
++                          \ bd_port
++                          \ bd_scroll
++                          \ bd_skip
++                          \ bd_start_braille
++                          \ bd_type
++                          \ bd_upper_left
++                          \ bd_upper_right
++                          \ bd_width
++                          \ bell
++                          \ bell_msg
++                          \ bind
++                          \ bindkey
++                          \ blanker
++                          \ blankerprg
++                          \ break
++                          \ breaktype
++                          \ bufferfile
++                          \ c1
++                          \ caption
++                          \ chacl
++                          \ charset
++                          \ chdir
++                          \ clear
++                          \ colon
++                          \ command
++                          \ compacthist
++                          \ console
++                          \ copy
++                          \ crlf
++                          \ debug
++                          \ defautonuke
++                          \ defbce
++                          \ defbreaktype
++                          \ defc1
++                          \ defcharset
++                          \ defencoding
++                          \ defescape
++                          \ defflow
++                          \ defgr
++                          \ defhstatus
++                          \ defkanji
++                          \ deflog
++                          \ deflogin
++                          \ defmode
++                          \ defmonitor
++                          \ defnonblock
++                          \ defobuflimit
++                          \ defscrollback
++                          \ defshell
++                          \ defsilence
++                          \ defslowpaste
++                          \ defutf8
++                          \ defwrap
++                          \ defwritelock
++                          \ detach
++                          \ digraph
++                          \ dinfo
++                          \ displays
++                          \ dumptermcap
++                          \ echo
++                          \ encoding
++                          \ escape
++                          \ eval
++                          \ exec
++                          \ fit
++                          \ flow
++                          \ focus
++                          \ gr
++                          \ hardcopy
++                          \ hardcopy_append
++                          \ hardcopydir
++                          \ hardstatus
++                          \ height
++                          \ help
++                          \ history
++                          \ hstatus
++                          \ idle
++                          \ ignorecase
++                          \ info
++                          \ kanji
++                          \ kill
++                          \ lastmsg
++                          \ layout
++                          \ license
++                          \ lockscreen
++                          \ log
++                          \ logfile
++                          \ login
++                          \ logtstamp
++                          \ mapdefault
++                          \ mapnotnext
++                          \ maptimeout
++                          \ markkeys
++                          \ maxwin
++                          \ meta
++                          \ monitor
++                          \ msgminwait
++                          \ msgwait
++                          \ multiuser
++                          \ nethack
++                          \ next
++                          \ nonblock
++                          \ number
++                          \ obuflimit
++                          \ only
++                          \ other
++                          \ partial
++                          \ password
++                          \ paste
++                          \ pastefont
++                          \ pow_break
++                          \ pow_detach
++                          \ pow_detach_msg
++                          \ prev
++                          \ printcmd
++                          \ process
++                          \ quit
++                          \ readbuf
++                          \ readreg
++                          \ redisplay
++                          \ register
++                          \ remove
++                          \ removebuf
++                          \ reset
++                          \ resize
++                          \ screen
++                          \ scrollback
++                          \ select
++                          \ sessionname
++                          \ setenv
++                          \ setsid
++                          \ shell
++                          \ shelltitle
++                          \ silence
++                          \ silencewait
++                          \ sleep
++                          \ slowpaste
++                          \ sorendition
++                          \ source
++                          \ split
++                          \ startup_message
++                          \ stuff
++                          \ su
++                          \ suspend
++                          \ term
++                          \ termcap
++                          \ termcapinfo
++                          \ terminfo
++                          \ time
++                          \ title
++                          \ umask
++                          \ unsetenv
++                          \ utf8
++                          \ vbell
++                          \ vbell_msg
++                          \ vbellwait
++                          \ verbose
++                          \ version
++                          \ wall
++                          \ width
++                          \ windowlist
++                          \ windows
++                          \ wrap
++                          \ writebuf
++                          \ writelock
++                          \ xoff
++                          \ xon
++                          \ zmodem
++                          \ zombie
+ 
+ hi def link screenEscape    Special
+ hi def link screenComment   Comment
+diff -Nur runtime/syntax/sdc.vim runtime/syntax/sdc.vim
+--- runtime/syntax/sdc.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/sdc.vim	2011-01-18 10:40:56.436270592 -0800
+@@ -0,0 +1,41 @@
++" Vim syntax file
++" Language:     SDC - Synopsys Design Constraints
++" Maintainer:   Maurizio Tranchero - [email protected]
++" Last Change:  Thu Mar  25 17:35:16 CET 2009
++" Credits:      based on TCL Vim syntax file
++" Version:	0.3
++
++" Quit when a syntax file was already loaded
++if exists("b:current_syntax")
++  finish
++endif
++
++" Read the TCL syntax to start with
++runtime! syntax/tcl.vim
++
++" SDC-specific keywords
++syn keyword sdcCollections	foreach_in_collection
++syn keyword sdcObjectsQuery	get_clocks get_ports
++syn keyword sdcObjectsInfo	get_point_info get_node_info get_path_info
++syn keyword sdcObjectsInfo	get_timing_paths set_attribute
++syn keyword sdcConstraints	set_false_path
++syn keyword sdcNonIdealities	set_min_delay set_max_delay
++syn keyword sdcNonIdealities	set_input_delay set_output_delay
++syn keyword sdcNonIdealities	set_load set_min_capacitance set_max_capacitance
++syn keyword sdcCreateOperations	create_clock create_timing_netlist update_timing_netlist
++
++" command flags highlighting
++syn match sdcFlags		"[[:space:]]-[[:alpha:]]*\>"
++
++" Define the default highlighting.
++hi def link sdcCollections      Repeat
++hi def link sdcObjectsInfo      Operator
++hi def link sdcCreateOperations	Operator
++hi def link sdcObjectsQuery	Operator
++hi def link sdcConstraints	Operator
++hi def link sdcNonIdealities	Operator
++hi def link sdcFlags		Special
++
++let b:current_syntax = "sdc"
++
++" vim: ts=8
+diff -Nur runtime/syntax/sed.vim runtime/syntax/sed.vim
+--- runtime/syntax/sed.vim	2005-12-15 03:46:25.000000000 -0800
++++ runtime/syntax/sed.vim	2011-01-18 10:40:56.437304889 -0800
+@@ -2,7 +2,7 @@
+ " Language:	sed
+ " Maintainer:	Haakon Riiser <[email protected]>
+ " URL:		http://folk.uio.no/hakonrk/vim/syntax/sed.vim
+-" Last Change:	2005 Dec 15
++" Last Change:	2010 May 29
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -49,7 +49,7 @@
+ " Metacharacters: $ * . \ ^ [ ~
+ " @ is used as delimiter and treated on its own below
+ let __at = char2nr("@")
+-let __sed_i = char2nr(" ")
++let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+ if has("ebcdic")
+     let __sed_last = 255
+ else
+@@ -105,8 +105,8 @@
+     if exists("highlight_sedtabs")
+ 	HiLink sedTab		Todo
+     endif
+-    let __sed_i = 32
+-    while __sed_i <= 126
++    let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64
++    while __sed_i <= __sed_last
+ 	exe "HiLink sedRegexp".__sed_i		"Macro"
+ 	exe "HiLink sedReplacement".__sed_i	"NONE"
+ 	let __sed_i = __sed_i + 1
+@@ -115,7 +115,7 @@
+     delcommand HiLink
+ endif
+ 
+-unlet __sed_i __sed_delimiter __sed_metacharacters
++unlet __sed_i __sed_last __sed_delimiter __sed_metacharacters
+ 
+ let b:current_syntax = "sed"
+ 
+diff -Nur runtime/syntax/sgmllnx.vim runtime/syntax/sgmllnx.vim
+--- runtime/syntax/sgmllnx.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/sgmllnx.vim	2011-01-18 10:40:56.439846862 -0800
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language:	SGML-linuxdoc (supported by old sgmltools-1.x)
+ "		(for more information, visit www.sgmltools.org)
+-" Maintainer:	Nam SungHyun <[email protected]>
+-" Last Change:	2001 Apr 26
++" Maintainer:	SungHyun Nam <[email protected]>
++" Last Change:	2008 Sep 17
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+diff -Nur runtime/syntax/sh.vim runtime/syntax/sh.vim
+--- runtime/syntax/sh.vim	2008-07-14 13:23:42.000000000 -0700
++++ runtime/syntax/sh.vim	2011-04-03 09:27:21.831023994 -0700
+@@ -2,8 +2,8 @@
+ " Language:		shell (sh) Korn shell (ksh) bash (sh)
+ " Maintainer:		Dr. Charles E. Campbell, Jr.  <[email protected]>
+ " Previous Maintainer:	Lennart Schultz <[email protected]>
+-" Last Change:		Jul 11, 2008
+-" Version:		102
++" Last Change:		Apr 12, 2010
++" Version:		111
+ " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ " For options and settings, please use:      :help ft-sh-syntax
+ " This file includes many ideas from �ric Brunet ([email protected])
+@@ -59,7 +59,7 @@
+  let s:sh_fold_ifdofor   = 4
+ endif
+ if g:sh_fold_enabled && &fdm == "manual"
+- set fdm=syntax
++ setlocal fdm=syntax
+ endif
+ 
+ " sh syntax is case sensitive {{{1
+@@ -67,13 +67,13 @@
+ 
+ " Clusters: contains=@... clusters {{{1
+ "==================================
+-syn cluster shErrorList	contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError
++syn cluster shErrorList	contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK
+ if exists("b:is_kornshell")
+  syn cluster ErrorList add=shDTestError
+ endif
+-syn cluster shArithParenList	contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen
++syn cluster shArithParenList	contains=shArithmetic,shCaseEsac,shDeref,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement
+ syn cluster shArithList	contains=@shArithParenList,shParenError
+-syn cluster shCaseEsacList	contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial
++syn cluster shCaseEsacList	contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
+ syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+ syn cluster shColonList	contains=@shCaseList
+ syn cluster shCommandSubList	contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial
+@@ -84,7 +84,7 @@
+ syn cluster shEchoList	contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
+ syn cluster shExprList1	contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
+ syn cluster shExprList2	contains=@shExprList1,@shCaseList,shTest
+-syn cluster shFunctionList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
++syn cluster shFunctionList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq
+ if exists("b:is_kornshell") || exists("b:is_bash")
+  syn cluster shFunctionList	add=shRepeat
+  syn cluster shFunctionList	add=shDblBrace,shDblParen
+@@ -94,19 +94,18 @@
+ syn cluster shHereListDQ	contains=shBeginHere,@shDblQuoteList,shHerePayload
+ syn cluster shIdList	contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial
+ syn cluster shLoopList	contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet
+-syn cluster shSubShList	contains=@shCaseList,shOperator
++syn cluster shSubShList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
+ syn cluster shTestList	contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq
+ 
+-
+ " Echo: {{{1
+ " ====
+ " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
+-syn region shEcho matchgroup=shStatement start="\<echo\>"  skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+-syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment
+-syn match  shEchoQuote contained	'\%(\\\\\)*\\["`']'
++syn region shEcho matchgroup=shStatement start="\<echo\>"  skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
++syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment
++syn match  shEchoQuote contained	'\%(\\\\\)*\\["`'()]'
+ 
+ " This must be after the strings, so that ... \" will be correct
+-syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
++syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq
+ 
+ " Alias: {{{1
+ " =====
+@@ -125,6 +124,7 @@
+ syn match   shEsacError "\<esac\>"
+ syn match   shCurlyError "}"
+ syn match   shParenError ")"
++syn match   shOK	'\.\(done\|fi\|in\|esac\)'
+ if exists("b:is_kornshell")
+  syn match     shDTestError "]]"
+ endif
+@@ -152,14 +152,13 @@
+ 
+ " Subshells: {{{1
+ " ==========
+-syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"	contains=@shExprList2
+-syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")"	contains=@shSubShList
++syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"	contains=@shExprList2 nextgroup=shMoreSpecial
++syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")"	contains=@shSubShList nextgroup=shMoreSpecial
+ 
+ " Tests: {{{1
+ "=======
+-"syn region  shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
+-syn region shExpr	matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
+-syn region shTest	transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
++syn region shExpr	matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial
++syn region shTest	transparent matchgroup=shStatement start="\<test\s" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
+ syn match  shTestOpr	contained	"<=\|>=\|!=\|==\|-.\>\|-\(nt\|ot\|ef\|eq\|ne\|lt\|le\|gt\|ge\)\>\|[!<>]"
+ syn match  shTestOpr	contained	'=' skipwhite nextgroup=shTestDoubleQuote,shTestSingleQuote,shTestPattern
+ syn match  shTestPattern	contained	'\w\+'
+@@ -203,10 +202,11 @@
+ " ====
+ syn match   shCaseBar	contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|"		nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
+ syn match   shCaseStart	contained skipwhite skipnl "("			nextgroup=shCase,shCaseBar
+-syn region  shCase	contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+ if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor
++ syn region  shCase	fold contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+  syn region  shCaseEsac	fold matchgroup=shConditional start="\<case\>" end="\<esac\>"	contains=@shCaseEsacList
+ else
++ syn region  shCase	contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)"  end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment
+  syn region  shCaseEsac	matchgroup=shConditional start="\<case\>" end="\<esac\>"	contains=@shCaseEsacList
+ endif
+ syn keyword shCaseIn	contained skipwhite skipnl in			nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote
+@@ -218,6 +218,7 @@
+ syn region  shCaseSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=shStringSpecial		skipwhite skipnl nextgroup=shCaseBar	contained
+ syn region  shCaseDoubleQuote	matchgroup=shOperator start=+"+ skip=+\\\\\|\\.+ end=+"+	contains=@shDblQuoteList,shStringSpecial	skipwhite skipnl nextgroup=shCaseBar	contained
+ syn region  shCaseCommandSub	start=+`+ skip=+\\\\\|\\.+ end=+`+		contains=@shCommandSubList		skipwhite skipnl nextgroup=shCaseBar	contained
++syn region  shCaseRange	matchgroup=Delimiter start=+\[+ skip=+\\\\+ end=+]+	contained
+ 
+ " Misc: {{{1
+ "======
+@@ -256,34 +257,36 @@
+ 
+ syn match   shSource	"^\.\s"
+ syn match   shSource	"\s\.\s"
+-syn region  shColon	start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList
++"syn region  shColon	start="^\s*:" end="$" end="\s#"me=e-2 contains=@shColonList
++syn region  shColon	start="^\s*\zs:" end="$" end="\s#"me=e-2
+ 
+ " String And Character Constants: {{{1
+ "================================
+ syn match   shNumber	"-\=\<\d\+\>#\="
+ syn match   shCtrlSeq	"\\\d\d\d\|\\[abcfnrtv0]"		contained
+ if exists("b:is_bash")
+- syn match   shSpecial	"\\\o\o\o\|\\x\x\x\|\\c.\|\\[abefnrtv]"	contained
++ syn match   shSpecial	"\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]"	contained
+ endif
+ if exists("b:is_bash")
+  syn region  shExSingleQuote	matchgroup=shOperator start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial,shSpecial
+ else
+  syn region  shExSingleQuote	matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+	contains=shStringSpecial
+ endif
+-syn region  shSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=shStringSpecial,@Spell
++syn region  shSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=@Spell
+ syn region  shDoubleQuote	matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,@Spell
+ syn match   shStringSpecial	"[^[:print:] \t]"	contained
+ syn match   shStringSpecial	"\%(\\\\\)*\\[\\"'`$()#]"
+-syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
++syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial
+ syn match   shSpecial	"^\%(\\\\\)*\\[\\"'`$()#]"
++syn match   shMoreSpecial	"\%(\\\\\)*\\[\\"'`$()#]" nextgroup=shMoreSpecial contained
+ 
+ " Comments: {{{1
+ "==========
+-syn cluster    shCommentGroup	contains=shTodo,@Spell
+-syn keyword    shTodo	contained	COMBAK FIXME TODO XXX
+-syn match      shComment	"^\s*\zs#.*$"	contains=@shCommentGroup
+-syn match      shComment	"\s\zs#.*$"	contains=@shCommentGroup
+-syn match      shQuickComment	contained	"#.*$"
++syn cluster	shCommentGroup	contains=shTodo,@Spell
++syn keyword	shTodo	contained		COMBAK FIXME TODO XXX
++syn match	shComment		"^\s*\zs#.*$"	contains=@shCommentGroup
++syn match	shComment		"\s\zs#.*$"	contains=@shCommentGroup
++syn match	shQuickComment	contained	"#.*$"
+ 
+ " Here Documents: {{{1
+ " =========================================
+@@ -338,13 +341,13 @@
+ syn match  shVariable	"\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze="	nextgroup=shSetIdentifier
+ syn match  shSetIdentifier	"="		contained	nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote
+ if exists("b:is_bash")
+- syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$"	matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze#\|=" contains=@shIdList
+- syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$"			matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$"	matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="\ze[;|)]\|$"			matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ elseif exists("b:is_kornshell")
+- syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
+- syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$"				matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<set\>\ze[^/]" end="$"				matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ else
+- syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList
++ syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$"		matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList
+ endif
+ 
+ " Functions: {{{1
+@@ -492,7 +495,7 @@
+ hi def link shCaseSingleQuote	shSingleQuote
+ hi def link shCaseStart	shConditional
+ hi def link shCmdSubRegion	shShellVariables
+-hi def link shColon	shStatement
++hi def link shColon	shComment
+ hi def link shDerefOp	shOperator
+ hi def link shDerefPOL	shDerefOp
+ hi def link shDerefPPS	shDerefOp
+@@ -511,6 +514,7 @@
+ hi def link shHereDoc	shString
+ hi def link shHerePayload	shHereDoc
+ hi def link shLoop	shStatement
++hi def link shMoreSpecial	shSpecial
+ hi def link shOption	shCommandSub
+ hi def link shPattern	shString
+ hi def link shParen	shArithmetic
+diff -Nur runtime/syntax/sisu.vim runtime/syntax/sisu.vim
+--- runtime/syntax/sisu.vim	2008-05-27 12:24:19.000000000 -0700
++++ runtime/syntax/sisu.vim	2011-01-18 10:40:56.444221073 -0800
+@@ -1,6 +1,6 @@
+ "SiSU Vim syntax file
+ "SiSU Maintainer: Ralph Amissah <[email protected]>
+-"SiSU Markup:     SiSU (sisu-0.66.0, 2008-02-24)
++"SiSU Markup:     SiSU (sisu-2.0.1, 2010-03-17)
+ "(originally looked at Ruby Vim by Mirko Nasato)
+ 
+ if version < 600
+@@ -16,25 +16,26 @@
+ " Markers Identifiers:
+ if !exists("sisu_no_identifiers")
+   syn match   sisu_mark_endnote                                           "\~^"
+-  syn match   sisu_contain             contains=@NoSpell                  "</\?sub>"
+   syn match   sisu_break               contains=@NoSpell                  "<br>\|<br />"
+-  syn match   sisu_control             contains=@NoSpell                  "<p>\|</p>\|<p />\|<:p[bn]>"
+-  syn match   sisu_html                                                   "<center>\|</center>"
++  syn match   sisu_control             contains=@NoSpell                  "<:p[bn]>"
+   syn match   sisu_marktail                                               "[~-]#"
+-  syn match   sisu_html                contains=@NoSpell                  "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>"
+   syn match   sisu_control                                                "\""
+   syn match   sisu_underline                                              "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
+   syn match   sisu_number              contains=@NoSpell                  "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
+   syn match   sisu_link                contains=@NoSpell                  "\(_\?https\?://\|\.\.\/\)\S\+"
+-  "metaverse specific
+-  syn match   sisu_ocn                 contains=@NoSpell                  "<\~\d\+;\w\d\+;\w\d\+>"
+-  syn match   sisu_marktail                                               "<\~#>"
+-  syn match   sisu_markpara            contains=@NoSpell                  "<:i[1-9]>"
+   syn match   sisu_link                                                   " \*\~\S\+"
+   syn match   sisu_action                                                 "^<:insert\d\+>"
+   syn match   sisu_require             contains=@NoSpell                  "^<<\s*[a-zA-Z0-9^._-]\+\.ss[it]$"
+   syn match   sisu_require             contains=@NoSpell                  "^<<{[a-zA-Z0-9^._-]\+\.ss[it]}$"
+-  syn match   sisu_contain                                                "<:e>"
++  syn match   sisu_structure                                              "^:A\~$"
++  syn match   sisu_sub_header_title                                       "^\s\+:\(subtitle\|short\|edition\|language\|note\):\s" "group=sisu_header_content
++  syn match   sisu_sub_header_creator                                     "^\s\+:\(author\|translator\|illustrator\|photographer\|audio\|digitized_by\|prepared_by\):\s"
++  syn match   sisu_sub_header_rights                                      "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|audio\|digitization\|license\|all\):\s"                                         "access_rights license
++  syn match   sisu_sub_header_classify                                    "^\s\+:\(type\|subject\|topic_register\|keywords\|coverage\|relation\|format\|identifier\|isbn\|dewey\|loc\|pg\):\s"
++  syn match   sisu_sub_header_dates                                       "^\s\+:\(published\|available\|created\|issued\|valid\|modified\|added_to_site\|translated\|original_publication\):\s"
++  syn match   sisu_sub_header_original                                    "^\s\+:\(publisher\|date\|language\|institution\|nationality\|source\):\s"
++  syn match   sisu_sub_header_make                                        "^\s\+:\(headings\|num_top\|breaks\|italics\|bold\|skin\|stamp\|promo\|ad\|manpage\):\s"
++  syn match   sisu_sub_header_notes                                       "^\s\+:\(comment\|abstract\|description\|history\|prefix\|prefix_[ab]\):\s"
+   syn match   sisu_sem_marker                                             ";{\|};[a-z._]*[a-z]"
+   syn match   sisu_sem_marker_block                                       "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]"
+   syn match   sisu_sem_ex_marker                                          ";\[\|\];[a-z._]*[a-z]"
+@@ -57,19 +58,28 @@
+ "url/link
+ syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$"
+ "header
+-syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="\n$"
+-syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^[@%]\S\+:[+-]\?\s"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_dates matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_source matchgroup=sisu_header start="^[@]source:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
++syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$"
+ "headings
+ syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$"
+ "grouped text
+ syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table"
+-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n\n"
++syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$"
+ syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)"
+ syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
+ "endnotes
+ syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n"
+ syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n"
+-syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n"
++syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$"
+ "links and images
+ syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|\.\./\)\S\+" oneline
+ syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline
+@@ -78,9 +88,9 @@
+ syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$"
+ syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$"
+ syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
+-syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$"
+ "font face curly brackets
+ "syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline
++syn region sisu_index matchgroup=sisu_index_block start="^={" end="}"
+ syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
+ syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
+ syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
+@@ -95,18 +105,6 @@
+ syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
+ "misc
+ syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
+-"metaverse html (flagged as errors for filetype sisu)
+-syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<b>" end="</b>" skip="\n" oneline
+-syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<em>" end="</em>" skip="\n" oneline
+-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<i>" end="</i>" skip="\n" oneline
+-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<u>" end="</u>" skip="\n" oneline
+-syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline
+-syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline
+-"metaverse
+-syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>"
+-syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>"
+-syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:alt>" end="<:alt[-_]end>"
+-syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:poem>" end="<:poem[-_]end>"
+ 
+ "Expensive Mode:
+ if !exists("sisu_no_expensive")
+@@ -119,18 +117,19 @@
+ syn region  sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
+ 
+ "Errors:
+-syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+"
++syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]"
+ syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+"
+-syn match sisu_error_wspace contains=sisu_error_wspace  " \s*$"
++syn match sisu_error_wspace contains=sisu_error_wspace " \s*$"
+ syn match sisu_error contains=sisu_error_wspace "\t\+"
+ syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+"
+ syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]"
+-syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n\n"
+-syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n\n"
++syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$"
++syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$"
+ syn match sisu_error contains=sisu_error "\s\+.{{"
+ syn match sisu_error contains=sisu_error "^\~\s*$"
+-syn match sisu_error contains=sisu_error "^[0-9]\~\s*$"
+-syn match sisu_error contains=sisu_error "^[0-9]\~\S\+\s*$"
++syn match sisu_error contains=sisu_error "^0\~.*"
++syn match sisu_error contains=sisu_error "^[1-9]\~\s*$"
++syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$"
+ syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]"
+ syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*"
+ syn match sisu_error contains=sisu_error "{\~^\S\+"
+@@ -139,54 +138,67 @@
+ syn match sisu_error contains=sisu_error "<dir>"
+ "errors for filetype sisu, though not error in 'metaverse':
+ syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
+-syn match sisu_error  "/\?<\([biu]\)>[^(</\1>)]\{-}\n\n"
++syn match sisu_error  "/\?<\([biu]\)>[^(</\1>)]\{-}\n$"
+ 
+ "Error Exceptions:
+-syn match sisu_control "\n\n" "contains=ALL
++syn match sisu_control "\n$" "contains=ALL
+ syn match sisu_control " //"
+-syn match sisu_error  "%{"
+-syn match sisu_error "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
+-syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
++syn match sisu_error   "%{"
++syn match sisu_error   "<br>_\?https\?:\S\+\|_\?https\?:\S\+<br>"
++syn match sisu_error   "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]"
++syn match sisu_comment "^%\{1,2\}.\+"
+ 
+ "Definitions Default Highlighting:
+-hi def link sisu_normal           Normal
+-hi def link sisu_header           PreProc
+-hi def link sisu_header_content   Statement
+-hi def link sisu_heading          Title
+-hi def link sisu_structure        Operator
+-hi def link sisu_contain          Include
+-hi def link sisu_mark_endnote     Include
+-hi def link sisu_require          NonText
+-hi def link sisu_link             NonText
+-hi def link sisu_linked           String
+-hi def link sisu_fontface         Include
+-hi def link sisu_strikeout        DiffDelete
+-hi def link sisu_content_alt      Special
+-hi def link sisu_sem_content      String
+-hi def link sisu_sem_content      SpecialKey
+-hi def link sisu_sem_block        Special
+-hi def link sisu_sem_marker       Visual
+-"hi def link sisu_sem_marker       Structure
+-hi def link sisu_sem_marker_block MatchParen
+-hi def link sisu_sem_ex_marker    FoldColumn
+-hi def link sisu_sem_ex_marker_block Folded
+-hi def link sisu_sem_ex_content   Comment
+-"hi def link sisu_sem_ex_content   SpecialKey
+-hi def link sisu_sem_ex_block     Comment
+-hi def link sisu_content_endnote  Special
+-hi def link sisu_control          Define
+-hi def link sisu_ocn              Include
+-hi def link sisu_number           Number
+-hi def link sisu_identifier       Function
+-hi def link sisu_underline        Underlined
+-hi def link sisu_markpara         Include
+-hi def link sisu_marktail         Include
+-hi def link sisu_mark             Identifier
+-hi def link sisu_break            Structure
+-hi def link sisu_html             Type
+-hi def link sisu_action           Identifier
+-hi def link sisu_comment          Comment
+-hi def link sisu_error_sem_marker Error
+-hi def link sisu_error_wspace     Error
+-hi def link sisu_error            Error
++hi def link sisu_normal                Normal
++hi def link sisu_header                PreProc
++hi def link sisu_header_content        Normal
++hi def link sisu_sub_header_title      Statement
++hi def link sisu_sub_header_creator    Statement
++hi def link sisu_sub_header_rights     Statement
++hi def link sisu_sub_header_classify   Statement
++hi def link sisu_sub_header_dates      Statement
++hi def link sisu_sub_header_make       Statement
++hi def link sisu_sub_header_links      Statement
++hi def link sisu_sub_header_publisher  Statement
++hi def link sisu_sub_header_notes      Statement
++hi def link sisu_sub_header_original   Statement
++hi def link sisu_sub_header_source     Statement
++hi def link sisu_heading               Title
++hi def link sisu_structure             Operator
++hi def link sisu_contain               Include
++hi def link sisu_mark_endnote          Include
++hi def link sisu_require               NonText
++hi def link sisu_link                  NonText
++hi def link sisu_linked                String
++hi def link sisu_fontface              Include
++hi def link sisu_strikeout             DiffDelete
++hi def link sisu_content_alt           Special
++hi def link sisu_sem_content           SpecialKey
++hi def link sisu_sem_block             Special
++hi def link sisu_sem_marker            Visual
++"hi def link sisu_sem_marker            Structure
++hi def link sisu_sem_marker_block      MatchParen
++hi def link sisu_sem_ex_marker         FoldColumn
++hi def link sisu_sem_ex_marker_block   Folded
++hi def link sisu_sem_ex_content        Comment
++"hi def link sisu_sem_ex_content        SpecialKey
++hi def link sisu_sem_ex_block          Comment
++hi def link sisu_index                 SpecialKey
++hi def link sisu_index_block           Visual
++hi def link sisu_content_endnote       Special
++hi def link sisu_control               Define
++hi def link sisu_ocn                   Include
++hi def link sisu_number                Number
++hi def link sisu_identifier            Function
++hi def link sisu_underline             Underlined
++hi def link sisu_markpara              Include
++hi def link sisu_marktail              Include
++hi def link sisu_mark                  Identifier
++hi def link sisu_break                 Structure
++hi def link sisu_html                  Type
++hi def link sisu_action                Identifier
++hi def link sisu_comment               Comment
++hi def link sisu_error_sem_marker      Error
++hi def link sisu_error_wspace          Error
++hi def link sisu_error                 Error
+ let b:current_syntax = "sisu"
+diff -Nur runtime/syntax/spec.vim runtime/syntax/spec.vim
+--- runtime/syntax/spec.vim	2005-01-04 01:46:51.000000000 -0800
++++ runtime/syntax/spec.vim	2011-01-18 10:40:56.452069454 -0800
+@@ -1,8 +1,7 @@
+ " Filename:    spec.vim
+ " Purpose:     Vim syntax file
+ " Language:    SPEC: Build/install scripts for Linux RPM packages
+-" Maintainer:  Donovan Rebbechi [email protected]
+-" URL:	       http://pegasus.rutgers.edu/~elflord/vim/syntax/spec.vim
++" Maintainer:  Donovan Rebbechi [email protected]
+ " Last Change: Fri Dec 3 11:54 EST 2004 Marcin Dalecki
+ 
+ " For version 5.x: Clear all syntax items
+diff -Nur runtime/syntax/spyce.vim runtime/syntax/spyce.vim
+--- runtime/syntax/spyce.vim	2004-06-07 07:32:36.000000000 -0700
++++ runtime/syntax/spyce.vim	2011-01-18 10:40:56.454194968 -0800
+@@ -2,7 +2,7 @@
+ " Language:	   SPYCE
+ " Maintainer:	 Rimon Barr <rimon AT acm DOT org>
+ " URL:		     http://spyce.sourceforge.net
+-" Last Change: 2003 May 11
++" Last Change: 2009 Nov 11
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -25,6 +25,7 @@
+ else
+   runtime! syntax/html.vim
+   unlet b:current_syntax
++  syntax spell default  " added by Bram
+ endif
+ 
+ " include python
+diff -Nur runtime/syntax/sqlanywhere.vim runtime/syntax/sqlanywhere.vim
+--- runtime/syntax/sqlanywhere.vim	2008-02-06 12:32:21.000000000 -0800
++++ runtime/syntax/sqlanywhere.vim	2011-01-18 10:40:56.455503986 -0800
+@@ -2,10 +2,11 @@
+ " Vim syntax file
+ " Language:    SQL, Adaptive Server Anywhere
+ " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
+-" Last Change: Tue 29 Jan 2008 12:54:19 PM Eastern Standard Time
+-" Version:     10.0.1
++" Last Change: 2009 Mar 15
++" Version:     11.0.1
+ 
+-" Description: Updated to Adaptive Server Anywhere 10.0.1
++" Description: Updated to Adaptive Server Anywhere 11.0.1
++"              Updated to Adaptive Server Anywhere 10.0.1
+ "              Updated to Adaptive Server Anywhere  9.0.2
+ "              Updated to Adaptive Server Anywhere  9.0.1
+ "              Updated to Adaptive Server Anywhere  9.0.0
+@@ -54,20 +55,24 @@
+ syn keyword sqlFunction	 strtouuid varexists
+ 
+ " 9.0.1 functions
+-syn keyword sqlFunction	 acos asin atan atn2 cast ceiling convert cos cot 
++syn keyword sqlFunction	 acos asin atan atn2 cast ceiling convert cos cot
+ syn keyword sqlFunction	 char_length coalesce dateformat datetime degrees exp
+-syn keyword sqlFunction	 floor getdate insertstr 
++syn keyword sqlFunction	 floor getdate insertstr
+ syn keyword sqlFunction	 log log10 lower mod pi power
+-syn keyword sqlFunction	 property radians replicate round sign sin 
++syn keyword sqlFunction	 property radians replicate round sign sin
+ syn keyword sqlFunction	 sqldialect tan truncate truncnum
+ syn keyword sqlFunction	 base64_encode base64_decode
+ syn keyword sqlFunction	 hash compress decompress encrypt decrypt
+ 
++" 11.0.1 functions
++syn keyword sqlFunction	 connection_extended_property text_handle_vector_match
++syn keyword sqlFunction	 read_client_file write_client_file
++
+ " string functions
+ syn keyword sqlFunction	 ascii char left ltrim repeat
+ syn keyword sqlFunction	 space right rtrim trim lcase ucase
+ syn keyword sqlFunction	 locate charindex patindex replace
+-syn keyword sqlFunction	 errormsg csconvert 
++syn keyword sqlFunction	 errormsg csconvert
+ 
+ " property functions
+ syn keyword sqlFunction	 db_id db_name property_name
+@@ -358,125 +363,135 @@
+ syn keyword sqlFunction	 sa_set_http_header sa_set_http_option
+ syn keyword sqlFunction	 sa_http_variable_info sa_http_header_info
+ 
+-" http functions 9.0.1 
++" http functions 9.0.1
+ syn keyword sqlFunction	 http_encode http_decode
+ syn keyword sqlFunction	 html_encode html_decode
+ 
+ " keywords
+-syn keyword sqlKeyword	 absolute accent action activ add address after
+-syn keyword sqlKeyword	 algorithm allow_dup_row
+-syn keyword sqlKeyword	 alter and any as append asc ascii ase at atomic
+-syn keyword sqlKeyword	 attach attended audit authorization 
++syn keyword sqlKeyword	 absolute accent action active add address aes_decrypt
++syn keyword sqlKeyword	 after aggregate algorithm allow_dup_row allowed
++syn keyword sqlKeyword	 alter and ansi_substring any as append apply asc ascii ase
++syn keyword sqlKeyword	 assign at atan2 atomic attach attended audit authorization
+ syn keyword sqlKeyword	 autoincrement autostop batch bcp before
+-syn keyword sqlKeyword	 between blank blanks block
+-syn keyword sqlKeyword	 both bottom unbounded break bufferpool
++syn keyword sqlKeyword	 between bit_and bit_length bit_or bit_substr bit_xor
++syn keyword sqlKeyword	 blank blanks block
++syn keyword sqlKeyword	 both bottom unbounded break breaker bufferpool
+ syn keyword sqlKeyword	 build bulk by byte bytes cache calibrate calibration
+ syn keyword sqlKeyword	 cancel capability cascade cast
+-syn keyword sqlKeyword	 catalog changes char char_convert check checksum
++syn keyword sqlKeyword	 catalog ceil changes char char_convert check checksum
+ syn keyword sqlKeyword	 class classes client cmp
+-syn keyword sqlKeyword	 cluster clustered collation column columns
++syn keyword sqlKeyword	 cluster clustered collation
++syn keyword sqlKeyword	 column columns
+ syn keyword sqlKeyword	 command comment committed comparisons
+ syn keyword sqlKeyword	 compatible component compressed compute computes
+-syn keyword sqlKeyword	 concat confirm conflict connection
++syn keyword sqlKeyword	 concat configuration confirm conflict connection
+ syn keyword sqlKeyword	 console consolidate consolidated
+-syn keyword sqlKeyword	 constraint constraints continue
+-syn keyword sqlKeyword	 convert copy count crc cross cube
++syn keyword sqlKeyword	 constraint constraints content continue
++syn keyword sqlKeyword	 convert coordinator copy count count_set_bits
++syn keyword sqlKeyword	 crc createtime cross cube cume_dist
+ syn keyword sqlKeyword	 current cursor data data database
+ syn keyword sqlKeyword	 current_timestamp current_user
+-syn keyword sqlKeyword	 datatype dba dbfile
+-syn keyword sqlKeyword	 dbspace dbspacename debug decoupled
+-syn keyword sqlKeyword	 decrypted default defaults deferred definition
++syn keyword sqlKeyword	 databases datatype dba dbfile
++syn keyword sqlKeyword	 dbspace dbspaces dbspacename debug decoupled
++syn keyword sqlKeyword	 decrypted default defaults default_dbspace deferred
++syn keyword sqlKeyword	 definer definition
+ syn keyword sqlKeyword	 delay deleting delimited dependencies desc
+ syn keyword sqlKeyword	 description detach deterministic directory
+-syn keyword sqlKeyword	 disable disabled distinct do domain download
++syn keyword sqlKeyword	 disable disabled distinct do domain download duplicate
+ syn keyword sqlKeyword	 dsetpass dttm dynamic each editproc ejb
+-syn keyword sqlKeyword	 else elseif enable encapsulated encrypted end 
+-syn keyword sqlKeyword	 encoding endif engine erase error escape escapes event
+-syn keyword sqlKeyword	 every except exception exclude exclusive exec 
+-syn keyword sqlKeyword	 existing exists expanded express
++syn keyword sqlKeyword	 else elseif empty enable encapsulated encrypted end
++syn keyword sqlKeyword	 encoding endif engine environment erase error escape escapes event
++syn keyword sqlKeyword	 event_parameter every except exception exclude excluded exclusive exec
++syn keyword sqlKeyword	 existing exists expanded expiry express exprtype extended_property
+ syn keyword sqlKeyword	 external externlogin factor failover false
+-syn keyword sqlKeyword	 fastfirstrow fieldproc file filler
+-syn keyword sqlKeyword	 fillfactor finish first first_keyword 
+-syn keyword sqlKeyword	 following force foreign format 
+-syn keyword sqlKeyword	 freepage french fresh full function go global
+-syn keyword sqlKeyword	 group handler hash having header hexadecimal 
+-syn keyword sqlKeyword	 hidden high history hold holdlock
+-syn keyword sqlKeyword	 hours id identified identity ignore
++syn keyword sqlKeyword	 fastfirstrow fieldproc file files filler
++syn keyword sqlKeyword	 fillfactor finish first first_keyword first_value
++syn keyword sqlKeyword	 following force foreign format forxml forxml_sep fp frame
++syn keyword sqlKeyword	 freepage french fresh full function gb get_bit go global
++syn keyword sqlKeyword	 group handler hash having header hexadecimal
++syn keyword sqlKeyword	 hidden high history hg hng hold holdlock host
++syn keyword sqlKeyword	 hours http_body http_session_timeout id identified identity ignore
+ syn keyword sqlKeyword	 ignore_dup_key ignore_dup_row immediate
+-syn keyword sqlKeyword	 in inactive inactivity incremental index info 
++syn keyword sqlKeyword	 in inactiv inactive inactivity included incremental
++syn keyword sqlKeyword	 index index_enabled index_lparen indexonly info
+ syn keyword sqlKeyword	 inline inner inout insensitive inserting
+ syn keyword sqlKeyword	 instead integrated
+-syn keyword sqlKeyword	 internal into introduced iq is isolation jar java
++syn keyword sqlKeyword	 internal intersection into introduced invoker iq is isolation
++syn keyword sqlKeyword	 jar java java_location java_main_userid java_vm_options
+ syn keyword sqlKeyword	 jconnect jdk join kb key keep kerberos language last
+-syn keyword sqlKeyword	 last_keyword lateral left level like
+-syn keyword sqlKeyword	 limit local location log 
+-syn keyword sqlKeyword	 logging login logscan long low lru main
+-syn keyword sqlKeyword	 match materialized max maximum membership 
+-syn keyword sqlKeyword	 minutes mirror mode modify monitor  mru
+-syn keyword sqlKeyword	 name named national native natural new next no
++syn keyword sqlKeyword	 last_keyword last_value lateral ld left len lf ln level like
++syn keyword sqlKeyword	 limit local location log
++syn keyword sqlKeyword	 logging login logscan long low lru main manual mark
++syn keyword sqlKeyword	 match matched materialized max maximum mb membership
++syn keyword sqlKeyword	 merge metadata methods minimum minutes mirror mode modify monitor move mru
++syn keyword sqlKeyword	 multiplex name named national native natural new next no
+ syn keyword sqlKeyword	 noholdlock nolock nonclustered none not
+-syn keyword sqlKeyword	 notify null nulls of off old on
+-syn keyword sqlKeyword	 only optimization optimizer option
++syn keyword sqlKeyword	 notify null nullable_constant nulls object oem_string of off offline
++syn keyword sqlKeyword	 old on online only openstring optimization optimizer option
+ syn keyword sqlKeyword	 or order others out outer over
+ syn keyword sqlKeyword	 package packetsize padding page pages
+-syn keyword sqlKeyword	 paglock parallel part partition partner password path
+-syn keyword sqlKeyword	 pctfree plan preceding precision prefetch prefix
+-syn keyword sqlKeyword	 preserve preview primary 
+-syn keyword sqlKeyword	 prior priqty private privileges procedure profile
+-syn keyword sqlKeyword	 public publication publish publisher
+-syn keyword sqlKeyword	 quote quotes range readcommitted readonly
++syn keyword sqlKeyword	 paglock parallel part partial partition partitions partner password path
++syn keyword sqlKeyword	 pctfree plan policy populate port postfilter preceding precision
++syn keyword sqlKeyword	 prefetch prefilter prefix preserve preview primary
++syn keyword sqlKeyword	 prior priority priqty private privileges procedure profile
++syn keyword sqlKeyword	 property_is_cumulative property_is_numeric public publication publish publisher
++syn keyword sqlKeyword	 quiesce quote quotes range readclientfile readcommitted reader readfile readonly
+ syn keyword sqlKeyword	 readpast readuncommitted readwrite rebuild
+ syn keyword sqlKeyword	 received recompile recover recursive references
+-syn keyword sqlKeyword	 referencing refresh relative relocate
++syn keyword sqlKeyword	 referencing refresh regex regexp regexp_substr relative relocate
+ syn keyword sqlKeyword	 rename repeatable repeatableread
+-syn keyword sqlKeyword	 replicate rereceive resend reserve reset
++syn keyword sqlKeyword	 replicate request_timeout required rereceive resend reserve reset
+ syn keyword sqlKeyword	 resizing resolve resource respect
+ syn keyword sqlKeyword	 restrict result retain
+-syn keyword sqlKeyword	 returns right 
+-syn keyword sqlKeyword	 rollup root row rowlock rows save 
+-syn keyword sqlKeyword	 schedule schema scripted scroll seconds secqty
++syn keyword sqlKeyword	 returns reverse right role
++syn keyword sqlKeyword	 rollup root row row_number rowlock rows save
++syn keyword sqlKeyword	 sa_index_hash sa_internal_fk_verify sa_internal_termbreak
++syn keyword sqlKeyword	 sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix
++syn keyword sqlKeyword	 schedule schema scope scripted scroll seconds secqty security
+ syn keyword sqlKeyword	 send sensitive sent serializable
+-syn keyword sqlKeyword	 server server session sets 
++syn keyword sqlKeyword	 server server session set_bit set_bits sets
+ syn keyword sqlKeyword	 share simple since site size skip
+-syn keyword sqlKeyword	 snapshot soapheader some sorted_data 
+-syn keyword sqlKeyword	 sqlcode sqlid sqlstate stacker stale statement
+-syn keyword sqlKeyword	 statistics status stogroup store
+-syn keyword sqlKeyword	 strip subpages subscribe subscription
+-syn keyword sqlKeyword	 subtransaction synchronization
++syn keyword sqlKeyword	 snapshot soapheader soap_header split some sorted_data
++syn keyword sqlKeyword	 sqlcode sqlid sqlflagger sqlstate sqrt square
++syn keyword sqlKeyword	 stacker stale statement statistics status stddev_pop stddev_samp
++syn keyword sqlKeyword	 stemmer stogroup stoplist store
++syn keyword sqlKeyword	 strip stripesizekb striping subpages subscribe subscription
++syn keyword sqlKeyword	 subtransaction suser_id suser_name synchronization
+ syn keyword sqlKeyword	 syntax_error table tablock
+-syn keyword sqlKeyword	 tablockx tb temp template temporary then
+-syn keyword sqlKeyword	 ties timezone to top tracing
+-syn keyword sqlKeyword	 transaction transactional tries true 
++syn keyword sqlKeyword	 tablockx tb temp template temporary term then
++syn keyword sqlKeyword	 ties timezone to to_char to_nchar top traced_plan tracing
++syn keyword sqlKeyword	 transfer transaction transactional tries true
+ syn keyword sqlKeyword	 tsequal type tune uncommitted unconditionally
+-syn keyword sqlKeyword	 unenforced unique union unknown unload 
+-syn keyword sqlKeyword	 updating updlock upgrade upload use user
++syn keyword sqlKeyword	 unenforced unicode unique union unistr unknown unlimited unload
++syn keyword sqlKeyword	 unpartition unquiesce updatetime updating updlock upgrade upload
++syn keyword sqlKeyword	 upper use user
+ syn keyword sqlKeyword	 using utc utilities validproc
+ syn keyword sqlKeyword	 value values varchar variable
+-syn keyword sqlKeyword	 varying vcat verify view virtual wait 
+-syn keyword sqlKeyword	 warning web when where window with with_auto
++syn keyword sqlKeyword	 varying var_pop var_samp vcat verify versions view virtual wait
++syn keyword sqlKeyword	 warning wd web when where window with with_auto
+ syn keyword sqlKeyword	 with_auto with_cube with_rollup without
+-syn keyword sqlKeyword	 with_lparen within word work workload writefile 
+-syn keyword sqlKeyword	 writers writeserver xlock zeros
++syn keyword sqlKeyword	 with_lparen within word work workload write writefile
++syn keyword sqlKeyword	 writeclientfile writer writers writeserver xlock zeros
+ " XML function support
+-syn keyword sqlFunction	 openxml xmlelement xmlforest xmlgen xmlconcat xmlagg 
+-syn keyword sqlFunction	 xmlattributes 
++syn keyword sqlFunction	 openxml xmlelement xmlforest xmlgen xmlconcat xmlagg
++syn keyword sqlFunction	 xmlattributes
+ syn keyword sqlKeyword	 raw auto elements explicit
+ " HTTP support
+-syn keyword sqlKeyword	 authorization secure url service
++syn keyword sqlKeyword	 authorization secure url service next_soap_header
+ " HTTP 9.0.2 new procedure keywords
+ syn keyword sqlKeyword	 namespace certificate clientport proxy
+ " OLAP support 9.0.0
+-syn keyword sqlKeyword	 covar_pop covar_samp corr regr_slope regr_intercept 
++syn keyword sqlKeyword	 covar_pop covar_samp corr regr_slope regr_intercept
+ syn keyword sqlKeyword	 regr_count regr_r2 regr_avgx regr_avgy
+ syn keyword sqlKeyword	 regr_sxx regr_syy regr_sxy
+ 
+ " Alternate keywords
+ syn keyword sqlKeyword	 character dec options proc reference
+-syn keyword sqlKeyword	 subtrans tran syn keyword 
++syn keyword sqlKeyword	 subtrans tran syn keyword
+ 
+ 
+ syn keyword sqlOperator	 in any some all between exists
+-syn keyword sqlOperator	 like escape not is and or 
++syn keyword sqlOperator	 like escape not is and or
+ syn keyword sqlOperator  intersect minus
+ syn keyword sqlOperator  prior distinct
+ 
+@@ -496,43 +511,38 @@
+ 
+ 
+ syn keyword sqlType	 char long varchar text
+-syn keyword sqlType	 bigint decimal double float int integer numeric 
++syn keyword sqlType	 bigint decimal double float int integer numeric
+ syn keyword sqlType	 smallint tinyint real
+ syn keyword sqlType	 money smallmoney
+-syn keyword sqlType	 bit 
+-syn keyword sqlType	 date datetime smalldate time timestamp 
++syn keyword sqlType	 bit
++syn keyword sqlType	 date datetime smalldate time timestamp
+ syn keyword sqlType	 binary image varbinary uniqueidentifier
+ syn keyword sqlType	 xml unsigned
+ " New types 10.0.0
+ syn keyword sqlType	 varbit nchar nvarchar
+ 
+ syn keyword sqlOption    Allow_nulls_by_default
++syn keyword sqlOption    Allow_read_client_file
++syn keyword sqlOption    Allow_snapshot_isolation
++syn keyword sqlOption    Allow_write_client_file
+ syn keyword sqlOption    Ansi_blanks
+ syn keyword sqlOption    Ansi_close_cursors_on_rollback
+-syn keyword sqlOption    Ansi_integer_overflow
+ syn keyword sqlOption    Ansi_permissions
++syn keyword sqlOption    Ansi_substring
+ syn keyword sqlOption    Ansi_update_constraints
+ syn keyword sqlOption    Ansinull
+-syn keyword sqlOption    Assume_distinct_servers
+ syn keyword sqlOption    Auditing
+ syn keyword sqlOption    Auditing_options
+-syn keyword sqlOption    Auto_commit
+-syn keyword sqlOption    Auto_refetch
+-syn keyword sqlOption    Automatic_timestamp
+ syn keyword sqlOption    Background_priority
+-syn keyword sqlOption    Bell
+-syn keyword sqlOption    Blob_threshold
+ syn keyword sqlOption    Blocking
+ syn keyword sqlOption    Blocking_timeout
+ syn keyword sqlOption    Chained
+-syn keyword sqlOption    Char_OEM_Translation
+ syn keyword sqlOption    Checkpoint_time
+ syn keyword sqlOption    Cis_option
+ syn keyword sqlOption    Cis_rowset_size
+ syn keyword sqlOption    Close_on_endtrans
+-syn keyword sqlOption    Command_delimiter
+-syn keyword sqlOption    Commit_on_exit
+-syn keyword sqlOption    Compression
++syn keyword sqlOption    Collect_statistics_on_dml_updates
++syn keyword sqlOption    Conn_auditing
+ syn keyword sqlOption    Connection_authentication
+ syn keyword sqlOption    Continue_after_raiserror
+ syn keyword sqlOption    Conversion_error
+@@ -543,125 +553,90 @@
+ syn keyword sqlOption    Date_order
+ syn keyword sqlOption    Debug_messages
+ syn keyword sqlOption    Dedicated_task
++syn keyword sqlOption    Default_dbspace
+ syn keyword sqlOption    Default_timestamp_increment
+ syn keyword sqlOption    Delayed_commit_timeout
+ syn keyword sqlOption    Delayed_commits
+-syn keyword sqlOption    Delete_old_logs
+-syn keyword sqlOption    Describe_Java_Format
+-syn keyword sqlOption    Divide_by_zero_error
+-syn keyword sqlOption    Echo
+ syn keyword sqlOption    Escape_character
+ syn keyword sqlOption    Exclude_operators
+ syn keyword sqlOption    Extended_join_syntax
+-syn keyword sqlOption    External_remote_options
+ syn keyword sqlOption    Fire_triggers
+ syn keyword sqlOption    First_day_of_week
+-syn keyword sqlOption    Float_as_double
+ syn keyword sqlOption    For_xml_null_treatment
+ syn keyword sqlOption    Force_view_creation
+ syn keyword sqlOption    Global_database_id
+-syn keyword sqlOption    Headings
+-syn keyword sqlOption    Input_format
++syn keyword sqlOption    Http_session_timeout
+ syn keyword sqlOption    Integrated_server_name
+ syn keyword sqlOption    Isolation_level
+-syn keyword sqlOption    ISQL_command_timing
+-syn keyword sqlOption    ISQL_escape_character
+-syn keyword sqlOption    ISQL_field_separator
+-syn keyword sqlOption    ISQL_log
+-syn keyword sqlOption    ISQL_plan
+-syn keyword sqlOption    ISQL_plan_cursor_sensitivity
+-syn keyword sqlOption    ISQL_plan_cursor_writability
+-syn keyword sqlOption    ISQL_quote
+-syn keyword sqlOption    Java_heap_size
+-syn keyword sqlOption    Java_input_output
+-syn keyword sqlOption    Java_namespace_size
+-syn keyword sqlOption    Java_page_buffer_size
++syn keyword sqlOption    Java_location
++syn keyword sqlOption    Java_main_userid
++syn keyword sqlOption    Java_vm_options
+ syn keyword sqlOption    Lock_rejected_rows
+ syn keyword sqlOption    Log_deadlocks
+-syn keyword sqlOption    Log_detailed_plans
+-syn keyword sqlOption    Log_max_requests
+ syn keyword sqlOption    Login_mode
+ syn keyword sqlOption    Login_procedure
++syn keyword sqlOption    Materialized_view_optimization
++syn keyword sqlOption    Max_client_statements_cached
+ syn keyword sqlOption    Max_cursor_count
+ syn keyword sqlOption    Max_hash_size
+ syn keyword sqlOption    Max_plans_cached
++syn keyword sqlOption    Max_priority
++syn keyword sqlOption    Max_query_tasks
+ syn keyword sqlOption    Max_recursive_iterations
+ syn keyword sqlOption    Max_statement_count
+-syn keyword sqlOption    Max_work_table_hash_size
++syn keyword sqlOption    Max_temp_space
+ syn keyword sqlOption    Min_password_length
+ syn keyword sqlOption    Nearest_century
+ syn keyword sqlOption    Non_keywords
+-syn keyword sqlOption    NULLS
+-syn keyword sqlOption    ODBC_describe_binary_as_varbinary
+-syn keyword sqlOption    ODBC_distinguish_char_and_varchar
+-syn keyword sqlOption    On_Charset_conversion_failure
+-syn keyword sqlOption    On_error
++syn keyword sqlOption    Odbc_describe_binary_as_varbinary
++syn keyword sqlOption    Odbc_distinguish_char_and_varchar
++syn keyword sqlOption    Oem_string
++syn keyword sqlOption    On_charset_conversion_failure
+ syn keyword sqlOption    On_tsql_error
+-syn keyword sqlOption    Optimistic_wait_for_commit
+ syn keyword sqlOption    Optimization_goal
+ syn keyword sqlOption    Optimization_level
+-syn keyword sqlOption    Optimization_logging
+ syn keyword sqlOption    Optimization_workload
+-syn keyword sqlOption    Output_format
+-syn keyword sqlOption    Output_length
+-syn keyword sqlOption    Output_nulls
+-syn keyword sqlOption    Percent_as_comment
+ syn keyword sqlOption    Pinned_cursor_percent_of_cache
++syn keyword sqlOption    Post_login_procedure
+ syn keyword sqlOption    Precision
+ syn keyword sqlOption    Prefetch
+ syn keyword sqlOption    Preserve_source_format
+ syn keyword sqlOption    Prevent_article_pkey_update
+-syn keyword sqlOption    Qualify_owners
+-syn keyword sqlOption    Query_plan_on_open
+-syn keyword sqlOption    Quiet
+-syn keyword sqlOption    Quote_all_identifiers
++syn keyword sqlOption    Priority
++syn keyword sqlOption    Query_mem_timeout
+ syn keyword sqlOption    Quoted_identifier
+ syn keyword sqlOption    Read_past_deleted
+ syn keyword sqlOption    Recovery_time
+ syn keyword sqlOption    Remote_idle_timeout
+ syn keyword sqlOption    Replicate_all
+-syn keyword sqlOption    Replication_error
+-syn keyword sqlOption    Replication_error_piece
++syn keyword sqlOption    Request_timeout
+ syn keyword sqlOption    Return_date_time_as_string
+-syn keyword sqlOption    Return_java_as_string
+-syn keyword sqlOption    RI_Trigger_time
+ syn keyword sqlOption    Rollback_on_deadlock
+ syn keyword sqlOption    Row_counts
+-syn keyword sqlOption    Save_remote_passwords
+ syn keyword sqlOption    Scale
+-syn keyword sqlOption    Screen_format
+-syn keyword sqlOption    Sort_Collation
+-syn keyword sqlOption    SQL_flagger_error_level
+-syn keyword sqlOption    SQL_flagger_warning_level
+-syn keyword sqlOption    SQLConnect
+-syn keyword sqlOption    SQLStart
+-syn keyword sqlOption    SR_Date_Format
+-syn keyword sqlOption    SR_Time_Format
+-syn keyword sqlOption    SR_TimeStamp_Format
+-syn keyword sqlOption    Statistics
++syn keyword sqlOption    Secure_feature_key
++syn keyword sqlOption    Sort_collation
++syn keyword sqlOption    Sql_flagger_error_level
++syn keyword sqlOption    Sql_flagger_warning_level
+ syn keyword sqlOption    String_rtruncation
+-syn keyword sqlOption    Subscribe_by_remote
+ syn keyword sqlOption    Subsume_row_locks
+-syn keyword sqlOption    Suppress_TDS_debugging
+-syn keyword sqlOption    TDS_Empty_string_is_null
++syn keyword sqlOption    Suppress_tds_debugging
++syn keyword sqlOption    Synchronize_mirror_on_commit
++syn keyword sqlOption    Tds_empty_string_is_null
+ syn keyword sqlOption    Temp_space_limit_check
+-syn keyword sqlOption    Thread_count
+-syn keyword sqlOption    Thread_stack
+-syn keyword sqlOption    Thread_swaps
+ syn keyword sqlOption    Time_format
+ syn keyword sqlOption    Time_zone_adjustment
+ syn keyword sqlOption    Timestamp_format
+-syn keyword sqlOption    Truncate_date_values
+ syn keyword sqlOption    Truncate_timestamp_values
+-syn keyword sqlOption    Truncate_with_auto_commit
+-syn keyword sqlOption    Truncation_length
+-syn keyword sqlOption    Tsql_hex_constant
++syn keyword sqlOption    Tsql_outer_joins
+ syn keyword sqlOption    Tsql_variables
++syn keyword sqlOption    Updatable_statement_isolation
+ syn keyword sqlOption    Update_statistics
++syn keyword sqlOption    Upgrade_database_capability
+ syn keyword sqlOption    User_estimates
+-syn keyword sqlOption    Verify_all_columns
+-syn keyword sqlOption    Verify_threshold
++syn keyword sqlOption    Verify_password_function
+ syn keyword sqlOption    Wait_for_commit
++syn keyword sqlOption    Webservice_namespace_host
+ 
+ " Strings and characters:
+ syn region sqlString		start=+"+    end=+"+ contains=@Spell
+diff -Nur runtime/syntax/sshconfig.vim runtime/syntax/sshconfig.vim
+--- runtime/syntax/sshconfig.vim	2006-03-05 13:55:08.000000000 -0800
++++ runtime/syntax/sshconfig.vim	2011-01-18 10:40:56.458439107 -0800
+@@ -1,23 +1,21 @@
+ " Vim syntax file
+-" This is a GENERATED FILE. Please always refer to source file at the URI below.
+-" Language: OpenSSH server configuration file (ssh_config)
+-" Maintainer: David Ne\v{c}as (Yeti) <[email protected]>
+-" Last Change: 2006-03-05
+-" URL: http://trific.ath.cx/Ftp/vim/syntax/sshconfig.vim
++" Language: OpenSSH client configuration file (ssh_config)
++" Maintainer: David Necas (Yeti) <[email protected]>
++" Last Change: 2009-07-09
+ 
+ " Setup
+ if version >= 600
+-	if exists("b:current_syntax")
+-		finish
+-	endif
++  if exists("b:current_syntax")
++    finish
++  endif
+ else
+-	syntax clear
++  syntax clear
+ endif
+ 
+ if version >= 600
+-	setlocal iskeyword=_,-,a-z,A-Z,48-57
++  setlocal iskeyword=_,-,a-z,A-Z,48-57
+ else
+-	set iskeyword=_,-,a-z,A-Z,48-57
++  set iskeyword=_,-,a-z,A-Z,48-57
+ endif
+ 
+ syn case ignore
+@@ -28,19 +26,21 @@
+ 
+ " Constants
+ syn keyword sshconfigYesNo yes no ask
+-syn keyword sshconfigCipher blowfish des 3des
++syn keyword sshconfigYesNo any auto
+ syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
+ syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
+ syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
+ syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
+ syn keyword sshconfigMAC hmac-md5-96
++syn match sshconfigMAC "\<umac-64@openssh\.com\>"
+ syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss
+ syn keyword sshconfigPreferredAuth hostbased publickey password
+ syn keyword sshconfigPreferredAuth keyboard-interactive
+ syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
+ syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
+-syn keyword sshconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2
+-syn keyword sshconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
++syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
++syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
++syn match sshconfigVar "%[rhpldun]\>"
+ syn match sshconfigSpecial "[*?]"
+ syn match sshconfigNumber "\d\+"
+ syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
+@@ -49,57 +49,68 @@
+ 
+ " Keywords
+ syn keyword sshconfigHostSect Host
+-syn keyword sshconfigKeyword AddressFamily BatchMode BindAddress
++syn keyword sshconfigKeyword AddressFamily
++syn keyword sshconfigKeyword BatchMode BindAddress
+ syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP
+ syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings
+ syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout
+ syn keyword sshconfigKeyword ConnectionAttempts ControlMaster
+-syn keyword sshconfigKeyword ControlPath DynamicForward EnableSSHKeysign
+-syn keyword sshconfigKeyword EscapeChar ForwardAgent ForwardX11
+-syn keyword sshconfigKeyword ForwardX11Trusted GSSAPIAuthentication
++syn keyword sshconfigKeyword ControlPath DynamicForward
++syn keyword sshconfigKeyword EnableSSHKeysign EscapeChar ExitOnForwardFailure
++syn keyword sshconfigKeyword ForwardAgent ForwardX11
++syn keyword sshconfigKeyword ForwardX11Trusted
++syn keyword sshconfigKeyword GSSAPIAuthentication
+ syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts
+-syn keyword sshconfigKeyword GlobalKnownHostsFile HostKeyAlgorithms
+-syn keyword sshconfigKeyword HashKnownHosts KbdInteractiveDevices
++syn keyword sshconfigKeyword GlobalKnownHostsFile
++syn keyword sshconfigKeyword HostKeyAlgorithms HashKnownHosts
+ syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication
+-syn keyword sshconfigKeyword IdentitiesOnly IdentityFile LocalForward
+-syn keyword sshconfigKeyword LogLevel MACs NoHostAuthenticationForLocalhost
+-syn keyword sshconfigKeyword NumberOfPasswordPrompts PasswordAuthentication
++syn keyword sshconfigKeyword IdentitiesOnly IdentityFile
++syn keyword sshconfigKeyword KbdInteractiveAuthentication KbdInteractiveDevices
++syn keyword sshconfigKeyword LocalCommand LocalForward LogLevel
++syn keyword sshconfigKeyword MACs
++syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
++syn keyword sshconfigKeyword NumberOfPasswordPrompts
++syn keyword sshconfigKeyword PasswordAuthentication PermitLocalCommand
+ syn keyword sshconfigKeyword Port PreferredAuthentications Protocol
+ syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication
+-syn keyword sshconfigKeyword RSAAuthentication RemoteForward
+-syn keyword sshconfigKeyword RhostsAuthentication RhostsRSAAuthentication
++syn keyword sshconfigKeyword PermitLocalCommand
++syn keyword sshconfigKeyword RSAAuthentication RemoteForward RekeyLimit
++syn keyword sshconfigKeyword RhostsRSAAuthentication
+ syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval
+ syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking
++syn keyword sshconfigKeyword Tunnel TunnelDevice
+ syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User
+-syn keyword sshconfigKeyword UserKnownHostsFile VerifyHostKeyDNS XAuthLocation
++syn keyword sshconfigKeyword UserKnownHostsFile
++syn keyword sshconfigKeyword VerifyHostKeyDNS VisualHostKey
++syn keyword sshconfigKeyword XAuthLocation
+ 
+ " Define the default highlighting
+ if version >= 508 || !exists("did_sshconfig_syntax_inits")
+-	if version < 508
+-		let did_sshconfig_syntax_inits = 1
+-		command -nargs=+ HiLink hi link <args>
+-	else
+-		command -nargs=+ HiLink hi def link <args>
+-	endif
+-
+-	HiLink sshconfigComment Comment
+-	HiLink sshconfigTodo Todo
+-	HiLink sshconfigHostPort sshconfigConstant
+-	HiLink sshconfigNumber sshconfigConstant
+-	HiLink sshconfigConstant Constant
+-	HiLink sshconfigYesNo sshconfigEnum
+-	HiLink sshconfigCipher sshconfigEnum
+-	HiLink sshconfigMAC sshconfigEnum
+-	HiLink sshconfigHostKeyAlg sshconfigEnum
+-	HiLink sshconfigLogLevel sshconfigEnum
+-	HiLink sshconfigSysLogFacility sshconfigEnum
+-	HiLink sshconfigPreferredAuth sshconfigEnum
+-	HiLink sshconfigEnum Function
+-	HiLink sshconfigSpecial Special
+-	HiLink sshconfigKeyword Keyword
+-	HiLink sshconfigHostSect Type
+-	delcommand HiLink
++  if version < 508
++    let did_sshconfig_syntax_inits = 1
++    command -nargs=+ HiLink hi link <args>
++  else
++    command -nargs=+ HiLink hi def link <args>
++  endif
++
++  HiLink sshconfigComment        Comment
++  HiLink sshconfigTodo           Todo
++  HiLink sshconfigHostPort       sshconfigConstant
++  HiLink sshconfigNumber         sshconfigConstant
++  HiLink sshconfigConstant       Constant
++  HiLink sshconfigYesNo          sshconfigEnum
++  HiLink sshconfigCipher         sshconfigEnum
++  HiLink sshconfigMAC            sshconfigEnum
++  HiLink sshconfigHostKeyAlg     sshconfigEnum
++  HiLink sshconfigLogLevel       sshconfigEnum
++  HiLink sshconfigSysLogFacility sshconfigEnum
++  HiLink sshconfigPreferredAuth  sshconfigEnum
++  HiLink sshconfigVar            sshconfigEnum
++  HiLink sshconfigEnum           Identifier
++  HiLink sshconfigSpecial        Special
++  HiLink sshconfigKeyword        Keyword
++  HiLink sshconfigHostSect       Type
++  delcommand HiLink
+ endif
+ 
+ let b:current_syntax = "sshconfig"
+-
+diff -Nur runtime/syntax/sshdconfig.vim runtime/syntax/sshdconfig.vim
+--- runtime/syntax/sshdconfig.vim	2006-03-05 13:55:08.000000000 -0800
++++ runtime/syntax/sshdconfig.vim	2011-01-18 10:40:56.459001057 -0800
+@@ -1,23 +1,21 @@
+ " Vim syntax file
+-" This is a GENERATED FILE. Please always refer to source file at the URI below.
+ " Language: OpenSSH server configuration file (sshd_config)
+-" Maintainer: David Ne\v{c}as (Yeti) <[email protected]>
+-" Last Change: 2006-03-05
+-" URL: http://trific.ath.cx/Ftp/vim/syntax/sshdconfig.vim
++" Maintainer: David Necas (Yeti) <[email protected]>
++" Last Change: 2009-07-09
+ 
+ " Setup
+ if version >= 600
+-	if exists("b:current_syntax")
+-		finish
+-	endif
++  if exists("b:current_syntax")
++    finish
++  endif
+ else
+-	syntax clear
++  syntax clear
+ endif
+ 
+ if version >= 600
+-	setlocal iskeyword=_,-,a-z,A-Z,48-57
++  setlocal iskeyword=_,-,a-z,A-Z,48-57
+ else
+-	set iskeyword=_,-,a-z,A-Z,48-57
++  set iskeyword=_,-,a-z,A-Z,48-57
+ endif
+ 
+ syn case ignore
+@@ -27,78 +25,87 @@
+ syn keyword sshdconfigTodo TODO FIXME NOT contained
+ 
+ " Constants
+-syn keyword sshdconfigYesNo yes no
++syn keyword sshdconfigYesNo yes no none
++syn keyword sshdconfigAddressFamily any inet inet6
+ syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
+ syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
+ syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
+ syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
+ syn keyword sshdconfigMAC hmac-md5-96
++syn match sshdconfigMAC "\<umac-64@openssh\.com\>"
+ syn keyword sshdconfigRootLogin without-password forced-commands-only
+ syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE
+ syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3
+-syn keyword sshdconfigSysLogFacility DAEMON USER AUTH LOCAL0 LOCAL1 LOCAL2
+-syn keyword sshdconfigSysLogFacility LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
++syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1
++syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7
+ syn match sshdconfigSpecial "[*?]"
+ syn match sshdconfigNumber "\d\+"
+ syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
+ syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>"
++" FIXME: this matches quite a few things which are NOT valid IPv6 addresses
+ syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>"
+ syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>"
+ 
+ " Keywords
+-syn keyword sshdconfigKeyword AcceptEnv AddressFamily
++syn keyword sshdconfigMatch Host User Group Address
++syn keyword sshdconfigKeyword AcceptEnv AddressFamily AllowAgentForwarding
+ syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding
+-syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile Banner
+-syn keyword sshdconfigKeyword ChallengeResponseAuthentication
++syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile
++syn keyword sshdconfigKeyword Banner
++syn keyword sshdconfigKeyword ChallengeResponseAuthentication ChrootDirectory
+ syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax
+ syn keyword sshdconfigKeyword ClientAliveInterval Compression
+-syn keyword sshdconfigKeyword DenyGroups DenyUsers GSSAPIAuthentication
+-syn keyword sshdconfigKeyword GSSAPICleanupCredentials GatewayPorts
+-syn keyword sshdconfigKeyword HostKey HostbasedAuthentication
++syn keyword sshdconfigKeyword DenyGroups DenyUsers
++syn keyword sshdconfigKeyword ForceCommand
++syn keyword sshdconfigKeyword GatewayPorts GSSAPIAuthentication
++syn keyword sshdconfigKeyword GSSAPICleanupCredentials
++syn keyword sshdconfigKeyword HostbasedAuthentication HostKey
+ syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts
+-syn keyword sshdconfigKeyword KerberosAuthentication KerberosOrLocalPasswd
+-syn keyword sshdconfigKeyword KerberosTgtPassing KerberosTicketCleanup
+-syn keyword sshdconfigKeyword KerberosGetAFSToken
+-syn keyword sshdconfigKeyword KeyRegenerationInterval ListenAddress
+-syn keyword sshdconfigKeyword LogLevel LoginGraceTime MACs MaxAuthTries
+-syn keyword sshdconfigKeyword MaxStartups PasswordAuthentication
+-syn keyword sshdconfigKeyword PermitEmptyPasswords PermitRootLogin
++syn keyword sshdconfigKeyword KerberosAuthentication KerberosGetAFSToken
++syn keyword sshdconfigKeyword KerberosOrLocalPasswd KerberosTicketCleanup
++syn keyword sshdconfigKeyword KeyRegenerationInterval
++syn keyword sshdconfigKeyword ListenAddress LoginGraceTime LogLevel
++syn keyword sshdconfigKeyword MACs Match MaxAuthTries MaxSessions MaxStartups
++syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords
++syn keyword sshdconfigKeyword PermitRootLogin PermitOpen PermitTunnel
+ syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port
+ syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol
+-syn keyword sshdconfigKeyword PubkeyAuthentication RSAAuthentication
+-syn keyword sshdconfigKeyword RhostsAuthentication RhostsRSAAuthentication
+-syn keyword sshdconfigKeyword ServerKeyBits StrictModes Subsystem
+-syn keyword sshdconfigKeyword ShowPatchLevel
+-syn keyword sshdconfigKeyword SyslogFacility TCPKeepAlive UseDNS
+-syn keyword sshdconfigKeyword UseLogin UsePAM UsePrivilegeSeparation
++syn keyword sshdconfigKeyword PubkeyAuthentication
++syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication
++syn keyword sshdconfigKeyword ServerKeyBits ShowPatchLevel StrictModes
++syn keyword sshdconfigKeyword Subsystem SyslogFacility
++syn keyword sshdconfigKeyword TCPKeepAlive
++syn keyword sshdconfigKeyword UseDNS UseLogin UsePAM UsePrivilegeSeparation
+ syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding
+ syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation
+ 
+ " Define the default highlighting
+ if version >= 508 || !exists("did_sshdconfig_syntax_inits")
+-	if version < 508
+-		let did_sshdconfig_syntax_inits = 1
+-		command -nargs=+ HiLink hi link <args>
+-	else
+-		command -nargs=+ HiLink hi def link <args>
+-	endif
+-
+-	HiLink sshdconfigComment Comment
+-	HiLink sshdconfigTodo Todo
+-	HiLink sshdconfigHostPort sshdconfigConstant
+-	HiLink sshdconfigTime sshdconfigConstant
+-	HiLink sshdconfigNumber sshdconfigConstant
+-	HiLink sshdconfigConstant Constant
+-	HiLink sshdconfigYesNo sshdconfigEnum
+-	HiLink sshdconfigCipher sshdconfigEnum
+-	HiLink sshdconfigMAC sshdconfigEnum
+-	HiLink sshdconfigRootLogin sshdconfigEnum
+-	HiLink sshdconfigLogLevel sshdconfigEnum
+-	HiLink sshdconfigSysLogFacility sshdconfigEnum
+-	HiLink sshdconfigEnum Function
+-	HiLink sshdconfigSpecial Special
+-	HiLink sshdconfigKeyword Keyword
+-	delcommand HiLink
++  if version < 508
++    let did_sshdconfig_syntax_inits = 1
++    command -nargs=+ HiLink hi link <args>
++  else
++    command -nargs=+ HiLink hi def link <args>
++  endif
++
++  HiLink sshdconfigComment        Comment
++  HiLink sshdconfigTodo           Todo
++  HiLink sshdconfigHostPort       sshdconfigConstant
++  HiLink sshdconfigTime           sshdconfigConstant
++  HiLink sshdconfigNumber         sshdconfigConstant
++  HiLink sshdconfigConstant       Constant
++  HiLink sshdconfigYesNo          sshdconfigEnum
++  HiLink sshdconfigAddressFamily  sshdconfigEnum
++  HiLink sshdconfigCipher         sshdconfigEnum
++  HiLink sshdconfigMAC            sshdconfigEnum
++  HiLink sshdconfigRootLogin      sshdconfigEnum
++  HiLink sshdconfigLogLevel       sshdconfigEnum
++  HiLink sshdconfigSysLogFacility sshdconfigEnum
++  HiLink sshdconfigEnum           Function
++  HiLink sshdconfigSpecial        Special
++  HiLink sshdconfigKeyword        Keyword
++  HiLink sshdconfigMatch          Type
++  delcommand HiLink
+ endif
+ 
+ let b:current_syntax = "sshdconfig"
+diff -Nur runtime/syntax/svg.vim runtime/syntax/svg.vim
+--- runtime/syntax/svg.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/svg.vim	2011-01-18 10:40:56.461491963 -0800
+@@ -0,0 +1,15 @@
++" Vim syntax file
++" Language:	SVG (Scalable Vector Graphics)
++" Maintainer:	Vincent Berthoux <[email protected]>
++" File Types:	.svg (used in Web and vector programs)
++"
++" Directly call the xml syntax, because SVG is an XML
++" dialect. But as some plugins base their effect on filetype,
++" providing a distinct filetype from xml is better.
++
++if exists("b:current_syntax")
++  finish
++endif
++
++runtime! syntax/xml.vim
++let b:current_syntax = "svg"
+diff -Nur runtime/syntax/taskdata.vim runtime/syntax/taskdata.vim
+--- runtime/syntax/taskdata.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/taskdata.vim	2011-01-18 10:40:56.465870269 -0800
+@@ -0,0 +1,43 @@
++" Vim syntax file
++" Language:	task data
++" Maintainer:	John Florian <[email protected]>
++" Updated:	Wed Jul  8 19:46:20 EDT 2009
++
++
++" 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
++
++" Key Names for values.
++syn keyword taskdataKey		description due end entry imask mask parent
++syn keyword taskdataKey		priority project recur start status tags uuid
++syn match taskdataKey		"annotation_\d\+"
++syn match taskdataUndo		"^time.*$"
++syn match taskdataUndo		"^\(old \|new \|---\)"
++
++" Values associated with key names.
++"
++" Strings
++syn region taskdataString	matchgroup=Normal start=+"+ end=+"+
++			\	contains=taskdataEncoded,taskdataUUID,@Spell
++"
++" Special Embedded Characters (e.g., "&comma;")
++syn match taskdataEncoded	"&\a\+;" contained
++" UUIDs
++syn match taskdataUUID		"\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained
++
++
++" The default methods for highlighting.  Can be overridden later.
++hi def link taskdataEncoded	Function
++hi def link taskdataKey		Statement
++hi def link taskdataString 	String
++hi def link taskdataUUID 	Special
++hi def link taskdataUndo 	Type
++
++let b:current_syntax = "taskdata"
++
++" vim:noexpandtab
+diff -Nur runtime/syntax/taskedit.vim runtime/syntax/taskedit.vim
+--- runtime/syntax/taskedit.vim	1969-12-31 16:00:00.000000000 -0800
++++ runtime/syntax/taskedit.vim	2011-01-18 10:40:56.466335118 -0800
+@@ -0,0 +1,35 @@
++" Vim syntax file
++" Language:	support for 'task 42 edit'
++" Maintainer:	John Florian <[email protected]>
++" Updated:	Wed Jul  8 19:46:32 EDT 2009
++
++
++" For version 5.x: Clear all syntax items.
++" For version 6.x: Quit when a syntax file was already loaded.
++if version < 600
++  syntax clear
++elseif exists("b:current_syntax")
++  finish
++endif
++
++syn match taskeditHeading	"^\s*#\s*Name\s\+Editable details\s*$" contained
++syn match taskeditHeading	"^\s*#\s*-\+\s\+-\+\s*$" contained
++syn match taskeditReadOnly	"^\s*#\s*\(UU\)\?ID:.*$" contained
++syn match taskeditReadOnly	"^\s*#\s*Status:.*$" contained
++syn match taskeditReadOnly	"^\s*#\s*i\?Mask:.*$" contained
++syn match taskeditKey		"^ *.\{-}:" nextgroup=taskeditString
++syn match taskeditComment	"^\s*#.*$"
++			\	contains=taskeditReadOnly,taskeditHeading
++syn match taskeditString	".*$" contained contains=@Spell
++
++
++" The default methods for highlighting.  Can be overridden later.
++hi def link taskeditComment	Comment
++hi def link taskeditHeading	Function
++hi def link taskeditKey		Statement
++hi def link taskeditReadOnly	Special
++hi def link taskeditString	String
++
++let b:current_syntax = "taskedit"
++
++" vim:noexpandtab
+diff -Nur runtime/syntax/tcl.vim runtime/syntax/tcl.vim
+--- runtime/syntax/tcl.vim	2006-11-17 11:25:54.000000000 -0800
++++ runtime/syntax/tcl.vim	2011-01-18 10:40:56.467163932 -0800
+@@ -1,13 +1,16 @@
+ " Vim syntax file
+-" Language:	TCL/TK
+-" Maintainer:	Brett Cannon <[email protected]>
++" Language:	Tcl/Tk
++" Maintainer:	Taylor Venable <[email protected]>
++" 		(previously Brett Cannon <[email protected]>)
+ " 		(previously Dean Copsey <[email protected]>)
+ "		(previously Matt Neumann <[email protected]>)
+ "		(previously Allan Kelly <[email protected]>)
+ " Original:	Robin Becker <[email protected]>
+-" Last Change:	2006 Nov 17
++" Last Change:	2009/04/06 02:38:36
++" Version:	1.13
++" URL:		http://real.metasyntax.net:2357/cvs/cvsweb.cgi/Config/vim/syntax/tcl.vim
+ "
+-" Keywords TODO: format clock click anchor
++" Keywords TODO: click anchor
+ 
+ " For version 5.x: Clear all syntax items
+ " For version 6.x: Quit when a syntax file was already loaded
+@@ -17,19 +20,40 @@
+   finish
+ endif
+ 
+-" A bunch of useful keywords
+-syn keyword tclStatement  tell socket subst open eof pwd glob list exec pid
+-syn keyword tclStatement  auto_load_index time unknown eval lrange fblocked
+-syn keyword tclStatement  lsearch auto_import gets lappend proc variable llength
+-syn keyword tclStatement  auto_execok return linsert error catch clock info
+-syn keyword tclStatement  split array fconfigure concat join lreplace source
+-syn keyword tclStatement  fcopy global auto_qualify update close cd auto_load
+-syn keyword tclStatement  file append format read package set binary namespace
+-syn keyword tclStatement  scan trace seek flush after vwait uplevel lset rename
+-syn keyword tclStatement  fileevent regexp upvar unset encoding expr load regsub
+-syn keyword tclStatement interp exit puts incr lindex lsort tclLog string
++" Basic Tcl commands: http://www.tcl.tk/man/tcl8.5/TclCmd/contents.htm
++syn keyword tclCommand		after append apply array bgerror binary catch cd chan clock
++syn keyword tclCommand		close concat dde dict encoding eof error eval exec exit
++syn keyword tclCommand		expr fblocked fconfigure fcopy file fileevent filename flush
++syn keyword tclCommand		format gets glob global history incr info interp join
++syn keyword tclCommand		lappend lassign lindex linsert list llength load lrange lrepeat
++syn keyword tclCommand		lreplace lreverse lsearch lset lsort memory namespace open package
++syn keyword tclCommand		pid proc puts pwd read regexp registry regsub rename return
++syn keyword tclCommand		scan seek set socket source split string subst tell time
++syn keyword tclCommand		trace unknown unload unset update uplevel upvar variable vwait
++
++" The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.5/TclCmd/library.htm
++syn keyword tclCommand		auto_execok auto_import auto_load auto_mkindex auto_mkindex_old
++syn keyword tclCommand		auto_qualify auto_reset parray tcl_endOfWord tcl_findLibrary
++syn keyword tclCommand		tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter
++syn keyword tclCommand		tcl_wordBreakBefore
++
++" Commands that were added in Tcl 8.6
++
++syn keyword tclCommand		my oo::copy oo::define oo::objdefine self
++syn keyword tclCommand		coroutine tailcall throw yield
++
++" Global variables used by Tcl: http://www.tcl.tk/man/tcl8.5/TclCmd/tclvars.htm
++syn keyword tclVars		env errorCode errorInfo tcl_library tcl_patchLevel tcl_pkgPath
++syn keyword tclVars		tcl_platform tcl_precision tcl_rcFileName tcl_traceCompile
++syn keyword tclVars		tcl_traceExec tcl_wordchars tcl_nonwordchars tcl_version argc argv
++syn keyword tclVars		argv0 tcl_interactive geometry
++
++" Strings which expr accepts as boolean values, aside from zero / non-zero.
++syn keyword tclBoolean		true false on off yes no
++
+ syn keyword tclLabel		case default
+ syn keyword tclConditional	if then else elseif switch
++syn keyword tclConditional	try finally
+ syn keyword tclRepeat		while for foreach break continue
+ syn keyword tcltkSwitch	contained	insert create polygon fill outline tag
+ 
+@@ -63,9 +87,14 @@
+ syn keyword tcltkWidgetSwitch contained delete names types create
+ " variable reference
+ 	" ::optional::namespaces
+-syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_.]*::\)*\)\a[a-zA-Z0-9_.]*"
++syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*"
+ 	" ${...} may contain any character except '}'
+ syn match tclVarRef "${[^}]*}"
++
++" The syntactic unquote-splicing replacement for [expand].
++syn match tclExpand '\s{\*}'
++syn match tclExpand '^{\*}'
++
+ " menu, mane add
+ syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator
+ syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak
+@@ -130,11 +159,10 @@
+ 
+ " EXPR
+ " commands associated with expr
+-syn keyword tcltkMaths	contained	acos	cos	hypot	sinh
+-syn keyword tcltkMaths	contained	asin	cosh	log	sqrt
+-syn keyword tcltkMaths	contained	atan	exp	log10	tan
+-syn keyword tcltkMaths	contained	atan2	floor	pow	tanh
+-syn keyword tcltkMaths	contained	ceil	fmod	sin
++syn keyword tcltkMaths contained	abs acos asin atan atan2 bool ceil cos cosh double entier
++syn keyword tcltkMaths contained	exp floor fmod hypot int isqrt log log10 max min pow rand
++syn keyword tcltkMaths contained	round sin sinh sqrt srand tan tanh wide
++
+ syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1  contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf
+ 
+ " format
+@@ -165,17 +193,26 @@
+ 
+ syn keyword tclTodo contained	TODO
+ 
++" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
++" Octal, hexadecimal, unicode codepoints, and the classics.
++" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
++syn match   tclSpecial contained '\\\([0-7]\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
++syn match   tclSpecial contained '\\[\[\]\{\}\"\$]'
+ 
+-" String and Character contstants
+-" Highlight special characters (those which have a backslash) differently
+-syn match   tclSpecial contained "\\\d\d\d\=\|\\."
++" Command appearing inside another command or inside a string.
++syn region tclEmbeddedStatement	start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
+ " A string needs the skip argument as it may legitimately contain \".
+ " Match at start of line
+ syn region  tclString		  start=+^"+ end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
+ "Match all other legal strings.
+-syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
++syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=tclSpecial,tclVarRef,tclEmbeddedStatement skip=+\\\\\|\\"+
++
++" Line continuation is backslash immediately followed by newline.
++syn match tclLineContinue '\\$'
+ 
+-syn match   tclLineContinue "\\\s*$"
++if exists('g:tcl_warn_continuation')
++    syn match tclNotLineContinue '\\\s\+$'
++endif
+ 
+ "integer number, or floating point number without a dot and with "f".
+ syn case ignore
+@@ -208,13 +245,13 @@
+   endif
+ 
+   HiLink tcltkSwitch		Special
++  HiLink tclExpand		Special
+   HiLink tclLabel		Label
+   HiLink tclConditional		Conditional
+   HiLink tclRepeat		Repeat
+   HiLink tclNumber		Number
+   HiLink tclError		Error
+-  HiLink tclStatement		Statement
+-  "HiLink tclStatementColor	Statement
++  HiLink tclCommand		Statement
+   HiLink tclString		String
+   HiLink tclComment		Comment
+   HiLink tclSpecial		Special
+@@ -223,6 +260,9 @@
+   HiLink tcltkCommandColor	Statement
+   HiLink tcltkWidgetColor	Structure
+   HiLink tclLineContinue	WarningMsg
++if exists('g:tcl_warn_continuation')
++  HiLink tclNotLineContinue	ErrorMsg
++endif
+   HiLink tcltkStringSwitch	Special
+   HiLink tcltkArraySwitch	Special
+   HiLink tcltkLsortSwitch	Special
+@@ -232,7 +272,6 @@
+   HiLink tcltkNamespaceSwitch	Special
+   HiLink tcltkWidgetSwitch	Special
+   HiLink tcltkPackConfColor	Identifier
+-  "HiLink tcltkLsort		Statement
+   HiLink tclVarRef		Identifier
+ 
+   delcommand HiLink
+@@ -240,4 +279,4 @@
+ 
+ let b:current_syntax = "tcl"
+ 
+-" vim: ts=8
++" vim: ts=8 noet
+diff -Nur runtime/syntax/tcsh.vim runtime/syntax/tcsh.vim
+--- runtime/syntax/tcsh.vim	2007-06-17 04:20:06.000000000 -0700
++++ runtime/syntax/tcsh.vim	2011-01-18 10:40:56.467899301 -0800
+@@ -1,6 +1,6 @@
+ " tcsh.vim: Vim syntax file for tcsh scripts
+-" Maintainer:	Gautam Iyer <[email protected]>
+-" Modified:	Sat 16 Jun 2007 04:52:12 PM PDT
++" Maintainer:	Gautam Iyer <[email protected]>
++" Modified:	Thu 17 Dec 2009 06:05:07 PM EST
+ "
+ " Description: We break up each statement into a "command" and an "end" part.
+ " All groups are either a "command" or part of the "end" of a statement (ie
+@@ -60,7 +60,7 @@
+ " alias and unalias (contains special aliases)
+ syn keyword tcshAliases contained beepcmd cwdcmd jobcmd helpcommand periodic precmd postcmd shell
+ syn keyword tcshBuiltin	nextgroup=tcshAliCmd skipwhite alias unalias
+-syn match   tcshAliCmd	contained nextgroup=tcshAliEnd skipwhite '\v[\w-]+' contains=tcshAliases
++syn match   tcshAliCmd	contained nextgroup=tcshAliEnd skipwhite '\v(\w|-)+' contains=tcshAliases
+ syn region  tcshAliEnd	contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$\|;' contains=@tcshStatementEnds
+ 
+ " if statements
+@@ -197,7 +197,11 @@
+ 
+ " ----- Synchronising -----
+ if exists('tcsh_minlines')
+-    exec 'syn sync minlines=' . tcsh_minlines
++    if tcsh_minlines == 'fromstart'
++	syn sync fromstart
++    else
++	exec 'syn sync minlines=' . tcsh_minlines
++    endif
+ else
+     syn sync minlines=100	" Some completions can be quite long
+ endif
+diff -Nur runtime/syntax/tex.vim runtime/syntax/tex.vim
+--- runtime/syntax/tex.vim	2008-07-29 12:43:38.000000000 -0700
++++ runtime/syntax/tex.vim	2011-04-03 09:27:21.840275947 -0700
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+ " Language:	TeX
+ " Maintainer:	Dr. Charles E. Campbell, Jr. <[email protected]>
+-" Last Change:	Jun 03, 2008
+-" Version:	41
++" Last Change:	Jun 24, 2010
++" Version:	48
+ " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Notes: {{{1
+@@ -77,7 +77,7 @@
+  echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
+ endif
+ if g:tex_fold_enabled && &fdm == "manual"
+- set fdm=syntax
++ setl fdm=syntax
+ endif
+ 
+ " (La)TeX keywords: only use the letters a-zA-Z {{{1
+@@ -103,6 +103,7 @@
+ syn cluster texEnvGroup		contains=texMatcher,texMathDelim,texSpecialChar,texStatement
+ syn cluster texFoldGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract
+ syn cluster texMatchGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell
++syn cluster texStyleGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher
+ syn cluster texRefGroup		contains=texMatcher,texComment,texDelimiter
+ if !exists("tex_no_math")
+  syn cluster texMathZones	contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
+@@ -124,6 +125,10 @@
+  syn cluster texSubSectionGroup		contains=texSubSubSectionZone,texParaZone
+  syn cluster texSubSubSectionGroup	contains=texParaZone
+  syn cluster texParaGroup		contains=texSubParaZone
++ if has("conceal") && &enc == 'utf-8'
++  syn cluster texMathZoneGroup	add=texGreek,texSuperscript,texSubscript
++  syn cluster texMathMatchGroup	add=texGreek,texSuperscript,texSubscript
++ endif
+ endif
+ 
+ " Try to flag {} and () mismatches: {{{1
+@@ -179,24 +184,24 @@
+ 
+ " \begin{}/\end{} section markers: {{{1
+ syn match  texSectionMarker	"\\begin\>\|\\end\>" nextgroup=texSectionName
+-syn region texSectionName	matchgroup=Delimiter start="{" end="}"  contained nextgroup=texSectionModifier
+-syn region texSectionModifier	matchgroup=Delimiter start="\[" end="]" contained
++syn region texSectionName	matchgroup=Delimiter start="{" end="}"  contained	nextgroup=texSectionModifier	contains=texComment
++syn region texSectionModifier	matchgroup=Delimiter start="\[" end="]" contained	contains=texComment
+ 
+ " \documentclass, \documentstyle, \usepackage: {{{1
+ syn match  texDocType		"\\documentclass\>\|\\documentstyle\>\|\\usepackage\>"	nextgroup=texSectionName,texDocTypeArgs
+-syn region texDocTypeArgs	matchgroup=Delimiter start="\[" end="]"			contained	nextgroup=texSectionName
++syn region texDocTypeArgs	matchgroup=Delimiter start="\[" end="]"			contained	nextgroup=texSectionName	contains=texComment
+ 
+ " Preamble syntax-based folding support: {{{1
+ if g:tex_fold_enabled && has("folding")
+- syn region texPreamble	transparent fold	start='\zs\\documentclass\>' end='\ze\\begin{document}'	contains=@texMatchGroup
++ syn region texPreamble	transparent fold	start='\zs\\documentclass\>' end='\ze\\begin{document}'	contains=texStyle,@texMatchGroup
+ endif
+ 
+ " TeX input: {{{1
+ syn match texInput		"\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7				contains=texStatement
+-syn match texInputFile		"\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}"	contains=texStatement,texInputCurlies
++syn match texInputFile		"\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}"	contains=texStatement,texInputCurlies,texInputFileOpt
+ syn match texInputFile		"\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}"		contains=texStatement,texInputCurlies,texInputFileOpt
+ syn match texInputCurlies	"[{}]"								contained
+-syn region texInputFileOpt	matchgroup=Delimiter start="\[" end="\]"			contained
++syn region texInputFileOpt	matchgroup=Delimiter start="\[" end="\]"			contained	contains=texComment
+ 
+ " Type Styles (LaTeX 2.09): {{{1
+ syn match texTypeStyle		"\\rm\>"
+@@ -309,7 +314,7 @@
+    exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
+    exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+    exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+-   exe 'HiLink '.grpname.' texMath'
++   exe 'hi def link '.grpname.' texMath'
+    if a:starform
+     let grpname  = "texMathZone".a:sfx.'S'
+     let syncname = "texSyncMathZone".a:sfx.'S'
+@@ -317,7 +322,7 @@
+     exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
+     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
+-    exe 'HiLink '.grpname.' texMath'
++    exe 'hi def link '.grpname.' texMath'
+    endif
+  endfun
+ 
+@@ -336,11 +341,11 @@
+  call TexNewMathZone("L","xxalignat",0)
+ 
+  " Inline Math Zones: {{{2
+- syn region texMathZoneV	matchgroup=Delimiter start="\\("	matchgroup=Delimiter end="\\)\|%stopzone\>"	keepend contains=@texMathZoneGroup
+- syn region texMathZoneW	matchgroup=Delimiter start="\\\["	matchgroup=Delimiter end="\\]\|%stopzone\>"	keepend contains=@texMathZoneGroup
+- syn region texMathZoneX	matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>"	contains=@texMathZoneGroup
+- syn region texMathZoneY	matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>"	keepend		contains=@texMathZoneGroup
+- syn region texMathZoneZ	matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>"	contains=@texMathZoneGroup
++ syn region texMathZoneV	matchgroup=Delimiter start="\\("			matchgroup=Delimiter end="\\)\|%stopzone\>"	keepend contains=@texMathZoneGroup
++ syn region texMathZoneW	matchgroup=Delimiter start="\\\["			matchgroup=Delimiter end="\\]\|%stopzone\>"	keepend contains=@texMathZoneGroup
++ syn region texMathZoneX	matchgroup=Delimiter start="\$" skip="\\\\\|\\\$"	matchgroup=Delimiter end="\$" end="%stopzone\>"	contains=@texMathZoneGroup
++ syn region texMathZoneY	matchgroup=Delimiter start="\$\$" 			matchgroup=Delimiter end="\$\$" end="%stopzone\>"	keepend		contains=@texMathZoneGroup
++ syn region texMathZoneZ	matchgroup=texStatement start="\\ensuremath\s*{"	matchgroup=texStatement end="}" end="%stopzone\>"	contains=@texMathZoneGroup
+ 
+  syn match texMathOper		"[_^=]" contained
+ 
+@@ -399,7 +404,7 @@
+ " Separate lines used for verb` and verb# so that the end conditions {{{1
+ " will appropriately terminate.  Ideally vim would let me save a
+ " character from the start pattern and re-use it in the end-pattern.
+-syn region texZone		start="\\begin{verbatim}"		end="\\end{verbatim}\|%stopzone\>"	contains=@Spell
++syn region texZone		start="\\begin{[vV]erbatim}"		end="\\end{[vV]erbatim}\|%stopzone\>"	contains=@Spell
+ " listings package:
+ syn region texZone		start="\\begin{lstlisting}"		end="\\end{lstlisting}\|%stopzone\>"	contains=@Spell
+ " moreverb package:
+@@ -456,6 +461,126 @@
+ " TeX String Delimiters: {{{1
+ syn match texString		"\(``\|''\|,,\)"
+ 
++" makeatletter -- makeatother sections
++if !exists("g:tex_no_error")
++ syn region texStyle			matchgroup=texStatement start='\\makeatletter' end='\\makeatother'	contains=@texStyleGroup contained
++ syn match  texStyleStatement		"\\[a-zA-Z@]\+"	contained
++ syn region texStyleMatcher		matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"	end="}"		contains=@texStyleGroup,texError	contained
++ syn region texStyleMatcher		matchgroup=Delimiter start="\["				end="]"		contains=@texStyleGroup,texError	contained
++endif
++
++" support for 
++if has("conceal") && &enc == 'utf-8'
++ syn match texGreek '\\alpha\>'		contained conceal cchar=α
++ syn match texGreek '\\beta\>'		contained conceal cchar=β
++ syn match texGreek '\\gamma\>'		contained conceal cchar=γ
++ syn match texGreek '\\delta\>'		contained conceal cchar=δ
++ syn match texGreek '\\epsilon\>'	contained conceal cchar=ϵ
++ syn match texGreek '\\varepsilon\>'	contained conceal cchar=ε
++ syn match texGreek '\\zeta\>'		contained conceal cchar=ζ
++ syn match texGreek '\\eta\>'		contained conceal cchar=η
++ syn match texGreek '\\theta\>'		contained conceal cchar=θ
++ syn match texGreek '\\vartheta\>'	contained conceal cchar=ϑ
++ syn match texGreek '\\kappa\>'		contained conceal cchar=κ
++ syn match texGreek '\\lambda\>'	contained conceal cchar=λ
++ syn match texGreek '\\mu\>'		contained conceal cchar=μ
++ syn match texGreek '\\nu\>'		contained conceal cchar=ν
++ syn match texGreek '\\xi\>'		contained conceal cchar=ξ
++ syn match texGreek '\\pi\>'		contained conceal cchar=π
++ syn match texGreek '\\varpi\>'		contained conceal cchar=ϖ
++ syn match texGreek '\\rho\>'		contained conceal cchar=ρ
++ syn match texGreek '\\varrho\>'	contained conceal cchar=ϱ
++ syn match texGreek '\\sigma\>'		contained conceal cchar=σ
++ syn match texGreek '\\varsigma\>'	contained conceal cchar=ς
++ syn match texGreek '\\tau\>'		contained conceal cchar=τ
++ syn match texGreek '\\upsilon\>'	contained conceal cchar=υ
++ syn match texGreek '\\phi\>'		contained conceal cchar=φ
++ syn match texGreek '\\varphi\>'	contained conceal cchar=ϕ
++ syn match texGreek '\\chi\>'		contained conceal cchar=χ
++ syn match texGreek '\\psi\>'		contained conceal cchar=ψ
++ syn match texGreek '\\omega\>'		contained conceal cchar=ω
++ syn match texGreek '\\Gamma\>'		contained conceal cchar=Γ
++ syn match texGreek '\\Delta\>'		contained conceal cchar=Δ
++ syn match texGreek '\\Theta\>'		contained conceal cchar=Θ
++ syn match texGreek '\\Lambda\>'	contained conceal cchar=Λ
++ syn match texGreek '\\Xi\>'		contained conceal cchar=Χ
++ syn match texGreek '\\Pi\>'		contained conceal cchar=Π
++ syn match texGreek '\\Sigma\>'		contained conceal cchar=Σ
++ syn match texGreek '\\Upsilon\>'	contained conceal cchar=Υ
++ syn match texGreek '\\Phi\>'		contained conceal cchar=Φ
++ syn match texGreek '\\Psi\>'		contained conceal cchar=Ψ
++ syn match texGreek '\\Omega\>'		contained conceal cchar=Ω
++ syn match texSuperscript	'\^0'	contained conceal cchar=⁰
++ syn match texSuperscript	'\^1'	contained conceal cchar=¹
++ syn match texSuperscript	'\^2'	contained conceal cchar=²
++ syn match texSuperscript	'\^3'	contained conceal cchar=³
++ syn match texSuperscript	'\^4'	contained conceal cchar=⁴
++ syn match texSuperscript	'\^5'	contained conceal cchar=⁵
++ syn match texSuperscript	'\^6'	contained conceal cchar=⁶
++ syn match texSuperscript	'\^7'	contained conceal cchar=⁷
++ syn match texSuperscript	'\^8'	contained conceal cchar=⁸
++ syn match texSuperscript	'\^9'	contained conceal cchar=⁹
++ syn match texSuperscript	'\^a'	contained conceal cchar=ᵃ
++ syn match texSuperscript	'\^b'	contained conceal cchar=ᵇ
++ syn match texSuperscript	'\^c'	contained conceal cchar=ᶜ
++ syn match texSuperscript	'\^d'	contained conceal cchar=ᵈ
++ syn match texSuperscript	'\^e'	contained conceal cchar=ᵉ
++ syn match texSuperscript	'\^f'	contained conceal cchar=ᶠ
++ syn match texSuperscript	'\^g'	contained conceal cchar=ᵍ
++ syn match texSuperscript	'\^h'	contained conceal cchar=ʰ
++ syn match texSuperscript	'\^i'	contained conceal cchar=ⁱ
++ syn match texSuperscript	'\^j'	contained conceal cchar=ʲ
++ syn match texSuperscript	'\^k'	contained conceal cchar=ᵏ
++ syn match texSuperscript	'\^l'	contained conceal cchar=ˡ
++ syn match texSuperscript	'\^m'	contained conceal cchar=ᵐ
++ syn match texSuperscript	'\^n'	contained conceal cchar=ⁿ
++ syn match texSuperscript	'\^o'	contained conceal cchar=ᵒ
++ syn match texSuperscript	'\^p'	contained conceal cchar=ᵖ
++ syn match texSuperscript	'\^r'	contained conceal cchar=ʳ
++ syn match texSuperscript	'\^s'	contained conceal cchar=ˢ
++ syn match texSuperscript	'\^t'	contained conceal cchar=ᵗ
++ syn match texSuperscript	'\^u'	contained conceal cchar=ᵘ
++ syn match texSuperscript	'\^v'	contained conceal cchar=ᵛ
++ syn match texSuperscript	'\^w'	contained conceal cchar=ʷ
++ syn match texSuperscript	'\^x'	contained conceal cchar=ˣ
++ syn match texSuperscript	'\^y'	contained conceal cchar=ʸ
++ syn match texSuperscript	'\^z'	contained conceal cchar=ᶻ
++ syn match texSuperscript	'\^A'	contained conceal cchar=ᴬ
++ syn match texSuperscript	'\^B'	contained conceal cchar=ᴮ
++ syn match texSuperscript	'\^D'	contained conceal cchar=ᴰ
++ syn match texSuperscript	'\^E'	contained conceal cchar=ᴱ
++ syn match texSuperscript	'\^G'	contained conceal cchar=ᴳ
++ syn match texSuperscript	'\^H'	contained conceal cchar=ᴴ
++ syn match texSuperscript	'\^I'	contained conceal cchar=ᴵ
++ syn match texSuperscript	'\^J'	contained conceal cchar=ᴶ
++ syn match texSuperscript	'\^K'	contained conceal cchar=ᴷ
++ syn match texSuperscript	'\^L'	contained conceal cchar=ᴸ
++ syn match texSuperscript	'\^M'	contained conceal cchar=ᴹ
++ syn match texSuperscript	'\^N'	contained conceal cchar=ᴺ
++ syn match texSuperscript	'\^O'	contained conceal cchar=ᴼ
++ syn match texSuperscript	'\^P'	contained conceal cchar=ᴾ
++ syn match texSuperscript	'\^R'	contained conceal cchar=ᴿ
++ syn match texSuperscript	'\^T'	contained conceal cchar=ᵀ
++ syn match texSuperscript	'\^U'	contained conceal cchar=ᵁ
++ syn match texSuperscript	'\^W'	contained conceal cchar=ᵂ
++ syn match texSubscript		'_0'	contained conceal cchar=₀
++ syn match texSubscript		'_1'	contained conceal cchar=₁
++ syn match texSubscript		'_2'	contained conceal cchar=₂
++ syn match texSubscript		'_3'	contained conceal cchar=₃
++ syn match texSubscript		'_4'	contained conceal cchar=₄
++ syn match texSubscript		'_5'	contained conceal cchar=₅
++ syn match texSubscript		'_6'	contained conceal cchar=₆
++ syn match texSubscript		'_7'	contained conceal cchar=₇
++ syn match texSubscript		'_8'	contained conceal cchar=₈
++ syn match texSubscript		'_9'	contained conceal cchar=₉
++ syn match texSubscript		'_a'	contained conceal cchar=ₐ
++ syn match texSubscript		'_e'	contained conceal cchar=ₑ
++ syn match texSubscript		'_i'	contained conceal cchar=ᵢ
++ syn match texSubscript		'_o'	contained conceal cchar=ₒ
++ syn match texSubscript		'_u'	contained conceal cchar=ᵤ
++endif
++
++" ---------------------------------------------------------------------
+ " LaTeX synchronization: {{{1
+ syn sync maxlines=200
+ syn sync minlines=50
+@@ -478,6 +603,7 @@
+  syn sync match texSyncMathZoneA		groupthere NONE		"\\\(sub\)*section\>"
+ endif
+ 
++" ---------------------------------------------------------------------
+ " Highlighting: {{{1
+ if did_tex_syntax_inits == 1
+  let did_tex_syntax_inits= 2
+@@ -507,6 +633,7 @@
+    HiLink texMathDelimSet2	texMathDelim
+    HiLink texMathDelimKey	texMathDelim
+    HiLink texMathMatcher	texMath
++   HiLink texMathZoneV		texMath
+    HiLink texMathZoneW		texMath
+    HiLink texMathZoneX		texMath
+    HiLink texMathZoneY		texMath
+@@ -516,6 +643,7 @@
+   HiLink texSectionMarker	texCmdName
+   HiLink texSectionName		texSection
+   HiLink texSpaceCode		texStatement
++  HiLink texStyleStatement	texStatement
+   HiLink texTypeSize		texType
+   HiLink texTypeStyle		texType
+ 
+diff -Nur runtime/syntax/uil.vim runtime/syntax/uil.vim
+--- runtime/syntax/uil.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/uil.vim	2011-01-18 10:40:56.476155711 -0800
+@@ -1,8 +1,9 @@
+ " Vim syntax file
+ " Language:	Motif UIL (User Interface Language)
+ " Maintainer:	Thomas Koehler <[email protected]>
+-" Last Change:	2002 Sep 20
+-" URL:		http://jeanluc-picard.de/vim/syntax/uil.vim
++" Last Change:	2009 Dec 04
++" URL:		http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/uil.vim
++
+ 
+ " Quit when a syntax file was already loaded
+ if version < 600
+diff -Nur runtime/syntax/updatedb.vim runtime/syntax/updatedb.vim
+--- runtime/syntax/updatedb.vim	2007-10-25 07:36:25.000000000 -0700
++++ runtime/syntax/updatedb.vim	2011-01-18 10:40:56.476649785 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         updatedb.conf(5) configuration file
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2007-10-25
++" Latest Revision:  2009-05-25
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -18,7 +18,11 @@
+ syn match   updatedbBegin   display '^'
+                             \ nextgroup=updatedbName,updatedbComment skipwhite
+ 
+-syn keyword updatedbName    contained PRUNEFS PRUNEPATHS PRUNE_BIND_MOUNTS
++syn keyword updatedbName    contained
++                            \ PRUNEFS
++                            \ PRUNENAMES
++                            \ PRUNEPATHS
++                            \ PRUNE_BIND_MOUNTS
+                             \ nextgroup=updatedbNameEq
+ 
+ syn match   updatedbNameEq  contained display '=' nextgroup=updatedbValue
+diff -Nur runtime/syntax/vim.vim runtime/syntax/vim.vim
+--- runtime/syntax/vim.vim	2008-07-29 12:43:38.000000000 -0700
++++ runtime/syntax/vim.vim	2011-04-03 09:27:21.842662105 -0700
+@@ -1,8 +1,8 @@
+ " Vim syntax file
+-" Language:	Vim 7.2 script
++" Language:	Vim 7.3 script
+ " Maintainer:	Dr. Charles E. Campbell, Jr. <[email protected]>
+-" Last Change:	July 29, 2008
+-" Version:	7.2-82
++" Last Change:	June 24, 2010
++" Version:	7.3-1
+ " Automatically generated keyword lists: {{{1
+ 
+ " Quit when a syntax file was already loaded {{{2
+@@ -16,31 +16,31 @@
+ syn cluster vimCommentGroup	contains=vimTodo,@Spell
+ 
+ " regular vim commands {{{2
+-syn keyword vimCommand contained	abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu
+-syn keyword vimCommand contained	abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme
+-syn keyword vimCommand contained	al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu
+-syn keyword vimCommand contained	arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank]
+-syn keyword vimCommand contained	argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for 
++syn keyword vimCommand contained	abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echoe[rr] el[se] endfo[r] endw[hile] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] rundo san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] uns[ilent] vert[ical] vi[sual] wa[ll] winp[os] wp[revious] ws[verb] xa[ll] xmenu xnoremenu
++syn keyword vimCommand contained	abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echom[sg] elsei[f] endf[unction] ene[w] files fini[sh] foldc[lose] for grepa[dd] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbc[lose] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] up[date] vie[w] vmapc[lear] wh[ile] win[size] wq wundo x[it] XMLent xunme
++syn keyword vimCommand contained	al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] echon em[enu] en[dif] ex filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lli[st] lne[xt] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] nb[key] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] verb[ose] vim[grep] vne[w] winc[md] wn[ext] wqa[ll] wv[iminfo] xmapc[lear] XMLns xunmenu
++syn keyword vimCommand contained	arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier e[dit] emenu* endt[ry] exi[t] fina[lly] fix[del] foldd[oopen] go[to] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] nbs[tart] nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] ve[rsion] vimgrepa[dd] vs[plit] windo wN[ext] w[rite] X xme xnoreme y[ank]
++syn keyword vimCommand contained	argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] 
+ syn match   vimCommand contained	"\<z[-+^.=]"
+ 
+ " vimOptions are caught only when contained in a vimSet {{{2
+-syn keyword vimOption contained	acd ambiwidth arabicshape autowriteall backupdir bdlay binary breakat bufhidden cdpath cin cinwords columns completeopt cpo cscopetagorder csverb deco dictionary directory ed encoding errorfile exrc fdls fencs fileformats fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imak ims indentexpr is isp keywordprg lazyredraw lispwords ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt readonly rightleft rtp sb scroll sect sessionoptions shellpipe shellxquote showbreak shq slm smd spc spf sr sta sts swapfile sxq tabpagemax tags tbis terse thesaurus titleold toolbariconsize tsr ttyfast tx ut verbosefile virtualedit wb wfw wildcharm winaltkeys winminwidth wmnu write
+-syn keyword vimOption contained	ai ambw ari aw backupext beval biosk brk buflisted cedit cindent clipboard com confirm cpoptions cscopeverbose cuc def diff display edcompatible endofline errorformat fcl fdm fex filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imc imsearch indentkeys isf isprint km lbr list lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight redrawtime rightleftcmd ru sbo scrollbind sections sft shellquote shiftround showcmd si sm sn spell spl srr stal su swapsync syn tabstop tagstack tbs textauto tildeop titlestring top ttimeout ttym uc vb vfile visualbell wc wh wildignore window winwidth wmw writeany
+-syn keyword vimOption contained	akm anti arshape awa backupskip bex bioskey browsedir buftype cf cink cmdheight comments consk cpt cspc cul define diffexpr dy ef eol esckeys fcs fdn ff fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imcmdline inc indk isfname joinspaces kmp lcs listchars lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh remap rl ruf sbr scrolljump secure sh shellredir shiftwidth showfulltag sidescroll smartcase so spellcapcheck splitbelow ss startofline sua swb synmaxcol tag tal tenc textmode timeout tl tpm ttimeoutlen ttymouse ul vbs vi vop wcm whichwrap wildmenu winfixheight wiv wop writebackup
+-syn keyword vimOption contained	al antialias autochdir background balloondelay bexpr bk bs casemap cfu cinkeys cmdwinheight commentstring conskey cscopepathcomp csprg cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imd include inex isi js kp linebreak lm lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw report rlc ruler sc scrolloff sel shcf shellslash shm showmatch sidescrolloff smartindent softtabstop spellfile splitright ssl statusline suffixes swf syntax tagbsearch tb term textwidth timeoutlen tm tr ttm ttyscroll undolevels vdir viewdir wa wd wi wildmode winfixwidth wiw wrap writedelay
+-syn keyword vimOption contained	aleph ar autoindent backspace ballooneval bg bkc bsdir cb ch cino cmp compatible copyindent cscopeprg csqf cursorline dex digraph ead ei equalalways eventignore fde fdt fileencoding fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imdisable includeexpr inf isident key langmap lines lmap ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe restorescreen ro rulerformat scb scrollopt selection shell shelltemp shortmess showmode siso smarttab sol spelllang spr ssop stl suffixesadd switchbuf ta taglength tbi termbidi tf title to ts tty ttytype updatecount ve viewoptions wak weirdinvert wig wildoptions winheight wm wrapmargin ws
+-syn keyword vimOption contained	allowrevins arab autoread backup balloonexpr bh bl bsk ccv charconvert cinoptions cms complete cot cscopequickfix cst cwh dg dip eadirection ek equalprg ex fdi fen fileencodings flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imi incsearch infercase isk keymap langmenu linespace loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape revins rs runtimepath scr scs selectmode shellcmdflag shelltype shortname showtabline sj smc sp spellsuggest sps st stmp sw sws tabline tagrelative tbidi termencoding tgst titlelen toolbar tsl ttybuiltin tw updatetime verbose viminfo warn wfh wildchar wim winminheight wmh wrapscan ww
+-syn keyword vimOption contained	altkeymap arabic autowrite backupcopy bdir bin bomb bt cd ci cinw co completefunc cp cscopetag csto debug dict dir eb enc errorbells expandtab fdl fenc fileformat fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatekey iminsert inde insertmode iskeyword keymodel laststatus lisp lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt ri 
++syn keyword vimOption contained	acd ambiwidth arabicshape autowriteall backupdir bdlay binary breakat bufhidden cdpath cin cinwords columns completeopt cot cscopepathcomp csprg cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fillchars foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imcmdline inc indk isfname joinspaces kmp lcs listchars lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode ph preserveindent printheader pvh relativenumber rightleftcmd ru sbr scrolloff selection shellcmdflag shellxquote showcmd sidescroll smartindent sol spelllang spr ssop stl suffixesadd switchbuf ta taglength tbi termbidi tf title to ts tty ttytype ul ut verbosefile virtualedit wb wfw wildcharm winaltkeys winminwidth wmnu write
++syn keyword vimOption contained	ai ambw ari aw backupext beval biosk brk buflisted cedit cindent clipboard com conc cp cscopeprg csqf cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imd include inex isi js kp linebreak lm lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path pheader previewheight printmbcharset pvw remap rl ruf sc scrollopt selectmode shellpipe shiftround showfulltag sidescrolloff smarttab sp spellsuggest sps st stmp sw sws tabline tagrelative tbidi termencoding tgst titlelen toolbar tsl ttybuiltin tw undodir vb vfile visualbell wc wh wildignore window winwidth wmw writeany
++syn keyword vimOption contained	akm anti arshape awa backupskip bex bioskey browsedir buftype cf cink cmdheight comments conceallevel cpo cscopequickfix cst cursorline dex digraph ead ei equalalways eventignore fde fdt fileencoding fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imdisable includeexpr inf isident key langmap lines lmap ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pi previewwindow printmbfont qe report rlc ruler scb scs sessionoptions shellquote shiftwidth showmatch siso smc spc spf sr sta sts swapfile sxq tabpagemax tags tbis terse thesaurus titleold toolbariconsize tsr ttyfast tx undofile vbs vi vop wcm whichwrap wildmenu winfixheight wiv wop writebackup
++syn keyword vimOption contained	al antialias autochdir background balloondelay bexpr bk bs casemap cfu cinkeys cmdwinheight commentstring confirm cpoptions cscopetag csto cwh dg dip eadirection ek equalprg ex fdi fen fileencodings flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imi incsearch infercase isk keymap langmenu linespace loadplugins macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pm printdevice printoptions quoteescape restorescreen rnu rulerformat scr sect sft shellredir shm showmode sj smd spell spl srr stal su swapsync syn tabstop tagstack tbs textauto tildeop titlestring top ttimeout ttym uc undolevels vdir viewdir wa wd wi wildmode winfixwidth wiw wrap writedelay
++syn keyword vimOption contained	aleph ar autoindent backspace ballooneval bg bkc bsdir cb ch cino cmp compatible consk cpt cscopetagorder csverb debug dict dir eb enc errorbells expandtab fdl fenc fileformat fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatekey iminsert inde insertmode iskeyword keymodel laststatus lisp lpl magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste pex pmbcs printencoding prompt rdt revins ro runtimepath scroll sections sh shellslash shortmess showtabline slm sn spellcapcheck splitbelow ss startofline sua swb synmaxcol tag tal tenc textmode timeout tl tpm ttimeoutlen ttymouse udf updatecount ve viewoptions wak weirdinvert wig wildoptions winheight wm wrapmargin ws
++syn keyword vimOption contained	allowrevins arab autoread backup balloonexpr bh bl bsk ccv charconvert cinoptions cms complete conskey crb cscopeverbose cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformats fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imak ims indentexpr is isp keywordprg lazyredraw lispwords ls makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pexpr pmbfn printexpr pt readonly ri rs sb scrollbind secure shcf shelltemp shortname shq sm so spellfile splitright ssl statusline suffixes swf syntax tagbsearch tb term textwidth timeoutlen tm tr ttm ttyscroll udir updatetime verbose viminfo warn wfh wildchar wim winminheight wmh wrapscan ww
++syn keyword vimOption contained	altkeymap arabic autowrite backupcopy bdir bin bomb bt cd ci cinw co completefunc copyindent cryptmethod cspc cul def diff display edcompatible endofline errorformat fcl fdm fex filetype fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imc imsearch indentkeys isf isprint km lbr list lsp makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pfn popt printfont pumheight redrawtime rightleft rtp sbo scrolljump sel shell shelltype showbreak si smartcase softtabstop 
+ 
+ " vimOptions: These are the turn-off setting variants {{{2
+-syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopeverbose nocuc nocursorline nodg nodisable noeb noedcompatible noendofline noequalalways noesckeys noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw noremap norevins norightleft norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
+-syn keyword vimOption contained	noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocst nocul nodeco nodiff noea noed noek noeol noerrorbells noet noexpandtab nofen nofkmap nogd noguipty nohidden nohkmap nohkp nohlsearch noicon noim noimcmdline noincsearch noinfercase nois nojs nolbr nolisp noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly norestorescreen nori norightleftcmd norlc nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast novb nowa nowb nowfh nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
+-syn keyword vimOption contained	noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocscopetag nocsverb nocursorcolumn nodelcombine nodigraph 
++syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscopetag nocsverb nocursorbind nodeco nodiff noeb noek noequalalways noet noexpandtab nofen nofkmap nogd noguipty nohidden nohkmap nohkp nohlsearch noicon noim noimcmdline noimdisable noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norightleftcmd norlc noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx novisualbell nowarn noweirdinvert nowfw nowinfixheight nowiv nowrap nowrite nowritebackup
++syn keyword vimOption contained	noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobiosk nobl nocf nocindent noconsk nocp nocscopeverbose nocuc nocursorcolumn nodelcombine nodigraph noed noendofline noerrorbells noex noexrc nofk nofoldenable nogdefault nohid nohk nohkmapp nohls noic noignorecase noimc noimd noincsearch noinfercase nois nojs nolbr nolisp noloadplugins nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft norl nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast novb nowa nowb nowfh nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
++syn keyword vimOption contained	noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobioskey nobomb noci nocompatible noconskey nocrb nocst nocul nocursorline nodg noea noedcompatible noeol noesckeys 
+ 
+ " vimOptions: These are the invertible variants {{{2
+-syn keyword vimOption contained	invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbk invbuflisted invcin invconfirm invcopyindent invcscopeverbose invcuc invcursorline invdg invdisable inveb invedcompatible invendofline invequalalways invesckeys invex invexrc invfk invfoldenable invgdefault invhid invhk invhkmapp invhls invic invignorecase invimc invimd invinf invinsertmode invjoinspaces invlazyredraw invlinebreak invlist invlpl invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invremap invrevins invrightleft invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invvisualbell invwarn invweirdinvert invwfw invwinfixheight invwiv invwrap invwrite invwritebackup
+-syn keyword vimOption contained	invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbiosk invbl invcf invcindent invconsk invcp invcst invcul invdeco invdiff invea inved invek inveol inverrorbells invet invexpandtab invfen invfkmap invgd invguipty invhidden invhkmap invhkp invhlsearch invicon invim invimcmdline invincsearch invinfercase invis invjs invlbr invlisp invloadplugins invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invrestorescreen invri invrightleftcmd invrlc invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invvb invwa invwb invwfh invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
+-syn keyword vimOption contained	invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcscopetag invcsverb invcursorcolumn invdelcombine invdigraph 
++syn keyword vimOption contained	invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbk invbuflisted invcin invconfirm invcopyindent invcscopetag invcsverb invcursorbind invdeco invdiff inveb invek invequalalways invet invexpandtab invfen invfkmap invgd invguipty invhidden invhkmap invhkp invhlsearch invicon invim invimcmdline invimdisable invinf invinsertmode invjoinspaces invlazyredraw invlinebreak invlist invlpl invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrightleftcmd invrlc invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invvisualbell invwarn invweirdinvert invwfw invwinfixheight invwiv invwrap invwrite invwritebackup
++syn keyword vimOption contained	invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbiosk invbl invcf invcindent invconsk invcp invcscopeverbose invcuc invcursorcolumn invdelcombine invdigraph inved invendofline inverrorbells invex invexrc invfk invfoldenable invgdefault invhid invhk invhkmapp invhls invic invignorecase invimc invimd invincsearch invinfercase invis invjs invlbr invlisp invloadplugins invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrl invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invvb invwa invwb invwfh invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws
++syn keyword vimOption contained	invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcrb invcst invcul invcursorline invdg invea invedcompatible inveol invesckeys 
+ 
+ " termcap codes (which can also be set) {{{2
+ syn keyword vimOption contained	t_AB t_al t_bc t_ce t_cl t_Co t_cs t_Cs t_CS t_CV t_da t_db t_dl t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_te t_ti t_ts t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xs t_ZH t_ZR
+@@ -70,9 +70,9 @@
+ syn case match
+ 
+ " Function Names {{{2
+-syn keyword vimFuncName contained	abs argc atan bufexists bufname byte2line ceil cindent complete confirm count deepcopy diff_filler escape executable expr8 filereadable finddir floor foldclosed foldtext function getbufline getcharmod getcmdtype getfperm getftype getmatches getqflist gettabwinvar getwinposy glob has haslocaldir histadd histget hlexists hostname indent input inputlist inputsave insert islocked join len libcallnr line2byte localtime map mapcheck matchadd matchdelete matchlist max mkdir nextnonblank pathshorten prevnonblank pumvisible readfile reltimestr remote_foreground remote_read remove repeat reverse search searchpair searchpos serverlist setcmdpos setloclist setpos setreg setwinvar simplify sort spellbadword split str2float strftime string strpart strtrans substitute synIDattr synstack tabpagebuflist tabpagewinnr taglist tolower tr type virtcol winbufnr winheight winnr winrestview winwidth
+-syn keyword vimFuncName contained	add argidx browse buflisted bufnr byteidx changenr clearmatches complete_add copy cscope_connection delete diff_hlID eval exists extend filewritable findfile fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcmdline getcwd getfsize getline getpid getreg getwinposx getwinvar globpath has_key hasmapto histdel histnr hlID iconv index inputdialog inputrestore inputsecret isdirectory items keys libcall line lispindent log10 maparg match matcharg matchend matchstr min mode nr2char pow printf range reltime remote_expr remote_peek remote_send rename resolve round searchdecl searchpairpos server2client setbufvar setline setmatches setqflist settabwinvar shellescape sin soundfold spellsuggest sqrt str2nr stridx strlen strridx submatch synID synIDtrans system tabpagenr tagfiles tempname toupper trunc values visualmode wincol winline winrestcmd winsaveview writefile
+-syn keyword vimFuncName contained	append argv browsedir bufloaded bufwinnr call char2nr col complete_check cos cursor did_filetype empty eventhandler expand feedkeys filter float2nr fnamemodify foldlevel foreground get getchar getcmdpos getfontname getftime getloclist getpos getregtype 
++syn keyword vimFuncName contained	abs append argv atan2 bufexists bufname byte2line ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdtype getfperm getftype getmatches getqflist gettabvar getwinposy globpath haslocaldir histdel hlexists iconv input inputrestore insert items len line lispindent log map mapcheck matchadd matchdelete matchlist max mkdir mzeval nr2char pow printf range reltime remote_expr remote_peek remote_send rename resolve round searchdecl searchpairpos server2client setbufvar setline setmatches setqflist settabvar setwinvar simplify sinh soundfold spellsuggest sqrt str2nr stridx strlen strridx submatch synID synIDtrans system tabpagenr tagfiles tan tempname toupper trunc undofile virtcol winbufnr winheight winnr winrestview winwidth
++syn keyword vimFuncName contained	acos argc asin browse buflisted bufnr byteidx changenr clearmatches complete_add copy count deepcopy diff_filler escape executable expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcmdline getcwd getfsize getline getpid getreg gettabwinvar getwinvar has hasmapto histget hlID indent inputdialog inputsave isdirectory join libcall line2byte localtime log10 maparg match matcharg matchend matchstr min mode nextnonblank pathshorten prevnonblank pumvisible readfile reltimestr remote_foreground remote_read remove repeat reverse search searchpair searchpos serverlist setcmdpos setloclist setpos setreg settabwinvar shellescape sin sort spellbadword split str2float strftime string strpart strtrans substitute synIDattr synstack tabpagebuflist tabpagewinnr taglist tanh tolower tr type values visualmode wincol winline winrestcmd winsaveview writefile
++syn keyword vimFuncName contained	add argidx atan browsedir bufloaded bufwinnr call char2nr col complete_check cos cscope_connection delete diff_hlID eval exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdpos getfontname getftime getloclist getpos getregtype getwinposx glob has_key histadd histnr hostname index inputlist inputsecret islocked keys libcallnr 
+ 
+ "--- syntax above generated by mkvimvim ---
+ " Special Vim Highlighting (not automatic) {{{1
+@@ -99,8 +99,9 @@
+ syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd
+ syn match vimIsCommand	"\<\h\w*\>"	contains=vimCommand
+ syn match vimVar		"\<[bwglsav]:\K\k*\>"
+-syn match vimVar contained	"\<\K\k*\>"
+-syn keyword vimCommand contained	in
++syn match vimVar        contained	"\<\K\k*\>"
++syn match vimFBVar      contained   "\<[bwglsav]:\K\k*\>"
++syn keyword vimCommand  contained	in
+ 
+ " Insertions And Appends: insert append {{{2
+ " =======================
+@@ -127,7 +128,7 @@
+ 
+ " Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
+ " ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
+-syn cluster vimAugroupList	contains=vimIsCommand,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
++syn cluster vimAugroupList	contains=vimIsCommand,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'a'
+  syn region  vimAugroup	fold start="\<aug\%[roup]\>\s\+\K\k*" end="\<aug\%[roup]\>\s\+[eE][nN][dD]\>"	contains=vimAugroupKey,vimAutoCmd,@vimAugroupList keepend
+ else
+@@ -141,156 +142,154 @@
+ 
+ " Operators: {{{2
+ " =========
+-syn cluster vimOperGroup	contains=vimOper,vimOperParen,vimNumber,vimString,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 cluster	vimOperGroup	contains=vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue
++syn match	vimOper	"\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
++syn match	vimOper	"||\|&&\|[-+.]"	skipwhite nextgroup=vimString,vimSpecFile
++syn region	vimOperParen 	oneline matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
++syn region	vimOperParen	oneline matchgroup=vimSep	start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
+ if !exists("g:vimsyn_noerror")
+- syn match  vimOperError	")"
++ syn match	vimOperError	")"
+ endif
+ 
+ " Functions : Tag is provided for those who wish to highlight tagged functions {{{2
+ " =========
+-syn cluster vimFuncList	contains=vimCommand,vimFuncKey,Tag,vimFuncSID
+-syn cluster vimFuncBodyList	contains=vimAddress,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimFunc,vimFunction,vimFunctionError,vimFuncVar,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
+-if !exists("g:vimsyn_noerror")
+- syn match   vimFunctionError	"\<fu\%[nction]!\=\s\+\zs\U\i\{-}\ze\s*("                	contains=vimFuncKey,vimFuncBlank nextgroup=vimFuncBody
+-endif
+-syn match   vimFunction	"\<fu\%[nction]!\=\s\+\(\(<[sS][iI][dD]>\|[Ss]:\|\u\|\i\+#\)\i*\|\(g:\)\=\(\I\i*\.\)\+\I\i*\)\ze\s*("	contains=@vimFuncList nextgroup=vimFuncBody
++syn cluster	vimFuncList	contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
++syn cluster	vimFuncBodyList	contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIf,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUserCommand
++syn match	vimFunction	"\<fu\%[nction]!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("	contains=@vimFuncList nextgroup=vimFuncBody
++
+ if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'f'
+- syn region  vimFuncBody  contained	fold start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
++ syn region	vimFuncBody  contained	fold start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
+ else                                                                                                          
+- syn region  vimFuncBody  contained	start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
++ syn region	vimFuncBody  contained	start="\ze("	matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)"		contains=@vimFuncBodyList
+ endif
+-syn match   vimFuncVar   contained	"a:\(\I\i*\|\d\+\)"
+-syn match   vimFuncSID   contained	"\c<sid>\|\<s:"
+-syn keyword vimFuncKey   contained	fu[nction]
+-syn match   vimFuncBlank contained	"\s\+"
++syn match	vimFuncVar   contained	"a:\(\K\k*\|\d\+\)"
++syn match	vimFuncSID   contained	"\c<sid>\|\<s:"
++syn keyword	vimFuncKey   contained	fu[nction]
++syn match	vimFuncBlank contained	"\s\+"
+ 
+-syn keyword vimPattern   contained	start	skip	end
++syn keyword	vimPattern   contained	start	skip	end
+ 
+ " Special Filenames, Modifiers, Extension Removal: {{{2
+ " ===============================================
+-syn match vimSpecFile	"<c\(word\|WORD\)>"	nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile	"<\([acs]file\|amatch\|abuf\)>"	nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile	"\s%[ \t:]"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile	"\s%$"ms=s+1	nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile	"\s%<"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFile	"#\d\+\|[#%]<\>"	nextgroup=vimSpecFileMod,vimSubst
+-syn match vimSpecFileMod	"\(:[phtre]\)\+"	contained
++syn match	vimSpecFile	"<c\(word\|WORD\)>"	nextgroup=vimSpecFileMod,vimSubst
++syn match	vimSpecFile	"<\([acs]file\|amatch\|abuf\)>"	nextgroup=vimSpecFileMod,vimSubst
++syn match	vimSpecFile	"\s%[ \t:]"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
++syn match	vimSpecFile	"\s%$"ms=s+1	nextgroup=vimSpecFileMod,vimSubst
++syn match	vimSpecFile	"\s%<"ms=s+1,me=e-1	nextgroup=vimSpecFileMod,vimSubst
++syn match	vimSpecFile	"#\d\+\|[#%]<\>"	nextgroup=vimSpecFileMod,vimSubst
++syn match	vimSpecFileMod	"\(:[phtre]\)\+"	contained
+ 
+ " User-Specified Commands: {{{2
+ " =======================
+-syn cluster vimUserCmdList	contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFunction,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
+-syn keyword vimUserCommand	contained	com[mand]
+-syn match   vimUserCmd	"\<com\%[mand]!\=\>.*$"	contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
+-syn match   vimUserAttrb	contained	"-n\%[args]=[01*?+]"	contains=vimUserAttrbKey,vimOper
+-syn match   vimUserAttrb	contained	"-com\%[plete]="	contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
+-syn match   vimUserAttrb	contained	"-ra\%[nge]\(=%\|=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
+-syn match   vimUserAttrb	contained	"-cou\%[nt]=\d\+"	contains=vimNumber,vimOper,vimUserAttrbKey
+-syn match   vimUserAttrb	contained	"-bang\=\>"	contains=vimOper,vimUserAttrbKey
+-syn match   vimUserAttrb	contained	"-bar\>"	contains=vimOper,vimUserAttrbKey
+-syn match   vimUserAttrb	contained	"-re\%[gister]\>"	contains=vimOper,vimUserAttrbKey
++syn cluster	vimUserCmdList	contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFilter,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
++syn keyword	vimUserCommand	contained	com[mand]
++syn match	vimUserCmd	"\<com\%[mand]!\=\>.*$"	contains=vimUserAttrb,vimUserCommand,@vimUserCmdList
++syn match	vimUserAttrb	contained	"-n\%[args]=[01*?+]"	contains=vimUserAttrbKey,vimOper
++syn match	vimUserAttrb	contained	"-com\%[plete]="	contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
++syn match	vimUserAttrb	contained	"-ra\%[nge]\(=%\|=\d\+\)\="	contains=vimNumber,vimOper,vimUserAttrbKey
++syn match	vimUserAttrb	contained	"-cou\%[nt]=\d\+"	contains=vimNumber,vimOper,vimUserAttrbKey
++syn match	vimUserAttrb	contained	"-bang\=\>"	contains=vimOper,vimUserAttrbKey
++syn match	vimUserAttrb	contained	"-bar\>"	contains=vimOper,vimUserAttrbKey
++syn match	vimUserAttrb	contained	"-re\%[gister]\>"	contains=vimOper,vimUserAttrbKey
+ if !exists("g:vimsyn_noerror")
+- syn match   vimUserCmdError	contained	"\S\+\>"
++ syn match	vimUserCmdError	contained	"\S\+\>"
+ endif
+ syn case ignore
+-syn keyword vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
+-syn keyword vimUserAttrbCmplt contained	augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var
+-syn keyword vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
+-syn match   vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
++syn keyword	vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
++syn keyword	vimUserAttrbCmplt contained	augroup buffer command dir environment event expression file function help highlight mapping menu option shellcmd something tag tag_listfiles var
++syn keyword	vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
++syn match	vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
+ 
+ syn case match
+-syn match   vimUserAttrbCmplt contained	"custom,\u\w*"
++syn match	vimUserAttrbCmplt contained	"custom,\u\w*"
+ 
+ " Lower Priority Comments: after some vim commands... {{{2
+ " =======================
+-syn match  vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
+-syn match  vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
+-syn match  vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
+-syn region vimCommentString	contained oneline start='\S\s\+"'ms=e	end='"'
++syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
++syn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
++syn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
++syn region	vimCommentString	contained oneline start='\S\s\+"'ms=e	end='"'
+ 
+ " Environment Variables: {{{2
+ " =====================
+-syn match vimEnvvar	"\$\I\i*"
+-syn match vimEnvvar	"\${\I\i*}"
++syn match	vimEnvvar	"\$\I\i*"
++syn match	vimEnvvar	"\${\I\i*}"
+ 
+ " In-String Specials: {{{2
+ " Try to catch strings, if nothing else matches (therefore it must precede the others!)
+ "  vimEscapeBrace handles ["]  []"] (ie. "s don't terminate string inside [])
+-syn region vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
+-syn match  vimPatSepErr	contained	"\\)"
+-syn match  vimPatSep	contained	"\\|"
+-syn region vimPatSepZone	oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"	contains=@vimStringGroup
+-syn region vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
+-syn match  vimNotPatSep	contained	"\\\\"
+-syn cluster vimStringGroup	contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
+-syn region vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=@vimStringGroup
+-syn region vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
+-syn region vimString	oneline	start=+=!+lc=1	skip=+\\\\\|\\!+ end=+!+	contains=@vimStringGroup
+-syn region vimString	oneline	start="=+"lc=1	skip="\\\\\|\\+" end="+"	contains=@vimStringGroup
+-syn region vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup
+-syn match  vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
+-syn match  vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
++syn region	vimEscapeBrace	oneline   contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
++syn match	vimPatSepErr	contained	"\\)"
++syn match	vimPatSep	contained	"\\|"
++syn region	vimPatSepZone	oneline   contained   matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\]['"]"	contains=@vimStringGroup
++syn region	vimPatRegion	contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)"	contains=@vimSubstList oneline
++syn match	vimNotPatSep	contained	"\\\\"
++syn cluster	vimStringGroup	contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
++syn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+	contains=@vimStringGroup
++syn region	vimString	oneline keepend	start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+
++syn region	vimString	oneline	start=+=!+lc=1	skip=+\\\\\|\\!+ end=+!+	contains=@vimStringGroup
++syn region	vimString	oneline	start="=+"lc=1	skip="\\\\\|\\+" end="+"	contains=@vimStringGroup
++syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup
++syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
++syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
+ 
+ " Substitutions: {{{2
+ " =============
+-syn cluster vimSubstList	contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
+-syn cluster vimSubstRepList	contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
+-syn cluster vimSubstList	add=vimCollection
+-syn match   vimSubst	"\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
+-syn match   vimSubst	"s\%[ubstitute][:[:alpha:]]\@!"	nextgroup=vimSubstPat contained
+-syn match   vimSubst	"/\zss\%[ubstitute]\ze/"	nextgroup=vimSubstPat
+-syn match   vimSubst1       contained	"s\%[ubstitute]\>"	nextgroup=vimSubstPat
+-syn region  vimSubstPat     contained	matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1	 contains=@vimSubstList	nextgroup=vimSubstRep4	oneline
+-syn region  vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
+-syn region  vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
+-syn match   vimCollClassErr contained	"\[:.\{-\}:\]"
+-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   vimSubstFlags   contained	"[&cegiIpr]\+"
++syn cluster	vimSubstList	contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
++syn cluster	vimSubstRepList	contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
++syn cluster	vimSubstList	add=vimCollection
++syn match	vimSubst	"\(:\+\s*\|^\s*\||\s*\)\<s\%[ubstitute][:[:alpha:]]\@!" nextgroup=vimSubstPat
++syn match	vimSubst	"s\%[ubstitute][:#[:alpha:]]\@!"	nextgroup=vimSubstPat contained
++syn match	vimSubst	"/\zss\%[ubstitute]\ze/"	nextgroup=vimSubstPat
++syn match	vimSubst1       contained	"s\%[ubstitute]\>"	nextgroup=vimSubstPat
++syn region	vimSubstPat     contained	matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1	 contains=@vimSubstList	nextgroup=vimSubstRep4	oneline
++syn region	vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
++syn region	vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
++syn match	vimCollClassErr contained	"\[:.\{-\}:\]"
++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	vimSubstFlags   contained	"[&cegiIpr]\+"
+ 
+ " 'String': {{{2
+-syn match  vimString	"[^(,]'[^']\{-}\zs'"
++syn match	vimString	"[^(,]'[^']\{-}\zs'"
+ 
+ " Marks, Registers, Addresses, Filters: {{{2
+-syn match  vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match  vimMark	"'[<>]\ze[-+,!]"		nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match  vimMark	",\zs'[<>]\ze"		nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match  vimMark	"[!,:]\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match  vimMark	"\<norm\%[al]\s\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
+-syn match  vimMarkNumber	"[-+]\d\+"		nextgroup=vimSubst contained contains=vimOper
+-syn match  vimPlainMark contained	"'[a-zA-Z0-9]"
+-
+-syn match  vimRegister	'[^,;]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
+-syn match  vimRegister	'\<norm\s\+\zs"[a-zA-Z0-9]'
+-syn match  vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
+-syn match  vimRegister	'@"'
+-syn match  vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
++syn match	vimMark	"'[a-zA-Z0-9]\ze[-+,!]"	nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match	vimMark	"'[<>]\ze[-+,!]"		nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match	vimMark	",\zs'[<>]\ze"		nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match	vimMark	"[!,:]\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match	vimMark	"\<norm\%[al]\s\zs'[a-zA-Z0-9]"	nextgroup=vimOper,vimMarkNumber,vimSubst
++syn match	vimMarkNumber	"[-+]\d\+"		nextgroup=vimSubst contained contains=vimOper
++syn match	vimPlainMark contained	"'[a-zA-Z0-9]"
++
++syn match	vimRegister	'[^,;[{]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":]'
++syn match	vimRegister	'\<norm\s\+\zs"[a-zA-Z0-9]'
++syn match	vimRegister	'\<normal\s\+\zs"[a-zA-Z0-9]'
++syn match	vimRegister	'@"'
++syn match	vimPlainRegister contained	'"[a-zA-Z0-9\-:.%#*+=]'
+ 
+-syn match  vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
+-syn match  vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
++syn match	vimAddress	",\zs[.$]"	skipwhite nextgroup=vimSubst1
++syn match	vimAddress	"%\ze\a"	skipwhite nextgroup=vimString,vimSubst1
+ 
+-syn match  vimFilter contained	"^!.\{-}\(|\|$\)"		contains=vimSpecFile
+-syn match  vimFilter contained	"\A!.\{-}\(|\|$\)"ms=s+1	contains=vimSpecFile
++syn match	vimFilter contained	"^!.\{-}\(|\|$\)"		contains=vimSpecFile
++syn match	vimFilter contained	"\A!.\{-}\(|\|$\)"ms=s+1	contains=vimSpecFile
+ 
+ " Complex repeats (:h complex-repeat) {{{2
+-"syn match  vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
+-"syn match  vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
++syn match	vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]'lc=1
++syn match	vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\)'
+ 
+ " Set command and associated set-options (vimOptions) with comment {{{2
+-syn region vimSet		matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
+-syn region vimSetEqual  contained	start="="	skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
+-syn region vimSetString contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
+-syn match  vimSetSep    contained	"[,:]"
+-syn match  vimSetMod	contained	"&vim\|[!&]\|all&"
++syn region	vimSet		matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|set\)\>" skip="\%(\\\\\)*\\." end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod
++syn region	vimSetEqual	contained	start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation oneline
++syn region	vimSetString	contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
++syn match	vimSetSep	contained	"[,:]"
++syn match	vimSetMod	contained	"&vim\=\|[!&?<]\|all&"
+ 
+ " Let {{{2
+ " ===
+-syn keyword vimLet	let	unl[et]	skipwhite nextgroup=vimVar
++syn keyword	vimLet	let	unl[et]	skipwhite nextgroup=vimVar,vimFuncVar
+ 
+ " Abbreviations {{{2
+ " =============
+@@ -298,232 +297,235 @@
+ 
+ " Autocmd {{{2
+ " =======
+-syn match   vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
+-syn match   vimAutoCmdSpace	contained	"\s\+"	nextgroup=vimAutoCmdSfxList
+-syn match   vimAutoCmdSfxList	contained	"\S*"
+-syn keyword vimAutoCmd	au[tocmd] do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
++syn match	vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
++syn match	vimAutoCmdSpace	contained	"\s\+"	nextgroup=vimAutoCmdSfxList
++syn match	vimAutoCmdSfxList	contained	"\S*"
++syn keyword	vimAutoCmd	au[tocmd] do[autocmd] doautoa[ll]	skipwhite nextgroup=vimAutoEventList
+ 
+ " Echo and Execute -- prefer strings! {{{2
+ " ================
+-syn region  vimEcho	oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimString,varVar
+-syn region  vimExecute	oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimIsCommand,vimString,vimOper,vimVar,vimNotation,vimOperParen
+-syn match   vimEchoHL	"echohl\="	skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
++syn region	vimEcho	oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
++syn region	vimExecute	oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
++syn match	vimEchoHL	"echohl\="	skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
+ syn case ignore
+-syn keyword vimEchoHLNone	none
++syn keyword	vimEchoHLNone	none
+ syn case match
+ 
+ " Maps {{{2
+ " ====
+-syn match   vimMap	"\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
+-syn keyword vimMap	cm[ap] cno[remap] im[ap] ino[remap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] snor[emap] vm[ap] vn[oremap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+-syn keyword vimMap	mapc[lear]
+-syn match   vimMapLhs    contained	"\S\+"	contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
+-syn match   vimMapBang   contained	"!"	skipwhite nextgroup=vimMapMod,vimMapLhs
+-syn match   vimMapMod    contained	"\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
+-syn match   vimMapRhs    contained  ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
+-syn match   vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
++syn match	vimMap		"\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
++syn keyword	vimMap		cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
++syn keyword	vimMap		mapc[lear]
++syn keyword	vimUnmap		cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
++syn match	vimMapLhs	contained	"\S\+"			contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
++syn match	vimMapBang	contained	"!"			skipwhite nextgroup=vimMapMod,vimMapLhs
++syn match	vimMapMod	contained	"\c<\(buffer\|expr\|\(local\)\=leader\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
++syn match	vimMapRhs	contained	".*" contains=vimNotation,vimCtrlChar	skipnl nextgroup=vimMapRhsExtend
++syn match	vimMapRhsExtend	contained	"^\s*\\.*$"			contains=vimContinue
+ syn case ignore
+-syn keyword vimMapModKey contained	buffer	expr	leader	localleader	plug	script	sid	silent	unique
++syn keyword	vimMapModKey	contained	buffer	expr	leader	localleader	plug	script	sid	silent	unique
+ syn case match
+ 
+ " Menus {{{2
+ " =====
+-syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
+-syn keyword vimCommand	am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
+-syn match   vimMenuName	"[^ \t\\<]\+"	contained nextgroup=vimMenuNameMore,vimMenuMap
+-syn match   vimMenuPriority	"\d\+\(\.\d\+\)*"	contained skipwhite nextgroup=vimMenuName
+-syn match   vimMenuNameMore	"\c\\\s\|<tab>\|\\\."	contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
+-syn match   vimMenuMod    contained	"\c<\(script\|silent\)\+>"  skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
+-syn match   vimMenuMap	"\s"	contained skipwhite nextgroup=vimMenuRhs
+-syn match   vimMenuRhs	".*$"	contained contains=vimString,vimComment,vimIsCommand
+-syn match   vimMenuBang	"!"	contained skipwhite nextgroup=@vimMenuList
++syn cluster	vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
++syn keyword	vimCommand	am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList
++syn match	vimMenuName	"[^ \t\\<]\+"	contained nextgroup=vimMenuNameMore,vimMenuMap
++syn match	vimMenuPriority	"\d\+\(\.\d\+\)*"	contained skipwhite nextgroup=vimMenuName
++syn match	vimMenuNameMore	"\c\\\s\|<tab>\|\\\."	contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
++syn match	vimMenuMod    contained	"\c<\(script\|silent\)\+>"  skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
++syn match	vimMenuMap	"\s"	contained skipwhite nextgroup=vimMenuRhs
++syn match	vimMenuRhs	".*$"	contained contains=vimString,vimComment,vimIsCommand
++syn match	vimMenuBang	"!"	contained skipwhite nextgroup=@vimMenuList
+ 
+ " Angle-Bracket Notation (tnx to Michael Geddes) {{{2
+ " ======================
+ syn case ignore
+-syn match vimNotation	"\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
+-syn match vimNotation	"\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
+-syn match vimNotation	"\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"		contains=vimBracket
+-syn match vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1			contains=vimBracket
+-syn match vimNotation	'\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>'	contains=vimBracket
+-syn match vimNotation	"\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>"		contains=vimBracket
+-syn match vimBracket contained	"[\\<>]"
++syn match	vimNotation	"\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|space\|k\=\(page\)\=\(\|down\|up\)\)>" contains=vimBracket
++syn match	vimNotation	"\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
++syn match	vimNotation	"\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"		contains=vimBracket
++syn match	vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1			contains=vimBracket
++syn match	vimNotation	'\(\\\|<lt>\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>'	contains=vimBracket
++syn match	vimNotation	"\(\\\|<lt>\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>"		contains=vimBracket
++syn match	vimBracket contained	"[\\<>]"
+ syn case match
+ 
+ " User Function Highlighting {{{2
+ " (following Gautam Iyer's suggestion)
+ " ==========================
+-syn match vimFunc		"\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("		contains=vimFuncName,vimUserFunc,vimExecute
+-syn match vimUserFunc contained	"\%(\%([gGsS]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation
+-syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>"
++syn match vimFunc		"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("		contains=vimFuncName,vimUserFunc,vimExecute
++syn match vimUserFunc contained	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>"	contains=vimNotation
++syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"
+ 
+ " Errors And Warnings: {{{2
+ " ====================
+ if !exists("g:vimsyn_noerror")
+- syn match vimElseIfErr	"\<else\s\+if\>"
+- syn match vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
++ syn match	vimFunctionError	"\s\zs[a-z0-9]\i\{-}\ze\s*("			contained contains=vimFuncKey,vimFuncBlank
++" syn match	vimFunctionError	"\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)[0-9]\i\{-}\ze\s*("	contained contains=vimFuncKey,vimFuncBlank
++ syn match	vimElseIfErr	"\<else\s\+if\>"
++ syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
+ endif
+ 
+ " Norm {{{2
+ " ====
+-syn match vimNorm		"\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
+-syn match vimNormCmds contained	".*$"
++syn match	vimNorm		"\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
++syn match	vimNormCmds contained	".*$"
+ 
+ " Syntax {{{2
+ "=======
+-syn match   vimGroupList	contained	"@\=[^ \t,]*"	contains=vimGroupSpecial,vimPatSep
+-syn match   vimGroupList	contained	"@\=[^ \t,]*,"	nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
+-syn keyword vimGroupSpecial	contained	ALL	ALLBUT
+-if !exists("g:vimsyn_noerror")
+- syn match   vimSynError	contained	"\i\+"
+- syn match   vimSynError	contained	"\i\+="	nextgroup=vimGroupList
+-endif
+-syn match   vimSynContains	contained	"\<contain\(s\|edin\)="	nextgroup=vimGroupList
+-syn match   vimSynKeyContainedin	contained	"\<containedin="	nextgroup=vimGroupList
+-syn match   vimSynNextgroup	contained	"nextgroup="	nextgroup=vimGroupList
++syn match	vimGroupList	contained	"@\=[^ \t,]*"	contains=vimGroupSpecial,vimPatSep
++syn match	vimGroupList	contained	"@\=[^ \t,]*,"	nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
++syn keyword	vimGroupSpecial	contained	ALL	ALLBUT	CONTAINED	TOP
++if !exists("g:vimsyn_noerror")
++ syn match	vimSynError	contained	"\i\+"
++ syn match	vimSynError	contained	"\i\+="	nextgroup=vimGroupList
++endif
++syn match	vimSynContains	contained	"\<contain\(s\|edin\)="	nextgroup=vimGroupList
++syn match	vimSynKeyContainedin	contained	"\<containedin="	nextgroup=vimGroupList
++syn match	vimSynNextgroup	contained	"nextgroup="	nextgroup=vimGroupList
+ 
+-syn match   vimSyntax	"\<sy\%[ntax]\>"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+-syn match   vimAuSyntax	contained	"\s+sy\%[ntax]"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
++syn match	vimSyntax	"\<sy\%[ntax]\>"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
++syn match	vimAuSyntax	contained	"\s+sy\%[ntax]"	contains=vimCommand skipwhite nextgroup=vimSynType,vimComment
+ 
+ " Syntax: case {{{2
+-syn keyword vimSynType	contained	case	skipwhite nextgroup=vimSynCase,vimSynCaseError
++syn keyword	vimSynType	contained	case	skipwhite nextgroup=vimSynCase,vimSynCaseError
+ if !exists("g:vimsyn_noerror")
+- syn match   vimSynCaseError	contained	"\i\+"
++ syn match	vimSynCaseError	contained	"\i\+"
+ endif
+-syn keyword vimSynCase	contained	ignore	match
++syn keyword	vimSynCase	contained	ignore	match
+ 
+ " Syntax: clear {{{2
+-syn keyword vimSynType	contained	clear	skipwhite nextgroup=vimGroupList
++syn keyword	vimSynType	contained	clear	skipwhite nextgroup=vimGroupList
+ 
+ " Syntax: cluster {{{2
+-syn keyword vimSynType	contained	cluster	skipwhite nextgroup=vimClusterName
+-syn region  vimClusterName	contained	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+-syn match   vimGroupAdd	contained	"add="	nextgroup=vimGroupList
+-syn match   vimGroupRem	contained	"remove="	nextgroup=vimGroupList
++syn keyword	vimSynType	contained	cluster	skipwhite nextgroup=vimClusterName
++syn region	vimClusterName	contained	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
++syn match	vimGroupAdd	contained	"add="	nextgroup=vimGroupList
++syn match	vimGroupRem	contained	"remove="	nextgroup=vimGroupList
+ 
+ " Syntax: include {{{2
+-syn keyword vimSynType	contained	include	skipwhite nextgroup=vimGroupList
++syn keyword	vimSynType	contained	include	skipwhite nextgroup=vimGroupList
+ 
+ " Syntax: keyword {{{2
+-syn cluster vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
+-syn keyword vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
+-syn region  vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
+-syn match   vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
++syn cluster	vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
++syn keyword	vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
++syn region	vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
++syn match	vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+ 
+ " Syntax: match {{{2
+-syn cluster vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
+-syn keyword vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
+-syn region  vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
+-syn match   vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
++syn cluster	vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
++syn keyword	vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
++syn region	vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
++syn match	vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+ if has("conceal")
+- syn match   vimSynMtchOpt	contained	"\<cchar="	nextgroup=VimSynMtchCchar
+- syn match   vimSynMtchCchar	contained	"."
++ syn match	vimSynMtchOpt	contained	"\<cchar="	nextgroup=VimSynMtchCchar
++ syn match	vimSynMtchCchar	contained	"\S"
+ endif
+ 
+ " Syntax: off and on {{{2
+-syn keyword vimSynType	contained	enable	list	manual	off	on	reset
++syn keyword	vimSynType	contained	enable	list	manual	off	on	reset
+ 
+ " Syntax: region {{{2
+-syn cluster vimSynRegPatGroup	contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
+-syn cluster vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
+-syn keyword vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
+-syn region  vimSynRegion	contained keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
+-syn match   vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+-syn match   vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
+-syn match   vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
+-syn region  vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
+-syn match   vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
+-syn match   vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
+-syn match   vimSynPatMod	contained	"lc=\d\+"
+-syn match   vimSynPatMod	contained	"lc=\d\+," nextgroup=vimSynPatMod
+-syn region  vimSynPatRange	contained	start="\["	skip="\\\\\|\\]"   end="]"
+-syn match   vimSynNotPatRange	contained	"\\\\\|\\\["
+-syn match   vimMtchComment	contained	'"[^"]\+$'
++syn cluster	vimSynRegPatGroup	contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
++syn cluster	vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
++syn keyword	vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
++syn region	vimSynRegion	contained keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
++syn match	vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
++syn match	vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
++syn match	vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
++syn region	vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
++syn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
++syn match	vimSynPatMod	contained	"\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
++syn match	vimSynPatMod	contained	"lc=\d\+"
++syn match	vimSynPatMod	contained	"lc=\d\+," nextgroup=vimSynPatMod
++syn region	vimSynPatRange	contained	start="\["	skip="\\\\\|\\]"   end="]"
++syn match	vimSynNotPatRange	contained	"\\\\\|\\\["
++syn match	vimMtchComment	contained	'"[^"]\+$'
+ 
+ " Syntax: sync {{{2
+ " ============
+ syn keyword vimSynType	contained	sync	skipwhite	nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
+ if !exists("g:vimsyn_noerror")
+- syn match   vimSyncError	contained	"\i\+"
++ syn match	vimSyncError	contained	"\i\+"
+ endif
+-syn keyword vimSyncC	contained	ccomment	clear	fromstart
+-syn keyword vimSyncMatch	contained	match	skipwhite	nextgroup=vimSyncGroupName
+-syn keyword vimSyncRegion	contained	region	skipwhite	nextgroup=vimSynReg
+-syn match   vimSyncLinebreak	contained	"\<linebreaks="	skipwhite	nextgroup=vimNumber
+-syn keyword vimSyncLinecont	contained	linecont	skipwhite	nextgroup=vimSynRegPat
+-syn match   vimSyncLines	contained	"\(min\|max\)\=lines="	nextgroup=vimNumber
+-syn match   vimSyncGroupName	contained	"\k\+"	skipwhite	nextgroup=vimSyncKey
+-syn match   vimSyncKey	contained	"\<groupthere\|grouphere\>"	skipwhite nextgroup=vimSyncGroup
+-syn match   vimSyncGroup	contained	"\k\+"	skipwhite	nextgroup=vimSynRegPat,vimSyncNone
+-syn keyword vimSyncNone	contained	NONE
++syn keyword	vimSyncC	contained	ccomment	clear	fromstart
++syn keyword	vimSyncMatch	contained	match	skipwhite	nextgroup=vimSyncGroupName
++syn keyword	vimSyncRegion	contained	region	skipwhite	nextgroup=vimSynReg
++syn match	vimSyncLinebreak	contained	"\<linebreaks="	skipwhite	nextgroup=vimNumber
++syn keyword	vimSyncLinecont	contained	linecont	skipwhite	nextgroup=vimSynRegPat
++syn match	vimSyncLines	contained	"\(min\|max\)\=lines="	nextgroup=vimNumber
++syn match	vimSyncGroupName	contained	"\k\+"	skipwhite	nextgroup=vimSyncKey
++syn match	vimSyncKey	contained	"\<groupthere\|grouphere\>"	skipwhite nextgroup=vimSyncGroup
++syn match	vimSyncGroup	contained	"\k\+"	skipwhite	nextgroup=vimSynRegPat,vimSyncNone
++syn keyword	vimSyncNone	contained	NONE
+ 
+ " Additional IsCommand, here by reasons of precedence {{{2
+ " ====================
+-syn match vimIsCommand	"<Bar>\s*\a\+"	transparent contains=vimCommand,vimNotation
++syn match	vimIsCommand	"<Bar>\s*\a\+"	transparent contains=vimCommand,vimNotation
+ 
+ " Highlighting {{{2
+ " ============
+-syn cluster vimHighlightCluster	contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
+-syn match   vimHighlight	"\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
+-syn match   vimHiBang	contained	"!"	  skipwhite nextgroup=@vimHighlightCluster
+-
+-syn match   vimHiGroup	contained	"\i\+"
++syn cluster	vimHighlightCluster		contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment
++syn match	vimHighlight	"\<hi\%[ghlight]\>"	skipwhite nextgroup=vimHiBang,@vimHighlightCluster
++syn match	vimHiBang	contained	"!"	skipwhite nextgroup=@vimHighlightCluster
++       	
++syn match	vimHiGroup	contained	"\i\+"
+ syn case ignore
+-syn keyword vimHiAttrib	contained	none bold inverse italic reverse standout underline undercurl
+-syn keyword vimFgBgAttrib	contained	none bg background fg foreground
++syn keyword	vimHiAttrib	contained	none bold inverse italic reverse standout underline undercurl
++syn keyword	vimFgBgAttrib	contained	none bg background fg foreground
+ syn case match
+-syn match   vimHiAttribList	contained	"\i\+"	contains=vimHiAttrib
+-syn match   vimHiAttribList	contained	"\i\+,"he=e-1	contains=vimHiAttrib nextgroup=vimHiAttribList
++syn match	vimHiAttribList	contained	"\i\+"	contains=vimHiAttrib
++syn match	vimHiAttribList	contained	"\i\+,"he=e-1	contains=vimHiAttrib nextgroup=vimHiAttribList
+ syn case ignore
+-syn keyword vimHiCtermColor	contained	black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
++syn keyword	vimHiCtermColor	contained	black blue brown cyan darkBlue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow
+ 
+ syn case match
+-syn match   vimHiFontname	contained	"[a-zA-Z\-*]\+"
+-syn match   vimHiGuiFontname	contained	"'[a-zA-Z\-* ]\+'"
+-syn match   vimHiGuiRgb	contained	"#\x\{6}"
++syn match	vimHiFontname	contained	"[a-zA-Z\-*]\+"
++syn match	vimHiGuiFontname	contained	"'[a-zA-Z\-* ]\+'"
++syn match	vimHiGuiRgb	contained	"#\x\{6}"
+ if !exists("g:vimsyn_noerror")
+- syn match   vimHiCtermError	contained	"[^0-9]\i*"
++ syn match	vimHiCtermError	contained	"[^0-9]\i*"
+ endif
+ 
+ " Highlighting: hi group key=arg ... {{{2
+-syn cluster vimHiCluster contains=vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
+-syn region vimHiKeyList	contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"	contains=@vimHiCluster
++syn cluster	vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation
++syn region	vimHiKeyList	contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||"	contains=@vimHiCluster
+ if !exists("g:vimsyn_noerror")
+- syn match  vimHiKeyError	contained	"\i\+="he=e-1
++ syn match	vimHiKeyError	contained	"\i\+="he=e-1
+ endif
+-syn match  vimHiTerm	contained	"\cterm="he=e-1		nextgroup=vimHiAttribList
+-syn match  vimHiStartStop	contained	"\c\(start\|stop\)="he=e-1	nextgroup=vimHiTermcap,vimOption
+-syn match  vimHiCTerm	contained	"\ccterm="he=e-1		nextgroup=vimHiAttribList
+-syn match  vimHiCtermFgBg	contained	"\ccterm[fb]g="he=e-1	nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
+-syn match  vimHiGui	contained	"\cgui="he=e-1		nextgroup=vimHiAttribList
+-syn match  vimHiGuiFont	contained	"\cfont="he=e-1		nextgroup=vimHiFontname
+-syn match  vimHiGuiFgBg	contained	"\cgui\%([fb]g\|sp\)="he=e-1	nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
+-syn match  vimHiTermcap	contained	"\S\+"		contains=vimNotation
++syn match	vimHiTerm	contained	"\cterm="he=e-1		nextgroup=vimHiAttribList
++syn match	vimHiStartStop	contained	"\c\(start\|stop\)="he=e-1	nextgroup=vimHiTermcap,vimOption
++syn match	vimHiCTerm	contained	"\ccterm="he=e-1		nextgroup=vimHiAttribList
++syn match	vimHiCtermFgBg	contained	"\ccterm[fb]g="he=e-1	nextgroup=vimNumber,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
++syn match	vimHiGui	contained	"\cgui="he=e-1		nextgroup=vimHiAttribList
++syn match	vimHiGuiFont	contained	"\cfont="he=e-1		nextgroup=vimHiFontname
++syn match	vimHiGuiFgBg	contained	"\cgui\%([fb]g\|sp\)="he=e-1	nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
++syn match	vimHiTermcap	contained	"\S\+"		contains=vimNotation
+ 
+ " Highlight: clear {{{2
+-syn keyword vimHiClear	contained	clear	nextgroup=vimHiGroup
++syn keyword	vimHiClear	contained	clear	nextgroup=vimHiGroup
+ 
+ " Highlight: link {{{2
+-syn region vimHiLink	contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$"	contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
++syn region	vimHiLink	contained oneline matchgroup=vimCommand start="\<\(def\s\+\)\=link\>\|\<def\>" end="$"	contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
+ 
+ " Control Characters {{{2
+ " ==================
+-syn match vimCtrlChar	"[--]"
++syn match	vimCtrlChar	"[--]"
+ 
+ " Beginners - Patterns that involve ^ {{{2
+ " =========
+-syn match  vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+-syn match  vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
+-syn match  vimContinue	"^\s*\\"
+-syn region vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
+-syn match  vimCommentTitleLeader	'"\s\+'ms=s+1	contained
++syn match	vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
++syn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
++syn match	vimContinue	"^\s*\\"
++syn region	vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
++syn match	vimCommentTitleLeader	'"\s\+'ms=s+1	contained
+ 
+ " Searches And Globals: {{{2
+ " ====================
+-syn match vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
+-syn match vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
+-syn region vimGlobal	matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
+-syn region vimGlobal	matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
++syn match	vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
++syn match	vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
++syn region	vimGlobal	matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/'
++syn region	vimGlobal	matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/'
+ 
+ " Scripts  : perl,ruby : Benoit Cerrina {{{2
+ " =======    python,tcl: Johannes Zellner
+@@ -541,94 +543,127 @@
+ endif
+ 
+ " [-- perl --] {{{3
+-if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(expand("<sfile>:p:h")."/perl.vim")
++let s:perlpath= expand("<sfile>:p:h")."/perl.vim"
++if !filereadable(s:perlpath)
++ let s:perlpath= globpath(&rtp,"syntax/perl.vim")
++endif
++if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
+  unlet! b:current_syntax
+- syn include @vimPerlScript <sfile>:p:h/perl.vim
++ exe "syn include @vimPerlScript ".s:perlpath
+  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'p'
+-  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
+-  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
++  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
++  syn region vimPerlRegion fold matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+	contains=@vimPerlScript
+  else
+-  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript
+-  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
++  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPerlScript
++  syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+		contains=@vimPerlScript
+  endif
++ syn cluster vimFuncBodyList	add=vimPerlRegion
+ else
+  syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+  syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:perlpath
+ 
+ " [-- ruby --] {{{3
+-if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(expand("<sfile>:p:h")."/ruby.vim")
++let s:rubypath= expand("<sfile>:p:h")."/ruby.vim"
++if !filereadable(s:rubypath)
++ let s:rubypath= globpath(&rtp,"syntax/ruby.vim")
++endif
++if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
+  unlet! b:current_syntax
+- syn include @vimRubyScript <sfile>:p:h/ruby.vim
++ exe "syn include @vimRubyScript ".s:rubypath
+  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'r'
+-  syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
++  syn region vimRubyRegion fold matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
+  else
+-  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript
++  syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimRubyScript
+  endif
+- syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
++ syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+		contains=@vimRubyScript
++ syn cluster vimFuncBodyList	add=vimRubyRegion
+ else
+  syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+  syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:rubypath
+ 
+ " [-- python --] {{{3
+-if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(expand("<sfile>:p:h")."/python.vim")
++let s:pythonpath= expand("<sfile>:p:h")."/python.vim"
++if !filereadable(s:pythonpath)
++ let s:pythonpath= globpath(&rtp,"syntax/python.vim")
++endif
++if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(s:pythonpath)
+  unlet! b:current_syntax
+- syn include @vimPythonScript <sfile>:p:h/python.vim
++ exe "syn include @vimPythonScript ".s:pythonpath
+  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'P'
+-  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
+-  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
++  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
++  syn region vimPythonRegion fold matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+	contains=@vimPythonScript
+  else
+-  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript
+-  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript
++  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimPythonScript
++  syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]\s*<<\s*$+ end=+\.$+	contains=@vimPythonScript
+  endif
++ syn cluster vimFuncBodyList	add=vimPythonRegion
+ else
+  syn region vimEmbedError start=+py\%[thon]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+  syn region vimEmbedError start=+py\%[thon]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:pythonpath
+ 
+ " [-- tcl --] {{{3
+ if has("win32") || has("win95") || has("win64") || has("win16")
+  " apparently has("tcl") has been hanging vim on some windows systems with cygwin
+- let trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
++ let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
+ else
+- let trytcl= 1
++ let s:trytcl= 1
+ endif
+-if trytcl
+- if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(expand("<sfile>:p:h")."/tcl.vim")
++if s:trytcl
++ let s:tclpath= expand("<sfile>:p:h")."/tcl.vim"
++ if !filereadable(s:tclpath)
++  let s:tclpath= globpath(&rtp,"syntax/tcl.vim")
++ endif
++ if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
+   unlet! b:current_syntax
+-  syn include @vimTclScript <sfile>:p:h/tcl.vim
++  exe "syn include @vimTclScript ".s:tclpath
+   if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 't'
+-   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
+-   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
++   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
++   syn region vimTclRegion fold matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+	contains=@vimTclScript
+   else
+-   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
+-   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
++   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimTclScript
++   syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+		contains=@vimTclScript
+   endif
++  syn cluster vimFuncBodyList	add=vimTclScript
++ else
++  syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
++  syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+  endif
++ unlet s:tclpath
+ else
+  syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
+  syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
+ endif
+-unlet trytcl
++unlet s:trytcl
+ 
+ " [-- mzscheme --] {{{3
+-if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(expand("<sfile>:p:h")."/scheme.vim")
++let s:mzschemepath= expand("<sfile>:p:h")."/scheme.vim"
++if !filereadable(s:mzschemepath)
++ let s:mzschemepath= globpath(&rtp,"syntax/scheme.vim")
++endif
++if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
+  unlet! b:current_syntax
+  let iskKeep= &isk
+- syn include @vimMzSchemeScript <sfile>:p:h/scheme.vim
++ exe "syn include @vimMzSchemeScript ".s:mzschemepath
+  let &isk= iskKeep
+  if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'm'
+-  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
+-  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
++  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+	contains=@vimMzSchemeScript
++  syn region vimMzSchemeRegion fold matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
+  else
+-  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
+-  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
++  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+		contains=@vimMzSchemeScript
++  syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+		contains=@vimMzSchemeScript
+  endif
++ syn cluster vimFuncBodyList	add=vimMzSchemeRegion
+ else
+  syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
+  syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
+ endif
++unlet s:mzschemepath
+ 
+ " Synchronize (speed) {{{2
+ "============
+@@ -643,6 +678,7 @@
+ syn sync linecont	"^\s\+\\"
+ syn sync match vimAugroupSyncA	groupthere NONE	"\<aug\%[roup]\>\s\+[eE][nN][dD]"
+ 
++" ====================
+ " Highlighting Settings {{{2
+ " ====================
+ 
+@@ -709,15 +745,15 @@
+ hi def link vimMenuNameMore	vimMenuName
+ hi def link vimMtchComment	vimComment
+ hi def link vimNorm	vimCommand
++hi def link vimNotFunc	vimCommand
+ hi def link vimNotPatSep	vimString
+-hi def link vimPatSepR	vimPatSep
+-hi def link vimPatSepZ	vimPatSep
+ hi def link vimPatSepErr	vimPatSep
++hi def link vimPatSepR	vimPatSep
+ hi def link vimPatSepZone	vimString
++hi def link vimPatSepZ	vimPatSep
+ hi def link vimPlainMark	vimMark
+ hi def link vimPlainRegister	vimRegister
+ hi def link vimSearch	vimString
+-hi def link vimSearchDelim	Statement
+ hi def link vimSetMod	vimOption
+ hi def link vimSetString	vimString
+ hi def link vimSpecFileMod	vimSpecFile
+@@ -738,11 +774,11 @@
+ hi def link vimSynRegPat	vimString
+ hi def link vimSyntax	vimCommand
+ hi def link vimSynType	vimSpecial
++hi def link vimUnmap	vimMap
+ hi def link vimUserAttrbCmplt	vimSpecial
+ hi def link vimUserAttrbKey	vimOption
+ hi def link vimUserAttrb	vimSpecial
+ hi def link vimUserCommand	vimCommand
+-hi def link vimUserFunc	Normal
+ 
+ hi def link vimAutoEvent	Type
+ hi def link vimBracket	Delimiter
+@@ -759,24 +795,25 @@
+ hi def link vimFuncName	Function
+ hi def link vimFuncSID	Special
+ hi def link vimFuncVar	Identifier
+-hi def link vimGroup	Type
+ hi def link vimGroupSpecial	Special
+-hi def link vimHLMod	PreProc
++hi def link vimGroup	Type
+ hi def link vimHiAttrib	PreProc
+ hi def link vimHiTerm	Type
++hi def link vimHLMod	PreProc
+ hi def link vimKeyword	Statement
+ hi def link vimMark	Number
+ hi def link vimMenuName	PreProc
+ hi def link vimNotation	Special
+-hi def link vimNotFunc	vimCommand
+ hi def link vimNumber	Number
++hi def link vimOperError	Error
+ hi def link vimOper	Operator
+ hi def link vimOption	PreProc
+-hi def link vimOperError	Error
++hi def link vimParenSep	Delimiter
+ hi def link vimPatSep	SpecialChar
+ hi def link vimPattern	Type
+ hi def link vimRegister	SpecialChar
+ hi def link vimScriptDelim	Comment
++hi def link vimSearchDelim	Statement
+ hi def link vimSep	Delimiter
+ hi def link vimSetSep	Statement
+ hi def link vimSpecFile	Identifier
+@@ -786,18 +823,19 @@
+ hi def link vimSubstDelim	Delimiter
+ hi def link vimSubstFlags	Special
+ hi def link vimSubstSubstr	SpecialChar
+-hi def link vimSynCase	Type
+ hi def link vimSynCaseError	Error
+-hi def link vimSynError	Error
+-hi def link vimSynOption	Special
+-hi def link vimSynReg	Type
++hi def link vimSynCase	Type
+ hi def link vimSyncC	Type
+ hi def link vimSyncError	Error
+ hi def link vimSyncKey	Type
+ hi def link vimSyncNone	Type
++hi def link vimSynError	Error
++hi def link vimSynOption	Special
++hi def link vimSynReg	Type
+ hi def link vimTodo	Todo
+-hi def link vimUserCmdError	Error
+ hi def link vimUserAttrbCmpltFunc	Special
++hi def link vimUserCmdError	Error
++hi def link vimUserFunc	Normal
+ hi def link vimWarn	WarningMsg
+ 
+ " Current Syntax Variable: {{{2
+diff -Nur runtime/syntax/xml.vim runtime/syntax/xml.vim
+--- runtime/syntax/xml.vim	2006-04-11 14:32:00.000000000 -0700
++++ runtime/syntax/xml.vim	2011-01-18 10:40:56.493277962 -0800
+@@ -3,7 +3,7 @@
+ " Maintainer:	Johannes Zellner <[email protected]>
+ "		Author and previous maintainer:
+ "		Paul Siegmann <[email protected]>
+-" Last Change:	Mi, 13 Apr 2005 22:40:09 CEST
++" Last Change:	2009-07-13 21:26:55
+ " Filenames:	*.xml
+ " $Id: xml.vim,v 1.3 2006/04/11 21:32:00 vimboss Exp $
+ 
+@@ -216,7 +216,7 @@
+     syn region  xmlComment
+ 	\ start=+<!+
+ 	\ end=+>+
+-	\ contains=xmlCommentPart,xmlCommentError
++	\ contains=xmlCommentStart,xmlCommentError
+ 	\ extend
+ 	\ fold
+ 
+@@ -228,11 +228,12 @@
+     syn region  xmlComment
+ 	\ start=+<!+
+ 	\ end=+>+
+-	\ contains=xmlCommentPart,xmlCommentError
++	\ contains=xmlCommentStart,xmlCommentError
+ 	\ extend
+ 
+ endif
+ 
++syn match xmlCommentStart   contained "<!" nextgroup=xmlCommentPart
+ syn keyword xmlTodo         contained TODO FIXME XXX
+ syn match   xmlCommentError contained "[^><!]"
+ syn region  xmlCommentPart
+@@ -320,6 +321,7 @@
+ 
+ hi def link xmlString		String
+ hi def link xmlComment		Comment
++hi def link xmlCommentStart	xmlComment
+ hi def link xmlCommentPart	Comment
+ hi def link xmlCommentError	Error
+ hi def link xmlError		Error
+diff -Nur runtime/syntax/xs.vim runtime/syntax/xs.vim
+--- runtime/syntax/xs.vim	2004-06-07 07:32:35.000000000 -0700
++++ runtime/syntax/xs.vim	2011-01-18 10:40:56.495852851 -0800
+@@ -1,53 +1,38 @@
+ " Vim syntax file
+-" Language:	XS (Perl extension interface language)
+-" Maintainer:	Michael W. Dodge <[email protected]>
+-" Last Change:	2001 May 09
+-
+-" 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
++" Language:     XS (Perl extension interface language)
++" Maintainer:   Andy Lester <[email protected]>
++" URL:          http://github.com/petdance/vim-perl
++" Last Change:  2009-08-14
++
++" Quit when a syntax file was already loaded
++if exists("b:current_syntax")
++    finish
+ endif
+ 
+ " Read the C syntax to start with
+-if version < 600
+-  source <sfile>:p:h/c.vim
+-else
+-  runtime! syntax/c.vim
+-endif
++runtime! syntax/c.vim
+ 
+ " XS extentions
+ " TODO: Figure out how to look for trailing '='.
+-syn keyword xsKeyword	MODULE PACKAGE PREFIX
+-syn keyword xsKeyword	OUTPUT: CODE: INIT: PREINIT: INPUT:
+-syn keyword xsKeyword	PPCODE: REQUIRE: CLEANUP: BOOT:
+-syn keyword xsKeyword	VERSIONCHECK: PROTOTYPES: PROTOTYPE:
+-syn keyword xsKeyword	ALIAS: INCLUDE: CASE:
++syn keyword xsKeyword   MODULE PACKAGE PREFIX
++syn keyword xsKeyword   OUTPUT: CODE: INIT: PREINIT: INPUT:
++syn keyword xsKeyword   PPCODE: REQUIRE: CLEANUP: BOOT:
++syn keyword xsKeyword   VERSIONCHECK: PROTOTYPES: PROTOTYPE:
++syn keyword xsKeyword   ALIAS: INCLUDE: CASE:
+ " TODO: Figure out how to look for trailing '('.
+-syn keyword xsMacro	SV EXTEND PUSHs
+-syn keyword xsVariable	RETVAL NO_INIT
+-"syn match xsCast	"\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
+-"syn match xsCast	"\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
+-
+-" Define the default highlighting.
+-" 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_xs_syntax_inits")
+-  if version < 508
+-    let did_xs_syntax_inits = 1
+-    command -nargs=+ HiLink hi link <args>
+-  else
+-    command -nargs=+ HiLink hi def link <args>
+-  endif
+-
+-  HiLink xsKeyword	Keyword
+-  HiLink xsMacro	Macro
+-  HiLink xsVariable	Identifier
++syn keyword xsMacro     SV EXTEND PUSHs
++syn keyword xsVariable  RETVAL NO_INIT
++"syn match xsCast       "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
++"syn match xsCast       "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
++
++" Define the default highlighting, but only when an item doesn't have highlighting yet
++command -nargs=+ HiLink hi def link <args>
++
++HiLink xsKeyword    Keyword
++HiLink xsMacro      Macro
++HiLink xsVariable   Identifier
+ 
+-  delcommand HiLink
+-endif
++delcommand HiLink
+ 
+ let b:current_syntax = "xs"
+ 
+diff -Nur runtime/syntax/yacc.vim runtime/syntax/yacc.vim
+--- runtime/syntax/yacc.vim	2008-03-03 12:33:51.000000000 -0800
++++ runtime/syntax/yacc.vim	2011-04-03 09:27:21.856757982 -0700
+@@ -1,95 +1,85 @@
+ " Vim syntax file
+ " Language:	Yacc
+ " Maintainer:	Charles E. Campbell, Jr. <[email protected]>
+-" Last Change:	Jan 09, 2008
+-" Version:	5
++" Last Change:	Oct 21, 2008
++" Version:	7
+ " URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+ "
+ " Options: {{{1
+ "   g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
+-"   g:yacc_minlines : see :help :he syn-sync-minlines -- default 50
+-"   g:yacc_maxlines : see :help :he syn-sync-maxlines -- default 200
+ 
+ " ---------------------------------------------------------------------
+-" For version 5.x: Clear all syntax items {{{1
+-" For version 6.x: Quit when a syntax file was already loaded
++" this version of syntax/yacc.vim requires 6.0 or later
+ if version < 600
+-  syntax clear
+-elseif exists("b:current_syntax")
+-  finish
++ finish
++endif
++if exists("b:current_syntax")
++ syntax clear
++endif
++
++" ---------------------------------------------------------------------
++"  Folding Support {{{1
++if has("folding")
++ com! -nargs=+ HiFold	<args> fold
++else
++ com! -nargs=+ HiFold	<args>
+ endif
+ 
+ " ---------------------------------------------------------------------
+ " Read the C syntax to start with {{{1
+-if version >= 600
+-  if exists("g:yacc_uses_cpp")
+-    runtime! syntax/cpp.vim
+-  else
+-    runtime! syntax/c.vim
+-  endif
+-elseif exists("g:yacc_uses_cpp")
+-  so <sfile>:p:h/cpp.vim
++if exists("g:yacc_uses_cpp")
++ syn include @yaccCode	<sfile>:p:h/cpp.vim
+ else
+-  so <sfile>:p:h/c.vim
++ syn include @yaccCode	<sfile>:p:h/c.vim
+ endif
+ 
+ " ---------------------------------------------------------------------
+-" Clusters {{{1
+-syn cluster	yaccActionGroup	contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
+-syn cluster	yaccUnionGroup	contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
+-
+-" ---------------------------------------------------------------------
+-" Yacc stuff {{{1
+-syn match	yaccDelim	"^\s*[:|;]"
+-syn match	yaccOper	"@\d\+"
+-
+-syn match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
+-syn match	yaccKey	"\s%\(prec\|expect\)\>"
+-syn match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
+-syn keyword	yaccKeyActn	yyerrok yyclearin
+-
+-syn match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion
+-syn region	yaccUnion	contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}"	contains=@yaccUnionGroup
+-syn region	yaccUnionCurly	contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
+-syn match	yaccBrkt	contained "[<>]"
+-syn match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt
+-syn match	yaccDefinition	"^[A-Za-z][A-Za-z0-9_]*\_s*:"
+-
+-" ---------------------------------------------------------------------
+-" special Yacc separators {{{1
+-syn match	yaccSectionSep	"^[ \t]*%%"
+-syn match	yaccSep	"^[ \t]*%{"
+-syn match	yaccSep	"^[ \t]*%}"
++"  Yacc Clusters: {{{1
++syn cluster yaccInitCluster	contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment
++syn cluster yaccRulesCluster	contains=yaccNonterminal,yaccString
++
++" ---------------------------------------------------------------------
++"  Yacc Sections: {{{1
++HiFold syn	region	yaccInit	start='.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep	end='^%%$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty contained
++HiFold syn	region	yaccInit2      start='\%^.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep	end='^%%$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty
++HiFold syn	region	yaccHeader2	matchgroup=yaccSep	start="^\s*\zs%{"	end="^\s*%}"		contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty contained
++HiFold syn	region	yaccHeader	matchgroup=yaccSep	start="^\s*\zs%{"	end="^\s*%}"		contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty
++HiFold syn	region	yaccRules	matchgroup=yaccSectionSep	start='^%%$'		end='^%%$'me=e-2,re=e-2	contains=@yaccRulesCluster	nextgroup=yaccEndCode	skipwhite skipempty contained
++HiFold syn	region	yaccEndCode	matchgroup=yaccSectionSep	start='^%%$'		end='\%$'		contains=@yaccCode	contained
++
++" ---------------------------------------------------------------------
++" Yacc Commands: {{{1
++syn	match	yaccDelim	"[:|]"	contained
++syn	match	yaccOper	"@\d\+"	contained
++
++syn	match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"	contained
++syn	match	yaccKey	"\s%\(prec\|expect\)\>"	contained
++syn	match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"	contained
++syn	keyword	yaccKeyActn	yyerrok yyclearin	contained
++
++syn	match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion	contained
++HiFold syn	region	yaccUnion	matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode	contained
++syn	match	yaccBrkt	"[<>]"	contained
++syn	match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt	contained
++
++HiFold syn	region	yaccNonterminal	start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:"	matchgroup=yaccDelim end=";"	matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment	contained
++syn	region	yaccComment	start="/\*"	end="\*/"
++syn	match	yaccString	"'[^']*'"	contained
++
+ 
+ " ---------------------------------------------------------------------
+ " I'd really like to highlight just the outer {}.  Any suggestions??? {{{1
+-syn match	yaccCurlyError	"[{}]"
+-syn region	yaccAction	matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
++syn	match	yaccCurlyError	"[{}]"
++HiFold syn	region	yaccAction	matchgroup=yaccCurly start="{" end="}" contains=@yaccCode	contained
+ 
+ " ---------------------------------------------------------------------
+ " Yacc synchronization: {{{1
+-if exists("g:yacc_maxlines")
+- exe "syn sync maxlines=".g:yacc_maxlines
+-else
+- syn sync maxlines=200
+-endif
+-if exists("g:yacc_minlines")
+- exe "syn sync minlines=".g:yacc_minlines
+-else
+- syn sync minlines=50
+-endif
++syn sync fromstart
+ 
+ " ---------------------------------------------------------------------
+ " Define the default highlighting. {{{1
+-" For version 5.7 and earlier: only when not done already
+-" For version 5.8 and later: only when an item doesn't have highlighting yet
+-if version >= 508 || !exists("did_yacc_syn_inits")
+-  if version < 508
+-    let did_yacchdl_syn_inits = 1
+-    command -nargs=+ HiLink hi link <args>
+-  else
+-    command -nargs=+ HiLink hi def link <args>
+-  endif
++if !exists("did_yacc_syn_inits")
++  command -nargs=+ HiLink hi def link <args>
+ 
+   " Internal yacc highlighting links {{{2
+   HiLink yaccBrkt	yaccStmt
+@@ -98,13 +88,15 @@
+   HiLink yaccUnionStart	yaccKey
+ 
+   " External yacc highlighting links {{{2
++  HiLink yaccComment	Comment
+   HiLink yaccCurly	Delimiter
+   HiLink yaccCurlyError	Error
+-  HiLink yaccDefinition	Function
+-  HiLink yaccDelim	Function
++  HiLink yaccNonterminal	Function
++  HiLink yaccDelim	Delimiter
+   HiLink yaccKeyActn	Special
+   HiLink yaccSectionSep	Todo
+   HiLink yaccSep	Delimiter
++  HiLink yaccString	String
+   HiLink yaccStmt	Statement
+   HiLink yaccType	Type
+ 
+@@ -113,6 +105,10 @@
+ 
+   delcommand HiLink
+ endif
++
++" ---------------------------------------------------------------------
++"  Cleanup: {{{1
++delcommand HiFold
+ let b:current_syntax = "yacc"
+ 
+ " ---------------------------------------------------------------------
+diff -Nur runtime/syntax/yaml.vim runtime/syntax/yaml.vim
+--- runtime/syntax/yaml.vim	2008-07-21 13:47:42.000000000 -0700
++++ runtime/syntax/yaml.vim	2011-04-03 09:27:21.865027221 -0700
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         YAML (YAML Ain't Markup Language)
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2006-04-19
++" Latest Revision:  2010-05-30
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -17,7 +17,7 @@
+ 
+ syn match   yamlNodeProperty    '!\%(![^\\^%     ]\+\|[^!][^:/   ]*\)'
+ 
+-syn match   yamlAnchor          '&.\+'
++syn match   yamlAnchor          '&[^ \t]\+'
+ 
+ syn match   yamlAlias           '\*.\+'
+ 
+diff -Nur runtime/syntax/zsh.vim runtime/syntax/zsh.vim
+--- runtime/syntax/zsh.vim	2008-07-18 07:48:32.000000000 -0700
++++ runtime/syntax/zsh.vim	2011-01-18 10:40:56.498696162 -0800
+@@ -1,7 +1,7 @@
+ " Vim syntax file
+ " Language:         Zsh shell script
+ " Maintainer:       Nikolai Weibull <[email protected]>
+-" Latest Revision:  2008-07-17
++" Latest Revision:  2010-01-23
+ 
+ if exists("b:current_syntax")
+   finish
+@@ -14,7 +14,7 @@
+ 
+ syn keyword zshTodo             contained TODO FIXME XXX NOTE
+ 
+-syn region  zshComment          display oneline start='\%(^\|\s\)#' end='$'
++syn region  zshComment          oneline start='\%(^\|\s\)#' end='$'
+                                 \ contains=zshTodo,@Spell
+ 
+ syn match   zshPreProc          '^\%1l#\%(!\|compdef\|autoload\).*$'
+diff -Nur runtime/tools/README.txt.~1~ runtime/tools/README.txt.~1~
+diff -Nur runtime/tools/unicode.vim.~2~ runtime/tools/unicode.vim.~2~
+Files vim72/runtime/tools.info and ../../../vim-hg/runtime/tools.info differ
+diff -Nur runtime/tutor/Makefile runtime/tutor/Makefile
+--- runtime/tutor/Makefile	2008-06-21 11:38:51.000000000 -0700
++++ runtime/tutor/Makefile	2011-04-03 09:27:21.865526884 -0700
+@@ -6,9 +6,11 @@
+ # Similarly for Russian and Korean
+ 
+ all: tutor.utf-8 \
++	tutor.bj \
+ 	tutor.ca.utf-8 \
+ 	tutor.de.utf-8 \
+ 	tutor.el tutor.el.cp737 \
++	tutor.eo \
+ 	tutor.es.utf-8 \
+ 	tutor.fr.utf-8 \
+ 	tutor.hr tutor.hr.cp1250 \
+@@ -17,6 +19,8 @@
+ 	tutor.ja.sjis tutor.ja.euc \
+ 	tutor.ko.euc \
+ 	tutor.no.utf-8 \
++	tutor.nb \
++	tutor.nb.utf-8 \
+ 	tutor.ru tutor.ru.cp1251 \
+ 	tutor.sv.utf-8 \
+ 	tutor.zh.utf-8
+@@ -24,9 +28,15 @@
+ tutor.utf-8: tutor
+ 	iconv -f ISO-8859-1 -t UTF-8 tutor > tutor.utf-8
+ 
++tutor.bj: tutor.bj.utf-8
++	iconv -f UTF-8 -t ISO-8859-1 tutor.bj.utf-8 > tutor.bj
++
+ tutor.ca.utf-8: tutor.ca
+ 	iconv -f ISO-8859-1 -t UTF-8 tutor.ca > tutor.ca.utf-8
+ 
++tutor.eo: tutor.eo.utf-8
++	iconv -f UTF-8 -t ISO-8859-3 tutor.eo.utf-8 > tutor.eo
++
+ tutor.de.utf-8: tutor.de
+ 	iconv -f ISO-8859-1 -t UTF-8 tutor.de > tutor.de.utf-8
+ 
+@@ -66,6 +76,13 @@
+ tutor.no.utf-8: tutor.no
+ 	iconv -f ISO-8859-1 -t UTF-8 tutor.no > tutor.no.utf-8
+ 
++# nb is an alias for no
++tutor.nb: tutor.no
++	cp tutor.no tutor.nb
++
++tutor.nb.utf-8: tutor.no.utf-8
++	cp tutor.no.utf-8 tutor.nb.utf-8
++
+ tutor.ru: tutor.ru.utf-8
+ 	iconv -f UTF-8 -t KOI8-R tutor.ru.utf-8 > tutor.ru
+ 
+Files vim72/runtime/tutor/README.txt.info and ../../../vim-hg/runtime/tutor/README.txt.info differ
+diff -Nur runtime/tutor/tutor.bj runtime/tutor/tutor.bj
+--- runtime/tutor/tutor.bj	1969-12-31 16:00:00.000000000 -0800
++++ runtime/tutor/tutor.bj	2011-04-03 09:27:21.871974703 -0700
+@@ -0,0 +1,987 @@
++===============================================================================
++=    G o t i k a m   i n   n   W I M M - S c h a i n e r   -   Fassung 1.7D   =
++===============================================================================
++
++   Dyr Wimm ist ayn gro m�chtigs Blat, d�s was mit aynn W�sn Befelh aufwartt; z
++   vil,  d�� myn s allsand  in aynn Schainer  wie d�nn daader  unterbr�ng.  Der
++   Schainer ist yso aufbaut,  d�� yr halt netty die Befelh allsand bringt, wost
++   brauchst, d��st mit iem f�r s Eerste wirklich �bbs anfangen kanst.
++   Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; d�s haisst,
++   wennst di nit groo� mit n Pr�bln und T�ftln aufhaltst.
++
++   OBACHT:
++   Die Faudungen,  wost daader finddst,  gaand istig  s Gwort �ndern.  D�ssw�gn
++   machst eyn n B�stn glei  ayn Aamum von derer Dautticht daader.  Haast alsnan
++   d�s Gwort daader  mit n Befelh "vimtutor bj"  ausherlaassn,  ist s ee schoon
++   ayn Aamum.
++   Mir kan s  nit oft gnueg  sagn,  d��  der Schainer daader  istig  gan n �ebn
++   ghoert.  Also muesst schoon aau die Befelh ausf�ern,  wennst ys gscheid ler-
++   nen willst. Mit n L�sn yllain ist s +nit taan!
++
++   Ietz schaust grad non, d�� dein F�stst�lltastn nit druckt ist; und aft geest
++   glei aynmaal mit dyr j-Tastn abw�rts (yso laaufft d�s n�mlich),  hinst d��st
++   de gantze Letzn 1.1 auf n Bildschirm haast.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 1.1: MIT N M�RKL UMAYNANDFARN
++
++**  Dyrmitst mit n M�rkl umaynandkimmst, druck h, j, k und l wie unt zaigt.  **
++            ^            Ayn �slsbrugg:
++            k            De Tastn  h  ist winster und +geet aau gan winster.
++   < h             l >   S  l  leit zesm und richtt si gan zesm.
++            j            S  j  kan myn wie aynn Pfeil gan unt seghn.
++            v            Mit n  k  kimmst gan n KOPF.            
++  1. Ietz ruedertst ainfach mit n M�rkl auf n Bildschirm umaynand,  hinst d��st
++     di sicher f�elst.
++  2. Halt  d Abhin-Tastn (j)  druckt;  aft rumplt s  ainfach weiter.  Netty yso
++     kimmst gan dyr naehstn Letzn.
++     
++  3. Wie gsait, ietz bew�gst di also mit derer Tastn gan dyr Letzn 1.2.
++
++Non �bbs: Allweil, wenn dyr niemer ganz wol ist, wasst �bbenn druckt haast, aft
++          zipfst  <ESC>;  naacherd bist wider ganz gwon in dyr Befelhs-Artweis.
++
++      
++          N�bnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter.  Aber
++          hjkl  seind z haissn s Wimm-Urgstain;  und de "H�rtn" seind ganz dyr-
++          f�r, d�� myn bei +dene bleibt. Pr�blt s ainfach aus!
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Letzn 1.2: �NN WIMM AUSSCHALTTN
++
++
++  ALSO, EE WENNST �BBS VON DAA UNT AUSF�ERST,  LIS LIEBER ZEERST DE GANTZE LET-
++  ZN!
++
++  1. Druck d <ESC>-Tastn, dyrmitst aau gwi� in dyr Befelhs-Artweis bist.
++  
++  2. Demmlt  :q! <EIN>.
++     Daa dyrmit  benddst ys Blat  und verwirffst  allss,  wasst �bbenn  g�ndert
++     haast.
++
++  3. Balst �nn Eingib seghst, gib d� Faudung ein,  wo di zo d�nn Schainer brun-
++     gen haat, also    vimtutor bj <EIN>.
++
++  4. Also, wenn ietz allsse sitzt, naacherd f�erst d Schritt 1 hinst 3 aus, mit
++     wasst ys Blat verlaasst und aft wider einhinkimmst.
++
++Anm�rkung: Mit  :q! <EIN> verwirffst allss, wasst g�ndert older enther gschribn
++           haast. In aynn �ttlych Letznen lernst acht, wiest d�s allss in ayner
++           Dautticht speichertst.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 1.3: GWORT BARECHTN - L�SCHN 
++
++         
++         ** Druck  x  , dyrmitst d�s Zaichen unter n M�rkl l�schst. **
++
++  1. Bew�g di mit n M�rkl auf de mit  ---> angm�rkte Zeil unt.
++
++  2. Zo n Faeler Verb�ssern  farst mit n M�rkl  netty  auf d�s Zaichen,  d�s wo
++     gl�scht ghoert.
++
++  3. Druck de Tastn  x  , d��st d�s �berfl�ssige Zaichen l�schst.
++
++  4. Ietz tuest so lang weiter mit 2 hinst 4, hinst d�� dyr Saz stimmt.
++
++---> De Kkuue sprangg �bber nn Maanad.
++
++  5. Wenn ietz de Zeil verb�ssert ist, geest gan dyr Letzn 1.4. weiter.
++
++Und ganz wichtig:  Dyrweilst d�nn Schainer durcharechtst,  versuech nit �bbenn,
++                   allss auswendig z lernen;  n�n, lern ainfach mit n Anwenddn!
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 1.4: GWORT BARECHTN - EINF�EGN
++
++
++                  **  Druck  i  , dyrmitst �bbs einf�egst. **
++
++  1. Bew�g �nn M�rkl zo dyr eerstn untignen Zeil, wo mit ---> angeet.
++
++  2. Dyrmitst  de eerste Zeil  wie de zwaitte machst,  bew�g �nn M�rkl  auf d�s
++     eerste Zaichen NAACH derer St�ll, daa wo s Gwort eingf�egt werdn sollt.
++
++  3. Druck  i  und gib d�s ein, was abgeet.
++
++  4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst
++     gan dyr Befelhsartweis zrugg.
++     So, und ietz tuest ainfach yso weiter, hinst d�� dyr Saz stimmt.
++
++---> Daader gt dd �bbs b.
++---> Daader geet diend �bbs ab.
++
++  5. Balst mainst,  d��st ys Gwort-Einf�egn kanst, aft geest gan dyr Letzn 1.5.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 1.5: GWORT BARECHTN - ANF�EGN
++
++
++                      ** Druck  A  gan n Gwort Anf�egn. **
++
++  1. Gee mit n M�rkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat.
++     Daa ist s gleich, wo gnaun dyr M�rkl in derer Zeil steet.  
++
++  2. Demmlt  A  und gib de entspr�chetn Erg�ntzungen ein.
++
++  3. Wennst  mit n Anf�egn f�rtig bist,  aft druckst <ESC>,  d��st wider eyn de
++     Befelhsartweis zruggkimmst.
++
++  4. So,  und ietz geest aft non gan dyr zwaittn  mit ---> angm�rktn Zeil;  und
++     daadl machst ys netty yso.
++
++---> In derer Zeil gee  
++     In derer Zeil geet ayn Weeng ayn Gwort ab.
++---> Aau daader stee
++     Aau daader steet �bbs Unvollst�ndigs. 
++
++  5. Wennst s Anf�egn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6.  
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 1.6: AYN DAUTTICHT BARECHTN
++
++
++     ** Mit  :wq  speichertst ayn Dautticht und verlaasst �nn Wimm ganz. **
++
++  !! OBACHT:  Ee wennst mit d�nn alln daa unt weitertuest, lis zeerst de gantze
++     Letzn durch!!
++
++  1. Verlaa� also s Blat, wie s in dyr Letzn 1.2. haisst, mit  :q!  !
++
++  2. Gib d� Faudung eyn n Eingib ein:  vim Schainer <EIN> . 'vim' ruefft s Blat
++     auf,  und 'Schainer'  haisst de Dautticht,  wost barechtn  willst.  Dyrmit
++     haast also ayn Dautticht, d� wost barechtn kanst.
++
++  3. Ietz  f�egst �bbs ein older l�schst �bbs,  wiest ys in de vorignen Letznen
++     glernt haast.
++
++  4. Speichert de g�nderte Dautticht und verlaa� �nn Wimm mit  :wq  <EIN>  .
++
++  5. Schmei� �nn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung.
++
++  6. Aft d��st  de obignen Schritt gl�sn und k�ppt haast,  kanst ys durchf�ern.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 1
++
++
++  1. Dyr M�rkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert.
++              h (winst)     j (ab)        k (auf)       l (zes)
++
++  2. Um �nn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> .
++
++  3. Willst �nn Wimm verlaassn und aau allss verwerffen, aft gibst ein:
++                <ESC>  :q!  <EIN> .
++     Gan n Verlaassn und Speichern aber zipfst <ESC>  :wq  <EIN>.
++
++  4. Willst d�s Zaichen l�schn, daa wo dyr M�rkl drauf ist, demmltst  x  .
++
++  5. Willst �bbs vor n M�rkl eing�bn, zipfst  i  und drafter  <ESC>  .
++     Mechst ys aber eyn s Zeilnend anhinh�ngen, benutzt ys   A  .
++     Und ainfach naach n M�rkl f�egst ys mit  a  ein  .
++
++Anm�rkung:  Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn
++            Faudung ab, d� wo dyr schiefgangen ist.
++
++     Ietz tue mit dyr Letzn 2 weiter.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Letzn 2.1.: L�SHFAUDUNGEN
++
++
++                 ** Demmlt  dw  , dyrmitst ayn Wort l�schst **
++
++  1. Druck  <ESC>, dyrmit s aau gwi� ist, d��st in dyr Befelhsartweis bist.
++
++  2. Bew�g �nn M�rkl zo dyr mit ---> angm�rktn Zeil unt.
++
++  3. Und daa geest ietz auf n Anfang von aynn Wort, d�s wo gl�scht ghoert.
++
++  4. Zipf  dw  , d��st d�s gantze Wort l�schst.
++
++  N�bnbei:  Dyr Buechstabn  d  erscheint auf dyr l�sstn Zeil  von n Bildschirm,
++            sobaldst n eingibst. Dyr Wimm wartt ietz drauf, d�� �bbs kimmt, al-
++            so  daader ayn  w  .  Seghst  freilich  �bbs Anderts  wie ayn  d  ,
++            naacherd haast  �bbs Falschs  demmlt.  Druck aft  <ESC>  und pr�blt
++            s non aynmaal.
++---> Ayn �ttlych W�rter lustig ghoernd nit Fisper eyn d�nn Saz einhin.
++
++  5. �fert  d Schritt  3 und 4,  hinst d��  dyr Saz p�sst,  und gee aft gan dyr
++     Letzn 2.2.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 2.2.: NON MEERER L�SHFAUDUNGEN
++
++
++            ** Gib  d$  ein, d��st hinst eyn s Zeilnend l�schst. **
++
++  1. Druck <ESC> , dyrmitst aau gwi� in dyr Befelhsartweis bist.
++
++  2. Bew�g �nn M�rkl hinst eyn de mit ---> angm�rkte Zeil untn.
++
++  3. Gee mit n M�rkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn  .   .
++
++  4. Zipf  d$  , d��st hinst eyn s End von dyr Zeil l�schst.
++  
++---> �bber haat s End von dyr Zeil doplt eing�bn. doplt eing�bn.
++
++
++  5. Gee weiter  gan dyr Letzn 2.3,  dyrmitst versteest,  was daader ablaaufft.
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Letzn 2.3: PFEMERER UND WOLENDER
++
++
++  Vil Faudungen,   wo s Gwort �ndernd, s�tznd si aus aynn Pfemerer und aynn Wo-
++  lend zamm. Bal i also �bbs l�schn will, schreib i ainsting  d  und aft s "Wo-
++  lend", d�s haisst also, "wolend", "wohin" d�� i will - older was i halt gnaun
++  l�schn will.
++
++
++
++
++
++
++  Daader also, was i wie l�schn kan:
++    w - hinst eyn n Anfang von n naehstn Wort AANE d�nn sein eersts Zaichen.
++    e - gan n End von n ietzundn Wort MIT d�nn seinn l�sstn Zaichen.
++    $ - zo n End von dyr Zeil MIT derer irn l�sstn Zaichen.
++
++  Also l�scht de Tastnfolg  de  umbb n M�rkl hinst eyn s Wortend.
++Anm�rkung:   Gib i grad  d�s zwaitte Zaichen  yllain ein,  ruckt halt dyr M�rkl
++             entspr�chet weiter.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                   Letzn 2.4: MIT AYNN Z�LER D WOLENDER �FERN
++
++
++      ** Gib i ayn Zal vor aynn Wolend ein, werd d�s Sel halt widerholt. **
++
++  1. Bew�g �nn M�rkl gan n Anfang von dyr Zeil mit ---> dyrvor unt.
++
++  2. Zipf  2w  , d��st mit n M�rkl zwai W�rter weitergeest.
++
++  3. Zipf  3e  , d��st mit n M�rkl auf s End von n drittn Wort kimmst.
++
++  4. Zipf  0  (aynn Nuller), d��st eyn n Anfang von dyr Zeil hinkimmst.
++
++  5. Widerhol d Schritt 2 und 3 mit verschaidne Z�ler.
++
++  ---> D�s ist ietz grad ayn Zeil zo n drinn Umaynanderruedern.
++
++  6. Gee weiter gan dyr Letzn 2.5.
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Letzn 2.5: DURCH AYNN Z�LER GLEI MEERER L�SCHN
++
++
++              ** Ayn Zal vor aynn Pfemerer �fert d�nn um seln Werd. **
++
++  Also, i mecht l�schn,  und zwaar �bbs Bestimmts,  und d�s so und so oft:  Daa
++  dyrzue benutz i aynn Z�ler:
++                              d  Z�ler  Wolend (also �nn Bew�gungsschrit)
++
++  1. Bew�g �nn M�rkl  gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an-
++     gm�rktn Zeil.
++
++  2. Demmlt  d2w  , dyrmitst de ganz groo�gschribnen W�rter l�schst.
++
++  3. �fert  d Schritt 1 und 2  mit d�nn entspr�chetn Z�ler,  dyrmitst de drauf-
++     folgetn  ganz gro�gschribnen W�rter  mit ayner ainzignen Faudung  l�schst:
++
++
++--->  D� ABC DE Zeil FGHI JK LMN OP mit W�rter ist Q RS TUV ietz berichtigt.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                          Letzn 2.6: ARECHTN AUF ZEILN
++
++
++               ** Zipf  dd  , um ayn gantze Zeil z l�schn. **
++
++  Weil s gro oft v�rkimmt,  d�� myn gantze Zeiln l�scht,  kaamend schoon d Ent-
++  wickler von n Urwimm daa drauf,  d�� myn ainfach  dd  gan d�nn Zw�k schreibt.
++
++
++  1. Bew�g �nn M�rkl gan dyr zwaittn Zeil in n untignen "Gedicht".
++  2. Zipf  dd  ,  um d� Zeil z l�schn.
++  3. Ietz bew�gst di gan dyr viertn Zeil.
++  4. Zipf  2dd  , um zwo Zeiln zo n L�schn.
++
++--->  1)  Roosn seind root;
++--->  2)  Drunter ist s Koot.
++--->  3)  Veigerln seind blau.
++--->  4)  Umgrabn tuet s d Sau.
++--->  5)  D Ur sait de Zeit,
++--->  6)  Sait, d�� s mi freut,
++--->  7)  Dirndl, dein Gschau.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Letzn 2.7: RUGGG�NGIG MACHEN (RUGGLN) 
++
++
++             ** Zipf  u  , dyrmitst de l�sstn Faudungen ruggltst **
++              ** older  U  , um ayn gantze Zeil widerherzst�lln. **
++
++  1. Bew�g �nn M�rkl  gan dyr mit ---> angm�rktn Zeil unt  und gee dyrmit auf n
++     eerstn Faeler.
++  2. Zipf  x  , d��st d�s eerste z vile Zaichen l�schst.
++  3. Ietz demmlt  u  , dyrmitst de l�sste Faudung ruggltst.
++  4. Ietz beh�b  allsand Faeler  auf dyr Zeil  mit dyr Hilf  von n Befelh  x  .
++  5. Aft gibst ayn  U  (groo�) ein,  d��st de Zeil wider yso hinbringst,  wie s
++     gw�sn ist.
++  6. So,  und ietz  demmltst  so oft  u  , hinst d��st s  U  und de andern Fau-
++     dungen ruggg�ngig gmacht haast.
++  7. Und ietzet widerum  schreibst  so oft  <STRG>r  , hinst d��st  allsand Be-
++     felh widerhergst�llt, z haissn allsse rugg-grugglt haast  (also d Ruggg�n-
++     gigmachungen ruggg�ngig gmacht).
++---> Beerichtig d Faeller voon dehrer Zeiil  und stt�ll s mitt n Ruggruggln wi-
++     der her.
++  8. Die Faudungen seind gro wichtig; s� helffend ainn n�rrisch weiter.
++     Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 2
++
++
++  1. Um von n M�rkl aus hinst eyn s naehste Wort zo n L�schn, zipf:  dw
++  2. Um umbb n M�rkl hinst eyn s End von dyr Zeil zo n L�schn, demmlt  d$
++  3. Dyrmitst ayn gantze Zeil l�schst, gib ein:  dd
++  4. Mechst ayn Bew�gung, ayn "Wolend", �fters,  st�ll de entspr�chete Zal dyr-
++     vor:  3dw  older aau:  d3w
++  5. Dyr Pfueg f�r ayn �nderungsfaudung lautt yso:
++               Pfemerer   [Zal]   Bew�gungsschrit (Wolend)
++     Und d�s haisst:
++      Dyr PFEMERER gibt an, WAS taan ghoert, �bbenn   d   =  l�schn (�delete�).
++      [ZAL] - Ayn Zal KAN myn ang�bn, wenn myn halt ayn Wolend �fter habn will.
++      S WOLEND,  also dyr Schrit WOHIN, besagt,  auf was i aushin will,  �bbenn
++      auf ayn Wort (  w  ), s End von dyr Zeil (  $  ) und so weiter.
++
++  6. D��st eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller:  0
++
++  7. Um �bbs Vorigs wider z ruggln, gib ein:                u (klain also)
++     Um allsand �nderungen in ayner Zeil z ruggln, haast:   U (also groo�)
++     Um "rugg-z-ruggln", also allss wider herzst�lln, zipf: <STRG>r   
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Letzn 3.1: ANF�EGN (�put�) 
++
++
++     ** Zipf  p  , dyrmitst �bbs gnetty Gl�schts naach n M�rkl anf�egst. **
++
++  1. Bew�g �nn M�rkl gan dyr eerstn untignen Zeil mit   --->   dyrvor.
++
++  2. Zipf  dd  , um sele Zeil z l�schn  und dyrmit  in aynn Wimm-"Roster"  zo n
++     speichern.
++
++  3. Bew�g �nn M�rkl gan dyr Zeil c),  �BER derer, daa wo de gl�schte Zeil ein-
++     hinkemmen sollt.
++
++  4. So,  und ietz gibst ainfach  p  ein,  und schoon haast d� Zeil unter derer
++     mit n M�rkl drinn.
++  5. �fert  d Schritt 2 hinst 4,  hinst d��st  allsand Zeiln  yso naachynaynand
++     haast, wie s hinghoernd.
++
++---> d) Kanst du d�s aau?
++---> b) Veigerln seind blau.
++---> c) Bedachtn kan myn lernen.
++---> a) Roosn seind root.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Letzn 3.2: ERS�TZN (�replace�)
++
++
++      ** Zipf  rx  , um d�s Zaichen unter n M�rkl durch  x  z ers�tzn. **
++
++  1. Bew�g �nn M�rkl zo dyr eerstn untignen Zeil mit   --->   dyrvor.
++
++  2. Bew�g �nn M�rkl, hinst d�� yr auf n eerstn Faeler steet.
++
++  3. Zipf  r  und drafter d�s Zaichen, wo dyrf�r daa hinghoert.
++
++  4. Widerhol d Schritt 2 und 3,  hinst d��st de eerste Zeil  gmae� dyr zwaittn
++     berichtigt haast:
++--->  Wie d� Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft!
++--->  Wie d� Zeil eing�bn wurd, wurdnd ainige falsche Tastnen zipft!
++
++  5. Ietz tue mit dyr Letzn 3.3 weiter.
++
++Anm�rkung: Vergi� nit drauf, d��st mit n Anwenddn lernen solltst und nit �bbenn
++           mit n Auswendiglernen!
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                          Letzn 3.3: �NDERN (�change�)
++
++
++              ** Um hinst eyn s Wortend z �ndern, zipf  ce  . **
++
++  1. Gee mit n M�rkl auf de eerste mit ---> angm�rkte Zeil.
++
++  2. Ietz farst netty auf s  "s"  von Wstwr hin.
++
++  3. Zipf  ce  ein und aft d Wortberichtigung, daader also  �rter  .
++
++  4. Druck <ESC> und bew�g �nn M�rkl gan n naehstn Zaichen,  wo g�ndert ghoert.
++
++  5. �fert  d Schritt 3 und 4,  hinst d��  dyr eerste Saz  wie dyr zwaitte ist.
++
++---> Ainige Wstwr von derer Zlww ghhnnd mit n �ndern-Pfemerer gaauu.
++---> Ainige W�rter von derer Zeil ghoernd mit n �ndern-Pfemerer g�ndert.
++
++ce  l�scht also s Wort und schlaaufft di eyn d Eingaab-Artweis.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                  Letzn 3.4.: NON MEERER �NDERUNGEN PFELFS  c
++
++
++   ** D L�shfaudung  c  arechtt mit de n�mlichnen Wolender wie d� mit  d  **
++
++  1. Dyr �nder-Pfemerer arechtt anleich wie d L�shfaudung mit   d  ,  und zwaar
++     yso:
++         c    [Zal]   Bew�gungsschritt (Wolend)
++
++  2. D Wolender  seind  de gleichn,  �bbenn  w  f�r Wort und  $ f�r s Zeilnend.
++
++
++  3. Bew�g di zo dyr eerstn untignen Zeil mit ---> .
++
++  4. Ietz geest auf d�nn eerstn Faeler.
++
++  5. Zipf  c$  , gib �nn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft
++     <ESC>.
++---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn.
++---> S End von derer Zeil sollt mit n Befelh  c$  berichtigt werdn.
++
++Denk allweil dran,  d��st iederzeit  mit dyr Ruggtastn Faeler ausb�ssern kanst.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 3
++
++
++  1. Um ayn  vorher gl�schts Gwort  anzf�egn,  zipf  p  .  Daa dyrmit  werd d�s
++     gantze Gwort  NAACH n M�rkl  angf�egt.  Wenn s ayn gantze Zeil  gw�sn ist,
++     werd d� sel als de Zeil unterhalb n M�rkl eingf�egt.
++
++  2. Um d�s Zaichen  unter n M�rkl,  also wo dyr M�rkl ist,  z ers�tzn, zipf  r
++     und aft d�s Zaichen, wost daadl habn willst.
++
++  3. Dyr �nderungspfemerer ( c = �change�) laasst ainn umbb n M�rkl hinst eyn s
++     End von n Wolend �ndern. Zipf  ce  , dyrmitst umbb n M�rkl hinst eyn s End
++     von n Wort �ndertst, und  c$  hinst eyn s End von dyr Zeil.
++
++  4. F�r d �nderung lautt dyr Pfueg:
++
++     c   [Zal]   Wolend
++
++Ietz tue mit dyr naehstn Letzn weiter.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Letzn 4.1: M�RKLST�LLUNG UND DAUTTICHTDARSTAND
++
++** Demmlt <STRG>g, d��st �nn Befand und Darstand von dyr Dautticht anzaigst. **
++  ** Zipf  G  , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. **
++
++Anm�rkung: Lis d� gantze Letzn daader durch, ee wennst iewign �bbs unternimmst!
++
++  1. Druck  <STRG>g  .  Auf d�s hin erscheint auf derer Seitt ganz unt ayn Dar-
++     standsmeldung  mit n Dauttichtnam  und n Befand  innerhalb  dyr Dautticht.
++     M�rk dyr de Zeilnnummer f�r n Schrit 3.
++
++Anm�rkung:  M�glicherweis  seghst aau �nn M�rklbefand  in n zesmen untern Bild-
++            schirm�gg. Aft ist s "Lindl" (�ruler�) eingst�llt; schau dyrzue mit
++            n Befelh   :help 'ruler'   naach.
++  2. Druck  G  , um an s End von dyr Dautticht z kemmen.
++     gg  gibst ein, d��st gan n Anfang von dyr Dautticht aufhinkimmst.
++
++  3. Gib d Nummer von derer Zeil ein, daa wost vorher warst,  und aft non  G  .
++     D�s bringt di zrugg gan seler Zeil,  daa wost stuenddst,  wiest d�s eerste
++     Maal <STRG>g gadruckst.
++
++  4. Wennst di sicher gnueg f�elst, aft f�er d Schritt 1 hinst 3 aus.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 4.2: DYR BEFELH ZO N SUECHEN 
++               
++
++  ** Zipf  /  und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. **
++
++  1. Du gibst also in dyr Befelhsartweis s Zaichen  /  ein. D�s sel wie aau dyr
++     M�rkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung  :  .
++
++  2. Ietz zipf 'Faeeler' <EIN>. Netty um d�s 'Faeeler' willst ietz suechen.
++
++  3. Willst um gnaun d�nn Ausdruk weitersuechen, zipf ainfach  n  (wie �next�).
++     Willst hinzrugg suechen, aft gibst  N  ein.
++
++  4. Um von Haus aus zruggaus z suechen, nimm  ?  statt  /  her.
++
++  5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o,  und d�s
++     �fter,  wennst weiter zrugg willst.  Mit <STRG>i widerum  kimmst vorw�rts.
++
++--->  Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler
++
++Anm�rkung:  Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi-
++            der weiter dyrmit,  men Sach  dyr Schaltter 'wrapscan' w�r auf aus.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 4.3: DE G�GNKLAMMERN FINDDN
++
++
++   ** Zipf  %  , um de entspr�chete Klammer  )  ,  ]  older  }  z finddn. **
++
++  1. S�tz �nn M�rkl  auf iewign aine  von dene drei Klammern  (  ,  [  older  {
++     in dyr untignen Zeil, wo mit ---> angm�rkt ist.
++
++  2. Ietzet zipf s Zaichen  %  .
++
++  3. Dyr M�rkl geet ietz auf de p�ssete schliessete Klammer.
++
++  4. Ietz demmlt  %  , und dyrmit kimmst gan dyr �ffneretn Klammer zrugg.
++
++  5. S�tz �nn M�rkl auf ayn anderne Klammer von   ({[]})   und pr�blt   %  aus.
++
++---> D�s ( ist  bloo� ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. ))
++
++Anm�rkung:  Um d� M�glichkeit gaast bsunders froo sein,  wennst aynmaal in aynn
++            Spaichgwort verzweiflt ayn faelete G�gnklammer suechst!
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Letzn 4.4: D ERS�TZUNGSFAUDUNG (�substitute�)
++
++
++        ** Zipf  :s/alt/neu/g  , um 'alt' durch 'neu' zo n Ers�tzn. **
++
++  1. Gee mit n M�rkl zo dyr unt steehetn mit ---> angm�rktn Zeil.
++
++  2. Zipf  :s/dee/de <EIN>  . Der Befelh ers�tzt alsnan grad d�s +eerste "dee",
++     wo v�rkimmt.
++
++  3. Ietz pr�blt s mit  :s/dee/de/g  . D�s zues�tzliche  g  ("Pflok"  nennt myn
++     �bbs S�lchers) bewirkt, d�� allss, was dyrmit kennzaichnet ist,  innerhalb
++     von dyr ainn Zeil ers�tzt werd.
++
++---> Dee schoenste Zeit, d�� myn dee Bl�emln anschaut, ist dee schoene Lan-
++     gesszeit.
++  4. Um ietz  allsand Suechbegriff  innerhalb von zwo Zeiln  zo n �ndern,  zipf
++     :#,#s/alt/neu/g  ,  wobei # ieweils f�r de eerste und l�sste Zeil von d�nn
++     Pfraich steet.
++     :%s/alt/neu/g  zipfst, d��st d V�rkemmen in dyr gantzn Dautticht �ndertst.
++        Mit  :%s/alt/neu/gc  finddst allsand V�rkemmen in dyr gsamtn Dautticht;
++     daa werst aber zeerst non gfraagt, obst ys ers�tzn willst older nity.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 4
++                        
++  1. <STRG>g   zaigt d�nn ietzundn Dauttichtbefand  und �nn Darstand dyrvon an.
++           G  bringt di an s End von dyr Dautticht.
++     <Zal> G  bringt di gan dyr entspr�chetn Zeilnnummer.
++          gg  bringt di zo dyr eerstn Zeil.
++          
++  2. D Eingaab von  /  mit aynn Ausdruk suecht V�RSHLING um d�nn Ausdruk.
++     Gibst  ?  und aynn Suechbegrif ein, suecht s um d�nn �RSHLING.
++     Zipf naach ayner Suech  n  ;  naacherd werd in de gleiche Richtung weiter-
++     gsuecht. Mit  N geet s umkeerter weiter.
++     <STRG>o bringt di zo �lterne Bef�ndd zrugg, <STRG>i zo neuerne.
++
++  3. D Eingaab von  % , wenn dyr M�rkl auf ainer von dene Klammern steet:   ({[
++     )]}  , bringt di zo dyr G�gnklammer.
++
++  4. Um d�s eerste V�rkemmen  von "alt"  in ayner Zeil  durch "neu"  z ers�tzn,
++     zipf   :s/alt/neu   .
++     Um allsand in ayner Zeil z ers�tzn, zipf   :s/alt/neu/g   .
++     Mechst allss in zwo Zeiln ers�tzn, demmlt zo n Beispil  :5,6s/alt/neu/g  .
++     Mechst allss in dyr gantzn Dautticht ers�tzn, gib ein:   :%s/alt/neu/g   .
++     Willst ayn ieds Maal bstaetln, h�ng 'c' wie �confirm� hint anhin.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++            Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSF�ERN 
++            
++
++  ** Willst ayn Gf��faudung ausf�ern, gib ainfach d� sel naach   :!   ein. **
++ 
++  1. Zipf  d�nn bekanntn Befelh   :  ,  dyrmitst  mit n M�rkl  auf n Bildschirm
++     ganz abhin kimmst. Draufhin kanst aynn gwonen Gf��befelh eing�bn.
++
++  2. Zeerst  kimmt aber non ayn Ruefzaichen   !   .  Und ietz haast de M�glich-
++     keit, ayn beliebige ausserige Gf��faudung auszf�ern.
++
++  3. Als Beispil zipf   :!ls <EIN>  ; und schoon haast ayn Auflistung von deinn
++     Verzaichniss,  netty  wie wennst  ganz gwon  in n Eingib w�rst.  Geet   ls
++     aus iewign aynn Grund nit, aft pr�blt s mit  :!dir <EIN>  .
++
++Also non aynmaal: Mit d�nn Angang kan ayn iede beliebige ausserige Faudung aus-
++                  gf�ert werdn, aau mit Auerwerdd.
++
++Und wolgm�rkt:    Allsand Befelh, wo mit  :  angeend,  m�essend mit <EIN> bst�-
++                  tigt werdn. D�s dyrsagn myr v�rba� niemer.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++           Letzn 5.2: NON MEERER DR�BER, WIE MYN DAUTTICHTN SCHREIBT
++
++
++      ** Um �bbs G�nderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. **
++
++  1. Zipf  :!dir   older  :!ls  ,  d��st dyr ayn Auflistung von deinn Verzaich-
++     niss ausherlaasst.  D��st dyrnaach <EIN> eing�bn muesst, waisst ee schoon.
++
++  2. Suech dyr aynn Dauttichtnam aus, d�nn wo s non nit geit, �bbenn POCH.
++
++  3. Ietz demmlt:  :w POCH   (also mit POCH als d�nn neuen Dauttichtnam).
++
++  4. D�s speichert ietz de gantze Dautticht, also �nn Wimmschainer,  unter d�nn
++     Nam POCH. D�s kanst leicht �berpr�effen, indem d��st ainfach  :!ls   older
++     :!dir  zipfst und dyrmit deinn Verzaichnissinhalt seghst.
++
++Anm�rkung:  Stigst ietz aus n Wimm aus und g�nnst n aft wider mit   vim POCH  ,
++            naacherd w�r d� Dautticht ayn gnaune Aamum von n Schainer dyrselbn,
++            wiest n gspeichert haast.
++
++  5. Ietz verweitert d� Dautticht - fallsst s Fenstl haast - , mit   :!del POCH
++     beziehungsweis bei aynn Ainslgeb�u mit   :!rm POCH   .
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++            Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN
++
++** Um aynn Tail von dyr Dautticht z speichern, zipf  v [Wolend] :w DAUTTICHT **
++
++  1. Ruck �nn M�rkl auf netty d� Zeil daader.
++
++  2. Demmlt  v  und gee mit n M�rkl  auf d�nn f�mftn Auflistungspunt untet.  Du
++     seghst glei, d�� s Gwort v�rhergh�bt erscheint.
++
++  3. Druck s Zaichen  :  . Ganz unt auf n Bildschirm erscheint  :'<,'>  .
++
++  4. Zipf  w POCH  , wobei s d�nn Dauttichtnam POCH  non nit geit.  Vergwi� di,
++     d��st d�s  :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst.
++
++  5. Dyr Wimm schreibt de ausgwaltn Zeil  eyn de Dautticht POCH einhin.  Benutz
++     :!dir  older  :!ls  ,  d��st d�s �berpr�effst. L�sh s fein nit �bbenn! Mir
++     brauchend s n�mlich f�r de naehste Letzn.
++
++Anm�rkung:  Druckt myn  v  , ginnt d Sichtisch-Auswal. Du kanst mit n M�rkl um-
++            aynandfarn,  um d Auswal  z ver�ndern.  Drafter kan myn mit yn aynn
++            Pfemerer  mit d�nn Gwort  �bbs machen.  Zo n Beispil l�scht  d  d�s
++            Gwort.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++               Letzn 5.4: EINL�SN UND ZAMMENF�ERN VON DAUTTICHTN   
++
++
++    ** Um �nn Inhalt von ayner Dautticht einzl�sn, zipf  :r DAUTTICHTNAM  **
++
++  1. S�tz �nn M�rkl �ber d� Zeil daader.
++
++OBACHT:  Aft d��st �nn Schrit 2  ausgf�ert haast,  seghst auf aynmaal  �bbs aus
++         dyr Letzn 5.3.  Bew�g di naacherd wider abw�rts, dyrmitst d� Letzn wi-
++         derfinddst.
++  2. Ietz  lis  dein Dautticht  POCH ein,  indem d��st d Faudung   :r POCH aus-
++     f�erst,  wobei wie gsait POCH  f�r d�nn  von dir  ausgsuechtn Dauttichtnam
++     steet. De eingl�sne Dautticht werd unterhalb dyr M�rklzeil eingf�egt.
++
++  3. Um zo n �berpr�effen,  ob de Dautticht  aau gwi� eingl�sn ist,  gee zrugg;
++     und du seghst,  d�� s ietz zwo Ausf�rtigungen  von dyr Letzn 5.3. geit,  s
++     Urniss und de eingf�egte Dauttichtfassung.
++
++Anm�rkung:  Du kanst aau  d Ausgaab von aynn Ausserigbefelh einl�sn.  Zo n Bei-
++            spil list   :r !ls  d Ausgaab von dyr Faudung  ls   ein und f�egt s
++            unterhalb n M�rkl ein.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 5
++
++
++  1. :!FAUDUNG f�ert aynn ausserignen Befelh aus.
++
++      Daader ayn �ttlych gw�nddte Beispiler:
++      (Fenstl)              (Ainsl - Leinsl)
++      :!dir                 :!ls                - listt s Verzaichniss auf.
++      :!del DAUTTICHT       :!rm DAUTTICHT      - verweitert sele Dautticht.
++
++  2. :w DAUTTICHT  speichert de ietzunde Wimmdautticht  unter d�nn besagtn Nam.
++
++  3. v  WOLEND  :w DAUTTICHTNAM   schreibt de sichtisch ausgwaltn Zeiln  eyn de
++     Dautticht mit seln Nam.
++
++  4. :r DAUTTICHTNAM  ladt sele Dautticht  und f�egt s  unterhalb n M�rklbefand
++     ein.
++
++  5. :r !dir   list d Ausgaab  von dyr Faudung   dir   und f�egt s  unterhalb n
++     M�rklbefand ein.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Letzn 6.1: ZEIL �FFNEN (�open�)
++
++
++        ** Zipf o, um ayn Zeil unterhalb n M�rkl z �ffnen und eyn d **
++                        ** Einf�egartweis z kemmen. **
++
++  1. Bew�g �nn M�rkl zo dyr eerstn mit ---> angm�rktn Zeil unt.
++
++  2. Zipf o (klain),  um ayn Zeil  UNTERHALB n M�rkl z �ffnen  und mit dyr Ein-
++     f�egartweis weiterztuen.
++
++  3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>,  um d Einf�egartweis z ver-
++     laassn.
++---> Mit  o  werd dyr M�rkl auf de offene Zeil in dyr Einf�egartweis gs�tzt.
++
++  4. Um ayn Zeil OBERHALB n M�rkl aufzmachen,  gib ainfach aynn groosss O statt
++     yn aynn klainen ein. Versuech d�s auf dyr untignen Zeil.
++
++---> �ffnet ayn Zeil �ber derer daader mit  O  ,  wenn dyr M�rkl auf derer Zeil
++     ist.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 6.2: GWORT ANF�EGN (�append�)
++
++
++                ** Zipf  a  , um �bbs NAACH n M�rkl einzf�egn. **
++
++  1. Bew�g �nn M�rkl gan n Anfang von dyr eerstn �ebungszeil mit ---> unt.
++
++  2. Druck  e  , hinst d�� dyr M�rkl an n End von  Zei  steet.
++
++  3. Zipf ayn klains  a  , um �bbs NAACH n M�rkl anzf�egn.
++
++  4. Verg�ntz d�s Wort wie in dyr Zeil drunter.  Druck <ESC>, um d Schreib-Art-
++     weis z verlaassn.
++
++  5. Bew�g di mit  e   zo n naehstn ungantzn Wort  und widerhol d Schritt 3 und
++     4.
++
++---> D� Ze biett ayn Gl�gn , ayn Gwort in ayner Zeil anzf�.
++---> D� Zeil biett ayn Gl�gnet, ayn Gwort in ayner Zeil anzf�egn.
++
++Anm�rkung:   a  ,  i  und  A  bringend ainn gleichermaa�n eyn d Einf�egartweis;
++             dyr ainzige Unterschaid ist, WO mit n Einf�egn angfangt werd.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++              Letzn 6.3: AYN ANDERNE WEIS ZO N ERS�TZN (�replace�)
++
++
++ ** Demmlt ayn groosss  R  , um meerer als wie grad ain Zaichen z ers�tzn. **
++
++  1. Bew�g �nn M�rkl zo dyr eerstn untignen, mit ---> angm�rktn Zeil.
++     Gee mit n M�rkl gan n Anfang von n eerstn  xxx  .
++
++  2. Ietz druck  R   und zipf sele Zal,  wo drunter  in dyr zwaittn Zeil steet,
++     yso d�� de sel s xxx ers�tzt.
++
++  3. Druck <ESC> ,  um d Ers�tzungsartweis  z verlaassn.  Du gspannst,  d�� dyr
++     Rest von dyr Zeil unver�ndert bleibt.
++
++  4. �fert die Schritt, um d�s �berblibne xxx z ers�tzn.
++
++---> S Zunddn von 123 zo xxx ergibt xxx.
++---> S Zunddn von 123 zo 456 ergibt 579.
++
++Anm�rkung: D Ers�tzungsartweis ist wie d Einf�egartweis,  aber ayn ieds eindem-
++           mlte Zaichen l�scht ayn vorhanddns.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 6.4: GWORT AAMEN UND EINF�EGN
++
++ ** Benutz �nn Pfemerer  y  , um �bbs z aamen, und  p  , um �bbs einzf�egn. **
++
++  1. Gee zo dyr mit  --->  angm�rktn Zeil unt  und s�tz �nn M�rkl  hinter "a)".
++
++  2. Ginn d Sichtisch-Artweis mit   v   und bew�g �nn M�rkl gnaun vor "eerste".
++  
++  3. Zipf  y  , um d�nn v�rhergh�btn Tail z aamen.
++
++  4. Bew�g �nn M�rkl gan n End von dyr naehstn Zeil:  j$
++
++  5. Demmlt  p  , um d�s Gwort einzf�egn, und aft:  a zwaitte <ESC>  .
++
++  6. Benutz d Sichtischartweis, um " Eintrag." auszwaln,  aam s pfelfs  y,  be-
++     w�g di gan n End von dyr naehstn Zeil mit  j$   und f�eg s Gwort dortn mit
++     p  an.
++
++--->  a) d�s ist dyr eerste Eintrag.
++      b)
++
++Anm�rkung: Du kanst  y  aau als Pfemerer verwenddn;  yw  aamt ain Wort.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Letzn 6.5: SCHALTTER S�TZN
++
++** S�tz aynn Schaltter yso,  d�� ayn Suech older Ers�tzung Groo�- und Klain- **
++                            ** schreibung �bergeet. **
++                            
++  1. Suech um '�bergee", indem d��st   /�bergee   eingibst.
++     Widerhol d Suech ayn �ttlych Maal, indem d��st de Tastn  n  druckst.
++
++  2. S�tz de Zwisl - �nn Schaltter - 'ic' (�ignore case�), indem d��st  :set ic
++     eingibst.
++  3. Ietz suech wider um '�bergee' und tue aau wider mit  n  weiter.  Daa fallt
++     dyr auf, d�� ietz �bbenn aau  �bergee  und  �BERGEE  hergeet.
++
++  4. S�tz de Zwisln 'hlsearch' und 'incsearch' pfelfs:   :set hls is
++
++  5. Widerhol d Suech und bobacht, was ietz gschieght:   /�bergee <EIN>
++
++  6. D��st groo� und klain wider gwon unterscheidst, zipf:   :set noic
++
++Anm�rkung:  Mechst de Tr�ffer niemer v�rhergh�bt seghn,  gib ein:   :nohlsearch
++Anm�rkung:  Sollt klain/groo� bei ayner ainzignen Suech wurst sein,  benutz  \c
++            in n Suechausdruk:   /�bergee\c <EIN>
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 6
++
++  1. Zipf  o  ,  um ayn Zeil  UNTERHALB n M�rkl z �ffnen und d Einf�egartweis z
++                 ginnen.
++     Zipf  O  ,  um ayn Zeil OBERHALB n M�rkl z �ffnen.
++
++  2. Zipf  a  ,  um NAACH n M�rkl ayn Gwort einzf�egn.
++     Zipf  A  ,  um ayn Gwort naach n Zeilnend anzf�egn.
++
++  3. D Faudung  e  bringt di gan n End von aynn Wort.
++
++  4. Dyr Pfemerer  y  (�yank�) aamt �bbs,  p  (�put�) f�egt d�s ein.
++
++  5. Ayn groosss  R  geet eyn d Ers�tzungsartweis,  hinst d�� myn <ESC> druckt.
++
++  6. D Eingaab von ":set xxx"  s�tzt de Zwisl "xxx".  Ayn �ttlych Zwisln seind:
++     'ic' 'ignorecase'   Groo�/klain wurst bei ayner Suech
++     'is' 'incsearch'    Zaig aau schoon ayn Tail�berainstimmung
++     'hls' 'hlsearch'    H�b allsand p�ssetn Ausdr�ck v�rher
++     Dyr Schaltternam kan in dyr Kurz- older Langform ang�bn werdn.
++
++  7. St�ll yn ayner Zwisl "no" voran, d��st ys abschalttst:   :set noic
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 7.1: AYN HILFGWORT AUFRUEFFEN
++
++
++            ** Nutz d�s einbaute Hilfgeb�u, de "Betribsanlaittung" **
++
++  Eyn n Wimm  ist ayn ausf�erliche "Gebrauchsanweisung"  einbaut.  F�r s Eerste
++  pr�blt ainfach ains von dene dreu aus:
++    - Druck d <HILF>-Tastn, wennst �bbenn aine haast.
++    - Druck de Tastn <F1>, fallsst ys haast.
++    - Zipf   :help <EIN>
++
++  Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie d�s mit dyr Hilf geet.
++  Demmlt  <STRG>w w  , um von ainn Fenster zo n andern zo n Springen.
++  Demmlt   :q <EIN>  , um s Hilffenster zo n Schliessn.
++
++  Du kanst zo so guet wie allssand ayn Hilf finddn,  indem d��st yn dyr Faudung
++  :help   aynn Auerwerd naachst�llst und istig <EIN> nit vergisst.  Pr�blt d�s:
++
++     :help w
++     :help c_CTRL-D
++     :help insert-index
++     :help user-manual
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 7.2: ERST�LL AYN GIN-SCHRIPF
++
++
++            ** Mutz �nn Wimm mit de einbautn Faehigkeitn auf **
++
++  Dyr Wimm besitzt ayn W�sn Sch�ftungen,  wo �ber n Urwimm aushingeend, aber de
++  meerern dyrvon  seind in dyr Vorgaab ausgschaltt.  Dyrmitst meerer aus n Wimm
++  ausherholst, erst�llst ayn "vimrc"-Dautticht.
++
++  1. L�g ayn "vimrc"-Dautticht an;  d�s geet  ie naach Betribsgeb�u  verschidn:
++     :e ~/.vimrc     f�r s Ainsl
++     :e $VIM/_vimrc  bei n Fenstl
++
++  2. Ietz lis �nn Inhalt von dyr Beispil-"vimrc"-Dautticht ein:
++     :r $VIMRUNTIME/vimrc_example.vim
++
++  3. Speichert de Dautticht mit:
++     :w
++
++  4. Bei n naehstn Gin von n Wimm  ist aft d F�egnussv�rherh�bung  zuegschaltt.
++     Du kanst dyr allss  eyn d� Dautticht  einhinschreibn,  wasst bst�ndig habn
++     willst. Meerer dyrzue erfarst unter:   :help vimrc-intro
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                              Letzn 7.3: VERG�NTZN
++
++
++               ** Befelhszeilnverg�ntzung mit <STRG>d und <TAB> **
++
++  1. Vergwi� di, d�� dyr Wimm nit auf n Urwimm-"Glais" fart:   :set nocp
++
++  2. Schaug naach, w�lcherne Dauttichtn d�� s in n Verzaichniss geit:   :!ls
++     older   :!dir
++  3. Zipf �nn Anfang von ayner Faudung:   :e
++
++  4. Druck  <STRG>d  ,  und dyr Wimm zaigt ayn Listn von Faudungen,  wo mit "e"
++     angeend.
++  5. Druck  <TAB>  ,  und dyr Wimm vervollst�ndigt  �nn Faudungsnam zo ":edit".
++
++  6. F�eg  ayn Laerzaichen  und �nn Anfang  von ayner  besteehetn Dautticht an:
++     :edit DAU
++
++  7. Druck <TAB>.  Dyr Wimm verg�ntzt �nn Nam,  d�s haisst,  wenn yr aindeuttig
++     ist.
++Anm�rkung:  D Verg�ntzung  geit s f�r aynn Hauffen Faudungen.  Versuech ainfach
++           <STRG>d  und  <TAB>.  Bsunders n�tzlich ist d�s bei   :help  .
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 7
++
++
++  1. Zipf  :help   older druck <F1> older <HILF>,  um ayn Hilffenster z �ffnen.
++
++  2. Zipf  :help FAUDUNG  , um auf ayn Hilf gan aynn Befelh z kemmen.
++
++  3. Zipf  <STRG>w w  , um zo n andern Fenster z springen.
++
++  4. Zipf  :q  , um s Hilffenster z schliessn.
++
++  5. Erst�ll ayn vimrc-Ginschripf  zuer Sicherung von deine M�tzneinst�llungen.
++
++  6. Druck <STRG>d, aft d��st naach  :  mit ayner Faudung angfangt haast,  dyr-
++     mitst m�gliche Verg�ntzungen anzaigt kriegst.
++     Druck <TAB> f�r ain Vervollst�ndigung yllain.
++
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  D�s w�r ietzet s End von n Wimmschainer.  Gangen ist s daa drum,  aynn kurtzn
++  und b�ndignen �berblik �ber s Blat  WIMM z lifern,  netty vil gnueg,  d�� myn
++  f�r s Eerste  wirklich �bbs  dyrmit anfangen kan.  Dyrmit ist s aber auf kain
++  Weitn non nit taan;  dyr Wimm haat schoon non vil meerer  auf Lager.  Lis als
++  Naehsts aynmaal s Benutzerhandbuech:   :help user-manual   .
++
++  Zo n Weiterl�sn und Weiterlernen w�r d�s Buech daader zo n Empfelhen:
++    Vim - Vi Improved - von n OUALLINE Steve
++    Verlaag: New Riders
++  D�s ist d�s eerste Buech, wo ganz yn n Wimm gwidmt ist, netty d�s Grechte f�r
++  Anf�nger. Es haat ayn W�sn Beispiler und aau Bilder drinn.
++  See http://iccf-holland.org/click5.html
++
++  D�s folgete Buech  ist schoon �lter und meerer  �ber n Urwimm  als wie �ber n
++  Wimm,  aber aau zo n Empfelhen:   Textbearbeitung mit dem vi-Editor - von dyr
++  LAMB Linda und n ROBBINS Arnold  -  Verlaag O'Reilly  - Buechlaittzal (ISBN):
++  3897211262
++  In d�nn Buech  kan myn fast allss finddn,  was myn mit n Urwimm angeen mecht.
++  De s�xte Ausgaab enthaltt aau schoon �bbs �ber n Wimm.
++  Als ietzunde Bezugniss  f�r d Fassung  6.2  und ayn pfrenge Einf�erung  dient
++  d�s folgete Buech:
++    vim ge-packt  von n WOBST Reinhard
++    mitp-Verlaag, Buechlaittzal 3-8266-1425-9
++  Trotz dyr recht pfrengen Darst�llung  ist s durch seine viln n�tzlichnen Bei-
++  spiler aau f�r Einsteiger grad grecht.  Probhaeupster und de Beispilschripfer
++  seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html
++
++  Verfasst habnd d�nn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr
++  Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entw�rff, wo
++  dyr SMITH Charles  von dyr  Kolraader Allschuel  (Colorado State  University)
++  zuer Verf�egung gst�llt haat. Gundpost: [email protected].
++  F�r n Wimm haat n dyr MOOLENAAR Bram barechtt.
++  De bairische �bers�tzung stammt von n HELL Sepp 2009. Sein Gundpostbr�cht ist
++  [email protected] 
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++  
++
++ 
++
++
++
+diff -Nur runtime/tutor/tutor.bj.utf-8 runtime/tutor/tutor.bj.utf-8
+--- runtime/tutor/tutor.bj.utf-8	1969-12-31 16:00:00.000000000 -0800
++++ runtime/tutor/tutor.bj.utf-8	2011-04-03 09:27:21.872918297 -0700
+@@ -0,0 +1,987 @@
++===============================================================================
++=    G o t i k a m   i n   n   W I M M - S c h a i n e r   -   Fassung 1.7D   =
++===============================================================================
++
++   Dyr Wimm ist ayn gro mächtigs Blat, dös was mit aynn Wösn Befelh aufwartt; z
++   vil,  däß myn s allsand  in aynn Schainer  wie dönn daader  unterbräng.  Der
++   Schainer ist yso aufbaut,  däß yr halt netty die Befelh allsand bringt, wost
++   brauchst, däßst mit iem für s Eerste wirklich öbbs anfangen kanst.
++   Durchhinarechtn kanst di, wennst willst, in ayner halbetn Stund; dös haisst,
++   wennst di nit grooß mit n Pröbln und Tüftln aufhaltst.
++
++   OBACHT:
++   Die Faudungen,  wost daader finddst,  gaand istig  s Gwort öndern.  Dösswögn
++   machst eyn n Böstn glei  ayn Aamum von derer Dautticht daader.  Haast alsnan
++   dös Gwort daader  mit n Befelh "vimtutor bj"  ausherlaassn,  ist s ee schoon
++   ayn Aamum.
++   Mir kan s  nit oft gnueg  sagn,  däß  der Schainer daader  istig  gan n Üebn
++   ghoert.  Also muesst schoon aau die Befelh ausfüern,  wennst ys gscheid ler-
++   nen willst. Mit n Lösn yllain ist s +nit taan!
++
++   Ietz schaust grad non, däß dein Föststölltastn nit druckt ist; und aft geest
++   glei aynmaal mit dyr j-Tastn abwärts (yso laaufft dös nömlich),  hinst däßst
++   de gantze Letzn 1.1 auf n Bildschirm haast.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 1.1: MIT N MÖRKL UMAYNANDFARN
++
++**  Dyrmitst mit n Mörkl umaynandkimmst, druck h, j, k und l wie unt zaigt.  **
++            ^            Ayn Öslsbrugg:
++            k            De Tastn  h  ist winster und +geet aau gan winster.
++   < h             l >   S  l  leit zesm und richtt si gan zesm.
++            j            S  j  kan myn wie aynn Pfeil gan unt seghn.
++            v            Mit n  k  kimmst gan n KOPF.            
++  1. Ietz ruedertst ainfach mit n Mörkl auf n Bildschirm umaynand,  hinst däßst
++     di sicher füelst.
++  2. Halt  d Abhin-Tastn (j)  druckt;  aft rumplt s  ainfach weiter.  Netty yso
++     kimmst gan dyr naehstn Letzn.
++     
++  3. Wie gsait, ietz bewögst di also mit derer Tastn gan dyr Letzn 1.2.
++
++Non öbbs: Allweil, wenn dyr niemer ganz wol ist, wasst öbbenn druckt haast, aft
++          zipfst  <ESC>;  naacherd bist wider ganz gwon in dyr Befelhs-Artweis.
++
++      
++          Nöbnbei gsait kimmst gwonerweil aau mit de Pfeiltastnen weiter.  Aber
++          hjkl  seind z haissn s Wimm-Urgstain;  und de "Hörtn" seind ganz dyr-
++          für, däß myn bei +dene bleibt. Pröblt s ainfach aus!
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Letzn 1.2: ÖNN WIMM AUSSCHALTTN
++
++
++  ALSO, EE WENNST ÖBBS VON DAA UNT AUSFÜERST,  LIS LIEBER ZEERST DE GANTZE LET-
++  ZN!
++
++  1. Druck d <ESC>-Tastn, dyrmitst aau gwiß in dyr Befelhs-Artweis bist.
++  
++  2. Demmlt  :q! <EIN>.
++     Daa dyrmit  benddst ys Blat  und verwirffst  allss,  wasst öbbenn  göndert
++     haast.
++
++  3. Balst önn Eingib seghst, gib dö Faudung ein,  wo di zo dönn Schainer brun-
++     gen haat, also    vimtutor bj <EIN>.
++
++  4. Also, wenn ietz allsse sitzt, naacherd füerst d Schritt 1 hinst 3 aus, mit
++     wasst ys Blat verlaasst und aft wider einhinkimmst.
++
++Anmörkung: Mit  :q! <EIN> verwirffst allss, wasst göndert older enther gschribn
++           haast. In aynn Öttlych Letznen lernst acht, wiest dös allss in ayner
++           Dautticht speichertst.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 1.3: GWORT BARECHTN - LÖSCHN 
++
++         
++         ** Druck  x  , dyrmitst dös Zaichen unter n Mörkl löschst. **
++
++  1. Bewög di mit n Mörkl auf de mit  ---> angmörkte Zeil unt.
++
++  2. Zo n Faeler Verbössern  farst mit n Mörkl  netty  auf dös Zaichen,  dös wo
++     glöscht ghoert.
++
++  3. Druck de Tastn  x  , däßst dös überflüssige Zaichen löschst.
++
++  4. Ietz tuest so lang weiter mit 2 hinst 4, hinst däß dyr Saz stimmt.
++
++---> De Kkuue sprangg übber nn Maanad.
++
++  5. Wenn ietz de Zeil verbössert ist, geest gan dyr Letzn 1.4. weiter.
++
++Und ganz wichtig:  Dyrweilst dönn Schainer durcharechtst,  versuech nit öbbenn,
++                   allss auswendig z lernen;  nän, lern ainfach mit n Anwenddn!
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 1.4: GWORT BARECHTN - EINFÜEGN
++
++
++                  **  Druck  i  , dyrmitst öbbs einfüegst. **
++
++  1. Bewög önn Mörkl zo dyr eerstn untignen Zeil, wo mit ---> angeet.
++
++  2. Dyrmitst  de eerste Zeil  wie de zwaitte machst,  bewög önn Mörkl  auf dös
++     eerste Zaichen NAACH derer Stöll, daa wo s Gwort eingfüegt werdn sollt.
++
++  3. Druck  i  und gib dös ein, was abgeet.
++
++  4. Wenn ieweils ayn Faeler verweitert ist, aft druck <ESC>; und dyrmit kimmst
++     gan dyr Befelhsartweis zrugg.
++     So, und ietz tuest ainfach yso weiter, hinst däß dyr Saz stimmt.
++
++---> Daader gt dd öbbs b.
++---> Daader geet diend öbbs ab.
++
++  5. Balst mainst,  däßst ys Gwort-Einfüegn kanst, aft geest gan dyr Letzn 1.5.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 1.5: GWORT BARECHTN - ANFÜEGN
++
++
++                      ** Druck  A  gan n Gwort Anfüegn. **
++
++  1. Gee mit n Mörkl gan dyr eerstn untignen Zeil, wo ayn ---> dyrvor haat.
++     Daa ist s gleich, wo gnaun dyr Mörkl in derer Zeil steet.  
++
++  2. Demmlt  A  und gib de entspröchetn Ergöntzungen ein.
++
++  3. Wennst  mit n Anfüegn förtig bist,  aft druckst <ESC>,  däßst wider eyn de
++     Befelhsartweis zruggkimmst.
++
++  4. So,  und ietz geest aft non gan dyr zwaittn  mit ---> angmörktn Zeil;  und
++     daadl machst ys netty yso.
++
++---> In derer Zeil gee  
++     In derer Zeil geet ayn Weeng ayn Gwort ab.
++---> Aau daader stee
++     Aau daader steet öbbs Unvollstöndigs. 
++
++  5. Wennst s Anfüegn von Gwort drauf haast, naacherd gee gan dyr Letzn 1.6.  
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 1.6: AYN DAUTTICHT BARECHTN
++
++
++     ** Mit  :wq  speichertst ayn Dautticht und verlaasst önn Wimm ganz. **
++
++  !! OBACHT:  Ee wennst mit dönn alln daa unt weitertuest, lis zeerst de gantze
++     Letzn durch!!
++
++  1. Verlaaß also s Blat, wie s in dyr Letzn 1.2. haisst, mit  :q!  !
++
++  2. Gib dö Faudung eyn n Eingib ein:  vim Schainer <EIN> . 'vim' ruefft s Blat
++     auf,  und 'Schainer'  haisst de Dautticht,  wost barechtn  willst.  Dyrmit
++     haast also ayn Dautticht, dö wost barechtn kanst.
++
++  3. Ietz  füegst öbbs ein older löschst öbbs,  wiest ys in de vorignen Letznen
++     glernt haast.
++
++  4. Speichert de gönderte Dautticht und verlaaß önn Wimm mit  :wq  <EIN>  .
++
++  5. Schmeiß önn Wimmschainer neu an und gee gan dyr folgetn Zammenfassung.
++
++  6. Aft däßst  de obignen Schritt glösn und käppt haast,  kanst ys durchfüern.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 1
++
++
++  1. Dyr Mörkl werd mit de Tastnen hjkl older aau mit de Pfeiltastnen gsteuert.
++              h (winst)     j (ab)        k (auf)       l (zes)
++
++  2. Um önn Wimm umbb n Eingib aus z ginnen, demmlt: vim DAUTTICHT <EIN> .
++
++  3. Willst önn Wimm verlaassn und aau allss verwerffen, aft gibst ein:
++                <ESC>  :q!  <EIN> .
++     Gan n Verlaassn und Speichern aber zipfst <ESC>  :wq  <EIN>.
++
++  4. Willst dös Zaichen löschn, daa wo dyr Mörkl drauf ist, demmltst  x  .
++
++  5. Willst öbbs vor n Mörkl eingöbn, zipfst  i  und drafter  <ESC>  .
++     Mechst ys aber eyn s Zeilnend anhinhöngen, benutzt ys   A  .
++     Und ainfach naach n Mörkl füegst ys mit  a  ein  .
++
++Anmörkung:  Druckst <ESC>, kimmst eyn de Befelhsartweis zrugg older brichst ayn
++            Faudung ab, dö wo dyr schiefgangen ist.
++
++     Ietz tue mit dyr Letzn 2 weiter.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Letzn 2.1.: LÖSHFAUDUNGEN
++
++
++                 ** Demmlt  dw  , dyrmitst ayn Wort löschst **
++
++  1. Druck  <ESC>, dyrmit s aau gwiß ist, däßst in dyr Befelhsartweis bist.
++
++  2. Bewög önn Mörkl zo dyr mit ---> angmörktn Zeil unt.
++
++  3. Und daa geest ietz auf n Anfang von aynn Wort, dös wo glöscht ghoert.
++
++  4. Zipf  dw  , däßst dös gantze Wort löschst.
++
++  Nöbnbei:  Dyr Buechstabn  d  erscheint auf dyr lösstn Zeil  von n Bildschirm,
++            sobaldst n eingibst. Dyr Wimm wartt ietz drauf, däß öbbs kimmt, al-
++            so  daader ayn  w  .  Seghst  freilich  öbbs Anderts  wie ayn  d  ,
++            naacherd haast  öbbs Falschs  demmlt.  Druck aft  <ESC>  und pröblt
++            s non aynmaal.
++---> Ayn Öttlych Wörter lustig ghoernd nit Fisper eyn dönn Saz einhin.
++
++  5. Äfert  d Schritt  3 und 4,  hinst däß  dyr Saz pässt,  und gee aft gan dyr
++     Letzn 2.2.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 2.2.: NON MEERER LÖSHFAUDUNGEN
++
++
++            ** Gib  d$  ein, däßst hinst eyn s Zeilnend löschst. **
++
++  1. Druck <ESC> , dyrmitst aau gwiß in dyr Befelhsartweis bist.
++
++  2. Bewög önn Mörkl hinst eyn de mit ---> angmörkte Zeil untn.
++
++  3. Gee mit n Mörkl auf s End von dyr faelerfreien Zeil, NAACH n eerstn  .   .
++
++  4. Zipf  d$  , däßst hinst eyn s End von dyr Zeil löschst.
++  
++---> Öbber haat s End von dyr Zeil doplt eingöbn. doplt eingöbn.
++
++
++  5. Gee weiter  gan dyr Letzn 2.3,  dyrmitst versteest,  was daader ablaaufft.
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Letzn 2.3: PFEMERER UND WOLENDER
++
++
++  Vil Faudungen,   wo s Gwort öndernd, sötznd si aus aynn Pfemerer und aynn Wo-
++  lend zamm. Bal i also öbbs löschn will, schreib i ainsting  d  und aft s "Wo-
++  lend", dös haisst also, "wolend", "wohin" däß i will - older was i halt gnaun
++  löschn will.
++
++
++
++
++
++
++  Daader also, was i wie löschn kan:
++    w - hinst eyn n Anfang von n naehstn Wort AANE dönn sein eersts Zaichen.
++    e - gan n End von n ietzundn Wort MIT dönn seinn lösstn Zaichen.
++    $ - zo n End von dyr Zeil MIT derer irn lösstn Zaichen.
++
++  Also löscht de Tastnfolg  de  umbb n Mörkl hinst eyn s Wortend.
++Anmörkung:   Gib i grad  dös zwaitte Zaichen  yllain ein,  ruckt halt dyr Mörkl
++             entspröchet weiter.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                   Letzn 2.4: MIT AYNN ZÖLER D WOLENDER ÄFERN
++
++
++      ** Gib i ayn Zal vor aynn Wolend ein, werd dös Sel halt widerholt. **
++
++  1. Bewög önn Mörkl gan n Anfang von dyr Zeil mit ---> dyrvor unt.
++
++  2. Zipf  2w  , däßst mit n Mörkl zwai Wörter weitergeest.
++
++  3. Zipf  3e  , däßst mit n Mörkl auf s End von n drittn Wort kimmst.
++
++  4. Zipf  0  (aynn Nuller), däßst eyn n Anfang von dyr Zeil hinkimmst.
++
++  5. Widerhol d Schritt 2 und 3 mit verschaidne Zöler.
++
++  ---> Dös ist ietz grad ayn Zeil zo n drinn Umaynanderruedern.
++
++  6. Gee weiter gan dyr Letzn 2.5.
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Letzn 2.5: DURCH AYNN ZÖLER GLEI MEERER LÖSCHN
++
++
++              ** Ayn Zal vor aynn Pfemerer äfert dönn um seln Werd. **
++
++  Also, i mecht löschn,  und zwaar öbbs Bestimmts,  und dös so und so oft:  Daa
++  dyrzue benutz i aynn Zöler:
++                              d  Zöler  Wolend (also önn Bewögungsschrit)
++
++  1. Bewög önn Mörkl  gan n eerstn Wort in GROOSSBUECHSTABN in dyr mit ---> an-
++     gmörktn Zeil.
++
++  2. Demmlt  d2w  , dyrmitst de ganz grooßgschribnen Wörter löschst.
++
++  3. Äfert  d Schritt 1 und 2  mit dönn entspröchetn Zöler,  dyrmitst de drauf-
++     folgetn  ganz großgschribnen Wörter  mit ayner ainzignen Faudung  löschst:
++
++
++--->  Dö ABC DE Zeil FGHI JK LMN OP mit Wörter ist Q RS TUV ietz berichtigt.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                          Letzn 2.6: ARECHTN AUF ZEILN
++
++
++               ** Zipf  dd  , um ayn gantze Zeil z löschn. **
++
++  Weil s gro oft vürkimmt,  däß myn gantze Zeiln löscht,  kaamend schoon d Ent-
++  wickler von n Urwimm daa drauf,  däß myn ainfach  dd  gan dönn Zwök schreibt.
++
++
++  1. Bewög önn Mörkl gan dyr zwaittn Zeil in n untignen "Gedicht".
++  2. Zipf  dd  ,  um dö Zeil z löschn.
++  3. Ietz bewögst di gan dyr viertn Zeil.
++  4. Zipf  2dd  , um zwo Zeiln zo n Löschn.
++
++--->  1)  Roosn seind root;
++--->  2)  Drunter ist s Koot.
++--->  3)  Veigerln seind blau.
++--->  4)  Umgrabn tuet s d Sau.
++--->  5)  D Ur sait de Zeit,
++--->  6)  Sait, däß s mi freut,
++--->  7)  Dirndl, dein Gschau.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Letzn 2.7: RUGGGÖNGIG MACHEN (RUGGLN) 
++
++
++             ** Zipf  u  , dyrmitst de lösstn Faudungen ruggltst **
++              ** older  U  , um ayn gantze Zeil widerherzstölln. **
++
++  1. Bewög önn Mörkl  gan dyr mit ---> angmörktn Zeil unt  und gee dyrmit auf n
++     eerstn Faeler.
++  2. Zipf  x  , däßst dös eerste z vile Zaichen löschst.
++  3. Ietz demmlt  u  , dyrmitst de lösste Faudung ruggltst.
++  4. Ietz behöb  allsand Faeler  auf dyr Zeil  mit dyr Hilf  von n Befelh  x  .
++  5. Aft gibst ayn  U  (grooß) ein,  däßst de Zeil wider yso hinbringst,  wie s
++     gwösn ist.
++  6. So,  und ietz  demmltst  so oft  u  , hinst däßst s  U  und de andern Fau-
++     dungen rugggöngig gmacht haast.
++  7. Und ietzet widerum  schreibst  so oft  <STRG>r  , hinst däßst  allsand Be-
++     felh widerhergstöllt, z haissn allsse rugg-grugglt haast  (also d Rugggön-
++     gigmachungen rugggöngig gmacht).
++---> Beerichtig d Faeller voon dehrer Zeiil  und sttöll s mitt n Ruggruggln wi-
++     der her.
++  8. Die Faudungen seind gro wichtig; sö helffend ainn närrisch weiter.
++     Ietz gee weiter gan dyr Zammenfassung von dyr Letzn 2.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 2
++
++
++  1. Um von n Mörkl aus hinst eyn s naehste Wort zo n Löschn, zipf:  dw
++  2. Um umbb n Mörkl hinst eyn s End von dyr Zeil zo n Löschn, demmlt  d$
++  3. Dyrmitst ayn gantze Zeil löschst, gib ein:  dd
++  4. Mechst ayn Bewögung, ayn "Wolend", öfters,  stöll de entspröchete Zal dyr-
++     vor:  3dw  older aau:  d3w
++  5. Dyr Pfueg für ayn Önderungsfaudung lautt yso:
++               Pfemerer   [Zal]   Bewögungsschrit (Wolend)
++     Und dös haisst:
++      Dyr PFEMERER gibt an, WAS taan ghoert, öbbenn   d   =  löschn (»delete«).
++      [ZAL] - Ayn Zal KAN myn angöbn, wenn myn halt ayn Wolend öfter habn will.
++      S WOLEND,  also dyr Schrit WOHIN, besagt,  auf was i aushin will,  öbbenn
++      auf ayn Wort (  w  ), s End von dyr Zeil (  $  ) und so weiter.
++
++  6. Däßst eyn n Anfang von dyr Zeil hinkimmst, schreib aynn Nuller:  0
++
++  7. Um öbbs Vorigs wider z ruggln, gib ein:                u (klain also)
++     Um allsand Önderungen in ayner Zeil z ruggln, haast:   U (also grooß)
++     Um "rugg-z-ruggln", also allss wider herzstölln, zipf: <STRG>r   
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Letzn 3.1: ANFÜEGN (»put«) 
++
++
++     ** Zipf  p  , dyrmitst öbbs gnetty Glöschts naach n Mörkl anfüegst. **
++
++  1. Bewög önn Mörkl gan dyr eerstn untignen Zeil mit   --->   dyrvor.
++
++  2. Zipf  dd  , um sele Zeil z löschn  und dyrmit  in aynn Wimm-"Roster"  zo n
++     speichern.
++
++  3. Bewög önn Mörkl gan dyr Zeil c),  ÜBER derer, daa wo de glöschte Zeil ein-
++     hinkemmen sollt.
++
++  4. So,  und ietz gibst ainfach  p  ein,  und schoon haast dö Zeil unter derer
++     mit n Mörkl drinn.
++  5. Äfert  d Schritt 2 hinst 4,  hinst däßst  allsand Zeiln  yso naachynaynand
++     haast, wie s hinghoernd.
++
++---> d) Kanst du dös aau?
++---> b) Veigerln seind blau.
++---> c) Bedachtn kan myn lernen.
++---> a) Roosn seind root.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Letzn 3.2: ERSÖTZN (»replace«)
++
++
++      ** Zipf  rx  , um dös Zaichen unter n Mörkl durch  x  z ersötzn. **
++
++  1. Bewög önn Mörkl zo dyr eerstn untignen Zeil mit   --->   dyrvor.
++
++  2. Bewög önn Mörkl, hinst däß yr auf n eerstn Faeler steet.
++
++  3. Zipf  r  und drafter dös Zaichen, wo dyrfür daa hinghoert.
++
++  4. Widerhol d Schritt 2 und 3,  hinst däßst de eerste Zeil  gmaeß dyr zwaittn
++     berichtigt haast:
++--->  Wie dö Zeit eingobn wurd, wurdnd ainike falsche Zastnen zipft!
++--->  Wie dö Zeil eingöbn wurd, wurdnd ainige falsche Tastnen zipft!
++
++  5. Ietz tue mit dyr Letzn 3.3 weiter.
++
++Anmörkung: Vergiß nit drauf, däßst mit n Anwenddn lernen solltst und nit öbbenn
++           mit n Auswendiglernen!
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                          Letzn 3.3: ÖNDERN (»change«)
++
++
++              ** Um hinst eyn s Wortend z öndern, zipf  ce  . **
++
++  1. Gee mit n Mörkl auf de eerste mit ---> angmörkte Zeil.
++
++  2. Ietz farst netty auf s  "s"  von Wstwr hin.
++
++  3. Zipf  ce  ein und aft d Wortberichtigung, daader also  örter  .
++
++  4. Druck <ESC> und bewög önn Mörkl gan n naehstn Zaichen,  wo göndert ghoert.
++
++  5. Äfert  d Schritt 3 und 4,  hinst däß  dyr eerste Saz  wie dyr zwaitte ist.
++
++---> Ainige Wstwr von derer Zlww ghhnnd mit n Öndern-Pfemerer gaauu.
++---> Ainige Wörter von derer Zeil ghoernd mit n Öndern-Pfemerer göndert.
++
++ce  löscht also s Wort und schlaaufft di eyn d Eingaab-Artweis.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                  Letzn 3.4.: NON MEERER ÖNDERUNGEN PFELFS  c
++
++
++   ** D Löshfaudung  c  arechtt mit de nömlichnen Wolender wie dö mit  d  **
++
++  1. Dyr Önder-Pfemerer arechtt anleich wie d Löshfaudung mit   d  ,  und zwaar
++     yso:
++         c    [Zal]   Bewögungsschritt (Wolend)
++
++  2. D Wolender  seind  de gleichn,  öbbenn  w  für Wort und  $ für s Zeilnend.
++
++
++  3. Bewög di zo dyr eerstn untignen Zeil mit ---> .
++
++  4. Ietz geest auf dönn eerstn Faeler.
++
++  5. Zipf  c$  , gib önn Rest von dyr Zeil wie in dyr zwaittn ein und druck aft
++     <ESC>.
++---> S End von derer Zeil sollt an de zwaitte daader anglichen werdn.
++---> S End von derer Zeil sollt mit n Befelh  c$  berichtigt werdn.
++
++Denk allweil dran,  däßst iederzeit  mit dyr Ruggtastn Faeler ausbössern kanst.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 3
++
++
++  1. Um ayn  vorher glöschts Gwort  anzfüegn,  zipf  p  .  Daa dyrmit  werd dös
++     gantze Gwort  NAACH n Mörkl  angfüegt.  Wenn s ayn gantze Zeil  gwösn ist,
++     werd dö sel als de Zeil unterhalb n Mörkl eingfüegt.
++
++  2. Um dös Zaichen  unter n Mörkl,  also wo dyr Mörkl ist,  z ersötzn, zipf  r
++     und aft dös Zaichen, wost daadl habn willst.
++
++  3. Dyr Önderungspfemerer ( c = »change«) laasst ainn umbb n Mörkl hinst eyn s
++     End von n Wolend öndern. Zipf  ce  , dyrmitst umbb n Mörkl hinst eyn s End
++     von n Wort öndertst, und  c$  hinst eyn s End von dyr Zeil.
++
++  4. Für d Önderung lautt dyr Pfueg:
++
++     c   [Zal]   Wolend
++
++Ietz tue mit dyr naehstn Letzn weiter.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Letzn 4.1: MÖRKLSTÖLLUNG UND DAUTTICHTDARSTAND
++
++** Demmlt <STRG>g, däßst önn Befand und Darstand von dyr Dautticht anzaigst. **
++  ** Zipf  G  , dyrmitst auf ayn bestimmte Zeil in dyr Dautticht hinkimmst. **
++
++Anmörkung: Lis dö gantze Letzn daader durch, ee wennst iewign öbbs unternimmst!
++
++  1. Druck  <STRG>g  .  Auf dös hin erscheint auf derer Seitt ganz unt ayn Dar-
++     standsmeldung  mit n Dauttichtnam  und n Befand  innerhalb  dyr Dautticht.
++     Mörk dyr de Zeilnnummer für n Schrit 3.
++
++Anmörkung:  Müglicherweis  seghst aau önn Mörklbefand  in n zesmen untern Bild-
++            schirmögg. Aft ist s "Lindl" (»ruler«) eingstöllt; schau dyrzue mit
++            n Befelh   :help 'ruler'   naach.
++  2. Druck  G  , um an s End von dyr Dautticht z kemmen.
++     gg  gibst ein, däßst gan n Anfang von dyr Dautticht aufhinkimmst.
++
++  3. Gib d Nummer von derer Zeil ein, daa wost vorher warst,  und aft non  G  .
++     Dös bringt di zrugg gan seler Zeil,  daa wost stuenddst,  wiest dös eerste
++     Maal <STRG>g gadruckst.
++
++  4. Wennst di sicher gnueg füelst, aft füer d Schritt 1 hinst 3 aus.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 4.2: DYR BEFELH ZO N SUECHEN 
++               
++
++  ** Zipf  /  und dyrnaach aynn Ausdruk, um selbignen zo n Suechen. **
++
++  1. Du gibst also in dyr Befelhsartweis s Zaichen  /  ein. Dös sel wie aau dyr
++     Mörkl erscheinend drauf unt auf n Schirm, netty wie bei dyr Faudung  :  .
++
++  2. Ietz zipf 'Faeeler' <EIN>. Netty um dös 'Faeeler' willst ietz suechen.
++
++  3. Willst um gnaun dönn Ausdruk weitersuechen, zipf ainfach  n  (wie »next«).
++     Willst hinzrugg suechen, aft gibst  N  ein.
++
++  4. Um von Haus aus zruggaus z suechen, nimm  ?  statt  /  her.
++
++  5. Dyrmitst wider daa hinkimmst, wost herkemmen bist, druck <STRG>o,  und dös
++     öfter,  wennst weiter zrugg willst.  Mit <STRG>i widerum  kimmst vorwärts.
++
++--->  Aynn Faeler schreibt myn nit "Faeeler"; Faeeler ist ayn Faeler
++
++Anmörkung:  Wenn d Suech s Dauttichtend dyrraicht haat, geet s eyn n Anfang wi-
++            der weiter dyrmit,  men Sach  dyr Schaltter 'wrapscan' wär auf aus.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 4.3: DE GÖGNKLAMMERN FINDDN
++
++
++   ** Zipf  %  , um de entspröchete Klammer  )  ,  ]  older  }  z finddn. **
++
++  1. Sötz önn Mörkl  auf iewign aine  von dene drei Klammern  (  ,  [  older  {
++     in dyr untignen Zeil, wo mit ---> angmörkt ist.
++
++  2. Ietzet zipf s Zaichen  %  .
++
++  3. Dyr Mörkl geet ietz auf de pässete schliessete Klammer.
++
++  4. Ietz demmlt  %  , und dyrmit kimmst gan dyr öffneretn Klammer zrugg.
++
++  5. Sötz önn Mörkl auf ayn anderne Klammer von   ({[]})   und pröblt   %  aus.
++
++---> Dös ( ist  blooß ayn Pochzeil ( mit [ verschaidne ] { Klammern } drinn. ))
++
++Anmörkung:  Um dö Müglichkeit gaast bsunders froo sein,  wennst aynmaal in aynn
++            Spaichgwort verzweiflt ayn faelete Gögnklammer suechst!
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Letzn 4.4: D ERSÖTZUNGSFAUDUNG (»substitute«)
++
++
++        ** Zipf  :s/alt/neu/g  , um 'alt' durch 'neu' zo n Ersötzn. **
++
++  1. Gee mit n Mörkl zo dyr unt steehetn mit ---> angmörktn Zeil.
++
++  2. Zipf  :s/dee/de <EIN>  . Der Befelh ersötzt alsnan grad dös +eerste "dee",
++     wo vürkimmt.
++
++  3. Ietz pröblt s mit  :s/dee/de/g  . Dös zuesötzliche  g  ("Pflok"  nennt myn
++     öbbs Sölchers) bewirkt, däß allss, was dyrmit kennzaichnet ist,  innerhalb
++     von dyr ainn Zeil ersötzt werd.
++
++---> Dee schoenste Zeit, däß myn dee Blüemln anschaut, ist dee schoene Lan-
++     gesszeit.
++  4. Um ietz  allsand Suechbegriff  innerhalb von zwo Zeiln  zo n Öndern,  zipf
++     :#,#s/alt/neu/g  ,  wobei # ieweils für de eerste und lösste Zeil von dönn
++     Pfraich steet.
++     :%s/alt/neu/g  zipfst, däßst d Vürkemmen in dyr gantzn Dautticht öndertst.
++        Mit  :%s/alt/neu/gc  finddst allsand Vürkemmen in dyr gsamtn Dautticht;
++     daa werst aber zeerst non gfraagt, obst ys ersötzn willst older nity.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 4
++                        
++  1. <STRG>g   zaigt dönn ietzundn Dauttichtbefand  und önn Darstand dyrvon an.
++           G  bringt di an s End von dyr Dautticht.
++     <Zal> G  bringt di gan dyr entspröchetn Zeilnnummer.
++          gg  bringt di zo dyr eerstn Zeil.
++          
++  2. D Eingaab von  /  mit aynn Ausdruk suecht VÜRSHLING um dönn Ausdruk.
++     Gibst  ?  und aynn Suechbegrif ein, suecht s um dönn ÄRSHLING.
++     Zipf naach ayner Suech  n  ;  naacherd werd in de gleiche Richtung weiter-
++     gsuecht. Mit  N geet s umkeerter weiter.
++     <STRG>o bringt di zo ölterne Befändd zrugg, <STRG>i zo neuerne.
++
++  3. D Eingaab von  % , wenn dyr Mörkl auf ainer von dene Klammern steet:   ({[
++     )]}  , bringt di zo dyr Gögnklammer.
++
++  4. Um dös eerste Vürkemmen  von "alt"  in ayner Zeil  durch "neu"  z ersötzn,
++     zipf   :s/alt/neu   .
++     Um allsand in ayner Zeil z ersötzn, zipf   :s/alt/neu/g   .
++     Mechst allss in zwo Zeiln ersötzn, demmlt zo n Beispil  :5,6s/alt/neu/g  .
++     Mechst allss in dyr gantzn Dautticht ersötzn, gib ein:   :%s/alt/neu/g   .
++     Willst ayn ieds Maal bstaetln, höng 'c' wie »confirm« hint anhin.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++            Letzn 5.1: ZWISCHNDRINN AYNN AUSSERIGNEN BEFELH AUSFÜERN 
++            
++
++  ** Willst ayn Gfäßfaudung ausfüern, gib ainfach dö sel naach   :!   ein. **
++ 
++  1. Zipf  dönn bekanntn Befelh   :  ,  dyrmitst  mit n Mörkl  auf n Bildschirm
++     ganz abhin kimmst. Draufhin kanst aynn gwonen Gfäßbefelh eingöbn.
++
++  2. Zeerst  kimmt aber non ayn Ruefzaichen   !   .  Und ietz haast de Müglich-
++     keit, ayn beliebige ausserige Gfäßfaudung auszfüern.
++
++  3. Als Beispil zipf   :!ls <EIN>  ; und schoon haast ayn Auflistung von deinn
++     Verzaichniss,  netty  wie wennst  ganz gwon  in n Eingib wärst.  Geet   ls
++     aus iewign aynn Grund nit, aft pröblt s mit  :!dir <EIN>  .
++
++Also non aynmaal: Mit dönn Angang kan ayn iede beliebige ausserige Faudung aus-
++                  gfüert werdn, aau mit Auerwerdd.
++
++Und wolgmörkt:    Allsand Befelh, wo mit  :  angeend,  müessend mit <EIN> bstö-
++                  tigt werdn. Dös dyrsagn myr vürbaß niemer.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++           Letzn 5.2: NON MEERER DRÜBER, WIE MYN DAUTTICHTN SCHREIBT
++
++
++      ** Um öbbs Gönderts neu z speichern, zipf :w NEUER_DAUTTICHTNAM. **
++
++  1. Zipf  :!dir   older  :!ls  ,  däßst dyr ayn Auflistung von deinn Verzaich-
++     niss ausherlaasst.  Däßst dyrnaach <EIN> eingöbn muesst, waisst ee schoon.
++
++  2. Suech dyr aynn Dauttichtnam aus, dönn wo s non nit geit, öbbenn POCH.
++
++  3. Ietz demmlt:  :w POCH   (also mit POCH als dönn neuen Dauttichtnam).
++
++  4. Dös speichert ietz de gantze Dautticht, also önn Wimmschainer,  unter dönn
++     Nam POCH. Dös kanst leicht überprüeffen, indem däßst ainfach  :!ls   older
++     :!dir  zipfst und dyrmit deinn Verzaichnissinhalt seghst.
++
++Anmörkung:  Stigst ietz aus n Wimm aus und gännst n aft wider mit   vim POCH  ,
++            naacherd wär dö Dautticht ayn gnaune Aamum von n Schainer dyrselbn,
++            wiest n gspeichert haast.
++
++  5. Ietz verweitert dö Dautticht - fallsst s Fenstl haast - , mit   :!del POCH
++     beziehungsweis bei aynn Ainslgebäu mit   :!rm POCH   .
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++            Letzn 5.3: AYNN TAIL VON N GWORT ZO N SPEICHERN AUSWALN
++
++** Um aynn Tail von dyr Dautticht z speichern, zipf  v [Wolend] :w DAUTTICHT **
++
++  1. Ruck önn Mörkl auf netty dö Zeil daader.
++
++  2. Demmlt  v  und gee mit n Mörkl  auf dönn fümftn Auflistungspunt untet.  Du
++     seghst glei, däß s Gwort vürherghöbt erscheint.
++
++  3. Druck s Zaichen  :  . Ganz unt auf n Bildschirm erscheint  :'<,'>  .
++
++  4. Zipf  w POCH  , wobei s dönn Dauttichtnam POCH  non nit geit.  Vergwiß di,
++     däßst dös  :'<,'>w POCH aau +seghst, ee wennst <EIN> druckst.
++
++  5. Dyr Wimm schreibt de ausgwaltn Zeil  eyn de Dautticht POCH einhin.  Benutz
++     :!dir  older  :!ls  ,  däßst dös überprüeffst. Lösh s fein nit öbbenn! Mir
++     brauchend s nömlich für de naehste Letzn.
++
++Anmörkung:  Druckt myn  v  , ginnt d Sichtisch-Auswal. Du kanst mit n Mörkl um-
++            aynandfarn,  um d Auswal  z veröndern.  Drafter kan myn mit yn aynn
++            Pfemerer  mit dönn Gwort  öbbs machen.  Zo n Beispil löscht  d  dös
++            Gwort.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++               Letzn 5.4: EINLÖSN UND ZAMMENFÜERN VON DAUTTICHTN   
++
++
++    ** Um önn Inhalt von ayner Dautticht einzlösn, zipf  :r DAUTTICHTNAM  **
++
++  1. Sötz önn Mörkl über dö Zeil daader.
++
++OBACHT:  Aft däßst önn Schrit 2  ausgfüert haast,  seghst auf aynmaal  öbbs aus
++         dyr Letzn 5.3.  Bewög di naacherd wider abwärts, dyrmitst dö Letzn wi-
++         derfinddst.
++  2. Ietz  lis  dein Dautticht  POCH ein,  indem däßst d Faudung   :r POCH aus-
++     füerst,  wobei wie gsait POCH  für dönn  von dir  ausgsuechtn Dauttichtnam
++     steet. De einglösne Dautticht werd unterhalb dyr Mörklzeil eingfüegt.
++
++  3. Um zo n Überprüeffen,  ob de Dautticht  aau gwiß einglösn ist,  gee zrugg;
++     und du seghst,  däß s ietz zwo Ausförtigungen  von dyr Letzn 5.3. geit,  s
++     Urniss und de eingfüegte Dauttichtfassung.
++
++Anmörkung:  Du kanst aau  d Ausgaab von aynn Ausserigbefelh einlösn.  Zo n Bei-
++            spil list   :r !ls  d Ausgaab von dyr Faudung  ls   ein und füegt s
++            unterhalb n Mörkl ein.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 5
++
++
++  1. :!FAUDUNG füert aynn ausserignen Befelh aus.
++
++      Daader ayn Öttlych gwänddte Beispiler:
++      (Fenstl)              (Ainsl - Leinsl)
++      :!dir                 :!ls                - listt s Verzaichniss auf.
++      :!del DAUTTICHT       :!rm DAUTTICHT      - verweitert sele Dautticht.
++
++  2. :w DAUTTICHT  speichert de ietzunde Wimmdautticht  unter dönn besagtn Nam.
++
++  3. v  WOLEND  :w DAUTTICHTNAM   schreibt de sichtisch ausgwaltn Zeiln  eyn de
++     Dautticht mit seln Nam.
++
++  4. :r DAUTTICHTNAM  ladt sele Dautticht  und füegt s  unterhalb n Mörklbefand
++     ein.
++
++  5. :r !dir   list d Ausgaab  von dyr Faudung   dir   und füegt s  unterhalb n
++     Mörklbefand ein.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Letzn 6.1: ZEIL ÖFFNEN (»open«)
++
++
++        ** Zipf o, um ayn Zeil unterhalb n Mörkl z öffnen und eyn d **
++                        ** Einfüegartweis z kemmen. **
++
++  1. Bewög önn Mörkl zo dyr eerstn mit ---> angmörktn Zeil unt.
++
++  2. Zipf o (klain),  um ayn Zeil  UNTERHALB n Mörkl z öffnen  und mit dyr Ein-
++     füegartweis weiterztuen.
++
++  3. Ietz zipf ayn Weeng ayn Gwort und druck <ESC>,  um d Einfüegartweis z ver-
++     laassn.
++---> Mit  o  werd dyr Mörkl auf de offene Zeil in dyr Einfüegartweis gsötzt.
++
++  4. Um ayn Zeil OBERHALB n Mörkl aufzmachen,  gib ainfach aynn groosss O statt
++     yn aynn klainen ein. Versuech dös auf dyr untignen Zeil.
++
++---> Öffnet ayn Zeil über derer daader mit  O  ,  wenn dyr Mörkl auf derer Zeil
++     ist.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 6.2: GWORT ANFÜEGN (»append«)
++
++
++                ** Zipf  a  , um öbbs NAACH n Mörkl einzfüegn. **
++
++  1. Bewög önn Mörkl gan n Anfang von dyr eerstn Üebungszeil mit ---> unt.
++
++  2. Druck  e  , hinst däß dyr Mörkl an n End von  Zei  steet.
++
++  3. Zipf ayn klains  a  , um öbbs NAACH n Mörkl anzfüegn.
++
++  4. Vergöntz dös Wort wie in dyr Zeil drunter.  Druck <ESC>, um d Schreib-Art-
++     weis z verlaassn.
++
++  5. Bewög di mit  e   zo n naehstn ungantzn Wort  und widerhol d Schritt 3 und
++     4.
++
++---> Dö Ze biett ayn Glögn , ayn Gwort in ayner Zeil anzfü.
++---> Dö Zeil biett ayn Glögnet, ayn Gwort in ayner Zeil anzfüegn.
++
++Anmörkung:   a  ,  i  und  A  bringend ainn gleichermaaßn eyn d Einfüegartweis;
++             dyr ainzige Unterschaid ist, WO mit n Einfüegn angfangt werd.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++              Letzn 6.3: AYN ANDERNE WEIS ZO N ERSÖTZN (»replace«)
++
++
++ ** Demmlt ayn groosss  R  , um meerer als wie grad ain Zaichen z ersötzn. **
++
++  1. Bewög önn Mörkl zo dyr eerstn untignen, mit ---> angmörktn Zeil.
++     Gee mit n Mörkl gan n Anfang von n eerstn  xxx  .
++
++  2. Ietz druck  R   und zipf sele Zal,  wo drunter  in dyr zwaittn Zeil steet,
++     yso däß de sel s xxx ersötzt.
++
++  3. Druck <ESC> ,  um d Ersötzungsartweis  z verlaassn.  Du gspannst,  däß dyr
++     Rest von dyr Zeil unveröndert bleibt.
++
++  4. Äfert die Schritt, um dös überblibne xxx z ersötzn.
++
++---> S Zunddn von 123 zo xxx ergibt xxx.
++---> S Zunddn von 123 zo 456 ergibt 579.
++
++Anmörkung: D Ersötzungsartweis ist wie d Einfüegartweis,  aber ayn ieds eindem-
++           mlte Zaichen löscht ayn vorhanddns.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 6.4: GWORT AAMEN UND EINFÜEGN
++
++ ** Benutz önn Pfemerer  y  , um öbbs z aamen, und  p  , um öbbs einzfüegn. **
++
++  1. Gee zo dyr mit  --->  angmörktn Zeil unt  und sötz önn Mörkl  hinter "a)".
++
++  2. Ginn d Sichtisch-Artweis mit   v   und bewög önn Mörkl gnaun vor "eerste".
++  
++  3. Zipf  y  , um dönn vürherghöbtn Tail z aamen.
++
++  4. Bewög önn Mörkl gan n End von dyr naehstn Zeil:  j$
++
++  5. Demmlt  p  , um dös Gwort einzfüegn, und aft:  a zwaitte <ESC>  .
++
++  6. Benutz d Sichtischartweis, um " Eintrag." auszwaln,  aam s pfelfs  y,  be-
++     wög di gan n End von dyr naehstn Zeil mit  j$   und füeg s Gwort dortn mit
++     p  an.
++
++--->  a) dös ist dyr eerste Eintrag.
++      b)
++
++Anmörkung: Du kanst  y  aau als Pfemerer verwenddn;  yw  aamt ain Wort.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Letzn 6.5: SCHALTTER SÖTZN
++
++** Sötz aynn Schaltter yso,  däß ayn Suech older Ersötzung Grooß- und Klain- **
++                            ** schreibung übergeet. **
++                            
++  1. Suech um 'übergee", indem däßst   /übergee   eingibst.
++     Widerhol d Suech ayn Öttlych Maal, indem däßst de Tastn  n  druckst.
++
++  2. Sötz de Zwisl - önn Schaltter - 'ic' (»ignore case«), indem däßst  :set ic
++     eingibst.
++  3. Ietz suech wider um 'übergee' und tue aau wider mit  n  weiter.  Daa fallt
++     dyr auf, däß ietz öbbenn aau  Übergee  und  ÜBERGEE  hergeet.
++
++  4. Sötz de Zwisln 'hlsearch' und 'incsearch' pfelfs:   :set hls is
++
++  5. Widerhol d Suech und bobacht, was ietz gschieght:   /übergee <EIN>
++
++  6. Däßst grooß und klain wider gwon unterscheidst, zipf:   :set noic
++
++Anmörkung:  Mechst de Tröffer niemer vürherghöbt seghn,  gib ein:   :nohlsearch
++Anmörkung:  Sollt klain/grooß bei ayner ainzignen Suech wurst sein,  benutz  \c
++            in n Suechausdruk:   /übergee\c <EIN>
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 6
++
++  1. Zipf  o  ,  um ayn Zeil  UNTERHALB n Mörkl z öffnen und d Einfüegartweis z
++                 ginnen.
++     Zipf  O  ,  um ayn Zeil OBERHALB n Mörkl z öffnen.
++
++  2. Zipf  a  ,  um NAACH n Mörkl ayn Gwort einzfüegn.
++     Zipf  A  ,  um ayn Gwort naach n Zeilnend anzfüegn.
++
++  3. D Faudung  e  bringt di gan n End von aynn Wort.
++
++  4. Dyr Pfemerer  y  (»yank«) aamt öbbs,  p  (»put«) füegt dös ein.
++
++  5. Ayn groosss  R  geet eyn d Ersötzungsartweis,  hinst däß myn <ESC> druckt.
++
++  6. D Eingaab von ":set xxx"  sötzt de Zwisl "xxx".  Ayn Öttlych Zwisln seind:
++     'ic' 'ignorecase'   Grooß/klain wurst bei ayner Suech
++     'is' 'incsearch'    Zaig aau schoon ayn Tailüberainstimmung
++     'hls' 'hlsearch'    Höb allsand pässetn Ausdrück vürher
++     Dyr Schaltternam kan in dyr Kurz- older Langform angöbn werdn.
++
++  7. Stöll yn ayner Zwisl "no" voran, däßst ys abschalttst:   :set noic
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Letzn 7.1: AYN HILFGWORT AUFRUEFFEN
++
++
++            ** Nutz dös einbaute Hilfgebäu, de "Betribsanlaittung" **
++
++  Eyn n Wimm  ist ayn ausfüerliche "Gebrauchsanweisung"  einbaut.  Für s Eerste
++  pröblt ainfach ains von dene dreu aus:
++    - Druck d <HILF>-Tastn, wennst öbbenn aine haast.
++    - Druck de Tastn <F1>, fallsst ys haast.
++    - Zipf   :help <EIN>
++
++  Lis di eyn s Hilffenster ein, dyrmitst draufkimmst, wie dös mit dyr Hilf geet.
++  Demmlt  <STRG>w w  , um von ainn Fenster zo n andern zo n Springen.
++  Demmlt   :q <EIN>  , um s Hilffenster zo n Schliessn.
++
++  Du kanst zo so guet wie allssand ayn Hilf finddn,  indem däßst yn dyr Faudung
++  :help   aynn Auerwerd naachstöllst und istig <EIN> nit vergisst.  Pröblt dös:
++
++     :help w
++     :help c_CTRL-D
++     :help insert-index
++     :help user-manual
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Letzn 7.2: ERSTÖLL AYN GIN-SCHRIPF
++
++
++            ** Mutz önn Wimm mit de einbautn Faehigkeitn auf **
++
++  Dyr Wimm besitzt ayn Wösn Schäftungen,  wo über n Urwimm aushingeend, aber de
++  meerern dyrvon  seind in dyr Vorgaab ausgschaltt.  Dyrmitst meerer aus n Wimm
++  ausherholst, erstöllst ayn "vimrc"-Dautticht.
++
++  1. Lög ayn "vimrc"-Dautticht an;  dös geet  ie naach Betribsgebäu  verschidn:
++     :e ~/.vimrc     für s Ainsl
++     :e $VIM/_vimrc  bei n Fenstl
++
++  2. Ietz lis önn Inhalt von dyr Beispil-"vimrc"-Dautticht ein:
++     :r $VIMRUNTIME/vimrc_example.vim
++
++  3. Speichert de Dautticht mit:
++     :w
++
++  4. Bei n naehstn Gin von n Wimm  ist aft d Füegnussvürherhöbung  zuegschaltt.
++     Du kanst dyr allss  eyn dö Dautticht  einhinschreibn,  wasst bständig habn
++     willst. Meerer dyrzue erfarst unter:   :help vimrc-intro
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                              Letzn 7.3: VERGÖNTZN
++
++
++               ** Befelhszeilnvergöntzung mit <STRG>d und <TAB> **
++
++  1. Vergwiß di, däß dyr Wimm nit auf n Urwimm-"Glais" fart:   :set nocp
++
++  2. Schaug naach, wölcherne Dauttichtn däß s in n Verzaichniss geit:   :!ls
++     older   :!dir
++  3. Zipf önn Anfang von ayner Faudung:   :e
++
++  4. Druck  <STRG>d  ,  und dyr Wimm zaigt ayn Listn von Faudungen,  wo mit "e"
++     angeend.
++  5. Druck  <TAB>  ,  und dyr Wimm vervollstöndigt  önn Faudungsnam zo ":edit".
++
++  6. Füeg  ayn Laerzaichen  und önn Anfang  von ayner  besteehetn Dautticht an:
++     :edit DAU
++
++  7. Druck <TAB>.  Dyr Wimm vergöntzt önn Nam,  dös haisst,  wenn yr aindeuttig
++     ist.
++Anmörkung:  D Vergöntzung  geit s für aynn Hauffen Faudungen.  Versuech ainfach
++           <STRG>d  und  <TAB>.  Bsunders nützlich ist dös bei   :help  .
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         ZAMMENFASSUNG VON DYR LETZN 7
++
++
++  1. Zipf  :help   older druck <F1> older <HILF>,  um ayn Hilffenster z öffnen.
++
++  2. Zipf  :help FAUDUNG  , um auf ayn Hilf gan aynn Befelh z kemmen.
++
++  3. Zipf  <STRG>w w  , um zo n andern Fenster z springen.
++
++  4. Zipf  :q  , um s Hilffenster z schliessn.
++
++  5. Erstöll ayn vimrc-Ginschripf  zuer Sicherung von deine Mötzneinstöllungen.
++
++  6. Druck <STRG>d, aft däßst naach  :  mit ayner Faudung angfangt haast,  dyr-
++     mitst mügliche Vergöntzungen anzaigt kriegst.
++     Druck <TAB> für ain Vervollstöndigung yllain.
++
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  Dös wär ietzet s End von n Wimmschainer.  Gangen ist s daa drum,  aynn kurtzn
++  und bündignen Überblik über s Blat  WIMM z lifern,  netty vil gnueg,  däß myn
++  für s Eerste  wirklich öbbs  dyrmit anfangen kan.  Dyrmit ist s aber auf kain
++  Weitn non nit taan;  dyr Wimm haat schoon non vil meerer  auf Lager.  Lis als
++  Naehsts aynmaal s Benutzerhandbuech:   :help user-manual   .
++
++  Zo n Weiterlösn und Weiterlernen wör dös Buech daader zo n Empfelhen:
++    Vim - Vi Improved - von n OUALLINE Steve
++    Verlaag: New Riders
++  Dös ist dös eerste Buech, wo ganz yn n Wimm gwidmt ist, netty dös Grechte für
++  Anfönger. Es haat ayn Wösn Beispiler und aau Bilder drinn.
++  See http://iccf-holland.org/click5.html
++
++  Dös folgete Buech  ist schoon ölter und meerer  über n Urwimm  als wie über n
++  Wimm,  aber aau zo n Empfelhen:   Textbearbeitung mit dem vi-Editor - von dyr
++  LAMB Linda und n ROBBINS Arnold  -  Verlaag O'Reilly  - Buechlaittzal (ISBN):
++  3897211262
++  In dönn Buech  kan myn fast allss finddn,  was myn mit n Urwimm angeen mecht.
++  De söxte Ausgaab enthaltt aau schoon öbbs über n Wimm.
++  Als ietzunde Bezugniss  für d Fassung  6.2  und ayn pfrenge Einfüerung  dient
++  dös folgete Buech:
++    vim ge-packt  von n WOBST Reinhard
++    mitp-Verlaag, Buechlaittzal 3-8266-1425-9
++  Trotz dyr recht pfrengen Darstöllung  ist s durch seine viln nützlichnen Bei-
++  spiler aau für Einsteiger grad grecht.  Probhaeupster und de Beispilschripfer
++  seind zesig zo n Kriegn; see http://iccf-holland.org/click5.html
++
++  Verfasst habnd dönn Schainer dyr PIERCE Michael C. und WARE Robert K. von dyr
++  Kolraader Knappnschuel (Colorado School of Mines). Er beruet auf Entwürff, wo
++  dyr SMITH Charles  von dyr  Kolraader Allschuel  (Colorado State  University)
++  zuer Verfüegung gstöllt haat. Gundpost: [email protected].
++  Für n Wimm haat n dyr MOOLENAAR Bram barechtt.
++  De bairische Übersötzung stammt von n HELL Sepp 2009. Sein Gundpostbrächt ist
++  [email protected] 
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++  
++
++ 
++
++
++
+diff -Nur runtime/tutor/tutor.eo runtime/tutor/tutor.eo
+--- runtime/tutor/tutor.eo	1969-12-31 16:00:00.000000000 -0800
++++ runtime/tutor/tutor.eo	2011-01-18 10:40:56.518701178 -0800
+@@ -0,0 +1,991 @@
++==============================================================================
++=  B o n v e n o n  al  la  I n s t r u i l o  de  V I M  -  Versio 1.7.eo.3 =
++==============================================================================
++
++   Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
++   por �ion klarigi en instruilo kiel �i tiu. �i tiu instruilo estas
++   fasonita por priskribi sufi�ajn komandojn, por ke vi kapablu uzi Vim
++   kun sufi�a facileco.
++
++   La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas
++   de kiom da tempo estas uzata por eksperimenti.
++
++   ATENTU:
++   La komandoj en la lecionoj �an�os la tekston. Kopiu tiun �i dosieron
++   por ekzerci vin (se vi lan�is "vimtutor", tiam estas jam kopio).
++
++   Gravas memori, ke �i tiu instruilo estas organizata por instrui per
++   la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni
++   ilin. Se vi nur legas la tekston, vi forgesos la komandojn!
++
++   Nun, certigu, ke la majuskla baskulo NE estas en re�imo majuskla,
++   kaj premu la klavon  j  sufi�e da fojoj por movi la kursoron, kaj por
++   ke la leciono 1.1 plenigu la ekranon.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Leciono 1.1:  MOVI LA KURSORON
++
++
++  ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. **
++         ^
++         k        Konsilo: La klavo h estas la plej liva kaj movas liven.
++   < h       l >           La klavo l estas la plej dekstra kaj movas dekstren.
++         j                 La klavo j aspektas kiel malsuprena sago.
++         v
++  1. Movu la kursoron sur la ekrano �is kiam vi sentas vin komforta.
++
++  2. Premu la klavon (j) �is kiam �i ripetas.
++     Vi nun scias, kiel movi�i al la sekvanta leciono
++
++  3. Uzante la malsuprenan klavon, movi�u al la leciono 1.2.
++
++RIMARKO: Se vi dubas pri tio, kion vi premis, premu <ESK> por reiri al
++         la normala re�imo. Tiam repremu la deziratan komandon.
++
++RIMARKO: La klavoj de la kursoro devus anka� funkcii. Sed uzante hjkl,
++         vi kapablos movi�i pli rapide post kiam vi kutimi�os.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Leciono 1.2:  ELIRI EL VIM
++
++
++  !! RIMARKO: Anta� ol plenumi iujn subajn pa�ojn ajn, legu la tutan lecionon!!
++
++  1. Premu la klavon <ESK> (por certigi, ke vi estas en normala re�imo).
++
++  2. Tajpu:       :q! <Enenklavo>.
++     Tio eliras el la rekdaktilo, SEN konservi la �an�ojn, kiujn vi faris.
++
++  3. Kiam vi vidas la �elinviton, tajpu la komandon kiun vi uzis por eniri
++     en �i tiu instruilo. Tio estus:   vimtutor <Enenklavo>
++
++  4. Se vi memoris tiujn pa�ojn kaj sentas vin memfida, plenumu la pa�ojn
++     1 �is 3 por eliri kaj reeniri la redaktilon.
++
++RIMARKO: :q! <Enenklavo> eliras sen konservi la �an�ojn, kiujn vi faris.
++         Post kelkaj lecionoj, vi lernos kiel konservi la �an�ojn al dosiero.
++
++  5. Movu la kursoron suben �is la leciono 1.3.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                   Leciono 1.3:  REDAKTO DE TEKSTO - FORVI�O
++
++
++             ** Premu  x  por forvi�i la signon sub la kursoro. **
++
++  1. Movu la kursoron al la suba linio markita per --->.
++
++  2. Por korekti la erarojn, movu la kursoron �is kiam �i estas sur la
++     forvi�enda signo.
++
++  3. Premu la klavon  x  por forvi�i la nedeziratan signon.
++
++  4. Ripetu pa�ojn 2 �is 4 �is kiam la frazo estas �usta.
++
++
++---> La boovinno saaltiss ssur laa luuno.
++
++  5. Post kiam la linio estas �usta, iru al la leciono 1.4
++
++RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                    Leciono 1.4:  REDAKTO DE TEKSTO - ENMETO
++
++
++                      ** Premu  i  por enmeti tekston. **
++
++  1. Movu la kursoron al la unua suba linio markita per --->.
++
++  2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan
++     signon post kie la teksto estas enmetenda.
++
++  3. Premu  i  kaj tajpu la bezonatajn aldonojn.
++
++  4. Premu <ESK> kiam la eraroj estas korektitaj por reiri al la normala
++     re�imo. Ripetu la pa�ojn 2 �is 4 por korekti la frazon.
++
++---> Mank en �i linio.
++---> Mankas tekston en �i tiu linio.
++
++  5. Kiam vi sentas vin komforta pri enmeto de teksto, movi�u al la
++     leciono 1.5.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                  Leciono 1.5:  REDAKTO DE TEKSTO - POSTALDONO
++
++
++                    ** Premu  A  por postaldoni tekston. **
++
++  1. Movu la kursoron al la unua suba linio markita per --->.
++     Ne gravas sur kiu signo estas la kursoro.
++
++  2. Premu majusklan  A  kaj tajpu la bezonatajn aldonojn.
++
++  3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala
++     re�imo.
++
++  4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la
++     pa�ojn 2 kaj 3 por korekti la frazon.
++
++---> Mankas teksto el ti
++     Mankas teksto el tiu linio.
++---> Mankas anka� teks
++     Mankas anka� teksto �i tie.
++
++  5 Kiam vi sentas vin komforta pri postaldono de teksto, movi�u al la
++    leciono 1.6
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Leciono 1.6:  REDAKTI DOSIERON
++
++                ** Uzu  :wq  por konservi dosieron kaj eliri. **
++
++  !! RIMARKO: Anta� ol plenumi iun suban pa�on ajn, legu la tutan lecionon!!
++
++  1. Eliru el la instruilo kiel vi faris en la leciono 1.2:  :q!
++     A�, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie.
++
++  2. �e la �elinvito, tajpu �i tiun komandon:  vim tutor <Enenklavo>
++     'vim' estas la komando por lan�i la redaktilon Vim, 'tutor' estas la
++     dosiernomo de la dosiero, kiun vi volas redakti.  Uzu dosieron, kiu
++     �an�eblas.
++
++  3. Enmetu kaj forvi�u tekston, kiel vi lernis en la anta�aj lecionoj.
++
++  4. Konservu la dosieron kun �an�oj kaj eliru el Vim per:  :wq  <Enenklavo>
++
++  5. Se vi eliris la instruilon vimtutor en pa�o 1, restartu la intruilon
++     vimtutor kaj movi�u suben al la sekvanta resumo.
++
++  6. Post kiam vi legis la suprajn pa�ojn, kaj komprenis ilin: faru ilin.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 1 RESUMO
++
++
++  1. La kursoro movi�as a� per la sagoklavoj, a� per la klavoj hjkl.
++        h (liven)     j (suben)      k (supren)     l (dekstren)
++
++  2. Por lan�i Vim el la �elinvito, tajpu:  vim DOSIERNOMO <Enenklavo>
++
++  3. Por eliri el Vim, tajpu:  <ESK>  :q! <Enenklavo>  por rezigni la �an�ojn
++
++  4. Por forvi�i la signojn �e la pozicio de la kursoro, tajpu:  x
++
++  5. Por enmeti a� postaldoni tekston, tajpu:
++          i  tajpu enmetendan tekston        <ESK>
++             enmetas tekston anta� la kursoro
++
++          A  tajpu la postaldonendan tekston <ESK>
++             postaldonas post la kursoro
++
++RIMARKO: Premo de <ESK> iras al la normala re�imo, a� rezignas la
++         nedeziratan a� parte plenumita komando.
++
++Nun da�rigu al la leciono 2.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Leciono 2.1: KOMANDOJ DE FORVI�O
++
++
++                      ** Tajpu  dw  por forvi�i vorton. **
++
++  1. Premu  <ESK>  por certigi, ke vi estas en normala re�imo.
++
++  2. Movu la kursoron al la linio markita per --->.
++
++  3. Movu la kursoron al la komenco de vorto, kiu forvi�endas.
++
++  4. Tajpu   dw   por forvi�i la vorton.
++
++  RIMARKO: La litero  d  aperos en la lasta linio sur la ekrano kiam vi
++           tajpas �in. Vim atendas �is kiam vi tajpas  w .  Se vi vidas
++           alian signon ol  d  vi tajpis ion mise; premu  <ESK>  kaj
++           rekomencu.
++
++---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en �i tiu frazo.
++
++  5. Ripetu pa�ojn 3 kaj 4 �is kiam la frazo estas �usta kaj movi�u al la
++     leciono 2.2.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leciono 2.2: PLIAJ KOMANDOJ DE FORVI�O
++
++
++               ** Tajpu  d$  por forvi�i la finon de la linio. **
++
++  1. Premu  <ESK>  por certigi, ke vi estas en normala re�imo.
++
++  2. Movu la kursoron sur la suban linion markita per --->.
++
++  3. Movu la kursoron �e la fino de la �usta linio (POST la unua . ).
++
++  4. Tajpu   d$   por foriv�i �is la fino de la linio.
++
++---> Iu tajpis la finon de �i tiu linio dufoje. fino de �i tiu linio dufoje.
++
++
++  5. Movi�u al la leciono 2.3 por kompreni kio okazas.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leciono 2.3: PRI OPERATOROJ KAJ MOVOJ
++
++
++  Multaj komandoj, kiuj �an�as la tekston, estas faritaj de operatoro kaj
++  movo. La formato de komando de forvi�o per la operatoro de forvi�o  d
++  estas kiel sekvas:
++
++       d   movo
++
++  Kie:
++    d      - estas la operatoro de movo
++    movo   - estas tio, pri kio la operatoro operacios (listigita sube)
++
++  Mallonga listo de movoj:
++    w - �is la komenco de la sekvanta vorto, krom �ia unua signo.
++    e - �is la fino de la nuna vorto, krom la lasta signo.
++    $ - �is la fino de la linio, krom la lasta signo.
++
++  Do tajpo de   'de'   forvi�os ekde la kursoro �is la fino de la vorto.
++
++RIMARKO: Premo de nur la movo en Normala re�imo sen operatoro movos
++         la kursoron kiel specifite.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Leciono 2.4: UZI NOMBRON POR MOVO
++
++             ** Tajpo de nombro anta� movo ripetas �in la�foje. **
++
++  1. Movu la kursoron �e la komenco de la suba linio markita per --->.
++
++  2. Tajpu  2w  por movi la kursoron je du vortoj anta�en.
++
++  3. Tajpu  3e  por movi la kursoron �e la fino de la tria vorto anta�en.
++
++  4. Tajpu  0  (nul) por movi�i �e la komenco de la linio.
++
++
++  5. Ripetu pa�ojn 2 �is 3 kun malsamaj nombroj.
++
++---> Tio estas nur linio kun vortoj, kie vi povas movi�i.
++
++  6. Movi�u al la leciono 2.5.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                    Leciono 2.5: UZI NOMBRON POR FORVI�I PLI
++
++
++            ** Tajpo de nombro kun operatoro ripetas �in la�foje. **
++
++  En la kombina�o de la operatoro de forvi�o, kaj movo kiel menciita
++  �i-supre, eblas aldoni nombron anta� la movo por pli forvi�i:
++        d  nombro   movo
++
++  1. Movu la kursoron �e la unua MAJUSKLA vorto en la linio markita per --->.
++
++  2. Tajpu  d2w  por forvi�i la du MAJUSKLAJN vortojn
++
++  3. Ripetu pa�ojn 1 �is 2 per malsama nombro por forvi�i la sinsekvajn
++     MAJUSKLAJN vortojn per unu komando
++
++---> Tiu AB CDE linio FGHI JK LMN OP de vortoj estas Q RS TUV purigita.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                    Leciono 2.6: OPERACII SUR LINIOJ
++
++
++                   ** Tajpu  dd  por forvi�i tutan linion. **
++
++  Pro la ofteco de forvi�o de tuta linio, la verkisto de Vi decidis, ke
++  estus pli facile simple tajpi du d-ojn  por forvi�i linion.
++
++  1. Movu la kursoron sur la duan linion en la suba frazo.
++  2. Tajpu  dd  por forvi�i la linion.
++  3. Nun movi�u al la kvara linio.
++  4. Tajpu   2dd   por forvi�i du liniojn.
++
++---> 1)  Rozoj estas ru�aj,
++---> 2)  �limo estas amuza,
++---> 3)  Violoj estas bluaj,
++---> 4)  Mi havas a�ton,
++---> 5)  Horlo�oj diras kioma horo estas,
++---> 6)  Sukero estas dol�a,
++---> 7)  Kaj tiel vi estas.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Leciono 2.7: LA KOMANDO DE MALFARO
++
++
++ ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. **
++
++  1. Movu la kursoron �e la suba linio markita per ---> kaj metu �in sur
++     la unuan eraron.
++  2. Tajpu  x  por forvi�i la unuan nedeziratan signon.
++  3. Nun tajpu  u  por malfari la lastan plenumitan komandon.
++  4. �i-foje, riparu �iujn erarojn en la linio kaj �ia originala stato.
++  5. Nun tajpu majusklan  U  por igi la linion al �ia anta�a stato.
++  6. Nun tajpu  u  kelkfoje por malfari la  U  kaj anta�ajn komandojn.
++  7. Nun tajpu CTRL-R (premante la CTRL klavon dum vi premas R) kelkfoje
++     por refari la komandojn (malfari la malfarojn).
++
++---> Koorektii la erarojn sur tiuu �i liniio kaj remettu illlin per malfaro.
++
++  8. Tiuj estas tre utilaj komandoj.  Nun movi�u al la leciono 2 RESUMO.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 2 RESUMO
++
++
++  1. Por forvi�i ekde la kursoro �is la sekvanta vorto, tajpu:    dw
++  2. Por forvi�i ekde la kursoro �is la fino de la linio, tajpu:  d$
++  3. Por forvi�i tutan linion, tajpu:                             dd
++
++  4. Por ripeti movon, anta�metu nombron:                         2w
++  5. La formato de �an�a komando estas:
++           operatoro   [nombro]   movo
++
++     kie:
++       operatoro - estas tio, kio farendas, kiel  d  por forvi�i
++       [nombro]  - estas opcia nombro por ripeti la movon
++       movo      - movas sur la teksto por operacii, kiel ekzemple  w (vorto),
++                   $ (�is fino de linio), ktp.
++
++  6. Por movi�i al la komenco de la linio, uzu nul:  0
++
++  7. Por malfari anta�ajn agojn, tajpu:               u (minuskla u)
++     Por malfari �iujn �an�ojn sur la linio, tajpu:   U (majuskla U)
++     Por refari la malfarojn, tajpu:                  CTRL-R
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Leciono 3.1 LA KOMANDO DE METO
++
++
++    ** Tajpu  p  por meti tekston forvi�itan anta�e post la kursoro. **
++
++  1. Movu la kursoron �e la unua ---> suba linio.
++
++  2. Tajpu  dd  por forvi�i la linion kaj konservi �in ene de re�istro de Vim.
++
++  3. Movu la kursoron �e la linio c), SUPER kie la forvi�ita linio devus esti.
++
++  4. Tajpu  p  por meti la linion sub la kursoron.
++
++  5. Ripetu la pa�ojn 2 �is 4 por meti �iujn liniojn en la �usta ordo.
++
++---> d) �u anka� vi povas lerni?
++---> b) Violoj estas bluaj,
++---> c) Inteligenteco lerneblas,
++---> a) Rozoj estas ru�aj,
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leciono 3.2 LA KOMANDO DE ANSTATA�IGO
++
++
++       ** Tajpu  rx  por anstata�igi la signon �e la kursoro per  x . **
++
++
++  1. Movu la kursoron �e la unua suba linio markita per --->.
++
++  2. Movu la kursoron �is la unua eraro.
++
++  3. Tajpu  r  kaj la signon, kiu devus esti tie.
++
++  4. Ripetu pa�ojn 2 kaj 3 �is kiam la unua linio egalas la duan.
++
++---> Kiem tiu lanio estis tajpita, iu pramis la na�uftajn klovojn!
++---> Kiam tiu linio estis tajpita, iu premis la ne�ustajn klavojn!
++
++  5. Nun movi�u al la leciono 3.3.
++
++RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Leciono 3.3 LA OPERATORO DE �AN�O
++
++
++              ** Por �an�i �is la fino de la vorto, tajpu  ce . **
++
++  1. Movu la kursoron �e la unua suba linio markita per --->.
++
++  2. Metu la kursoron sur la  d  en  lduzw
++
++  3. Tajpu  ce  kaj la �ustan vorton (en tiu �i kazo, tajpu inio ).
++
++  4. Premu <ESK> kaj movi�u al la sekvanta signo, kiu bezonas �an�on.
++
++  5. Ripetu la pa�ojn 3 kaj 4 �is kiam la unua frazo egalas la duan.
++
++---> Tiu lduzw havas kelkajn vortojn, kiii bezas �an�on per la �an�ooto.
++---> Tiu linio havas kelkajn vortojn, kiuj bezonas �an�on per la �an�operatoro.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Leciono 3.4 PLIAJ �AN�OJ PER c
++
++
++       ** La operatoro de �an�o uzeblas kun la sama movo kiel forvi�o. **
++
++  1. La operatoro de �an�o funkcias sammaniere kiel forvi�o. La formato estas:
++
++       c    [nombro]   movo
++
++  2. La movoj estas samaj, kiel ekzemple   w (vorto) kaj $ (fino de linio).
++
++  3. Movi�u �e la unua suba linio markita per --->.
++
++  4. Movu la kursoron al la unua eraro.
++
++  5. Tajpu  c$  kaj tajpu la reston de la linio kiel la dua kaj premu <ESK>.
++
++---> La fino de �i tiu linio bezonas helpon por igi �in same kiel la dua.
++---> La fino de �i tiu linio bezonas korektojn per uzo de la komando  c$
++
++RIMARKO:  Vi povas uzi la klavon Retropa�o por korekti erarojn dum vi tajpas.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 3 RESUMO
++
++
++  1. Por remeti tekston, kiun vi �us forvi�is, tajpu  p. Tio metas la
++     forvi�itan tekston POST la kursoro (se linio estis forvi�ita, �i
++     iros en la linion sub la kursoro).
++
++  2. Por anstata�igi la signon sub la kursoro, tajpu  r  kaj tiam la signon
++     kion vi deziras havi tie.
++
++  3. La operatoro de �an�o ebligas al vi �an�i ekde la kursoro, �is kie
++     la movo iras.  Ekz. tajpu  ce  por �an�i ekde la kursoro �is la fino
++     de la vorto,  c$  por �an�i �is la fino de la linio.
++
++  4. La formato de �an�o estas:
++
++         c    [nombro]   movo
++
++Nun da�rigu al la sekvanta leciono.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++              Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO
++
++
++  ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton.
++     Tajpu  G  por movi�i al linio en la dosiero. **
++
++  RIMARKO: Legu la tutan lecionon anta� ol plenumi iun pa�on ajn!!
++
++  1. Premu la klavon Ctrl kaj premu  g . Oni nomas tion CTRL-G.
++     Mesa�o aperos �e la suba parto de la pa�o kun la dosiernomo kaj la
++     pozicio en la dosiero. Memoru la numeron de la linio por pa�o 3.
++
++  RIMARKO: Vi eble vidas la pozicion de la kursoro �e la suba dekstra
++           angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas
++           �altita (vidu  :help 'ruler')
++
++  2. Premu  G  por movi�i �e la subo de la dosiero.
++     Tajpu gg  por movi�i �e la komenco de la dosiero.
++
++  3. Tajpu la numeron de la linio kie vi estis kaj poste G .  Tio removos
++     vin al la linio, kie vi estis kiam vi unue premis CTRL-G.
++
++  4. Se vi sentas vin komforta, plenumu pa�ojn 1 �is 3.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                        Leciono 4.2 LA KOMANDO DE SER�O
++
++
++             ** Tajpu  /  kaj poste frazon por ser�i la frazon. **
++
++  1. En normala re�imo, tajpu la  /  signon.  Rimarku, ke �i kaj la kursoro
++     aperas �e la suba parto de la ekrano kiel por la  :  komando.
++
++  2. Nun tajpu 'errarro' <Enenklavo>.
++     Tio estas la vorto, kion vi volas ser�i.
++
++  3. Por ser�i la saman frazon denove, simple tajpu  n .
++     Por ser�i la saman frazon denove en la retrodirekto, tajpu  N .
++
++  4. Por ser�i frazon en la retrodirekto, uzu  ?  anstata�  / .
++
++  5. Por reiri tien, el kie vi venis, premu  CTRL-O (Premu Ctrl kaj o
++     literon o).  Ripetu por pli retroiri.  CTRL-I iras anta�en.
++
++---> "errarro" ne estas maniero por literumi eraro; errarro estas eraro.
++
++RIMARKO: Kiam la ser�o atingas la finon de la dosiero, �i da�ras �e la
++         komenco, krom se la agordo 'wrapscan' estas mal�altita.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leciono 4.3 SER�O DE KONGRUAJ KRAMPOJ
++
++
++                 ** Tajpu  %  por trovi kongruan ), ] a�  } **
++
++  1. Poziciu la kursoron sur iun (, [ a� { en la linio markita per --->.
++
++  2. Nun tajpu la  %  signon.
++
++  3. La kursoro movi�as al la kongrua krampo.
++
++  4. Tajpu  %  por movi la kursoron al la alia kongrua krampo.
++
++  5. Movu la kursoron al la alia (, ), [, ], {, } kaj observu tion,
++     kion  %  faras.
++
++---> �i tiu ( estas testa linio kun (-oj, [-oj, ]-oj kaj {-oj, }-oj en �i. ))
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leciono 4.4 LA KOMANDO DE ANSTATA�IGO
++
++
++     ** Tajpu  :s/malnova/nova/g  por anstata�igi 'nova' per 'malnova'. **
++
++  1. Movu la kursoron al la suba linio markita per --->.
++
++  2. Tajpu  :s/laa/la <Enenklavo> .  Rimarku, ke la komando �an�as nur la
++     unuan okaza�on de "laa" en la linio.
++
++  3. Nun tajpu  :s/laa/la/g .  Aldono de  g  opcio signifas mallokan
++     anstata�igon en la linio. �i �an�as �iujn okaza�ojn de "laa" en la
++     linio.
++
++---> laa plej bona tempo por vidi florojn estas en laa printempo.
++
++  4. Por �an�i �iujn okaza�ojn de iu �ena signo inter du linioj,
++     tajpu    :#,#s/malnova/nova/g   kie #,# estas la numeroj de linioj de la
++                                     intervalo de la linioj kie la anstata�igo
++                                     okazos.
++     Tajpu    :%s/malnova/nova/g     por �an�i �iujn okaza�ojn en la tuta
++                                     dosiero.
++     Tajpu    :s/malnova/nova/gc     por trovi �iujn okaza�ojn en la tuta
++                                     dosiero, kun invitilo �u anstata�igi
++                                     a� ne.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 4 RESUMO
++
++  1. CTRL-G  vidigas vian pozicion en la dosiero kaj la staton de la dosiero.
++            G  movas la kursoron al la fino de la dosiero.
++     numero G  movas la kursoron al numero de tiu linio.
++           gg  movas la kursoron al la unua linio.
++
++  2. Tajpo de  /  kaj frazon ser�as la frazon anta�en.
++     Tajpo de  ?  kaj frazon ser�as la frazon malanta�en.
++     Post ser�o, tajpu n por trovi la sekvantan okaza�on en la sama direkto a�
++     N por ser�i en la mala direkto.
++     CTRL-O movas vin al la anta�aj pozicioj, CTRL-I al la novaj pozicioj.
++
++  3. Tajpo de  %  kiam la kursoro estas sur (,),[,],{ a� } movi�as al �ia
++     kongruo.
++
++  4. Por anstata�igi 'nova' en la unua 'malnova' en linio :s/malnova/nova
++     Por anstata�igi 'nova' en �iuj 'malnova'-oj en linio :s/malnova/nova/g
++     Por anstata�igi frazon inter du #-aj linioj          :#,#s/malnova/nova/g
++     Por anstata�igi �iujn okaza�ojn en la dosiero        :%s/malnova/nova/g
++     Por demandi konfirmon �iu-foje, aldonu 'c'           :%s/malnova/nova/gc
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                   Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON
++
++
++     ** Tajpu  :!  sekvata de ekstera komando por plenumi la komandon. **
++
++  1. Tajpu la konatan komandon  :  por pozicii la kursoron �e la suba parto
++     de la ekrano. Tio ebligas tajpadon de komando en komanda linio.
++
++  2. Nun tajpu la  !  (krisigno) signon. Tio ebligas al vi plenumi iun
++     eksteran �elan komandon ajn.
++
++  3. Ekzemple, tajpu  ls  post ! kaj tajpu <Enenklavo>. Tio listigos la
++     enhavon de la dosierujo, same kiel se vi estis en �ela invito.
++     A� uzu  :!dir  se ls ne funkcias.
++
++RIMARKO: Eblas plenumi iun eksteran komandon ajn tiamaniere, anka� kun
++         argumentoj.
++
++RIMARKO: �iuj  :  komandoj devas fini�i per tajpo de <Enenklavo>
++         Ekde nun, ni ne plu mencios tion.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                    Leciono 5.2 PLI PRI KONSERVO DE DOSIERO
++
++
++   ** Por konservi la faritajn �an�ojn en la teksto, tajpu  :w DOSIERNOMO. **
++
++  1. Tajpu  !dir  a�  !ls  por akiri liston de via dosierujo.
++     Vi jam scias, ke vi devas tajpi <Enenklavo> post tio.
++
++  2. Elektu dosieron, kiu ne jam ekzistas, kiel ekzemple TESTO.
++
++  3. Nun tajpu:   :w TESTO   (kie TESTO estas la elektita dosiernomo)
++
++  4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO.
++     Por kontroli tion, tajpu   :!dir   a�   !ls   denove por vidigi vian
++     dosierujon.
++
++RIMARKO: Se vi volus eliri el Vim kaj restartigi �in denove per  vim TESTO,
++         la dosiero estus precize same kiel kopio de la instruilo kiam vi
++         konservis �in.
++
++  5. Nun forvi�u la dosieron tajpante (MS-DOS):     :!del TESTO
++                                   a� (UNIKSO):     :!rm TESTO
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                    Leciono 5.3 APARTIGI KONSERVENDAN TESTON
++
++
++    ** Por konservi parton de la dosiero, tajpu   v  movo  :w DOSIERNOMO **
++
++  1. Movu la kursoron al tiu linio.
++
++  2. Premu  v  kaj movu la kursoron al la kvina suba ero.  Rimarku, ke la
++     teksto emfazi�as.
++
++  3. Premu la  :  signon.  �e la fino de la ekrano  :'<,'>  aperos.
++
++  4. Tajpu  w TESTO  , kie TESTO estas dosiernomo, kiu ne jam ekzistas.
++     Kontrolu, ke vi vidas  :'<,'>w TESTO  anta� premi <Enenklavo>.
++
++  5. Vim konservos la apartigitajn liniojn al la dosiero TESTO.  Uzu  :dir
++     a�  :!ls  por vidigi �in.  Ne forvi�u �in.  Ni uzos �in en la sekvanta
++     leciono.
++
++RIMARKO: Premo de  v  komencas Viduman apartigon.  Vi povas movi la kursoron
++         por pligrandigi a� malpligrandigi la apartigon. Tiam vi povas uzi
++         operatoron por plenumi ion kun la teksto.  Ekzemple,  d  forvi�as
++         la tekston.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                   Leciono 5.4 AKIRI KAJ KUNFANDI DOSIEROJN
++
++
++         ** Por enmeti la enhavon de dosiero, tajpu  :r DOSIERNOMON **
++
++  1. Movu la kursoron �us super �i tiu linio.
++
++RIMARKO: Post plenumo de pa�o 2, vi vidos tekston el la leciono 5.3.  Tiam
++         movi�u SUBEN por vidi tiun lecionon denove.
++
++  2. Nun akiru vian dosieron TESTO uzante la komandon   :r TESTO   kie TESTO
++     estas la nomo de la dosiero, kiun vi uzis.
++     La dosiero, kion vi akiras, estas metita sub la linio de la kursoro.
++
++  3. Por kontroli, �u la dosiero akiri�is, retromovu la kursoron kaj rimarku,
++     ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem
++     de la dosiero.
++
++RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple,
++        :r !ls  legas la eliron de la komando ls kaj metas �in sub la
++        kursoron.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 5 RESUMO
++
++
++  1.  :!komando  plenumas eksteran komandon.
++
++      Iuj utilaj ekzemploj estas:
++        (MS-DOS)           (UNIKSO)
++         :!dir              :!ls            - listigas dosierujon
++         :!del DOSIERNOMO   :!rm DOSIERNOMO - forvi�as la dosieron DOSIERNOMO
++
++  2.  :w DOSIERNOMO  konservas la nunan dosieron de Vim al disko kun la
++      nomo DOSIERNOMO.
++
++  3.  v  movo  :w DOSIERNOMO  konservas la Viduman apartigon de linioj en
++      dosiero DOSIERNOMO.
++
++  4. :r DOSIERNOMO  akiras la dosieron DOSIERNOMO el la disko kaj metas
++     �in sub la pozicion de la kursoro.
++
++  5. :r !dir  legas la eligon de la komando dir kaj metas �in sub la
++     pozicion de la kursoro.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Leciono 6.1 LA KOMANDO DE MALFERMO
++
++
++  ** Tajpu o por malfermi linion sub la kursoro kaj eniri Enmetan re�imon. **
++
++  1. Movu la kursoron al la suba linio markita per --->.
++
++  2. Tajpu la minusklan literon  o  por malfermi linion SUB la kursoro kaj
++     eniri la Enmetan re�imon.
++
++  3. Nun tajpu tekston kaj premu <ESK> por eliri la Enmetan re�imon.
++
++---> Post tajpo de  o  la kursoro movi�as al la malfermata linio en
++     Enmeta re�imo.
++
++  4. Por malfermi linion SUPER la kursoro, nur tajpu majusklan  O  ,
++     anstata� minusklan  o.  Provu tion per la suba linio.
++
++---> Malfermu linion SUPER tiu tajpante O dum la kursoro estas sur tiu linio.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Leciono 6.2 LA KOMANDO DE POSTALDONO
++
++
++                  ** Tajpu  a  por enmeti POST la kursoro. **
++
++  1. Movu la kursoron �e la komenco de la linio markita per --->.
++
++  2. Premu  e  �is kiam la kursoro estas �e la fino de  li.
++
++  3. Tajpu  a  (minuskle) por aldoni tekston POST la kursoro.
++
++  4. Kompletigu la vorton same kiel la linio sub �i.  Premu <ESK> por
++     eliri la Enmetan re�imon.
++
++  5. Uzu  e  por movi�i al la sekvanta nekompleta vorto kaj ripetu
++     pa�ojn 3 kaj 4.
++
++---> �i tiu lin ebligos vin ekz vin postal tekston al linio.
++---> �i tiu linio ebligos vin ekzerci vin postaldoni tekston al linio.
++
++RIMARKO: �iu  a, i kaj A  iras al la sama Enmeta re�imo, la nura malsamo
++         estas tie, kie la signoj estas enmetitaj.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                    Leciono 6.3 ALIA MANIERO POR ANSTATA�IGI
++
++
++          ** Tajpu majusklan  R  por anstata�igi pli ol unu signo. **
++
++  1. Movu la kursoron al la unua suba linio markita per --->.  Movu la
++     kursoron al la komenco de la unua  xxx .
++
++  2. Nun premu  R  kaj tajpu la nombron sub �i en la dua linio, por ke �i
++     anstata�igu la xxx .
++
++  3. Premu <ESK> por foriri la Anstata�igan re�imon. Rimarku, ke la cetera
++     parto de la linio restas ne�an�ata.
++
++  4. Ripetu la pa�ojn por anstata�igi la restantajn xxx.
++
++---> Aldono de 123 al xxx donas al vi xxx.
++---> Aldono de 123 al 456 donas al vi 579.
++
++RIMARKO: Anstata�iga re�imo estas same kiel Enmeta re�imo, sed �iu signo
++         tajpita forvi�as ekzistan signon.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                      Leciono 6.4 KOPII KAJ ALGLUI TEKSTON
++
++
++     ** Uzu la  y  operatoron por kopii tekston, kaj  p  por alglui �in **
++
++
++  1. Iru al la linio markita per ---> sube kaj poziciu la kursoron post "a)".
++
++  2. Komencu la Viduman re�imon per  v  kaj movu la kursoron �us anta� "unua".
++
++  3. Tajpu  y  por kopii la emfazitan tekston.
++
++  4. Movu la kursoron �e la fino de la linio:  j$
++
++  5. Tajpu  p  por alglui la tekston.  Tiam tajpu:  a dua <ESK> .
++
++  6. Uzu Viduman re�imon por apartigi " ero.", kopiu �in per  y , movi�u
++     �e la fino de la sekvanta linio per  j$  kaj algluu la tekston tie
++     per  p .
++
++---> a) tio estas la unua ero.
++     b)
++
++RIMARKO: vi povas anka� uzi  y  kiel operatoro;  yw  kopias unu vorton.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                           Leciono 6.5 AGORDI OPCION
++
++
++         ** Agordu opcion por ke ser�o a� anstata�igo ignoru usklecon **
++
++  1. Ser�u 'ignori' per tajpo de /ignori <Enenklavo>
++     Ripetu plurfoje premante  n .
++
++  2. �altu la opcion 'ic' (ignori usklecon) per:   :set ic
++
++  3. Nun ser�u 'ignori' denove premante  n
++     Rimarku, ke Ignori kaj IGNORI estas nun troveblas.
++
++  4. �altu la opciojn 'hlsearch' kaj 'incsearch':   :set hls is
++
++  5. Nun retajpu la ser�an komandon kaj vidu kio okazas:  /ignore <Enenklavo>
++
++  6. Por mal�alti ignoron de uskleco:  :set noic
++
++RIMARKO: Por forigi emfazon de kongruo, tajpu:   :nohlsearch
++RIMARKO: Se vi deziras ignori usklecon por nur unu ser�a komando, uzu  \c
++         en la frazo:  /ignore\c  <Enenklavo>
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 6 RESUMO
++
++  1. Tajpu  o  por malfermi linion SUB la kursoro kaj eki en Enmeta re�imo.
++  1. Tajpu  O  por malfermi linion SUPER la kursoro.
++
++  2. Tajpu  a  por enmeti tekston POST la kursoro.
++     Tajpu  A  por enmeti tekston post la fino de la linio.
++
++  3. La  e  komando movas la kursoron al la fino de vorto.
++
++  4. la  y  operatoro kopias tekston,  p  algluas �in.
++
++  5. Tajpo de majuskla  R  eniras la Anstata�igan re�imon �is kiam
++     <ESK> estas premita.
++
++  6. Tajpo de ":set xxx" �altas la opcion "xxx".  Iuj opcioj estas:
++        'ic' 'ignorecase'     ignori usklecon dum ser�o
++        'is' 'incsearch'      montru partan kongruon dum ser�o
++        'hls' 'hlsearch'      emfazas �iujn kongruajn frazojn
++     Vi povas uzi a� la longan, a� la mallongan nomon de opcio.
++
++  7. Anta�aldonu "no" por mal�alti la opcion:  :set noic
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                            Leciono 7.1 AKIRI HELPON
++
++
++                          ** Uzu la helpan sistemon **
++
++  Vim havas ampleksan helpan sistemon. Por komenci�i, provu unu el la tiuj
++  tri:
++        - premu la klavon <HELPO> (se vi havas �in)
++        - premu la klavon <F1> (se vi havas �in)
++        - tajpu   :help <Enenklavo>
++
++  Legu la tekston en la helpfenestro por trovi kiel helpo funkcias.
++  Tajpu  CTRL-W CTRL-W      por salti de unu fenestro al la alia.
++  Tajpu    :q <Enenklavo>   por fermi la helpan fenestron.
++
++  Vi povas trovi helpon pri io ajn aldonante argumenton al la komando
++  ":help".  Provu tiujn (ne forgesu premi <Enenklavo>):
++
++        :help w
++        :help c_CTRL-D
++        :help insert-index
++        :help user-manual
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Leciono 7.2 KREI STARTAN SKRIPTON
++
++
++                         ** Ebligu kapablojn de Vim **
++
++  Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defa�lte
++  mal�altitaj.  Por ekuzi la kapablojn, vi devas krei dosieron "vimrc".
++
++  1. Ekredaktu la dosieron "vimrc".  Tio dependas de via sistemo:
++      :e ~/.vimrc          por Unikso
++      :e $VIM/_vimrc       por MS-Vindozo
++
++  2. Nun legu la enhavon de la ekzempla "vimrc"
++      :r $VIMRUNTIME/vimrc_example.vim
++
++  3. Konservu la dosieron per:
++      :w
++
++  La sekvantan fojon, kiam vi lan�as Vim, �i uzos sintaksan emfazon.
++  Vi povas aldoni �iujn viajn preferatajn agordojn al tiu dosiero "vimrc".
++  Por pli da informoj, tajpu  :help vimrc-intro
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                             Leciono 7.3 KOMPLETIGO
++
++
++             ** Kompletigo de komanda linio per CTRL-D kaj <TAB> **
++
++  1. Certigu ke Vim estas en kongrua re�imo:  :set nocp
++
++  2. Rigardu tiujn dosierojn, kiuj ekzistas en la dosierujo:  :!ls  a�  :!dir
++
++  3. Tajpu la komencon de komando:  :e
++
++  4. Premu  CTRL-D  kaj Vim montros liston de komandoj, kiuj komencas per "e".
++
++  5. Premu <TAB>  kaj Vim kompletigos la nomon de la komando al ":edit".
++
++  6. Nun aldonu spaceton kaj la komencon de ekzistanta nomo:  :edit DOSI
++
++  7. Premu <TAB>.  Vim kompletigos la nomon (se �i estas unika)
++
++RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
++         <TAB>.  Estas aparte utila por  :help .
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                                Leciono 7 RESUMO
++
++
++  1. Tajpu  :help  a� premu <F1> a� <Helpo>  por malfermi helpan fenestron.
++
++  2. Tajpu  :help kmd  por trovi helpon pri  kmd.
++
++  3. Tajpu  CTRL-W CTRL-W  por salti al alia fenestro.
++
++  4. Tajpu  :q  to fermi la helpan fenestron.
++
++  5. Kreu komencan skripton vimrc por konservi viajn agordojn.
++
++  6. Kiam vi tajpas  :  komandon, premu CTRL-D por vidi �iujn kompleteblojn.
++     Premu <TAB> por uzi unu kompletigon.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  Tio konkludas la instruilon de Vim.  �i celis doni mallongan superrigardon
++  de la redaktilo Vim, nur tion kio sufi�as por ebligi al vi facilan uzon de
++  la redaktilo. Estas nepre nekompleta, �ar Vim havas multajn multajn pliajn
++  komandojn. Legu la manlibron: ":help user-manual".
++
++  Tiu instruilo estis verkita de Michael C. Pierce kaj Robert K. Ware,
++  el la Koloradia Lernejo de Minejoj (Colorado School of Mines) uzante
++  ideojn provizitajn de Charles Smith el la Stata Universitato de Koloradio
++  (Colorado State University)
++
++  Retpo�to: [email protected].
++
++  Modifita por Vim de Bram Moolenaar.
++
++  Tradukita en Esperanto de Dominique Pell�, 2008-04-01
++  Retpo�to: [email protected]
++  Lasta �an�o: 2010-05-23
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+diff -Nur runtime/tutor/tutor.eo.utf-8 runtime/tutor/tutor.eo.utf-8
+--- runtime/tutor/tutor.eo.utf-8	2008-04-05 12:35:18.000000000 -0700
++++ runtime/tutor/tutor.eo.utf-8	2011-01-18 10:40:56.519387025 -0800
+@@ -1,5 +1,5 @@
+ ==============================================================================
+-=   B o n v e n o n  al  la  I n s t r u i l o  de  V I M  -  Versio 1.0.eo  =
++=  B o n v e n o n  al  la  I n s t r u i l o  de  V I M  -  Versio 1.7.eo.3 =
+ ==============================================================================
+ 
+    Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
+@@ -54,15 +54,15 @@
+   1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reĝimo).
+ 
+   2. Tajpu:       :q! <Enenklavo>.
+-     Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kion vi faris.
++     Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kiujn vi faris.
+ 
+-  3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri 
++  3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri
+      en ĉi tiu instruilo. Tio estus:   vimtutor <Enenklavo>
+ 
+   4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn
+      1 ĝis 3 por eliri kaj reeniri la redaktilon.
+ 
+-RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn kion vi faris. 
++RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn, kiujn vi faris.
+          Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero.
+ 
+   5. Movu la kursoron suben ĝis la leciono 1.3.
+@@ -79,7 +79,7 @@
+      forviŝenda signo.
+ 
+   3. Premu la klavon  x  por forviŝi la nedeziratan signon.
+- 
++
+   4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta.
+ 
+ 
+@@ -99,7 +99,7 @@
+ 
+   1. Movu la kursoron al la unua suba linio markita per --->.
+ 
+-  2. Por igi la unuan linion sama ol la dua, movu la kursoron sur la unuan
++  2. Por igi la unuan linion sama kiel la dua, movu la kursoron sur la unuan
+      signon post kie la teksto estas enmetenda.
+ 
+   3. Premu  i  kaj tajpu la bezonatajn aldonojn.
+@@ -124,12 +124,12 @@
+   1. Movu la kursoron al la unua suba linio markita per --->.
+      Ne gravas sur kiu signo estas la kursoro.
+ 
+-  2. Premu  A  kaj tajpu la bezonatajn aldonojn.
++  2. Premu majusklan  A  kaj tajpu la bezonatajn aldonojn.
+ 
+   3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala
+      reĝimo.
+ 
+-  4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la 
++  4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la
+      paŝojn 2 kaj 3 por korekti la frazon.
+ 
+ ---> Mankas teksto el ti
+@@ -149,6 +149,7 @@
+   !! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!!
+ 
+   1. Eliru el la instruilo kiel vi faris en la leciono 1.2:  :q!
++     Aŭ, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie.
+ 
+   2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon:  vim tutor <Enenklavo>
+      'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la
+@@ -157,9 +158,10 @@
+ 
+   3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj.
+ 
+-  4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per:  :qw  <Enenklavo>
++  4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per:  :wq  <Enenklavo>
+ 
+-  5. Relanĉu la instruilon vimtutor kaj moviĝu suben al la sekvanta resumo.
++  5. Se vi eliris la instruilon vimtutor en paŝo 1, restartu la intruilon
++     vimtutor kaj moviĝu suben al la sekvanta resumo.
+ 
+   6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin.
+ 
+@@ -167,6 +169,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                 Leciono 1 RESUMO
+ 
++
+   1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl.
+         h (liven)     j (suben)      k (supren)     l (dekstren)
+ 
+@@ -217,6 +220,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO
+ 
++
+                ** Tajpu  d$  por forviŝi la finon de la linio. **
+ 
+   1. Premu  <ESK>  por certigi, ke vi estas en normala reĝimo.
+@@ -249,7 +253,7 @@
+     movo   - estas tio, pri kio la operatoro operacios (listigita sube)
+ 
+   Mallonga listo de movoj:
+-    w - ĝis la komenco de la sekvanta vorto, krom ĝian unuan signon.
++    w - ĝis la komenco de la sekvanta vorto, krom ĝia unua signo.
+     e - ĝis la fino de la nuna vorto, krom la lasta signo.
+     $ - ĝis la fino de la linio, krom la lasta signo.
+ 
+@@ -283,6 +287,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 2.5: UZI NOMBRON POR FORVIŜI PLI
+ 
++
+             ** Tajpo de nombro kun operatoro ripetas ĝin laŭfoje. **
+ 
+   En la kombinaĵo de la operatoro de forviŝo, kaj movo kiel menciita
+@@ -302,6 +307,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 2.6: OPERACII SUR LINIOJ
+ 
++
+                    ** Tajpu  dd  por forviŝi tutan linion. **
+ 
+   Pro la ofteco de forviŝo de tuta linio, la verkisto de Vi decidis, ke
+@@ -324,6 +330,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Leciono 2.7: LA KOMANDO DE MALFARO
+ 
++
+  ** Premu u por malfari la lastajn komandojn, U por ripari la tutan linion. **
+ 
+   1. Movu la kursoron ĉe la suba linio markita per ---> kaj metu ĝin sur
+@@ -344,6 +351,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                 Leciono 2 RESUMO
+ 
++
+   1. Por forviŝi ekde la kursoro ĝis la sekvanta vorto, tajpu:    dw
+   2. Por forviŝi ekde la kursoro ĝis la fino de la linio, tajpu:  d$
+   3. Por forviŝi tutan linion, tajpu:                             dd
+@@ -368,6 +376,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Leciono 3.1 LA KOMANDO DE METO
+ 
++
+     ** Tajpu  p  por meti tekston forviŝitan antaŭe post la kursoro. **
+ 
+   1. Movu la kursoron ĉe la unua ---> suba linio.
+@@ -389,6 +398,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leciono 3.2 LA KOMANDO DE ANSTATAŬIGO
+ 
++
+        ** Tajpu  rx  por anstataŭigi la signon ĉe la kursoro per  x . **
+ 
+ 
+@@ -402,15 +412,16 @@
+ 
+ ---> Kiem tiu lanio estis tajpita, iu pramis la naĝuftajn klovojn!
+ ---> Kiam tiu linio estis tajpita, iu premis la neĝustajn klavojn!
+-  
++
+   5. Nun moviĝu al la leciono 3.3.
+ 
+-Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
++RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Leciono 3.3 LA OPERATORO DE ŜANĜO
+ 
++
+               ** Por ŝanĝi ĝis la fino de la vorto, tajpu  ce . **
+ 
+   1. Movu la kursoron ĉe la unua suba linio markita per --->.
+@@ -430,7 +441,8 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                          Leciono 3.4 PLIAJ ŜANĜOJ PER c
+ 
+-        ** La operatoro de ŝanĝo uzeblas kun la sama movo ol forviŝo. **
++
++       ** La operatoro de ŝanĝo uzeblas kun la sama movo kiel forviŝo. **
+ 
+   1. La operatoro de ŝanĝo funkcias sammaniere kiel forviŝo. La formato estas:
+ 
+@@ -453,6 +465,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                 Leciono 3 RESUMO
+ 
++
+   1. Por remeti tekston, kiun vi ĵus forviŝis, tajpu  p. Tio metas la
+      forviŝitan tekston POST la kursoro (se linio estis forviŝita, ĝi
+      iros en la linion sub la kursoro).
+@@ -474,6 +487,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+               Leciono 4.1: POZICIO DE KURSORO KAJ STATO DE DOSIERO
+ 
++
+   ** Tajpu CTRL-G por montri vian pozicion en la dosiero kaj la dosierstaton.
+      Tajpu  G  por moviĝi al linio en la dosiero. **
+ 
+@@ -483,7 +497,7 @@
+      Mesaĝo aperos ĉe la suba parto de la paĝo kun la dosiernomo kaj la
+      pozicio en la dosiero. Memoru la numeron de la linio por paŝo 3.
+ 
+-  RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra 
++  RIMARKO: Vi eble vidas la pozicion de la kursoro ĉe la suba dekstra
+            angulo de la ekrano. Tio okazas kiam la agordo 'ruler' estas
+            ŝaltita (vidu  :help 'ruler')
+ 
+@@ -499,6 +513,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         Leciono 4.2 LA KOMANDO DE SERĈO
+ 
++
+              ** Tajpu  /  kaj poste frazon por serĉi la frazon. **
+ 
+   1. En normala reĝimo, tajpu la  /  signon.  Rimarku, ke ĝi kaj la kursoro
+@@ -524,7 +539,8 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                      Leciono 4.3 SERĈO DE KONGRUAJ KRAMPOJ
+ 
+-                 ** Tajpu  %  por trovi kongruan ), [ aŭ  } **
++
++                 ** Tajpu  %  por trovi kongruan ), ] aŭ  } **
+ 
+   1. Poziciu la kursoron sur iun (, [ aŭ { en la linio markita per --->.
+ 
+@@ -548,7 +564,7 @@
+ 
+   1. Movu la kursoron al la suba linio markita per --->.
+ 
+-  2. Tajpu  :s/laa/la <Enenklavo> .  Rimarku, ke la komando ŝanĝas nur la 
++  2. Tajpu  :s/laa/la <Enenklavo> .  Rimarku, ke la komando ŝanĝas nur la
+      unuan okazaĵon de "laa" en la linio.
+ 
+   3. Nun tajpu  :s/laa/la/g .  Aldono de  g  opcio signifas mallokan
+@@ -573,7 +589,7 @@
+ 
+   1. CTRL-G  vidigas vian pozicion en la dosiero kaj la staton de la dosiero.
+             G  movas la kursoron al la fino de la dosiero.
+-     numero G  movas la kursoron al tiu numero de linio.
++     numero G  movas la kursoron al numero de tiu linio.
+            gg  movas la kursoron al la unua linio.
+ 
+   2. Tajpo de  /  kaj frazon serĉas la frazon antaŭen.
+@@ -595,6 +611,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                    Leciono 5.1 KIEL PLENUMI EKSTERAN KOMANDON
+ 
++
+      ** Tajpu  :!  sekvata de ekstera komando por plenumi la komandon. **
+ 
+   1. Tajpu la konatan komandon  :  por pozicii la kursoron ĉe la suba parto
+@@ -603,7 +620,7 @@
+   2. Nun tajpu la  !  (krisigno) signon. Tio ebligas al vi plenumi iun
+      eksteran ŝelan komandon ajn.
+ 
+-  3. Ekzemple, tajpu  ls  post ! kaj tajpu <Enenklavo>. Tio listigos la 
++  3. Ekzemple, tajpu  ls  post ! kaj tajpu <Enenklavo>. Tio listigos la
+      enhavon de la dosierujo, same kiel se vi estis en ŝela invito.
+      Aŭ uzu  :!dir  se ls ne funkcias.
+ 
+@@ -617,6 +634,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 5.2 PLI PRI KONSERVO DE DOSIERO
+ 
++
+    ** Por konservi la faritajn ŝanĝojn en la teksto, tajpu  :w DOSIERNOMO. **
+ 
+   1. Tajpu  !dir  aŭ  !ls  por akiri liston de via dosierujo.
+@@ -626,7 +644,7 @@
+ 
+   3. Nun tajpu:   :w TESTO   (kie TESTO estas la elektita dosiernomo)
+ 
+-  4. Tio konservas la tutan dosieron (instruilo de Vim) per la nomo TESTO.
++  4. Tio konservas la tutan dosieron (instruilon de Vim) kun la nomo TESTO.
+      Por kontroli tion, tajpu   :!dir   aŭ   !ls   denove por vidigi vian
+      dosierujon.
+ 
+@@ -641,11 +659,12 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                     Leciono 5.3 APARTIGI KONSERVENDAN TESTON
+ 
++
+     ** Por konservi parton de la dosiero, tajpu   v  movo  :w DOSIERNOMO **
+ 
+   1. Movu la kursoron al tiu linio.
+-  
+-  2. Premu  v  kaj movu la kursoron al la kvina suba ero.  Rimarku, ke la 
++
++  2. Premu  v  kaj movu la kursoron al la kvina suba ero.  Rimarku, ke la
+      teksto emfaziĝas.
+ 
+   3. Premu la  :  signon.  Ĉe la fino de la ekrano  :'<,'>  aperos.
+@@ -654,10 +673,10 @@
+      Kontrolu, ke vi vidas  :'<,'>w TESTO  antaŭ premi <Enenklavo>.
+ 
+   5. Vim konservos la apartigitajn liniojn al la dosiero TESTO.  Uzu  :dir
+-     aŭ  :!ls  por vidigi ĝin.  Ne jam forviŝu ĝin.  Ni uzos ĝin en la
+-     sekvanta leciono.
++     aŭ  :!ls  por vidigi ĝin.  Ne forviŝu ĝin.  Ni uzos ĝin en la sekvanta
++     leciono.
+ 
+-RIMARKO: PREMO DE  v  komencas Viduman apartigon.  Vi povas movi la kursoron
++RIMARKO: Premo de  v  komencas Viduman apartigon.  Vi povas movi la kursoron
+          por pligrandigi aŭ malpligrandigi la apartigon. Tiam vi povas uzi
+          operatoron por plenumi ion kun la teksto.  Ekzemple,  d  forviŝas
+          la tekston.
+@@ -682,7 +701,7 @@
+      ke estas nun du kopioj de la leciono 5.3, la originala kaj la versio mem
+      de la dosiero.
+ 
+-RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple, 
++RIMARKO: Vi nun povas legi la eliron de ekstera komando. Ekzemple,
+         :r !ls  legas la eliron de la komando ls kaj metas ĝin sub la
+         kursoron.
+ 
+@@ -701,7 +720,7 @@
+   2.  :w DOSIERNOMO  konservas la nunan dosieron de Vim al disko kun la
+       nomo DOSIERNOMO.
+ 
+-  3.  v  movo  :w DOSIERNOMO  konservas la Viduman apartigo de linioj en
++  3.  v  movo  :w DOSIERNOMO  konservas la Viduman apartigon de linioj en
+       dosiero DOSIERNOMO.
+ 
+   4. :r DOSIERNOMO  akiras la dosieron DOSIERNOMO el la disko kaj metas
+@@ -748,7 +767,7 @@
+   4. Kompletigu la vorton same kiel la linio sub ĝi.  Premu <ESK> por
+      eliri la Enmetan reĝimon.
+ 
+-  5. Uzu  e  por moviĝi al la sekvanta nekompleta vorto kaj ripetu   
++  5. Uzu  e  por moviĝi al la sekvanta nekompleta vorto kaj ripetu
+      paŝojn 3 kaj 4.
+ 
+ ---> Ĉi tiu lin ebligos vin ekz vin postal tekston al linio.
+@@ -804,7 +823,7 @@
+      per  p .
+ 
+ ---> a) tio estas la unua ero.
+-     b) 
++     b)
+ 
+ RIMARKO: vi povas ankaŭ uzi  y  kiel operatoro;  yw  kopias unu vorton.
+ 
+@@ -812,7 +831,8 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                            Leciono 6.5 AGORDI OPCION
+ 
+-         ** Agordu opcion por ke serĉo aŭ anstataŭgo ignoru usklecon **
++
++         ** Agordu opcion por ke serĉo aŭ anstataŭigo ignoru usklecon **
+ 
+   1. Serĉu 'ignori' per tajpo de /ignori <Enenklavo>
+      Ripetu plurfoje premante  n .
+@@ -857,9 +877,11 @@
+ 
+   7. Antaŭaldonu "no" por malŝalti la opcion:  :set noic
+ 
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             Leciono 7.1 AKIRI HELPON
+ 
++
+                           ** Uzu la helpan sistemon **
+ 
+   Vim havas ampleksan helpan sistemon. Por komenciĝi, provu unu el la tiuj
+@@ -884,22 +906,23 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                        Leciono 7.2 KREI STARTAN SKRIPTON
+ 
+-                          ** Ebligu eblecojn de Vim **
+ 
+-  Vim havas multe pli da eblecoj ol Vi, sed la plej multaj estas defaŭlte
+-  malŝaltitaj.  Por ekuzi la eblecojn, vi devas krei dosieron "vimrc.
++                         ** Ebligu kapablojn de Vim **
++
++  Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaŭlte
++  malŝaltitaj.  Por ekuzi la kapablojn, vi devas krei dosieron "vimrc".
+ 
+   1. Ekredaktu la dosieron "vimrc".  Tio dependas de via sistemo:
+       :e ~/.vimrc          por Unikso
+       :e $VIM/_vimrc       por MS-Vindozo
+ 
+-  2. Nun legu la enhavon de la ekzempla "vimrc" 
++  2. Nun legu la enhavon de la ekzempla "vimrc"
+       :r $VIMRUNTIME/vimrc_example.vim
+ 
+   3. Konservu la dosieron per:
+       :w
+ 
+-  La sekvanta fojo, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon.
++  La sekvantan fojon, kiam vi lanĉas Vim, ĝi uzos sintaksan emfazon.
+   Vi povas aldoni ĉiujn viajn preferatajn agordojn al tiu dosiero "vimrc".
+   Por pli da informoj, tajpu  :help vimrc-intro
+ 
+@@ -907,6 +930,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                              Leciono 7.3 KOMPLETIGO
+ 
++
+              ** Kompletigo de komanda linio per CTRL-D kaj <TAB> **
+ 
+   1. Certigu ke Vim estas en kongrua reĝimo:  :set nocp
+@@ -947,7 +971,7 @@
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+   Tio konkludas la instruilon de Vim.  Ĝi celis doni mallongan superrigardon
+-  de la redaktilo Vim, nur tio kio sufiĉas por ebligi al vi facilan uzon de
++  de la redaktilo Vim, nur tion kio sufiĉas por ebligi al vi facilan uzon de
+   la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn
+   komandojn. Legu la manlibron: ":help user-manual".
+ 
+@@ -962,6 +986,6 @@
+ 
+   Tradukita en Esperanto de Dominique Pellé, 2008-04-01
+   Retpoŝto: [email protected]
+-  Lasta ŝanĝo: 2008-04-02
++  Lasta ŝanĝo: 2010-05-23
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+diff -Nur runtime/tutor/tutor.es runtime/tutor/tutor.es
+--- runtime/tutor/tutor.es	2004-06-07 07:32:39.000000000 -0700
++++ runtime/tutor/tutor.es	2011-01-18 10:40:56.519943224 -0800
+@@ -117,7 +117,7 @@
+ 			    RESUMEN DE LA LECCI�N 1
+ 
+ 
+-  1. El cursor se mueve utilizamdo las teclas de las flechas o las teclas hjkl.
++  1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl.
+ 	 h (izquierda)	   j (abajo)	  k (arriba)	  l (derecha)
+ 
+   2. Para acceder a Vim (desde el s�mbolo del sistema %) escriba:
+diff -Nur runtime/tutor/tutor.es.utf-8 runtime/tutor/tutor.es.utf-8
+--- runtime/tutor/tutor.es.utf-8	2008-06-21 11:19:12.000000000 -0700
++++ runtime/tutor/tutor.es.utf-8	2011-01-18 10:40:56.520508141 -0800
+@@ -117,7 +117,7 @@
+ 			    RESUMEN DE LA LECCIÓN 1
+ 
+ 
+-  1. El cursor se mueve utilizamdo las teclas de las flechas o las teclas hjkl.
++  1. El cursor se mueve utilizando las teclas de las flechas o las teclas hjkl.
+ 	 h (izquierda)	   j (abajo)	  k (arriba)	  l (derecha)
+ 
+   2. Para acceder a Vim (desde el símbolo del sistema %) escriba:
+diff -Nur runtime/tutor/tutor.fr runtime/tutor/tutor.fr
+--- runtime/tutor/tutor.fr	2004-06-07 07:32:39.000000000 -0700
++++ runtime/tutor/tutor.fr	2011-01-18 10:40:56.521369999 -0800
+@@ -1,5 +1,5 @@
+ ===============================================================================
+-= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
++= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.7.fr.2 =
+ ===============================================================================
+ 
+      Vim est un �diteur tr�s puissant qui a trop de commandes pour pouvoir
+@@ -7,93 +7,100 @@
+      d�crire suffisamment afin de vous permettre d'utiliser simplement Vim.
+ 
+      Le temps requis pour suivre ce cours est d'environ 25 � 30 minutes, selon
+-     le temps que vous passerez � exp�rimenter.  Les commandes utilis�es dans
+-     les le�ons modifieront le texte. Faites une copie de ce fichier afin de
+-     vous entra�ner dessus (si vous avez lanc� "vimtutor" ceci est d�j� une
+-     copie).
++     le temps que vous passerez � exp�rimenter.
++
++     ATTENTION :
++     Les commandes utilis�es dans les le�ons modifieront le texte. Faites une
++     copie de ce fichier afin de vous entra�ner dessus (si vous avez lanc�
++     "vimtutor" ceci est d�j� une copie).
+ 
+      Il est important de garder en t�te que ce cours est con�u pour apprendre
+-     par la pratique.  Cela signifie que vous devez ex�cuter les commandes
+-     pour les apprendre correctement.  Si vous vous contentez de lire le
+-     texte, vous oublierez les commandes !
+-
+-     Maintenant, v�rifiez que votre clavier n'est PAS verouill� en majuscules,
+-     et appuyez la touche  j  le nombre de fois suffisant pour que la le�on
+-     1.1 remplisse compl�tement l'�cran.
++     par la pratique. Cela signifie que vous devez ex�cuter les commandes
++     pour les apprendre correctement. Si vous vous contentez de lire le texte,
++     vous oublierez les commandes !
++
++     Maintenant, v�rifiez que votre clavier n'est PAS verrouill� en
++     majuscules, et appuyez la touche  j  le nombre de fois suffisant pour
++     que la Le�on 1.1 remplisse compl�tement l'�cran.
++
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      Le�on 1.1 : D�PLACEMENT DU CURSEUR
++                      Le�on 1.1 : D�PLACEMENT DU CURSEUR
+ 
+ 
+   ** Pour d�placer le curseur, appuyez les touches h,j,k,l comme indiqu�. **
+-	    ^
+-	    k	     Astuce:  La touche h est � gauche et d�place � gauche.
+-      < h      l >	      La touche l est � droite et d�place � droite.
+-	   j		      La touche j ressemble � une fl�che vers le bas.
+-	   v
++          ^
++          k        Astuce :  La touche h est � gauche et d�place � gauche.
++    < h       l >            La touche l est � droite et d�place � droite.
++          j                  La touche j ressemble � une fl�che vers le bas.
++          v
+   1. D�placez le curseur sur l'�cran jusqu'� vous sentir � l'aise.
+ 
+   2. Maintenez la touche Bas (j) enfonc�e jusqu'� ce qu'elle se r�p�te.
+----> Maintenant vous �tes capable de vous d�placer jusqu'� la le�on suivante.
++     Maintenant vous �tes capable de vous d�placer jusqu'� la le�on suivante.
+ 
+   3. En utilisant la touche Bas, allez � la Le�on 1.2.
+ 
+-Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <�chap>
+-      pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
++NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <�chap>
++       pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
+ 
+-Note: Les touches fl�ch�es devraient �galement fonctionner. Mais en utilisant
+-      hjkl vous pourrez vous d�placer beaucoup plus rapidement, une fois que
+-      vous aurez pris l'habitude.
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		     Le�on 1.2 : ENTR�E ET SORTIE DE VIM
++NOTE : Les touches fl�ch�es devraient �galement fonctionner. Mais en utilisant
++       hjkl vous pourrez vous d�placer beaucoup plus rapidement, une fois que
++       vous aurez pris l'habitude.
+ 
+ 
+- !! NOTE: Avant d'effectuer les �tapes ci-dessous, lisez toute cette le�on !!
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Le�on 1.2 : SORTIR DE VIM
+ 
+-  1. Appuyez la touche	<�chap>  (pour �tre s�r d'�tre en mode Normal).
+ 
+-  2. Tapez:			:q! <Entr�e>
++ !! NOTE : Avant d'effectuer les �tapes ci-dessous, lisez toute cette le�on !!
+ 
+----> Ceci quitte l'�diteur SANS sauver les changements que vous avez faits.
+-     Si vous voulez enregistrer les changements et sortir, tapez:
+-				:wq <Entr�e>
++  1. Appuyez la touche  <�chap>  (pour �tre s�r d'�tre en mode Normal).
+ 
+-  3. Lorsque l'invite du 'shell' vous sera pr�sent�e, tapez la commande qui
+-     vous a amen� dans ce tutoriel.  Cela pourrait �tre:    vimtutor <Entr�e>
+-     Normalement, vous utiliseriez:			    vim tutor <Entr�e>
++  2. Tapez :  :q! <Entr�e>
++     Ceci quitte l'�diteur SANS enregistrer les changements que vous avez
++     faits.
+ 
+----> 'vim' lance l'�diteur, 'tutor' est le fichier que vous souhaitez �diter.
++  3. Lorsque l'invite du shell vous sera pr�sent�e, tapez la commande qui
++     vous a men� dans ce tutoriel. Cela pourrait �tre :    vimtutor <Entr�e>
+ 
+   4. Si vous avez m�moris� ces �tapes et �tes confiant, effectuez les �tapes
+-     1 � 3 pour sortir puis rentrer dans l'�diteur.  D�placez ensuite le
+-      curseur jusqu'� la Le�on 1.3.
++     1 � 3 pour sortir puis rentrer dans l'�diteur.
++
++NOTE :  :q! <Entr�e> annule tous les changements que vous avez fait. Dans
++         quelques le�ons, vous apprendrez � enregistrer les changements.
++
++  5. D�placez le curseur � la Le�on 1.3.
++
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		  Le�on 1.3 : �DITION DE TEXTE - EFFACEMENT
++                  Le�on 1.3 : �DITION DE TEXTE - EFFACEMENT
+ 
+ 
+- ** En mode Normal, appuyez  x	pour effacer le caract�re sous le curseur. **
++         ** Appuyez   x   pour effacer le caract�re sous le curseur. **
+ 
+   1. D�placez le curseur sur la ligne marqu�e ---> ci-dessous.
+ 
+   2. Pour corriger les erreurs, d�placez le curseur jusqu'� ce qu'il soit
+      sur un caract�re � effacer.
+ 
+-  3. Appuyez la touche	x  pour effacer le caract�re redondant.
++  3. Appuyez la touche  x  pour effacer le caract�re redondant.
+ 
+   4. R�p�tez les �tapes 2 � 4 jusqu'� ce que la phrase soit correcte.
+ 
+ ---> La vvache � saut�� au-ddessus dde la luune.
+ 
+-  5. Maintenant que la ligne est correcte, passez � la le�on 1.4.
++  5. Maintenant que la ligne est correcte, passez � la Le�on 1.4.
+ 
+-NOTE: En avan�ant dans ce cours, n'essayez pas de m�moriser, apprenez par
+-      la pratique.
++NOTE : En avan�ant dans ce cours, n'essayez pas de m�moriser, apprenez par
++       la pratique.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		   Le�on 1.4 : �DITION DE TEXTE - INSERTION
++                    Le�on 1.4 : �DITION DE TEXTE - INSERTION
+ 
+ 
+-	   ** En mode Normal, appuyez  i  pour ins�rer du texte. **
++                    ** Appuyez  i  pour ins�rer du texte. **
+ 
+   1. D�placez le curseur sur la premi�re ligne marqu�e ---> ci-dessous.
+ 
+@@ -108,38 +115,94 @@
+ ---> Il mnqe caract�res cette .
+ ---> Il manque des caract�res dans cette ligne.
+ 
+-  5. Une fois que vous �tes � l'aise avec l'insertion de texte, allez au
+-     r�sum� ci-dessous.
++  5. Une fois que vous �tes � l'aise avec l'insertion de texte, allez � la
++     Le�on 1.5.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Le�on 1.5 : �DITION DE TEXTE - AJOUTER
++
++
++                    ** Appuyez  A  pour ajouter du text. **
++
++  1. D�placez le curseur sur la premi�re ligne ci-dessous marqu�e --->.
++     Peu importe sur quel caract�re se trouve le curseur sur cette ligne.
++
++  2. Appuyez  A  et tapez les ajouts n�cessaires.
++
++  3. Quand le texte a �t� ajout�, appuyez <�chap> pour revenir en mode
++     Normal.
++
++  4. D�placez le curseur sur la seconde ligne marqu�e ---> et r�p�tez les
++     �tapes 2 et 3 pour corriger la phrase.
++
++---> Il manque du texte � partir de cet
++     Il manque du texte � partir de cette ligne.
++---> Il manque aussi du te
++     Il manque aussi du texte ici.
++
++  5. Quand vous vous sentez suffisamment � l'aise pour ajouter du texte,
++     allez � la Le�on 1.6.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Le�on 1.6 : �DITER UN FICHIER
++
++
++          ** Utilisez  :wq  pour enregistrer un fichier et sortir. **
++
++!! NOTE : Lisez toute la le�on avant d'ex�cuter les instructions ci-dessous !!
++
++  1. Sortez de ce tutoriel comme vous l'avez fait dans la Le�on 1.2 :  :q!
++     Ou, si vous avez acc�s � un autre terminal, ex�cutez y les actions
++     qui suivent.
++
++  2. � l'invite du shell, tapez cette commande :  vim tutor <Entr�e>
++     'vim' est la commande pour d�marrer l'�diteur Vim, 'tutor' est le
++     nom du fichier que vous souhaitez �diter. Utilisez un fichier qui peut
++     �tre modifi�.
++
++  3. Ins�rez et effacez du texte comme vous l'avez appris dans les le�ons
++     pr�c�dentes.
++
++  4. Enregistrez le fichier avec les changements et sortez de Vim avec :
++       :wq <Entr�e>
++
++  5. Si vous avez quitt� vimtutor � l'�tape 1, recommencez vimtutor et
++     d�placez-vous en bas vers le r�sum� suivant.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     R�SUM� DE LA LE�ON 1
++                             R�SUM� DE LA LE�ON 1
++
+ 
+   1. Le curseur se d�place avec les touches fl�ch�es ou les touches hjkl.
+-	 h (gauche)	j (bas)        k (haut)       l (droite)
++           h (gauche)      j (bas)      k (haut)      l (droite)
++
++  2. Pour d�marrer Vim � l'invite du shell tapez :  vim FICHIER <Entr�e>
+ 
+-  2. Pour entrer dans Vim (� l'invite %) tapez:  vim FICHIER <Entr�e>
++  3. Pour quitter Vim tapez :  <�chap> :q! <Entr�e>  pour perdre tous les
++                                                     changements.
++                   OU tapez :  <�chap> :wq <Entr�e>  pour enregistrer les
++                                                     changements.
+ 
+-  3. Pour quitter Vim tapez:  <�chap> :q! <Entr�e>  pour perdre tous les
+-						    changements.
+-		   OU tapez:  <�chap> :wq <Entr�e>  pour enregistrer les
+-						    changements.
++  4. Pour effacer un caract�re sous le curseur tapez :  x
+ 
+-  4. Pour effacer un caract�re sous le curseur en mode Normal tapez:  x
++  5. Pour ins�rer ou ajouter du texte tapez :
++         i   tapez le texte � ins�rer avant le curseur   <�chap>
++         A   tapez le texte � ajouter apr�s le curseur   <�chap>
+ 
+-  5. Pour ins�rer du texte au niveau du curseur en mode Normal tapez:
+-	 i   tapez le texte   <�chap>
++NOTE : Appuyer  <�chap>  vous place en mode Normal ou annule une commande
++       partiellement tap�e dont vous ne voulez plus.
+ 
+-NOTE: Appuyer  <�chap>	vous place en mode Normal ou annule une commande
+-      partiellement tap�e dont vous ne voudriez plus.
++Passez maintenant � la le�on 2.
+ 
+-Passez maintenant � la Le�on 2.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			   Le�on 2.1 : EFFACEMENTS
++                       Le�on 2.1 : COMMANDES D'EFFACEMENT
+ 
+ 
+-	    ** Tapez  dw  pour effacer jusqu'� la fin d'un mot. **
++                     ** Tapez  dw  pour effacer un mot. **
+ 
+   1. Appuyez  <�chap>  pour �tre s�r d'�tre en mode Normal.
+ 
+@@ -147,91 +210,139 @@
+ 
+   3. Placez le curseur sur le d�but d'un mot qui a besoin d'�tre effac�.
+ 
+-  4. Tapez  dw	pour faire dispara�tre ce mot.
++  4. Tapez  dw  pour faire dispara�tre ce mot.
+ 
+-NOTE: Les lettres  dw  appara�tront sur la derni�re ligne de l'�cran lors de
+-      votre frappe. Si vous avez mal tap� quelque chose, appuyez <�chap> et
+-      recommencez.
++NOTE : La lettre  d  appara�tra sur la derni�re ligne de l'�cran lors de
++       votre frappe. Vim attend que vous tapiez  w . Si vous voyez un autre
++       caract�re que  d  vous avez tap� autre chose ; appuyez <�chap> et
++       recommencez.
+ 
+ ---> Il y a quelques dr�le mots qui n'ont rien � faire papier sur cette ligne.
+ 
+   5. R�p�tez les �tapes 3 et 4 jusqu'� ce que la phrase soit correcte et allez
+      � la Le�on 2.2.
+ 
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			Le�on 2.2 : PLUS D'EFFACEMENTS
++                  Le�on 2.2 : PLUS DE COMMANDES D'EFFACEMENTS
+ 
+ 
+-	  ** Tapez  d$	pour effacer jusqu'� la fin de la ligne. **
++          ** Tapez  d$  pour effacer jusqu'� la fin de la ligne. **
+ 
+   1. Appuyez  <�chap>  pour �tre s�r d'�tre en mode Normal.
+ 
+   2. D�placez le curseur sur la ligne marqu�e ---> ci-dessous.
+ 
+-  3. D�placez le curseur jusqu'� la fin correcte de la ligne
+-     (APR�S le premier . ).
++  3. D�placez le curseur jusqu'� la fin de la ligne correcte (APR�S le
++     premier . ).
+ 
+-  4. Tapez  d$	pour effacer jusqu'� la fin de la ligne.
++  4. Tapez  d$  pour effacer jusqu'� la fin de la ligne.
+ 
+ ---> Quelqu'un a tap� la fin de cette ligne deux fois. cette ligne deux fois.
+ 
+   5. Allez � la Le�on 2.3 pour comprendre ce qui se passe.
+ 
+ 
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++             Le�on 2.3 : � PROPOS DES OP�RATEURS ET DES MOUVEMENTS
++
++
++  Plusieurs commandes qui changent le texte sont constitu�es d'un op�rateur
++  et d'un mouvement. Le format pour une commande d'effacement avec l'op�rateur
++  d  d'effacement est le suivant :
+ 
++        d   mouvement
++
++  O� :
++    d         - est l'op�rateur d'effacement
++    mouvement - est le mouvement sur lequel agit l'op�rateur (list�s
++                ci-dessous)
++
++  Une courte liste de mouvements :
++    w - jusqu'au d�but du prochain mot, en EXCLUANT son premier caract�re.
++    e - jusqu'� la fin du mot courant, en EXCLUANT son denier caract�re.
++    $ - jusqu'� la fin de la ligne, en INCLUANT son dernier caract�re.
++
++  Ainsi, taper  de  va effacer depuis le curseur jusqu'� la fin du mot.
++
++NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d�place le
++       curseur comme indiqu�.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		   Le�on 2.3 : DES COMMANDES ET DES OBJETS
++            Le�on 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT
+ 
+ 
+-  Le format de la commande d'effacement  d  est le suivant:
++       ** Taper un nombre avant un mouvement le r�p�te autant de fois. **
+ 
+-	 [nombre]  d  objet	   OU	     d	[nombre]  objet
+-  o�:
+-    nombre - est combien de fois ex�cuter la commande (optionnel, d�faut: 1).
+-    d - est la commande d'effacement.
+-    objet - est ce sur quoi la commande va op�rer (liste ci-dessous).
++  1. D�placez le curseur au d�but de la ligne marqu�e ---> ci-dessous.
+ 
+-  Une courte liste d'objets:
+-    w - du curseur jusqu'� la fin du mot, y compris l'espace qui suit.
+-    e - du curseur jusqu'� la fin du mot, SANS l'espace qui suit.
+-    $ - du curseur jusqu'� la fin de la ligne.
++  2. Tapez  2w  pour d�placer le curseur de 2 mots vers l'avant.
+ 
+-NOTE: Pour les aventureux, le seul appui d' objet  en mode Normal, sans
+-      commande, d�place le curseur comme indiqu� dans la liste des objets.
++  3. Tapez  3e  pour d�placer le curseur � la fin du troisi�me mot vers
++     l'avant.
+ 
++  4. Tapez  0  (z�ro) pour d�placer au d�but de la ligne.
+ 
++  5. R�p�tez les �tapes 2 et 3 avec des quantificateurs diff�rents.
++
++---> Ceci est juste une ligne avec des mots o� vous pouvez vous d�placer.
++
++  6. D�placez-vous � la Le�on 2.5.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Le�on 2.4 : UNE EXCEPTION � 'COMMANDE-OBJET'
++            Le�on 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS
++
++
++       ** Taper un nombre avec un op�rateur le r�p�te autant de fois. **
+ 
+-	      ** Tapez	dd  pour effacer une ligne compl�te. **
++  Outre la combinaison de l'op�rateur d'effacement avec un d�placement
++  mentionn� ci-dessus, vous pouvez ins�rer un nombre (quantificateur)
++  pour effacez encore plus :
++       d   nombre   d�placement
++
++  1. D�placez le curseur vers le premier mot en MAJUSCULES dans la ligne
++     marqu�e --->.
++
++  2. Tapez  d2w  pour effacer les deux mots en MAJUSCULES.
++
++  3. R�p�tez les �tapes 1 et 2 avec des quantificateurs diff�rents pour
++     effacer les mots suivants en MAJUSCULES � l'aide d'une commande.
++
++---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoy�e.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Le�on 2.6 : OP�REZ SUR DES LIGNES
++
++
++              ** Tapez   dd   pour effacer une ligne compl�te. **
+ 
+   Vu le nombre de fois o� l'on efface des lignes compl�tes, les concepteurs
+-  de Vi ont d�cid� qu'il serait plus facile de taper simplement deux d � la
+-  suite pour effacer une ligne.
++  de Vi ont d�cid� qu'il serait plus facile de taper simplement deux  d
++  pour effacer une ligne.
+ 
+   1. Placez le curseur sur la seconde ligne de la phrase ci-dessous.
+-  2. Tapez  dd	pour effacer la ligne.
++  2. Tapez  dd  pour effacer la ligne.
+   3. Maintenant allez � la quatri�me ligne.
+-  4. Tapez  2dd  (rappelez-vous, nombre-commande-objet) pour effacer les
+-     deux lignes.
++  4. Tapez   2dd   pour effacer deux lignes.
++
++--->  1)  Les roses sont rouges,
++--->  2)  La boue c'est dr�le,
++--->  3)  Les violettes sont bleues,
++--->  4)  J'ai une voiture,
++--->  5)  Les horloges donnent l'heure,
++--->  6)  Le sucre est doux
++--->  7)  Tout comme vous.
+ 
+-      1)  Les roses sont rouges,
+-      2)  La boue c'est dr�le,
+-      3)  Les violettes sont bleues,
+-      4)  J'ai une voiture,
+-      5)  Les horloges donnent l'heure,
+-      6)  Le sucre est doux
+-      7)  Tout comme vous.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			    Le�on 2.5 : L'ANNULATION
++                            Le�on 2.7 : L'ANNULATION
+ 
+-	    ** Tapez  u  pour annuler les derni�res commandes. **
+-	       ** Tapez  U  pour r�cup�rer toute une ligne. **
++
++            ** Tapez  u  pour annuler les derni�res commandes. **
++               ** Tapez  U  pour r�cup�rer toute une ligne. **
+ 
+   1. D�placez le curseur sur la ligne marqu�e ---> ci-dessous et placez-le sur
+      la premi�re erreur.
+@@ -239,10 +350,10 @@
+   3. Puis tapez  u  pour annuler la derni�re commande ex�cut�e.
+   4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande  x .
+   5. Puis tapez un  U  majuscule pour remettre la ligne dans son �tat initial.
+-  6. Puis tapez  u  deux-trois fois pour annuler le  U	et les commandes
++  6. Puis tapez  u  deux-trois fois pour annuler le  U  et les commandes
+      pr�c�dentes.
+-  7. Maintenant tapez  Ctrl-R  (maintenez la touche Ctrl enfonc�e pendant que
+-     vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler
++  7. Maintenant tapez  CTRL-R  (maintenez la touche CTRL enfonc�e pendant que
++     vous appuyez R) deux-trois fois pour refaire les commandes (annuler
+      les annulations).
+ 
+ ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'.
+@@ -250,57 +361,64 @@
+   8. Ce sont des commandes tr�s utiles. Maintenant, allez au r�sum� de la
+      Le�on 2.
+ 
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     R�SUM� DE LA LE�ON 2
++                             R�SUM� DE LA LE�ON 2
++
++
++  1. Pour effacer du curseur jusqu'au mot suivant tapez :         dw
++
++  2. Pour effacer du curseur jusqu'� la fin d'une ligne tapez :   d$
+ 
++  3. Pour effacer toute une ligne tapez :                         dd
+ 
+-  1. Pour effacer du curseur jusqu'� la fin d'un mot tapez:	dw
++  4. Pour r�p�ter un d�placement ajoutez un quantificateur :      2w
+ 
+-  2. Pour effacer du curseur jusqu'� la fin d'une ligne tapez:	d$
++  5. Le format d'une commande de changement est :
+ 
+-  3. Pour effacer toute une ligne tapez:  dd
++       op�rateur   [nombre]   d�placement
+ 
+-  4. Le format d'une commande en mode Normal est:
++     O� :
++       op�rateur   - est ce qu'il faut faire, comme  d  pour effacer.
++       [nombre]    - un quantificateur optionnel pour r�p�ter le d�placement.
++       d�placement - d�place le long du texte � op�rer, tel que  w  (mot),
++                     $ (jusqu'� la fin de ligne), etc.
+ 
+-       [nombre]  commande  objet     OU     commande  [nombre]	objet
+-     o�:
+-       nombre - est combien de fois r�p�ter la commande
+-       commande - est ce qu'il faut faire, par exemple	d  pour effacer
+-       objet - est ce sur quoi la commande devrait agir, par exemple w (mot),
+-	       $ (jusqu'� la fin de la ligne), etc.
++  6. Pour se d�placer au d�but de ligne, utilisez un z�ro :  0
++
++  5. Pour annuler des actions pr�c�dentes, tapez :            u (u minuscule)
++     Pour annuler tous les changements sur une ligne tapez :  U (U majuscule)
++     Pour annuler l'annulation tapez :                        CTRL-R
+ 
+-  5. Pour annuler des actions pr�c�dentes, tapez:	     u	(u minuscule)
+-     Pour annuler tous les changements sur une ligne tapez:  U	(U majuscule)
+-     Pour annuler l'annulation tapez:			     Ctrl-R
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     Le�on 3.1 : LE COLLAGE
++                             Le�on 3.1 : LE COLLAGE
+ 
+ 
+-   ** Tapez  p	pour placer apr�s le curseur ce qui vient d'�tre effac�. **
++   ** Tapez  p  pour placer apr�s le curseur ce qui vient d'�tre effac�. **
+ 
+-  1. Placez le curseur sur la premi�re ligne du "po�me" ci-dessous.
++  1. Placez le curseur sur la premi�re ligne ci-dessous marqu�e --->.
+ 
+-  2. Tapez  dd	pour effacer la ligne et la placer dans le tampon de Vim.
++  2. Tapez  dd  pour effacer la ligne et la placer dans un registre de Vim.
+ 
+-  3. D�placez le curseur sur la ligne qui PR�C�DE l'endroit o� vous voulez
+-     remettre la ligne effac�e.
++  3. D�placez le curseur sur la ligne c) au-dessus o� vous voulez remettre la
++     ligne effac�e.
+ 
+-  4. En mode Normal, tapez  p  pour remettre la ligne.
++  4. En mode Normal, tapez   p   pour remettre la ligne en dessous du curseur.
+ 
+   5. R�p�tez les �tapes 2 � 4 pour mettre toutes les lignes dans le bon ordre.
+ 
+-     d) Et vous, qu'apprenez-vous ?
+-     b) Les violettes sont bleues,
+-     c) L'intelligence s'apprend,
+-     a) Les roses sont rouges,
++---> d) Et vous, qu'apprenez-vous ?
++---> b) Les violettes sont bleues,
++---> c) L'intelligence s'apprend,
++---> a) Les roses sont rouges,
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 Le�on 3.2 : LE REMPLACEMENT
++                    Le�on 3.2 : LA COMMANDE DE REMPLACEMENT
+ 
+ 
+- ** Tapez  r  et un caract�re pour remplacer le caract�re sous le curseur. **
++     ** Tapez  rx  pour remplacer un caract�re sous le curseur par  x . **
+ 
+   1. D�placez le curseur sur la premi�re ligne marqu�e ---> ci-dessous.
+ 
+@@ -308,31 +426,32 @@
+ 
+   3. Tapez  r  suivi du caract�re qui doit corriger l'erreur.
+ 
+-  4. R�p�tez les �tapes 2 et 3 jusqu'� ce que la premi�re ligne soit correcte.
++  4. R�p�tez les �tapes 2 et 3 jusqu'� ce que la premi�re ligne soit �gale
++     � la seconde.
+ 
+ --->  Quand cette ligne a �t� sauvie, quelqu'un a lait des faunes de frappe !
+ --->  Quand cette ligne a �t� saisie, quelqu'un a fait des fautes de frappe !
+ 
+   5. Maintenant, allez � la Le�on 3.3.
+ 
+-NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par
+-      m�morisation.
++NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par
++       m�morisation.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			  Le�on 3.3 : LE CHANGEMENT
++                     Le�on 3.3 : L'OP�RATEUR DE CHANGEMENT
+ 
+ 
+-	    ** Pour changer tout ou partie d'un mot, tapez  cw .**
++            ** Pour changer jusqu'� la fin d'un mot, tapez  ce .**
+ 
+   1. D�placez le curseur sur la premi�re ligne marqu�e ---> ci-dessous.
+ 
+-  2. Placez le curseur sur le u de luhko.
++  2. Placez le curseur sur le  u  de luhko.
+ 
+-  3. Tapez  cw	et corrigez le mot (dans notre cas, tapez  'igne'.)
++  3. Tapez  ce  et corrigez le mot (dans notre cas, tapez  'igne'.)
+ 
+-  4. Appuyez <�chap> et placez-vous sur l'erreur suivante (le premier
+-     caract�re qui doit �tre chang�).
++  4. Appuyez <�chap> et placez-vous sur le prochain caract�re qui doit
++     �tre chang�).
+ 
+   5. R�p�tez les �tapes 3 et 4 jusqu'� ce que la premi�re phrase soit
+      identique � la seconde.
+@@ -340,171 +459,189 @@
+ ---> Cette luhko contient quelques myqa qui ont ricne d'�tre chantufip.
+ ---> Cette ligne contient quelques mots qui ont besoin d'�tre chang�s.
+ 
+-Notez que  cw  efface le mot et vous place ensuite en mode Insertion.
++Notez que  ce  efface le mot et vous place ensuite en mode Insertion.
++
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		    Le�on 3.4 : PLUS DE CHANGEMENTS AVEC c
++                    Le�on 3.4 : PLUS DE CHANGEMENTS AVEC c
+ 
+ 
+-    ** Le changement fonctionne avec les m�mes objets que l'effacement. **
++    ** L'op�rateur de changement fonctionne avec les m�mes d�placements
++       que l'effacement. **
+ 
+-  1. Le changement fonctionne de la m�me mani�re que l'effacement.
+-     Le format est:
++  1. L'op�rateur de changement fonctionne de la m�me mani�re que
++     l'effacement. Le format est :
+ 
+-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
++         c   [nombre]   d�placement
+ 
+-  2. Les objets sont �galement les m�mes:  w (mot), $ (fin de ligne), etc.
++  2. Les d�placements sont identiques :  w (mot) et  $ (fin de ligne).
+ 
+-  3. D�placez-vous � la premi�re ligne marqu�e ---> ci-dessous.
++  3. D�placez-vous sur la premi�re ligne marqu�e ---> ci-dessous.
+ 
+   4. Placez le curseur sur la premi�re erreur.
+ 
+-  5. Tapez  c$	pour changer la fin de la ligne, rendez-l� identique � la
+-     seconde ligne, puis tapez <�chap>.
++  5. Tapez  c$  et tapez le reste de la ligne afin qu'elle soit identique
++     � la seconde ligne, puis tapez <�chap>.
+ 
+ ---> La fin de cette ligne doit �tre rendue identique � la seconde.
+----> La fin de cette ligne doit �tre corrig�e avec la commande	c$ .
++---> La fin de cette ligne doit �tre corrig�e avec la commande  c$ .
++
++NOTE :  Vous pouvez utiliser la touche Retour Arri�re pour corriger les
++        erreurs lorsque vous tapez.
++
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     R�SUM� DE LA LE�ON 3
++                             R�SUM� DE LA LE�ON 3
+ 
+ 
+-  1. Pour remettre du texte qui vient d'�tre effac�, tapez  p . Cela Place le
++  1. Pour remettre le texte qui a d�j� �t� effac�, tapez  p . Cela Place le
+      texte effac� APR�S le curseur (si une ligne compl�te a �t� effac�e, elle
+      sera plac�e sous la ligne du curseur).
+ 
+   2. Pour remplacer le caract�re sous le curseur, tapez  r  suivi du caract�re
+      qui remplacera l'original.
+ 
+-  3. Le changement vous permet de changer l'objet sp�cifi�, du curseur jusqu'�
+-     la fin de l'objet. Par exemple, tapez  cw	pour changer du curseur
+-     jusqu'� la fin du mot,  c$  pour changer jusqu'� la fin d'une ligne.
++  3. L'op�rateur de changement vous permet de changer depuis la position du
++     curseur jusqu'o� le d�placement vous am�ne. Par exemple, tapez  ce
++     pour changer du curseur jusqu'� la fin du mot,  c$  pour changer jusqu'�
++     la fin d'une ligne.
+ 
+-  4. Le format pour le changement est:
++  4. Le format pour le changement est :
+ 
+-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
++         c   [nombre]   d�placement
+ 
+ Passez maintenant � la le�on suivante.
+ 
+ 
+-
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		   Le�on 4.1 : POSITION ET �TAT DU FICHIER
++               Le�on 4.1 : POSITION DU CURSEUR ET �TAT DU FICHIER
+ 
+ 
+-  ** Tapez Ctrl-G pour afficher votre position dans le fichier et son �tat.
+-     Utilisez Maj-G pour vous rendre � une ligne donn�e du fichier. **
++  ** Tapez CTRL-G pour afficher votre position dans le fichier et son �tat.
++     Tapez  G  pour vous rendre � une ligne donn�e du fichier. **
+ 
+-  Note: Lisez toute cette le�on avant d'effectuer l'une des �tapes !
++NOTE : Lisez toute cette le�on avant d'effectuer l'une des �tapes !!
+ 
+-  1. Maintenez enfonc�e la touche Ctrl et appuyez sur  G .  Une ligne d'�tat
+-     va appara�tre en bas de l'�cran avec le nom du fichier et le num�ro de la
+-     ligne o� vous �tes.  Notez ce num�ro, il servira lors de l'�tape 3.
++  1. Maintenez enfonc�e la touche CTRL et appuyez sur  g . On appelle cela
++     CTRL-G. Une ligne d'�tat va appara�tre en bas de l'�cran avec le nom
++     du fichier et le num�ro de la ligne o� vous �tes. Notez ce num�ro, il
++     servira lors de l'�tape 3.
+ 
+-  2. Tapez  G  majuscule (Maj-G) pour vous rendre � la fin du fichier.
++NOTE : Vous pouvez peut-�tre voir le curseur en bas � droite de l'�cran.
++       Ceci arrive quand l'option 'ruler' est activ�e (voir  :help 'ruler')
+ 
+-  3. Tapez le num�ro de la ligne o� vous �tiez suivi de Maj-G.	Cela vous
+-     ram�nera � la ligne o� vous �tiez au d�part.
+-     (Lorsque vous tapez les chiffres, ils n'apparaissent PAS � l'�cran).
++  2. Tapez  G   pour vous d�placer � la fin du fichier.
++     Tapez  gg  pour vous d�placer au d�but du fichier.
+ 
+-  4. Si vous vous sentez pr�t � faire ceci, effectuez les �tapes 1 � 3.
++  3. Tapez le num�ro de la ligne o� vous �tiez suivi de   G . Cela vous
++     ram�nera � la ligne o� vous �tiez au d�part quand vous aviez appuy�
++     CTRL-G.
+ 
++  4. Si vous vous sentez pr�t � faire ceci, effectuez les �tapes 1 � 3.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			    Le�on 4.2 : LA RECHERCHE
++                            Le�on 4.2 : LA RECHERCHE
+ 
+ 
+-	  ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
++          ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
+ 
+   1. Tapez le caract�re  /  en mode Normal. Notez que celui-ci et le curseur
+      apparaissent en bas de l'�cran, comme lorsque l'on utilise  : .
+ 
+-  2. Puis tapez 'errreuur' <Entr�e>.  C'est le mot que vous voulez rechercher.
+-
+-  3. Pour rechercher � nouveau le m�me texte, tapez simplement	n .
+-     Pour rechercher le m�me texte dans la direction oppos�e, tapez  Maj-N .
++  2. Puis tapez 'errreuur' <Entr�e>. C'est le mot que vous voulez rechercher.
+ 
+-  4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez  ?
+-     � la place de  / .
++  3. Pour rechercher � nouveau le m�me texte, tapez simplement  n .
++     Pour rechercher le m�me texte dans la direction oppos�e, tapez  N .
+ 
+----> erreur ne s'�crit pas "errreuur"; errreuur est une erreur.
++  4. Pour rechercher une phrase dans la direction oppos�e, utilisez  ?
++     au lieu de  / .
+ 
+-Note: Quand la recherche atteint la fin du fichier, elle reprend au d�but.
++---> erreur ne s'�crit pas "errreuur" ; errreuur est une erreur.
+ 
++NOTE : Quand la recherche atteint la fin du fichier, elle reprend au d�but
++       sauf si l'option 'wrapscan' est d�activ�e.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	    Le�on 4.3 : RECHERCHE DES PARENTH�SES CORRESPONDANTES
++            Le�on 4.3 : RECHERCHE DES PARENTH�SES CORRESPONDANTES
+ 
+ 
+-	   ** Tapez  %	pour trouver des ), ] ou } correspondants. **
++           ** Tapez  %  pour trouver des ), ] ou } correspondants. **
+ 
+   1. Placez le curseur sur l'un des (, [ ou { de la ligne marqu�e --->
+      ci-dessous.
+ 
+   2. Puis tapez le caract�re  % .
+ 
+-  3. Le curseur devrait se placer sur la parenth�se correspondante.
++  3. Le curseur se d�placera sur la parenth�se out crochet correspondant.
+ 
+-  4. Tapez  %  pour replacer le curseur sur l'autre parenth�se.
++  4. Tapez  %  pour replacer le curseur sur la parenth�se ou crochet
++     correspondant.
+ 
+----> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+-
+-Note: Cette fonctionnalit� est tr�s utile lors du d�bogage d'un programme qui
+-      contient des parenth�ses d�s�quilibr�es !
++  5. D�placez le curseur sur un autre (,),[,],{ ou } et regardez ce que
++     fait  % .
+ 
++---> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+ 
++NOTE : Cette fonctionnalit� est tr�s utile lors du d�bogage d'un programme qui
++       contient des parenth�ses d�s�quilibr�es !
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	       Le�on 4.4 : UNE MANI�RE DE CORRIGER LES ERREURS
++                    Le�on 4.4 : LA COMMANDE DE SUBSTITUTION
+ 
+ 
+-  ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'.  **
++    ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'. **
+ 
+   1. D�placez le curseur sur la ligne marqu�e ---> ci-dessous.
+ 
+   2. Tapez  :s/lee/le <Entr�e> . Notez que cette commande change seulement la
+-     premi�re occurence sur la ligne.
++     premi�re occurrence de "lee" dans la ligne.
+ 
+-  3. Puis tapez  :s/lee/le/g  qui ordonne de faire une substitution globale
+-     sur la ligne. Cela change toutes les occurences sur la ligne
++  3. Puis tapez  :s/lee/le/g . L'ajout du drapeau  g  ordonne de faire une
++     substitution globale sur la ligne, et change toutes les occurrences de
++     "lee" sur la ligne.
+ 
+----> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps.
++---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps.
+ 
+-  4. Pour changer toutes les occurences d'un texte, entre deux lignes,
+-     tapez  :#,#s/ancien/nouveau/g  o� #,# sont les num�ros des deux lignes.
+-     Tapez  :%s/ancien/nouveau/g    pour changer chaque occurence dans tout
+-				    le fichier.
++  4. Pour changer toutes les occurrences d'un texte, entre deux lignes,
++     tapez  :#,#s/ancien/nouveau/g  o� #,# sont les num�ros de lignes de la
++                                    plage o� la substitution doit �tre faite.
++     Tapez  :%s/ancien/nouveau/g    pour changer toutes les occurrences dans
++                                    tout le fichier.
++     Tapez  :%s/ancien/nouveau/gc   pour trouver toutes les occurrences dans
++                                    tout le fichier avec une invite pour
++                                    confirmer ou infirmer chaque substitution.
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     R�SUM� DE LA LE�ON 4
++                             R�SUM� DE LA LE�ON 4
+ 
+ 
+-  1. Ctrl-G  affiche votre position dans le fichier et l'�tat de celui-ci.
+-     Maj-G  vous place � la fin du fichier. Un num�ro de ligne suivi de Maj-G
+-     vous place � cette ligne.
++  1. CTRL-G       affiche la position dans le fichier et l'�tat de celui-ci.
++               G  d�place � la fin du fichier.
++     nombre    G  d�place au num�ro de ligne.
++              gg  d�place � la premi�re ligne.
+ 
+   2. Taper  /  suivi d'un texte recherche ce texte vers l'AVANT.
+      Taper  ?  suivi d'un texte recherche ce texte vers l'ARRI�RE.
+-     Apr�s une recherche tapez	n  pour trouver l'occurence suivante dans la
+-     m�me direction ou	Maj-N  pour rechercher dans la direction oppos�e.
++     Apr�s une recherche tapez  n  pour trouver l'occurrence suivante dans la
++     m�me direction ou  Maj-N  pour rechercher dans la direction oppos�e.
+ 
+   3. Taper  %  lorsque le curseur est sur  (, ), [, ], { ou }  d�place
+      celui-ci sur le caract�re correspondant.
+ 
+-  4. Pour remplacer le premier aa par bb sur une ligne tapez	 :s/aa/bb
+-     Pour remplacer tous les aa par bb sur une ligne tapez	 :s/aa/bb/g
+-     Pour remplacer du texte entre deux num�ros de ligne tapez	 :#,#s/aa/bb/g
+-     Pour remplacer toutes les occurences dans le fichier tapez  :%s/aa/bb/g
+-     Pour demander une confirmation � chaque fois ajoutez 'c'	 :%s/aa/bb/gc
++  4. Pour remplacer le premier aa par bb sur une ligne tapez     :s/aa/bb
++     Pour remplacer tous les aa par bb sur une ligne tapez       :s/aa/bb/g
++     Pour remplacer du texte entre deux num�ros de ligne tapez   :#,#s/aa/bb/g
++     Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g
++     Pour demander une confirmation � chaque fois ajoutez 'c'    :%s/aa/bb/gc
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	      Le�on 5.1 : COMMENT EX�CUTER UNE COMMANDE EXTERNE
++              Le�on 5.1 : COMMENT EX�CUTER UNE COMMANDE EXTERNE
+ 
+ 
+  ** Tapez  :!  suivi d'une commande externe pour ex�cuter cette commande. **
+@@ -516,294 +653,386 @@
+      n'importe quelle commande valide pour votre interpr�teur (shell).
+ 
+   3. Par exemple, tapez  ls  apr�s le  !  et appuyez <Entr�e>. Ceci affichera
+-     la liste des fichiers du dossier courant, comme si vous aviez tap� la
+-     commande � l'invite du shell. Utilisez  :!dir  si	:!ls  ne marche pas.
+-
+-Note:  Il est possible d'ex�cuter n'importe quelle commande externe de cette
+-       mani�re.
++     la liste des fichiers du r�pertoire courant, comme si vous aviez tap� la
++     commande � l'invite du shell. Utilisez  :!dir  si  :!ls  ne marche pas.
+ 
+-Note:  Toutes les commandes  :  doivent finir par la frappe de <Entr�e>.
++NOTE :  Il est possible d'ex�cuter n'importe quelle commande externe de cette
++        mani�re, avec ou sans argument.
+ 
++NOTE :  Toutes les commandes  :  doivent finir par la frappe de <Entr�e>.
++        � partir de maintenant, nous ne le mentionnerons plus.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	 Le�on 5.2 : PLUS DE D�TAILS SUR L'ENREGISTREMENT DE FICHIERS
++         Le�on 5.2 : PLUS DE D�TAILS SUR L'ENREGISTREMENT DE FICHIERS
+ 
+ 
+- ** Pour enregistrer les changements faits au fichier, tapez  :w FICHIER . **
++ ** Pour enregistrer les changements faits au texte, tapez  :w FICHIER . **
+ 
+-  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers du dossier
+-     courant. Vous savez d�j� qu'il faut appuyer <Entr�e> apr�s cela.
++  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers dans le
++     r�pertoire courant. Vous savez d�j� qu'il faut appuyer <Entr�e> apr�s
++     cela.
+ 
+   2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST.
+ 
+   3. Puis tapez  :w TEST  (o� TEST est le nom que vous avez choisi).
+ 
+-  4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST.
+-     Pour le v�rifier, tapez  :!dir  pour revisualiser le contenu du dossier.
++  4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST.
++     Pour le v�rifier, tapez  :!dir  ou  :!ls  de nouveau pour revisualiser
++     votre r�pertoire.
+ 
+-Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci
+-sera une copie exacte du cours au moment o� vous l'avez sauv�.
++NOTE : Si vous quittez Vim et le red�marrez de nouveau avec le fichier TEST,
++       celui-ci sera une copie exacte de ce cours au moment o� vous l'avez
++       enregistr�.
+ 
+-  5. Maintenant, effacez le fichier en tapant (MS-DOS):    :!del TEST
+-					   ou (Unix):	   :!rm TEST
++  5. Maintenant, effacez le fichier en tapant (MS-DOS) :   :!del TEST
++                                           ou (Unix) :     :!rm TEST
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		    Le�on 5.3 : UN ENREGISTREMENT S�LECTIF
++                  Le�on 5.3 : S�LECTION DU TEXTE � ENREGISTRER
+ 
+ 
+-     ** Pour enregistrer une portion de fichier, tapez	:#,#w FICHIER **
++                  ** Pour enregistrer une portion du fichier,
++                      tapez :   v  d�placement  :w FICHIER  **
+ 
+-  1. Tapez � nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
+-     courant et choisissez un nom de fichier, tel que TEST.
++  1. D�placez le curseur sur cette ligne.
+ 
+-  2. D�placez le curseur jusqu'en haut de cette page et tapez  Ctrl-G  pour
+-     conna�tre le num�ro de cette ligne. NOTEZ CE NUM�RO !
++  2. Appuyez  v  et d�placez le curseur vers la cinqui�me ligne plus bas.
++     Remarquez que le texte est en surbrillance.
+ 
+-  3. Puis rendez-vous au bas de cette page et tapez � nouveau  Ctrl-G .
+-     NOTEZ �GALEMENT CE NUM�RO !
++  3. Appuyez  :  . En bas de l'�cran  :'<,'> va appara�tre.
+ 
+-  4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez  :#,#w TEST
+-     o� #,# sont les deux num�ros que vous avez not�s (haut,bas) et TEST est
+-     le nom du fichier.
++  4. Tapez   w TEST  , o� TEST est un nom de fichier qui n'existe pas.
++     V�rifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur Entr�e.
+ 
+-  5. Une fois encore, v�rifiez la pr�sence du fichier avec  :!dir  mais NE
+-     L'EFFACEZ PAS.
++  5. Vim va enregistrer les lignes s�lectionn�es dans le fichier TEST.
++     Utilisez  :!dir  ou  !ls pour le voir. Ne l'effacez pas encore !
++     Nous allons l'utiliser dans la le�on suivante.
+ 
++NOTE : L'appui de  v  d�marre la s�lection Visuelle. Vous pouvez d�placer le
++       curseur pour agrandir ou r�tr�cir la s�lection. Puis vous pouvez
++       utiliser un op�rateur pour faire quelque chose sur le texte. Par
++       exemple,  d  efface le texte.
+ 
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Le�on 5.4 : R�CUP�RATION ET FUSION DE FICHIERS
+ 
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Le�on 5.4 : R�CUP�RATION ET FUSION DE FICHIERS
+ 
+-	** Pour ins�rer le contenu d'un fichier, tapez	:r FICHIER **
+ 
+-  1. Tapez  :!dir  pour v�rifier que votre fichier TEST est encore l�.
++        ** Pour ins�rer le contenu d'un fichier, tapez  :r FICHIER **
+ 
+-  2. Placez le curseur en haut de cette page.
++  1. Placez le curseur juste au-dessus de cette ligne.
+ 
+-NOTE:  Apr�s avoir suivi l'�tape 3 vous verrez � l'�cran la Le�on 5.3.
+-       D�placez-vous vers le bas jusqu'� revenir � cette le�on.
++NOTE :  Apr�s avoir ex�cut� l'�tape 2 vous verrez du texte de la Le�on 5.3.
++        Puis d�placez vous vers le bas pour voir cette le�on � nouveau.
+ 
+-  3. Maintenant r�cup�rez votre fichier TEST en utilisant la commande  :r TEST
++  2. Maintenant r�cup�rez votre fichier TEST en utilisant la commande  :r TEST
+      o� TEST est le nom de votre fichier.
+-
+-NOTE:  Le fichier que vous r�cup�rez est plac� l� o� se trouve le curseur.
++     Le fichier que vous r�cup�rez est plac� au-dessous de la ligne du curseur.
+ 
+   4. Pour v�rifier que le fichier a bien �t� ins�r�, remontez et v�rifiez
+      qu'il y a maintenant deux copies de la Le�on 5.3, l'originale et celle
+      contenue dans le fichier.
+ 
++NOTE :  Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
++        :r !ls  lit la sortie de la commande ls et la place sous la ligne du
++        curseur.
+ 
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     R�SUM� DE LA LE�ON 5
+ 
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                             R�SUM� DE LA LE�ON 5
+ 
+-  1.  :!commande  ex�cute une commande externe.
+-
+-      Quelques exemples pratiques:
+-	(MS-DOS)	(Unix)
+-	 :!dir		 :!ls		 affiche le contenu du dossier courant.
+-	 :!del FICHIER   :!rm FICHIER    efface FICHIER.
+ 
+-  2.  :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
+-		  nom FICHIER.
++  1. :!commande  ex�cute une commande externe.
+ 
+-  3.  :#,#w FICHIER  enregistre les lignes # � # dans le fichier FICHIER.
++     Quelques exemples pratiques :
++      (MS-DOS)        (Unix)
++       :!dir           :!ls          affiche le contenu du r�pertoire courant.
++       :!del FICHIER   :!rm FICHIER  efface FICHIER.
+ 
+-  4.  :r FICHIER  r�cup�re le fichier FICHIER et l'ins�re dans le fichier
+-		  courant � partir de la position du curseur.
++  2. :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
++                  nom FICHIER.
+ 
++  3. v  d�placement  :w FICHIER sauvegarde les lignes de la s�lection Visuelle
++     dans le fichier FICHIER.
+ 
++  4. :r FICHIER  r�cup�re le contenu du fichier FICHIER et l'ins�re sous la
++     position du curseur.
+ 
++  5. :r !dir  lit la sortie de la commande dir et l'ins�re sous la position
++     du curseur.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			    Le�on 6.1 : L'OUVERTURE
++                      Le�on 6.1 : LA COMMANDE D'OUVERTURE
+ 
+ 
+ ** Tapez  o  pour ouvrir une ligne sous le curseur et y aller en Insertion. **
+ 
+   1. D�placez le curseur sur la ligne marqu�e ---> ci-dessous.
+ 
+-  2. Tapez  o  (minuscule) pour ouvrir une ligne SOUS le curseur et vous y
+-     placer en mode Insertion.
++  2. Tapez la lettre   o   minuscule pour ouvrir une ligne SOUS le curseur et
++     vous y placer en mode Insertion.
+ 
+-  3. Puis recopiez la ligne marqu�e ---> et appuyez sur <�chap> pour quitter
+-     le mode Insertion.
++  3. Puis tapez du texte et appuyez <�chap> pour sortir du mode Insertion.
+ 
+----> En tapant	o  le curseur se met sur la ligne ouverte, en mode Insertion.
++---> En tapant  o  le curseur se met sur la ligne ouverte, en mode Insertion.
+ 
+-  4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un  O
++  4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un  O
+      majuscule, plut�t qu'un  o  minuscule. Faites un essai sur la ligne
+      ci-dessous.
+-Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici.
+ 
++---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			      Le�on 6.2 : L'AJOUT
++                        Le�on 6.2 : LA COMMANDE D'AJOUT
++
++
++            ** Tapez  a  pour ins�rer du texte APR�S le curseur. **
+ 
++  1. Placez le curseur au d�but de la ligne marqu�e ---> ci-dessous.
+ 
+-	    ** Tapez  a  pour ins�rer du texte APR�S le curseur. **
++  2. Appuyez  e  jusqu'� ce que le curseur soit sur la fin de  li .
+ 
+-  1. Placez le curseur � la fin de la premi�re ligne marqu�e ---> ci-dessous
+-     en tapant	$  en mode Normal.
++  3. Appuyez  a  (minuscule) pour ajouter du texte APR�S le curseur.
+ 
+-  2. Tapez un  a  (minuscule) pour ajouter du texte APR�S le caract�re situ�
+-     sous le curseur. ( A  majuscule ajoute du texte � la fin de la ligne).
++  4. Compl�tez le mot comme dans la ligne dessous. Appuyez <�chap> pour
++     sortir du mode Insertion.
+ 
+-Note: Ceci �vite de taper  i , le dernier caract�re, le texte � ins�rer,
+-      <�chap>, curseur-�-droite, et finalement	x , juste pour ajouter du
+-      texte � la fin d'une ligne !
++  5. Utilisez  e  pour vous d�placer vers le mot incomplet suivant et
++     r�p�tez les �tapes 3 et 4.
+ 
+-  3. Maintenant, compl�tez la premi�re ligne. Notez �galement que l'ajout est
+-     identique au mode Insertion, hormis la position o� le texte est ins�r�.
++---> Cette li vous perm de pratiq l'ajout de t dans une ligne.
++---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne.
+ 
+----> Cette ligne vous permet de pratiquer
+----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
++NOTE :  a, i, A vont tous dans le m�me mode Insertion, la seule diff�rence
++        est l'endroit o� les caract�res sont ins�r�s.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		Le�on 6.3 : UNE AUTRE VERSION DU REMPLACEMENT
++                   Le�on 6.3 : UNE AUTRE MANI�RE DE REMPLACER
+ 
+ 
+        ** Tapez un  R  majuscule pour remplacer plus d'un caract�re. **
+ 
+   1. D�placez le curseur sur la premi�re ligne marqu�e ---> ci-dessous.
++     D�placez le curseur sur le d�but du premier xxx .
+ 
+-  2. Placez le curseur au d�but du premier mot qui diff�re de la seconde ligne
+-     marqu�e ---> (le mot 'celle').
++  2. Appuyez maintenant  R  et tapez le nombre dessous dans la deuxi�me ligne,
++     de mani�re � remplacer le xxx .
+ 
+-  3. Puis tapez  R  et remplacez le reste du texte de la premi�re ligne en
+-     tapant par dessus celui-ci, de mani�re � rendre la premi�re ligne
+-     identique � la seconde.
++  3. Appuyez <�chap> pour quitter le mode Remplacement. Notez que le reste de
++     la ligne demeure inchang�.
++
++  4. R�p�tez les �tapes pour remplacer les xxx restants.
++
++
++---> L'ajout de 123 � xxx donne xxx.
++---> L'ajout de 123 � 456 donne 579.
++
++NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
++       caract�res tap�s effacent un caract�re existant.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Le�on 6.4 : COPIER ET COLLER DU TEXTE
++
++
++   ** Utilisez l'op�rateur  y  pour copier du texte et  p  pour le coller **
++
++  1. Allez � la ligne marqu�e ---> ci-dessous et placez le curseur apr�s "a)".
+ 
+----> Pour rendre cette ligne identique � celle du dessous utilisez le clavier.
+----> Pour rendre cette ligne identique � la seconde, tapez R et la correction.
++  2. D�marrez le mode Visuel avec  v  et d�placez le curseur juste devant
++     "premier".
+ 
+-  4. Notez que lorsque vous appuyez <�chap>, le texte qui n'a pas encore �t�
+-     remplac� reste.
++  3. Tapez  y  pour copier le texte en surbrillance.
+ 
++  4. D�placez le curseur � la fin de la ligne suivante :   j$
+ 
++  5. Tapez  p  pour coller le texte. Puis tapez :  un second <�chap> .
++
++  6. Utilisez le mode Visuel pour s�lectionner "�l�ment", copiez le avec  y  ,
++     d�placez vous � la fin de la ligne suivant avec  j$  et collez le texte
++     � cet endroit avec  p .
++
++--->  a) ceci est le premier �l�ment.
++      b)
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       Le�on 6.4 : R�GLAGE DES OPTIONS
++                       Le�on 6.4 : R�GLAGE DES OPTIONS
+ 
+ 
+-  ** R�glons une option afin que la recherche et la substitution ignorent la
+-     casse des caract�res. **
++    ** R�glons une option afin que la recherche et la substitution ignore la
++       casse des caract�res. **
+ 
+-  1. Recherchez 'ignore' en tapant  /ignore .
++  1. Recherchez 'ignore' en tapant :   /ignore <Entr�e>
+      R�p�tez ceci plusieurs fois en utilisant la touche  n .
+ 
+-  2. Activez l'option 'ic' (Ignorer casse) en tapant  :set ic .
++  2. Activez l'option 'ic' (ignorer casse) en tapant  :set ic .
+ 
+-  3. Puis poursuivez votre recherche en utilisant  n .
+-     R�p�tez cette recherche plusieurs fois avec la touche  n .
++  3. Puis cherchez 'ignore' de nouveau en utilisant  n .
++     Remarquez que Ignore et IGNORE sont maintenant aussi trouv�s.
+ 
+   4. Activez les options 'hlsearch' et 'incsearch' avec  :set hls is .
+ 
+   5. Puis recommencez une recherche, et faites bien attention � ce qui se
+-     produit:  /ignore .
++     produit :  /ignore <Entr�e>
+ 
+-  6. Pour interrompre la mise en surbrillance des r�sultats, tapez:
+-     :nohlsearch
++  6. Pour d�sactiver 'ignorer casse', entrez :  :set noic
+ 
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     R�SUM� DE LA LE�ON 6
++NOTE : Pour enlever la surbrillance des r�sultats, entrez :   :nohlsearch
+ 
++NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
++       \c  dans la phrase :   /ignore\c  <Entr�e>
+ 
+-  1. Taper  o  ouvre une ligne SOUS le curseur et y place celui-ci en mode
+-     Insertion. Taper un  O  majuscule ouvre une ligne au DESSUS de la ligne
+-     o� se trouve le curseur.
+ 
+-  2. Tapez un  a  pour ins�rer du texte APR�S le caract�re o� se trouve le
+-     curseur. Taper un	A  majuscule ajoute du texte automatiquement � la fin
+-     de la ligne.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                             R�SUM� DE LA LE�ON 6
+ 
+-  3. Taper un  R  majuscule active le mode Remplacement jusqu'� ce que la
+-     touche  <�chap>  soit appuy�e pour en sortir.
+ 
+-  4. Taper  :set xxx  active l'option 'xxx'.
++  1. Taper  o  ouvre une ligne SOUS le curseur et d�marre le mode Insertion.
++     Taper  O  ouvre une ligne au-DESSUS du curseur.
+ 
++  2. Taper  a  pour ins�rer du texte APR�S le curseur.
++     Taper  A  pour ins�rer du texte apr�s la fin de ligne.
+ 
++  3. Taper  e  d�place � la fin du mot.
+ 
++  4. Taper  y  copie du texte,  p  le colle.
+ 
++  5. Taper  R  majuscule active le mode Remplacement jusqu'� ce qu' <�chap>
++     soit appuy�.
+ 
++  6. Taper  ":set xxx"  active l'option "xxx". Quelques options sont :
++        'ic'  'ingnorecase' pour ignorer la casse lors des recherches.
++        'is'  'incsearch'   pour montrer les appariements partiels.
++        'hls' 'hlsearch'    pour mettre en surbrillance les appariements.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		     Le�on 7 : ACC�DER � L'AIDE EN LIGNE
++                         Le�on 7.1 : OBTENIR DE L'AIDE
+ 
+-		  ** Utiliser le syst�me d'aide en ligne. **
+ 
+-  Vim a un syst�me complet d'aide en ligne.  Pour y acc�der, essayez l'une de
+-  ces trois m�thodes:
+-	- appuyez la touche <Help> (si vous en avez une)
+-	- appuyez la touche <F1> (si vous en avez une)
+-	- tapez  :help <Entr�e>
++                  ** Utiliser le syst�me d'aide en ligne. **
+ 
+-  Tapez  :q <Entr�e>  pour fermer la fen�tre d'aide.
++  Vim a un syst�me complet d'aide en ligne. Pour y acc�der, essayez l'une de
++  ces trois m�thodes :
++        - appuyez la touche <Help> (si vous en avez une)
++        - appuyez la touche <F1> (si vous en avez une)
++        - tapez  :help <Entr�e>
++
++
++  Lisez le texte dans la fen�tre d'aide pour savoir comment fonctionne l'aide.
++  Tapez  CTRL-W CTRL-W   pour sauter d'une fen�tre � l'autre.
++  Tapez  :q <Entr�e>     pour fermer la fen�tre d'aide.
+ 
+   Vous pouvez acc�der � l'aide sur � peu pr�s n'importe quel sujet en donnant
+   des arguments � la commande  :help . Essayez par exemple (n'oubliez pas
+-  d'appuyer sur <Entr�e>):
++  d'appuyer sur <Entr�e>) :
+ 
+-	:help w
+-	:help c_<T
+-	:help insert-index
+-	:help user-manual
++        :help w
++        :help c_CTRL-D
++        :help c_<T
++        :help insert-index
++        :help user-manual
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		    Le�on 8 : CR�ER UN SCRIPT DE D�MARRAGE
++                    Le�on 7.2 : CR�ER UN SCRIPT DE D�MARRAGE
+ 
+-		  ** Activer les fonctionnalit�s de Vim. **
++                   ** Activer les fonctionnalit�s de Vim. **
+ 
+   Vim a beaucoup plus de fonctionnalit�s que Vi, mais la plupart de celles-ci
+-  sont d�sactiv�es par d�faut.  Pour commencer � les utiliser, vous devez
++  sont d�sactiv�es par d�faut. Pour commencer � les utiliser, vous devez
+   cr�er un fichier "vimrc".
+ 
+-  1. Commencez � �diter le fichier "vimrc". Ceci d�pend de votre syst�me:
+-	:edit ~/.vimrc			pour Unix
+-	:edit $VIM/_vimrc		pour MS-Windows
++  1. Commencez � �diter le fichier "vimrc". Ceci d�pend de votre syst�me :
++        :edit ~/.vimrc         pour Unix
++        :edit $VIM/_vimrc      pour MS-Windows
+ 
+-  2. Int�grez maintenant le texte du fichier "vimrc" d'exemple:
+-	:read $VIMRUNTIME/vimrc_example.vim
++  2. Lisez maintenant le fichier d'exemple "vimrc" :
++        :r $VIMRUNTIME/vimrc_example.vim
+ 
+-  3. Enregistrez le fichier avec:
+-	:write
++  3. Enregistrez le fichier avec :
++        :w
+ 
+-  La prochaine fois que vous d�marrerez Vim, le surlignage syntactique sera
+-  activ�. Vous pouvez ajouter tous vos r�glages pr�f�r�s dans ce fichier.
++  La prochaine fois que vous d�marrerez Vim, la coloration syntaxique sera
++  activ�e. Vous pouvez ajouter tous vos r�glages pr�f�r�s dans ce fichier
++  "vimrc". Pour plus d'informations, tapez  :help vimrc-intro
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                            Le�on 7.3 : COMPL�TEMENT
++
++
++          ** Compl�tement de ligne de commande avec CTRL-D et <TAB> **
++
++  1. Mettez Vim soit en mode non compatible :   set nocp
++
++  2. Regardez quels fichiers existent dans le r�pertoire :  !ls  ou  !dir
++
++  3. Tapez le d�but d'une commande :   :e
++
++  4. Appuyez  CTRL-D  et Vim affichera une liste de commandes qui commencent
++     par "e".
++
++  5. Appuyez  <TAB>  et Vim compl�tera le nom de la commande :  ":edit"
++
++  6. Ajoutez maintenant un espace et le d�but d'un fichier existant :
++     :edit  FIC
++
++  7  Appuyez  <TAB>. Vim va compl�ter le nom (s'il est unique).
++
++NOTE : Le compl�tement fonctionne pour de nombreuses commandes. Essayez
++       d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour  :help .
+ 
+-  Ceci conclut le Tutoriel Vim.  Le but �tait de vous donner un bref aper�u de
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                              R�SUM� DE LA LE�ON 7
++
++
++  1. Tapez  :help  ou appuyez <F1> ou <Aide> pour ouvrir la fen�tre d'aide.
++
++  2. Tapez  :help cmd  pour trouver l'aide sur  cmd .
++
++  3. Tapez  CTRL-W CTRL-W  pour sauter � une autre fen�tre.
++
++  4. Tapez  :q  pour fermer la fen�tre d'aide.
++
++  5. Cr�ez un script de d�marrage vimrc pour conserver vos r�glages pr�f�r�s.
++
++  6. Quand vous tapez une commande  :  appuyez CTRL-D pour voir les
++     compl�tements possibles. Appuyez <TAB> pour utiliser un compl�tement.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  Ceci conclut le Tutoriel Vim. Le but �tait de vous donner un bref aper�u de
+   l'�diteur Vim, juste assez pour vous permettre d'utiliser l'�diteur
+-  relativement facilement.  Il est loin d'�tre complet, vu que Vim a beaucoup
+-  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en
+-  anglais:  :help user-manual .
++  relativement facilement. Il est loin d'�tre complet, vu que Vim a beaucoup
++  beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
++  anglais :  :help user-manual .
+ 
+   Pour continuer � d�couvrir et � apprendre Vim, il existe un livre traduit en
+   fran�ais. Il parle plus de Vi que de Vim, mais pourra vous �tre utile.
+-	L'�diteur Vi - Collection Pr�cis et concis - par Arnold Robbins
+-	�diteur: O'Reilly France
+-	ISBN: 2-84177-102-4
++        L'�diteur Vi - Collection Pr�cis et concis - par Arnold Robbins
++        �diteur : O'Reilly France
++        ISBN : 2-84177-102-4
+ 
+   Deux livres en anglais sont �galement mentionn�s dans la version originale
+   de ce tutoriel, dont un qui traite sp�cifiquement de Vim. Merci de vous y
+-  r�f�rer si vous �tes int�ress�.
++  r�f�rer si vous �tes int�ress�s.
+ 
+   Ce tutoriel a �t� �crit par Michael C. Pierce et Robert K. Ware de l'�cole
+   des Mines du Colorado et reprend des id�es fournies par Charles Smith,
+-  Universt� d'�tat du Colorado.  E-mail: [email protected].
++  Universit� d'�tat du Colorado. E-mail : [email protected].
+ 
+   Modifi� pour Vim par Bram Moolenar.
+-
+   Traduit en Fran�ais par Adrien Beau, en avril 2001.
+-  E-mail:	[email protected]
+-  Last Change:	2003 May 29
++  Derni�res mises � jour par Dominique Pell�.
++
++  E-mail :      [email protected]
++  Last Change : 2010 May 23
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+diff -Nur runtime/tutor/tutor.fr.utf-8 runtime/tutor/tutor.fr.utf-8
+--- runtime/tutor/tutor.fr.utf-8	2008-06-21 11:19:12.000000000 -0700
++++ runtime/tutor/tutor.fr.utf-8	2011-01-18 10:40:56.522249629 -0800
+@@ -1,5 +1,5 @@
+ ===============================================================================
+-= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
++= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.7.fr.2 =
+ ===============================================================================
+ 
+      Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
+@@ -7,93 +7,100 @@
+      décrire suffisamment afin de vous permettre d'utiliser simplement Vim.
+ 
+      Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon
+-     le temps que vous passerez à expérimenter.  Les commandes utilisées dans
+-     les leçons modifieront le texte. Faites une copie de ce fichier afin de
+-     vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une
+-     copie).
++     le temps que vous passerez à expérimenter.
++
++     ATTENTION :
++     Les commandes utilisées dans les leçons modifieront le texte. Faites une
++     copie de ce fichier afin de vous entraîner dessus (si vous avez lancé
++     "vimtutor" ceci est déjà une copie).
+ 
+      Il est important de garder en tête que ce cours est conçu pour apprendre
+-     par la pratique.  Cela signifie que vous devez exécuter les commandes
+-     pour les apprendre correctement.  Si vous vous contentez de lire le
+-     texte, vous oublierez les commandes !
+-
+-     Maintenant, vérifiez que votre clavier n'est PAS verouillé en majuscules,
+-     et appuyez la touche  j  le nombre de fois suffisant pour que la leçon
+-     1.1 remplisse complètement l'écran.
++     par la pratique. Cela signifie que vous devez exécuter les commandes
++     pour les apprendre correctement. Si vous vous contentez de lire le texte,
++     vous oublierez les commandes !
++
++     Maintenant, vérifiez que votre clavier n'est PAS verrouillé en
++     majuscules, et appuyez la touche  j  le nombre de fois suffisant pour
++     que la Leçon 1.1 remplisse complètement l'écran.
++
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      Leçon 1.1 : DÉPLACEMENT DU CURSEUR
++                      Leçon 1.1 : DÉPLACEMENT DU CURSEUR
+ 
+ 
+   ** Pour déplacer le curseur, appuyez les touches h,j,k,l comme indiqué. **
+-	    ^
+-	    k	     Astuce:  La touche h est à gauche et déplace à gauche.
+-      < h      l >	      La touche l est à droite et déplace à droite.
+-	   j		      La touche j ressemble à une flèche vers le bas.
+-	   v
++          ^
++          k        Astuce :  La touche h est à gauche et déplace à gauche.
++    < h       l >            La touche l est à droite et déplace à droite.
++          j                  La touche j ressemble à une flèche vers le bas.
++          v
+   1. Déplacez le curseur sur l'écran jusqu'à vous sentir à l'aise.
+ 
+   2. Maintenez la touche Bas (j) enfoncée jusqu'à ce qu'elle se répète.
+----> Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante.
++     Maintenant vous êtes capable de vous déplacer jusqu'à la leçon suivante.
+ 
+   3. En utilisant la touche Bas, allez à la Leçon 1.2.
+ 
+-Note: Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap>
+-      pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
++NOTE : Si jamais vous doutez de ce que vous venez de taper, appuyez <Échap>
++       pour revenir en mode Normal. Puis retapez la commande que vous vouliez.
+ 
+-Note: Les touches fléchées devraient également fonctionner. Mais en utilisant
+-      hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que
+-      vous aurez pris l'habitude.
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		     Leçon 1.2 : ENTRÉE ET SORTIE DE VIM
++NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant
++       hjkl vous pourrez vous déplacer beaucoup plus rapidement, une fois que
++       vous aurez pris l'habitude.
+ 
+ 
+- !! NOTE: Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leçon 1.2 : SORTIR DE VIM
+ 
+-  1. Appuyez la touche	<Échap>  (pour être sûr d'être en mode Normal).
+ 
+-  2. Tapez:			:q! <Entrée>
++ !! NOTE : Avant d'effectuer les étapes ci-dessous, lisez toute cette leçon !!
+ 
+----> Ceci quitte l'éditeur SANS sauver les changements que vous avez faits.
+-     Si vous voulez enregistrer les changements et sortir, tapez:
+-				:wq <Entrée>
++  1. Appuyez la touche  <Échap>  (pour être sûr d'être en mode Normal).
+ 
+-  3. Lorsque l'invite du 'shell' vous sera présentée, tapez la commande qui
+-     vous a amené dans ce tutoriel.  Cela pourrait être:    vimtutor <Entrée>
+-     Normalement, vous utiliseriez:			    vim tutor <Entrée>
++  2. Tapez :  :q! <Entrée>
++     Ceci quitte l'éditeur SANS enregistrer les changements que vous avez
++     faits.
+ 
+----> 'vim' lance l'éditeur, 'tutor' est le fichier que vous souhaitez éditer.
++  3. Lorsque l'invite du shell vous sera présentée, tapez la commande qui
++     vous a mené dans ce tutoriel. Cela pourrait être :    vimtutor <Entrée>
+ 
+   4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
+-     1 à 3 pour sortir puis rentrer dans l'éditeur.  Déplacez ensuite le
+-      curseur jusqu'à la Leçon 1.3.
++     1 à 3 pour sortir puis rentrer dans l'éditeur.
++
++NOTE :  :q! <Entrée> annule tous les changements que vous avez fait. Dans
++         quelques leçons, vous apprendrez à enregistrer les changements.
++
++  5. Déplacez le curseur à la Leçon 1.3.
++
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
++                  Leçon 1.3 : ÉDITION DE TEXTE - EFFACEMENT
+ 
+ 
+- ** En mode Normal, appuyez  x	pour effacer le caractère sous le curseur. **
++         ** Appuyez   x   pour effacer le caractère sous le curseur. **
+ 
+   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+ 
+   2. Pour corriger les erreurs, déplacez le curseur jusqu'à ce qu'il soit
+      sur un caractère à effacer.
+ 
+-  3. Appuyez la touche	x  pour effacer le caractère redondant.
++  3. Appuyez la touche  x  pour effacer le caractère redondant.
+ 
+   4. Répétez les étapes 2 à 4 jusqu'à ce que la phrase soit correcte.
+ 
+ ---> La vvache à sautéé au-ddessus dde la luune.
+ 
+-  5. Maintenant que la ligne est correcte, passez à la leçon 1.4.
++  5. Maintenant que la ligne est correcte, passez à la Leçon 1.4.
+ 
+-NOTE: En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par
+-      la pratique.
++NOTE : En avançant dans ce cours, n'essayez pas de mémoriser, apprenez par
++       la pratique.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		   Leçon 1.4 : ÉDITION DE TEXTE - INSERTION
++                    Leçon 1.4 : ÉDITION DE TEXTE - INSERTION
+ 
+ 
+-	   ** En mode Normal, appuyez  i  pour insérer du texte. **
++                    ** Appuyez  i  pour insérer du texte. **
+ 
+   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+ 
+@@ -108,38 +115,94 @@
+ ---> Il mnqe caractères cette .
+ ---> Il manque des caractères dans cette ligne.
+ 
+-  5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez au
+-     résumé ci-dessous.
++  5. Une fois que vous êtes à l'aise avec l'insertion de texte, allez à la
++     Leçon 1.5.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leçon 1.5 : ÉDITION DE TEXTE - AJOUTER
++
++
++                    ** Appuyez  A  pour ajouter du text. **
++
++  1. Déplacez le curseur sur la première ligne ci-dessous marquée --->.
++     Peu importe sur quel caractère se trouve le curseur sur cette ligne.
++
++  2. Appuyez  A  et tapez les ajouts nécessaires.
++
++  3. Quand le texte a été ajouté, appuyez <Échap> pour revenir en mode
++     Normal.
++
++  4. Déplacez le curseur sur la seconde ligne marquée ---> et répétez les
++     étapes 2 et 3 pour corriger la phrase.
++
++---> Il manque du texte à partir de cet
++     Il manque du texte à partir de cette ligne.
++---> Il manque aussi du te
++     Il manque aussi du texte ici.
++
++  5. Quand vous vous sentez suffisamment à l'aise pour ajouter du texte,
++     allez à la Leçon 1.6.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                         Leçon 1.6 : ÉDITER UN FICHIER
++
++
++          ** Utilisez  :wq  pour enregistrer un fichier et sortir. **
++
++!! NOTE : Lisez toute la leçon avant d'exécuter les instructions ci-dessous !!
++
++  1. Sortez de ce tutoriel comme vous l'avez fait dans la Leçon 1.2 :  :q!
++     Ou, si vous avez accès à un autre terminal, exécutez y les actions
++     qui suivent.
++
++  2. À l'invite du shell, tapez cette commande :  vim tutor <Entrée>
++     'vim' est la commande pour démarrer l'éditeur Vim, 'tutor' est le
++     nom du fichier que vous souhaitez éditer. Utilisez un fichier qui peut
++     être modifié.
++
++  3. Insérez et effacez du texte comme vous l'avez appris dans les leçons
++     précédentes.
++
++  4. Enregistrez le fichier avec les changements et sortez de Vim avec :
++       :wq <Entrée>
++
++  5. Si vous avez quitté vimtutor à l'étape 1, recommencez vimtutor et
++     déplacez-vous en bas vers le résumé suivant.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     RÉSUMÉ DE LA LEÇON 1
++                             RÉSUMÉ DE LA LEÇON 1
++
+ 
+   1. Le curseur se déplace avec les touches fléchées ou les touches hjkl.
+-	 h (gauche)	j (bas)        k (haut)       l (droite)
++           h (gauche)      j (bas)      k (haut)      l (droite)
++
++  2. Pour démarrer Vim à l'invite du shell tapez :  vim FICHIER <Entrée>
+ 
+-  2. Pour entrer dans Vim (à l'invite %) tapez:  vim FICHIER <Entrée>
++  3. Pour quitter Vim tapez :  <Échap> :q! <Entrée>  pour perdre tous les
++                                                     changements.
++                   OU tapez :  <Échap> :wq <Entrée>  pour enregistrer les
++                                                     changements.
+ 
+-  3. Pour quitter Vim tapez:  <Échap> :q! <Entrée>  pour perdre tous les
+-						    changements.
+-		   OU tapez:  <Échap> :wq <Entrée>  pour enregistrer les
+-						    changements.
++  4. Pour effacer un caractère sous le curseur tapez :  x
+ 
+-  4. Pour effacer un caractère sous le curseur en mode Normal tapez:  x
++  5. Pour insérer ou ajouter du texte tapez :
++         i   tapez le texte à insérer avant le curseur   <Échap>
++         A   tapez le texte à ajouter après le curseur   <Échap>
+ 
+-  5. Pour insérer du texte au niveau du curseur en mode Normal tapez:
+-	 i   tapez le texte   <Échap>
++NOTE : Appuyer  <Échap>  vous place en mode Normal ou annule une commande
++       partiellement tapée dont vous ne voulez plus.
+ 
+-NOTE: Appuyer  <Échap>	vous place en mode Normal ou annule une commande
+-      partiellement tapée dont vous ne voudriez plus.
++Passez maintenant à la leçon 2.
+ 
+-Passez maintenant à la Leçon 2.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			   Leçon 2.1 : EFFACEMENTS
++                       Leçon 2.1 : COMMANDES D'EFFACEMENT
+ 
+ 
+-	    ** Tapez  dw  pour effacer jusqu'à la fin d'un mot. **
++                     ** Tapez  dw  pour effacer un mot. **
+ 
+   1. Appuyez  <Échap>  pour être sûr d'être en mode Normal.
+ 
+@@ -147,91 +210,139 @@
+ 
+   3. Placez le curseur sur le début d'un mot qui a besoin d'être effacé.
+ 
+-  4. Tapez  dw	pour faire disparaître ce mot.
++  4. Tapez  dw  pour faire disparaître ce mot.
+ 
+-NOTE: Les lettres  dw  apparaîtront sur la dernière ligne de l'écran lors de
+-      votre frappe. Si vous avez mal tapé quelque chose, appuyez <Échap> et
+-      recommencez.
++NOTE : La lettre  d  apparaîtra sur la dernière ligne de l'écran lors de
++       votre frappe. Vim attend que vous tapiez  w . Si vous voyez un autre
++       caractère que  d  vous avez tapé autre chose ; appuyez <Échap> et
++       recommencez.
+ 
+ ---> Il y a quelques drôle mots qui n'ont rien à faire papier sur cette ligne.
+ 
+   5. Répétez les étapes 3 et 4 jusqu'à ce que la phrase soit correcte et allez
+      à la Leçon 2.2.
+ 
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			Leçon 2.2 : PLUS D'EFFACEMENTS
++                  Leçon 2.2 : PLUS DE COMMANDES D'EFFACEMENTS
+ 
+ 
+-	  ** Tapez  d$	pour effacer jusqu'à la fin de la ligne. **
++          ** Tapez  d$  pour effacer jusqu'à la fin de la ligne. **
+ 
+   1. Appuyez  <Échap>  pour être sûr d'être en mode Normal.
+ 
+   2. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+ 
+-  3. Déplacez le curseur jusqu'à la fin correcte de la ligne
+-     (APRÈS le premier . ).
++  3. Déplacez le curseur jusqu'à la fin de la ligne correcte (APRÈS le
++     premier . ).
+ 
+-  4. Tapez  d$	pour effacer jusqu'à la fin de la ligne.
++  4. Tapez  d$  pour effacer jusqu'à la fin de la ligne.
+ 
+ ---> Quelqu'un a tapé la fin de cette ligne deux fois. cette ligne deux fois.
+ 
+   5. Allez à la Leçon 2.3 pour comprendre ce qui se passe.
+ 
+ 
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++             Leçon 2.3 : À PROPOS DES OPÉRATEURS ET DES MOUVEMENTS
++
++
++  Plusieurs commandes qui changent le texte sont constituées d'un opérateur
++  et d'un mouvement. Le format pour une commande d'effacement avec l'opérateur
++  d  d'effacement est le suivant :
+ 
++        d   mouvement
++
++  Où :
++    d         - est l'opérateur d'effacement
++    mouvement - est le mouvement sur lequel agit l'opérateur (listés
++                ci-dessous)
++
++  Une courte liste de mouvements :
++    w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère.
++    e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère.
++    $ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère.
++
++  Ainsi, taper  de  va effacer depuis le curseur jusqu'à la fin du mot.
++
++NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
++       curseur comme indiqué.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		   Leçon 2.3 : DES COMMANDES ET DES OBJETS
++            Leçon 2.4 : UTILISER UN QUANTIFICATEUR AVEC UN MOUVEMENT
+ 
+ 
+-  Le format de la commande d'effacement  d  est le suivant:
++       ** Taper un nombre avant un mouvement le répète autant de fois. **
+ 
+-	 [nombre]  d  objet	   OU	     d	[nombre]  objet
+-  où:
+-    nombre - est combien de fois exécuter la commande (optionnel, défaut: 1).
+-    d - est la commande d'effacement.
+-    objet - est ce sur quoi la commande va opérer (liste ci-dessous).
++  1. Déplacez le curseur au début de la ligne marquée ---> ci-dessous.
+ 
+-  Une courte liste d'objets:
+-    w - du curseur jusqu'à la fin du mot, y compris l'espace qui suit.
+-    e - du curseur jusqu'à la fin du mot, SANS l'espace qui suit.
+-    $ - du curseur jusqu'à la fin de la ligne.
++  2. Tapez  2w  pour déplacer le curseur de 2 mots vers l'avant.
+ 
+-NOTE: Pour les aventureux, le seul appui d' objet  en mode Normal, sans
+-      commande, déplace le curseur comme indiqué dans la liste des objets.
++  3. Tapez  3e  pour déplacer le curseur à la fin du troisième mot vers
++     l'avant.
+ 
++  4. Tapez  0  (zéro) pour déplacer au début de la ligne.
+ 
++  5. Répétez les étapes 2 et 3 avec des quantificateurs différents.
++
++---> Ceci est juste une ligne avec des mots où vous pouvez vous déplacer.
++
++  6. Déplacez-vous à la Leçon 2.5.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Leçon 2.4 : UNE EXCEPTION À 'COMMANDE-OBJET'
++            Leçon 2.5 : UTILISER UN QUANTIFICATEUR POUR EFFACER PLUS
++
++
++       ** Taper un nombre avec un opérateur le répète autant de fois. **
+ 
+-	      ** Tapez	dd  pour effacer une ligne complète. **
++  Outre la combinaison de l'opérateur d'effacement avec un déplacement
++  mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur)
++  pour effacez encore plus :
++       d   nombre   déplacement
++
++  1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
++     marquée --->.
++
++  2. Tapez  d2w  pour effacer les deux mots en MAJUSCULES.
++
++  3. Répétez les étapes 1 et 2 avec des quantificateurs différents pour
++     effacer les mots suivants en MAJUSCULES à l'aide d'une commande.
++
++---> Cette ABC DE ligne FGHI JK LMN OP de mots est Q RS TUV nettoyée.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                       Leçon 2.6 : OPÉREZ SUR DES LIGNES
++
++
++              ** Tapez   dd   pour effacer une ligne complète. **
+ 
+   Vu le nombre de fois où l'on efface des lignes complètes, les concepteurs
+-  de Vi ont décidé qu'il serait plus facile de taper simplement deux d à la
+-  suite pour effacer une ligne.
++  de Vi ont décidé qu'il serait plus facile de taper simplement deux  d
++  pour effacer une ligne.
+ 
+   1. Placez le curseur sur la seconde ligne de la phrase ci-dessous.
+-  2. Tapez  dd	pour effacer la ligne.
++  2. Tapez  dd  pour effacer la ligne.
+   3. Maintenant allez à la quatrième ligne.
+-  4. Tapez  2dd  (rappelez-vous, nombre-commande-objet) pour effacer les
+-     deux lignes.
++  4. Tapez   2dd   pour effacer deux lignes.
++
++--->  1)  Les roses sont rouges,
++--->  2)  La boue c'est drôle,
++--->  3)  Les violettes sont bleues,
++--->  4)  J'ai une voiture,
++--->  5)  Les horloges donnent l'heure,
++--->  6)  Le sucre est doux
++--->  7)  Tout comme vous.
+ 
+-      1)  Les roses sont rouges,
+-      2)  La boue c'est drôle,
+-      3)  Les violettes sont bleues,
+-      4)  J'ai une voiture,
+-      5)  Les horloges donnent l'heure,
+-      6)  Le sucre est doux
+-      7)  Tout comme vous.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			    Leçon 2.5 : L'ANNULATION
++                            Leçon 2.7 : L'ANNULATION
+ 
+-	    ** Tapez  u  pour annuler les dernières commandes. **
+-	       ** Tapez  U  pour récupérer toute une ligne. **
++
++            ** Tapez  u  pour annuler les dernières commandes. **
++               ** Tapez  U  pour récupérer toute une ligne. **
+ 
+   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous et placez-le sur
+      la première erreur.
+@@ -239,10 +350,10 @@
+   3. Puis tapez  u  pour annuler la dernière commande exécutée.
+   4. Cette fois, corrigez toutes les erreurs de la ligne avec la commande  x .
+   5. Puis tapez un  U  majuscule pour remettre la ligne dans son état initial.
+-  6. Puis tapez  u  deux-trois fois pour annuler le  U	et les commandes
++  6. Puis tapez  u  deux-trois fois pour annuler le  U  et les commandes
+      précédentes.
+-  7. Maintenant tapez  Ctrl-R  (maintenez la touche Ctrl enfoncée pendant que
+-     vous appuyez sur R) deux-trois fois pour refaire les commandes (annuler
++  7. Maintenant tapez  CTRL-R  (maintenez la touche CTRL enfoncée pendant que
++     vous appuyez R) deux-trois fois pour refaire les commandes (annuler
+      les annulations).
+ 
+ ---> Coorrigez les erreurs suur ccette ligne et reemettez-les avvec 'annuler'.
+@@ -250,57 +361,64 @@
+   8. Ce sont des commandes très utiles. Maintenant, allez au résumé de la
+      Leçon 2.
+ 
++
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     RÉSUMÉ DE LA LEÇON 2
++                             RÉSUMÉ DE LA LEÇON 2
++
++
++  1. Pour effacer du curseur jusqu'au mot suivant tapez :         dw
++
++  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez :   d$
+ 
++  3. Pour effacer toute une ligne tapez :                         dd
+ 
+-  1. Pour effacer du curseur jusqu'à la fin d'un mot tapez:	dw
++  4. Pour répéter un déplacement ajoutez un quantificateur :      2w
+ 
+-  2. Pour effacer du curseur jusqu'à la fin d'une ligne tapez:	d$
++  5. Le format d'une commande de changement est :
+ 
+-  3. Pour effacer toute une ligne tapez:  dd
++       opérateur   [nombre]   déplacement
+ 
+-  4. Le format d'une commande en mode Normal est:
++     Où :
++       opérateur   - est ce qu'il faut faire, comme  d  pour effacer.
++       [nombre]    - un quantificateur optionnel pour répéter le déplacement.
++       déplacement - déplace le long du texte à opérer, tel que  w  (mot),
++                     $ (jusqu'à la fin de ligne), etc.
+ 
+-       [nombre]  commande  objet     OU     commande  [nombre]	objet
+-     où:
+-       nombre - est combien de fois répéter la commande
+-       commande - est ce qu'il faut faire, par exemple	d  pour effacer
+-       objet - est ce sur quoi la commande devrait agir, par exemple w (mot),
+-	       $ (jusqu'à la fin de la ligne), etc.
++  6. Pour se déplacer au début de ligne, utilisez un zéro :  0
++
++  5. Pour annuler des actions précédentes, tapez :            u (u minuscule)
++     Pour annuler tous les changements sur une ligne tapez :  U (U majuscule)
++     Pour annuler l'annulation tapez :                        CTRL-R
+ 
+-  5. Pour annuler des actions précédentes, tapez:	     u	(u minuscule)
+-     Pour annuler tous les changements sur une ligne tapez:  U	(U majuscule)
+-     Pour annuler l'annulation tapez:			     Ctrl-R
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     Leçon 3.1 : LE COLLAGE
++                             Leçon 3.1 : LE COLLAGE
+ 
+ 
+-   ** Tapez  p	pour placer après le curseur ce qui vient d'être effacé. **
++   ** Tapez  p  pour placer après le curseur ce qui vient d'être effacé. **
+ 
+-  1. Placez le curseur sur la première ligne du "poème" ci-dessous.
++  1. Placez le curseur sur la première ligne ci-dessous marquée --->.
+ 
+-  2. Tapez  dd	pour effacer la ligne et la placer dans le tampon de Vim.
++  2. Tapez  dd  pour effacer la ligne et la placer dans un registre de Vim.
+ 
+-  3. Déplacez le curseur sur la ligne qui PRÉCÈDE l'endroit où vous voulez
+-     remettre la ligne effacée.
++  3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la
++     ligne effacée.
+ 
+-  4. En mode Normal, tapez  p  pour remettre la ligne.
++  4. En mode Normal, tapez   p   pour remettre la ligne en dessous du curseur.
+ 
+   5. Répétez les étapes 2 à 4 pour mettre toutes les lignes dans le bon ordre.
+ 
+-     d) Et vous, qu'apprenez-vous ?
+-     b) Les violettes sont bleues,
+-     c) L'intelligence s'apprend,
+-     a) Les roses sont rouges,
++---> d) Et vous, qu'apprenez-vous ?
++---> b) Les violettes sont bleues,
++---> c) L'intelligence s'apprend,
++---> a) Les roses sont rouges,
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 Leçon 3.2 : LE REMPLACEMENT
++                    Leçon 3.2 : LA COMMANDE DE REMPLACEMENT
+ 
+ 
+- ** Tapez  r  et un caractère pour remplacer le caractère sous le curseur. **
++     ** Tapez  rx  pour remplacer un caractère sous le curseur par  x . **
+ 
+   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+ 
+@@ -308,31 +426,32 @@
+ 
+   3. Tapez  r  suivi du caractère qui doit corriger l'erreur.
+ 
+-  4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit correcte.
++  4. Répétez les étapes 2 et 3 jusqu'à ce que la première ligne soit égale
++     à la seconde.
+ 
+ --->  Quand cette ligne a été sauvie, quelqu'un a lait des faunes de frappe !
+ --->  Quand cette ligne a été saisie, quelqu'un a fait des fautes de frappe !
+ 
+   5. Maintenant, allez à la Leçon 3.3.
+ 
+-NOTE: N'oubliez pas que vous devriez apprendre par la pratique, pas par
+-      mémorisation.
++NOTE : N'oubliez pas que vous devriez apprendre par la pratique, pas par
++       mémorisation.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			  Leçon 3.3 : LE CHANGEMENT
++                     Leçon 3.3 : L'OPÉRATEUR DE CHANGEMENT
+ 
+ 
+-	    ** Pour changer tout ou partie d'un mot, tapez  cw .**
++            ** Pour changer jusqu'à la fin d'un mot, tapez  ce .**
+ 
+   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
+ 
+-  2. Placez le curseur sur le u de luhko.
++  2. Placez le curseur sur le  u  de luhko.
+ 
+-  3. Tapez  cw	et corrigez le mot (dans notre cas, tapez  'igne'.)
++  3. Tapez  ce  et corrigez le mot (dans notre cas, tapez  'igne'.)
+ 
+-  4. Appuyez <Échap> et placez-vous sur l'erreur suivante (le premier
+-     caractère qui doit être changé).
++  4. Appuyez <Échap> et placez-vous sur le prochain caractère qui doit
++     être changé).
+ 
+   5. Répétez les étapes 3 et 4 jusqu'à ce que la première phrase soit
+      identique à la seconde.
+@@ -340,171 +459,189 @@
+ ---> Cette luhko contient quelques myqa qui ont ricne d'être chantufip.
+ ---> Cette ligne contient quelques mots qui ont besoin d'être changés.
+ 
+-Notez que  cw  efface le mot et vous place ensuite en mode Insertion.
++Notez que  ce  efface le mot et vous place ensuite en mode Insertion.
++
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		    Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c
++                    Leçon 3.4 : PLUS DE CHANGEMENTS AVEC c
+ 
+ 
+-    ** Le changement fonctionne avec les mêmes objets que l'effacement. **
++    ** L'opérateur de changement fonctionne avec les mêmes déplacements
++       que l'effacement. **
+ 
+-  1. Le changement fonctionne de la même manière que l'effacement.
+-     Le format est:
++  1. L'opérateur de changement fonctionne de la même manière que
++     l'effacement. Le format est :
+ 
+-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
++         c   [nombre]   déplacement
+ 
+-  2. Les objets sont également les mêmes:  w (mot), $ (fin de ligne), etc.
++  2. Les déplacements sont identiques :  w (mot) et  $ (fin de ligne).
+ 
+-  3. Déplacez-vous à la première ligne marquée ---> ci-dessous.
++  3. Déplacez-vous sur la première ligne marquée ---> ci-dessous.
+ 
+   4. Placez le curseur sur la première erreur.
+ 
+-  5. Tapez  c$	pour changer la fin de la ligne, rendez-là identique à la
+-     seconde ligne, puis tapez <Échap>.
++  5. Tapez  c$  et tapez le reste de la ligne afin qu'elle soit identique
++     à la seconde ligne, puis tapez <Échap>.
+ 
+ ---> La fin de cette ligne doit être rendue identique à la seconde.
+----> La fin de cette ligne doit être corrigée avec la commande	c$ .
++---> La fin de cette ligne doit être corrigée avec la commande  c$ .
++
++NOTE :  Vous pouvez utiliser la touche Retour Arrière pour corriger les
++        erreurs lorsque vous tapez.
++
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     RÉSUMÉ DE LA LEÇON 3
++                             RÉSUMÉ DE LA LEÇON 3
+ 
+ 
+-  1. Pour remettre du texte qui vient d'être effacé, tapez  p . Cela Place le
++  1. Pour remettre le texte qui a déjà été effacé, tapez  p . Cela Place le
+      texte effacé APRÈS le curseur (si une ligne complète a été effacée, elle
+      sera placée sous la ligne du curseur).
+ 
+   2. Pour remplacer le caractère sous le curseur, tapez  r  suivi du caractère
+      qui remplacera l'original.
+ 
+-  3. Le changement vous permet de changer l'objet spécifié, du curseur jusqu'à
+-     la fin de l'objet. Par exemple, tapez  cw	pour changer du curseur
+-     jusqu'à la fin du mot,  c$  pour changer jusqu'à la fin d'une ligne.
++  3. L'opérateur de changement vous permet de changer depuis la position du
++     curseur jusqu'où le déplacement vous amène. Par exemple, tapez  ce
++     pour changer du curseur jusqu'à la fin du mot,  c$  pour changer jusqu'à
++     la fin d'une ligne.
+ 
+-  4. Le format pour le changement est:
++  4. Le format pour le changement est :
+ 
+-	 [nombre]  c  objet	   OU	     c	[nombre]  objet
++         c   [nombre]   déplacement
+ 
+ Passez maintenant à la leçon suivante.
+ 
+ 
+-
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		   Leçon 4.1 : POSITION ET ÉTAT DU FICHIER
++               Leçon 4.1 : POSITION DU CURSEUR ET ÉTAT DU FICHIER
+ 
+ 
+-  ** Tapez Ctrl-G pour afficher votre position dans le fichier et son état.
+-     Utilisez Maj-G pour vous rendre à une ligne donnée du fichier. **
++  ** Tapez CTRL-G pour afficher votre position dans le fichier et son état.
++     Tapez  G  pour vous rendre à une ligne donnée du fichier. **
+ 
+-  Note: Lisez toute cette leçon avant d'effectuer l'une des étapes !
++NOTE : Lisez toute cette leçon avant d'effectuer l'une des étapes !!
+ 
+-  1. Maintenez enfoncée la touche Ctrl et appuyez sur  G .  Une ligne d'état
+-     va apparaître en bas de l'écran avec le nom du fichier et le numéro de la
+-     ligne où vous êtes.  Notez ce numéro, il servira lors de l'étape 3.
++  1. Maintenez enfoncée la touche CTRL et appuyez sur  g . On appelle cela
++     CTRL-G. Une ligne d'état va apparaître en bas de l'écran avec le nom
++     du fichier et le numéro de la ligne où vous êtes. Notez ce numéro, il
++     servira lors de l'étape 3.
+ 
+-  2. Tapez  G  majuscule (Maj-G) pour vous rendre à la fin du fichier.
++NOTE : Vous pouvez peut-être voir le curseur en bas à droite de l'écran.
++       Ceci arrive quand l'option 'ruler' est activée (voir  :help 'ruler')
+ 
+-  3. Tapez le numéro de la ligne où vous étiez suivi de Maj-G.	Cela vous
+-     ramènera à la ligne où vous étiez au départ.
+-     (Lorsque vous tapez les chiffres, ils n'apparaissent PAS à l'écran).
++  2. Tapez  G   pour vous déplacer à la fin du fichier.
++     Tapez  gg  pour vous déplacer au début du fichier.
+ 
+-  4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3.
++  3. Tapez le numéro de la ligne où vous étiez suivi de   G . Cela vous
++     ramènera à la ligne où vous étiez au départ quand vous aviez appuyé
++     CTRL-G.
+ 
++  4. Si vous vous sentez prêt à faire ceci, effectuez les étapes 1 à 3.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			    Leçon 4.2 : LA RECHERCHE
++                            Leçon 4.2 : LA RECHERCHE
+ 
+ 
+-	  ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
++          ** Tapez  /  suivi d'un texte pour rechercher ce texte. **
+ 
+   1. Tapez le caractère  /  en mode Normal. Notez que celui-ci et le curseur
+      apparaissent en bas de l'écran, comme lorsque l'on utilise  : .
+ 
+-  2. Puis tapez 'errreuur' <Entrée>.  C'est le mot que vous voulez rechercher.
+-
+-  3. Pour rechercher à nouveau le même texte, tapez simplement	n .
+-     Pour rechercher le même texte dans la direction opposée, tapez  Maj-N .
++  2. Puis tapez 'errreuur' <Entrée>. C'est le mot que vous voulez rechercher.
+ 
+-  4. Si vous voulez rechercher un texte vers le haut du fichier, utilisez  ?
+-     à la place de  / .
++  3. Pour rechercher à nouveau le même texte, tapez simplement  n .
++     Pour rechercher le même texte dans la direction opposée, tapez  N .
+ 
+----> erreur ne s'écrit pas "errreuur"; errreuur est une erreur.
++  4. Pour rechercher une phrase dans la direction opposée, utilisez  ?
++     au lieu de  / .
+ 
+-Note: Quand la recherche atteint la fin du fichier, elle reprend au début.
++---> erreur ne s'écrit pas "errreuur" ; errreuur est une erreur.
+ 
++NOTE : Quand la recherche atteint la fin du fichier, elle reprend au début
++       sauf si l'option 'wrapscan' est déactivée.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	    Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES
++            Leçon 4.3 : RECHERCHE DES PARENTHÈSES CORRESPONDANTES
+ 
+ 
+-	   ** Tapez  %	pour trouver des ), ] ou } correspondants. **
++           ** Tapez  %  pour trouver des ), ] ou } correspondants. **
+ 
+   1. Placez le curseur sur l'un des (, [ ou { de la ligne marquée --->
+      ci-dessous.
+ 
+   2. Puis tapez le caractère  % .
+ 
+-  3. Le curseur devrait se placer sur la parenthèse correspondante.
++  3. Le curseur se déplacera sur la parenthèse out crochet correspondant.
+ 
+-  4. Tapez  %  pour replacer le curseur sur l'autre parenthèse.
++  4. Tapez  %  pour replacer le curseur sur la parenthèse ou crochet
++     correspondant.
+ 
+----> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+-
+-Note: Cette fonctionnalité est très utile lors du débogage d'un programme qui
+-      contient des parenthèses déséquilibrées !
++  5. Déplacez le curseur sur un autre (,),[,],{ ou } et regardez ce que
++     fait  % .
+ 
++---> Voici ( une ligne de test contenant des (, des [ ] et des { } )).
+ 
++NOTE : Cette fonctionnalité est très utile lors du débogage d'un programme qui
++       contient des parenthèses déséquilibrées !
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	       Leçon 4.4 : UNE MANIÈRE DE CORRIGER LES ERREURS
++                    Leçon 4.4 : LA COMMANDE DE SUBSTITUTION
+ 
+ 
+-  ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'.  **
++    ** Tapez  :s/ancien/nouveau/g  pour remplacer 'ancien' par 'nouveau'. **
+ 
+   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+ 
+   2. Tapez  :s/lee/le <Entrée> . Notez que cette commande change seulement la
+-     première occurence sur la ligne.
++     première occurrence de "lee" dans la ligne.
+ 
+-  3. Puis tapez  :s/lee/le/g  qui ordonne de faire une substitution globale
+-     sur la ligne. Cela change toutes les occurences sur la ligne
++  3. Puis tapez  :s/lee/le/g . L'ajout du drapeau  g  ordonne de faire une
++     substitution globale sur la ligne, et change toutes les occurrences de
++     "lee" sur la ligne.
+ 
+----> lee meilleur moment pour regarder lees fleurs est pendant lee Printemps.
++---> lee meilleur moment pour regarder lees fleurs est pendant lee printemps.
+ 
+-  4. Pour changer toutes les occurences d'un texte, entre deux lignes,
+-     tapez  :#,#s/ancien/nouveau/g  où #,# sont les numéros des deux lignes.
+-     Tapez  :%s/ancien/nouveau/g    pour changer chaque occurence dans tout
+-				    le fichier.
++  4. Pour changer toutes les occurrences d'un texte, entre deux lignes,
++     tapez  :#,#s/ancien/nouveau/g  où #,# sont les numéros de lignes de la
++                                    plage où la substitution doit être faite.
++     Tapez  :%s/ancien/nouveau/g    pour changer toutes les occurrences dans
++                                    tout le fichier.
++     Tapez  :%s/ancien/nouveau/gc   pour trouver toutes les occurrences dans
++                                    tout le fichier avec une invite pour
++                                    confirmer ou infirmer chaque substitution.
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     RÉSUMÉ DE LA LEÇON 4
++                             RÉSUMÉ DE LA LEÇON 4
+ 
+ 
+-  1. Ctrl-G  affiche votre position dans le fichier et l'état de celui-ci.
+-     Maj-G  vous place à la fin du fichier. Un numéro de ligne suivi de Maj-G
+-     vous place à cette ligne.
++  1. CTRL-G       affiche la position dans le fichier et l'état de celui-ci.
++               G  déplace à la fin du fichier.
++     nombre    G  déplace au numéro de ligne.
++              gg  déplace à la première ligne.
+ 
+   2. Taper  /  suivi d'un texte recherche ce texte vers l'AVANT.
+      Taper  ?  suivi d'un texte recherche ce texte vers l'ARRIÈRE.
+-     Après une recherche tapez	n  pour trouver l'occurence suivante dans la
+-     même direction ou	Maj-N  pour rechercher dans la direction opposée.
++     Après une recherche tapez  n  pour trouver l'occurrence suivante dans la
++     même direction ou  Maj-N  pour rechercher dans la direction opposée.
+ 
+   3. Taper  %  lorsque le curseur est sur  (, ), [, ], { ou }  déplace
+      celui-ci sur le caractère correspondant.
+ 
+-  4. Pour remplacer le premier aa par bb sur une ligne tapez	 :s/aa/bb
+-     Pour remplacer tous les aa par bb sur une ligne tapez	 :s/aa/bb/g
+-     Pour remplacer du texte entre deux numéros de ligne tapez	 :#,#s/aa/bb/g
+-     Pour remplacer toutes les occurences dans le fichier tapez  :%s/aa/bb/g
+-     Pour demander une confirmation à chaque fois ajoutez 'c'	 :%s/aa/bb/gc
++  4. Pour remplacer le premier aa par bb sur une ligne tapez     :s/aa/bb
++     Pour remplacer tous les aa par bb sur une ligne tapez       :s/aa/bb/g
++     Pour remplacer du texte entre deux numéros de ligne tapez   :#,#s/aa/bb/g
++     Pour remplacer toutes les occurrences dans le fichier tapez :%s/aa/bb/g
++     Pour demander une confirmation à chaque fois ajoutez 'c'    :%s/aa/bb/gc
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	      Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE
++              Leçon 5.1 : COMMENT EXÉCUTER UNE COMMANDE EXTERNE
+ 
+ 
+  ** Tapez  :!  suivi d'une commande externe pour exécuter cette commande. **
+@@ -516,294 +653,386 @@
+      n'importe quelle commande valide pour votre interpréteur (shell).
+ 
+   3. Par exemple, tapez  ls  après le  !  et appuyez <Entrée>. Ceci affichera
+-     la liste des fichiers du dossier courant, comme si vous aviez tapé la
+-     commande à l'invite du shell. Utilisez  :!dir  si	:!ls  ne marche pas.
+-
+-Note:  Il est possible d'exécuter n'importe quelle commande externe de cette
+-       manière.
++     la liste des fichiers du répertoire courant, comme si vous aviez tapé la
++     commande à l'invite du shell. Utilisez  :!dir  si  :!ls  ne marche pas.
+ 
+-Note:  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
++NOTE :  Il est possible d'exécuter n'importe quelle commande externe de cette
++        manière, avec ou sans argument.
+ 
++NOTE :  Toutes les commandes  :  doivent finir par la frappe de <Entrée>.
++        À partir de maintenant, nous ne le mentionnerons plus.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-	 Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS
++         Leçon 5.2 : PLUS DE DÉTAILS SUR L'ENREGISTREMENT DE FICHIERS
+ 
+ 
+- ** Pour enregistrer les changements faits au fichier, tapez  :w FICHIER . **
++ ** Pour enregistrer les changements faits au texte, tapez  :w FICHIER . **
+ 
+-  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers du dossier
+-     courant. Vous savez déjà qu'il faut appuyer <Entrée> après cela.
++  1. Tapez  :!dir  ou  :!ls  pour avoir la liste des fichiers dans le
++     répertoire courant. Vous savez déjà qu'il faut appuyer <Entrée> après
++     cela.
+ 
+   2. Choisissez un nom de fichier qui n'existe pas encore, par exemple TEST.
+ 
+   3. Puis tapez  :w TEST  (où TEST est le nom que vous avez choisi).
+ 
+-  4. Cela sauvegarde tout le fichier (Tutoriel Vim) sous le nom TEST.
+-     Pour le vérifier, tapez  :!dir  pour revisualiser le contenu du dossier.
++  4. Cela enregistre tout le fichier (Tutoriel Vim) sous le nom TEST.
++     Pour le vérifier, tapez  :!dir  ou  :!ls  de nouveau pour revisualiser
++     votre répertoire.
+ 
+-Notez que si vous quittez Vim et y retournez avec le fichier TEST, celui-ci
+-sera une copie exacte du cours au moment où vous l'avez sauvé.
++NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST,
++       celui-ci sera une copie exacte de ce cours au moment où vous l'avez
++       enregistré.
+ 
+-  5. Maintenant, effacez le fichier en tapant (MS-DOS):    :!del TEST
+-					   ou (Unix):	   :!rm TEST
++  5. Maintenant, effacez le fichier en tapant (MS-DOS) :   :!del TEST
++                                           ou (Unix) :     :!rm TEST
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		    Leçon 5.3 : UN ENREGISTREMENT SÉLECTIF
++                  Leçon 5.3 : SÉLECTION DU TEXTE À ENREGISTRER
+ 
+ 
+-     ** Pour enregistrer une portion de fichier, tapez	:#,#w FICHIER **
++                  ** Pour enregistrer une portion du fichier,
++                      tapez :   v  déplacement  :w FICHIER  **
+ 
+-  1. Tapez à nouveau  :!dir  ou  :!ls  pour visualiser le contenu du dossier
+-     courant et choisissez un nom de fichier, tel que TEST.
++  1. Déplacez le curseur sur cette ligne.
+ 
+-  2. Déplacez le curseur jusqu'en haut de cette page et tapez  Ctrl-G  pour
+-     connaître le numéro de cette ligne. NOTEZ CE NUMÉRO !
++  2. Appuyez  v  et déplacez le curseur vers la cinquième ligne plus bas.
++     Remarquez que le texte est en surbrillance.
+ 
+-  3. Puis rendez-vous au bas de cette page et tapez à nouveau  Ctrl-G .
+-     NOTEZ ÉGALEMENT CE NUMÉRO !
++  3. Appuyez  :  . En bas de l'écran  :'<,'> va apparaître.
+ 
+-  4. Pour enregistrer SEULEMENT une portion d'un fichier, tapez  :#,#w TEST
+-     où #,# sont les deux numéros que vous avez notés (haut,bas) et TEST est
+-     le nom du fichier.
++  4. Tapez   w TEST  , où TEST est un nom de fichier qui n'existe pas.
++     Vérifiez que vous voyez  :'<,'>w TEST  avant de d'appuyer sur Entrée.
+ 
+-  5. Une fois encore, vérifiez la présence du fichier avec  :!dir  mais NE
+-     L'EFFACEZ PAS.
++  5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST.
++     Utilisez  :!dir  ou  !ls pour le voir. Ne l'effacez pas encore !
++     Nous allons l'utiliser dans la leçon suivante.
+ 
++NOTE : L'appui de  v  démarre la sélection Visuelle. Vous pouvez déplacer le
++       curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez
++       utiliser un opérateur pour faire quelque chose sur le texte. Par
++       exemple,  d  efface le texte.
+ 
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS
+ 
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                 Leçon 5.4 : RÉCUPÉRATION ET FUSION DE FICHIERS
+ 
+-	** Pour insérer le contenu d'un fichier, tapez	:r FICHIER **
+ 
+-  1. Tapez  :!dir  pour vérifier que votre fichier TEST est encore là.
++        ** Pour insérer le contenu d'un fichier, tapez  :r FICHIER **
+ 
+-  2. Placez le curseur en haut de cette page.
++  1. Placez le curseur juste au-dessus de cette ligne.
+ 
+-NOTE:  Après avoir suivi l'étape 3 vous verrez à l'écran la Leçon 5.3.
+-       Déplacez-vous vers le bas jusqu'à revenir à cette leçon.
++NOTE :  Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
++        Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
+ 
+-  3. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
++  2. Maintenant récupérez votre fichier TEST en utilisant la commande  :r TEST
+      où TEST est le nom de votre fichier.
+-
+-NOTE:  Le fichier que vous récupérez est placé là où se trouve le curseur.
++     Le fichier que vous récupérez est placé au-dessous de la ligne du curseur.
+ 
+   4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez
+      qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle
+      contenue dans le fichier.
+ 
++NOTE :  Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
++        :r !ls  lit la sortie de la commande ls et la place sous la ligne du
++        curseur.
+ 
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     RÉSUMÉ DE LA LEÇON 5
+ 
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                             RÉSUMÉ DE LA LEÇON 5
+ 
+-  1.  :!commande  exécute une commande externe.
+-
+-      Quelques exemples pratiques:
+-	(MS-DOS)	(Unix)
+-	 :!dir		 :!ls		 affiche le contenu du dossier courant.
+-	 :!del FICHIER   :!rm FICHIER    efface FICHIER.
+ 
+-  2.  :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
+-		  nom FICHIER.
++  1. :!commande  exécute une commande externe.
+ 
+-  3.  :#,#w FICHIER  enregistre les lignes # à # dans le fichier FICHIER.
++     Quelques exemples pratiques :
++      (MS-DOS)        (Unix)
++       :!dir           :!ls          affiche le contenu du répertoire courant.
++       :!del FICHIER   :!rm FICHIER  efface FICHIER.
+ 
+-  4.  :r FICHIER  récupère le fichier FICHIER et l'insère dans le fichier
+-		  courant à partir de la position du curseur.
++  2. :w FICHIER  enregistre le fichier Vim courant sur le disque avec pour
++                  nom FICHIER.
+ 
++  3. v  déplacement  :w FICHIER sauvegarde les lignes de la sélection Visuelle
++     dans le fichier FICHIER.
+ 
++  4. :r FICHIER  récupère le contenu du fichier FICHIER et l'insère sous la
++     position du curseur.
+ 
++  5. :r !dir  lit la sortie de la commande dir et l'insère sous la position
++     du curseur.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			    Leçon 6.1 : L'OUVERTURE
++                      Leçon 6.1 : LA COMMANDE D'OUVERTURE
+ 
+ 
+ ** Tapez  o  pour ouvrir une ligne sous le curseur et y aller en Insertion. **
+ 
+   1. Déplacez le curseur sur la ligne marquée ---> ci-dessous.
+ 
+-  2. Tapez  o  (minuscule) pour ouvrir une ligne SOUS le curseur et vous y
+-     placer en mode Insertion.
++  2. Tapez la lettre   o   minuscule pour ouvrir une ligne SOUS le curseur et
++     vous y placer en mode Insertion.
+ 
+-  3. Puis recopiez la ligne marquée ---> et appuyez sur <Échap> pour quitter
+-     le mode Insertion.
++  3. Puis tapez du texte et appuyez <Échap> pour sortir du mode Insertion.
+ 
+----> En tapant	o  le curseur se met sur la ligne ouverte, en mode Insertion.
++---> En tapant  o  le curseur se met sur la ligne ouverte, en mode Insertion.
+ 
+-  4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un  O
++  4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un  O
+      majuscule, plutôt qu'un  o  minuscule. Faites un essai sur la ligne
+      ci-dessous.
+-Ouvrez une ligne ci-dessus en tapant MAJ-O lorsque le curseur est ici.
+ 
++---> Ouvrez une ligne ci-dessus en tapant O lorsque le curseur est ici.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			      Leçon 6.2 : L'AJOUT
++                        Leçon 6.2 : LA COMMANDE D'AJOUT
++
++
++            ** Tapez  a  pour insérer du texte APRÈS le curseur. **
+ 
++  1. Placez le curseur au début de la ligne marquée ---> ci-dessous.
+ 
+-	    ** Tapez  a  pour insérer du texte APRÈS le curseur. **
++  2. Appuyez  e  jusqu'à ce que le curseur soit sur la fin de  li .
+ 
+-  1. Placez le curseur à la fin de la première ligne marquée ---> ci-dessous
+-     en tapant	$  en mode Normal.
++  3. Appuyez  a  (minuscule) pour ajouter du texte APRÈS le curseur.
+ 
+-  2. Tapez un  a  (minuscule) pour ajouter du texte APRÈS le caractère situé
+-     sous le curseur. ( A  majuscule ajoute du texte à la fin de la ligne).
++  4. Complétez le mot comme dans la ligne dessous. Appuyez <Échap> pour
++     sortir du mode Insertion.
+ 
+-Note: Ceci évite de taper  i , le dernier caractère, le texte à insérer,
+-      <Échap>, curseur-à-droite, et finalement	x , juste pour ajouter du
+-      texte à la fin d'une ligne !
++  5. Utilisez  e  pour vous déplacer vers le mot incomplet suivant et
++     répétez les étapes 3 et 4.
+ 
+-  3. Maintenant, complétez la première ligne. Notez également que l'ajout est
+-     identique au mode Insertion, hormis la position où le texte est inséré.
++---> Cette li vous perm de pratiq l'ajout de t dans une ligne.
++---> Cette ligne vous permet de pratiquer l'ajout de texte dans une ligne.
+ 
+----> Cette ligne vous permet de pratiquer
+----> Cette ligne vous permet de pratiquer l'ajout de texte en fin de ligne.
++NOTE :  a, i, A vont tous dans le même mode Insertion, la seule différence
++        est l'endroit où les caractères sont insérés.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		Leçon 6.3 : UNE AUTRE VERSION DU REMPLACEMENT
++                   Leçon 6.3 : UNE AUTRE MANIÈRE DE REMPLACER
+ 
+ 
+        ** Tapez un  R  majuscule pour remplacer plus d'un caractère. **
+ 
+   1. Déplacez le curseur sur la première ligne marquée ---> ci-dessous.
++     Déplacez le curseur sur le début du premier xxx .
+ 
+-  2. Placez le curseur au début du premier mot qui diffère de la seconde ligne
+-     marquée ---> (le mot 'celle').
++  2. Appuyez maintenant  R  et tapez le nombre dessous dans la deuxième ligne,
++     de manière à remplacer le xxx .
+ 
+-  3. Puis tapez  R  et remplacez le reste du texte de la première ligne en
+-     tapant par dessus celui-ci, de manière à rendre la première ligne
+-     identique à la seconde.
++  3. Appuyez <Échap> pour quitter le mode Remplacement. Notez que le reste de
++     la ligne demeure inchangé.
++
++  4. Répétez les étapes pour remplacer les xxx restants.
++
++
++---> L'ajout de 123 à xxx donne xxx.
++---> L'ajout de 123 à 456 donne 579.
++
++NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
++       caractères tapés effacent un caractère existant.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                     Leçon 6.4 : COPIER ET COLLER DU TEXTE
++
++
++   ** Utilisez l'opérateur  y  pour copier du texte et  p  pour le coller **
++
++  1. Allez à la ligne marquée ---> ci-dessous et placez le curseur après "a)".
+ 
+----> Pour rendre cette ligne identique à celle du dessous utilisez le clavier.
+----> Pour rendre cette ligne identique à la seconde, tapez R et la correction.
++  2. Démarrez le mode Visuel avec  v  et déplacez le curseur juste devant
++     "premier".
+ 
+-  4. Notez que lorsque vous appuyez <Échap>, le texte qui n'a pas encore été
+-     remplacé reste.
++  3. Tapez  y  pour copier le texte en surbrillance.
+ 
++  4. Déplacez le curseur à la fin de la ligne suivante :   j$
+ 
++  5. Tapez  p  pour coller le texte. Puis tapez :  un second <Échap> .
++
++  6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec  y  ,
++     déplacez vous à la fin de la ligne suivant avec  j$  et collez le texte
++     à cet endroit avec  p .
++
++--->  a) ceci est le premier élément.
++      b)
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       Leçon 6.4 : RÉGLAGE DES OPTIONS
++                       Leçon 6.4 : RÉGLAGE DES OPTIONS
+ 
+ 
+-  ** Réglons une option afin que la recherche et la substitution ignorent la
+-     casse des caractères. **
++    ** Réglons une option afin que la recherche et la substitution ignore la
++       casse des caractères. **
+ 
+-  1. Recherchez 'ignore' en tapant  /ignore .
++  1. Recherchez 'ignore' en tapant :   /ignore <Entrée>
+      Répétez ceci plusieurs fois en utilisant la touche  n .
+ 
+-  2. Activez l'option 'ic' (Ignorer casse) en tapant  :set ic .
++  2. Activez l'option 'ic' (ignorer casse) en tapant  :set ic .
+ 
+-  3. Puis poursuivez votre recherche en utilisant  n .
+-     Répétez cette recherche plusieurs fois avec la touche  n .
++  3. Puis cherchez 'ignore' de nouveau en utilisant  n .
++     Remarquez que Ignore et IGNORE sont maintenant aussi trouvés.
+ 
+   4. Activez les options 'hlsearch' et 'incsearch' avec  :set hls is .
+ 
+   5. Puis recommencez une recherche, et faites bien attention à ce qui se
+-     produit:  /ignore .
++     produit :  /ignore <Entrée>
+ 
+-  6. Pour interrompre la mise en surbrillance des résultats, tapez:
+-     :nohlsearch
++  6. Pour désactiver 'ignorer casse', entrez :  :set noic
+ 
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			     RÉSUMÉ DE LA LEÇON 6
++NOTE : Pour enlever la surbrillance des résultats, entrez :   :nohlsearch
+ 
++NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
++       \c  dans la phrase :   /ignore\c  <Entrée>
+ 
+-  1. Taper  o  ouvre une ligne SOUS le curseur et y place celui-ci en mode
+-     Insertion. Taper un  O  majuscule ouvre une ligne au DESSUS de la ligne
+-     où se trouve le curseur.
+ 
+-  2. Tapez un  a  pour insérer du texte APRÈS le caractère où se trouve le
+-     curseur. Taper un	A  majuscule ajoute du texte automatiquement à la fin
+-     de la ligne.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                             RÉSUMÉ DE LA LEÇON 6
+ 
+-  3. Taper un  R  majuscule active le mode Remplacement jusqu'à ce que la
+-     touche  <Échap>  soit appuyée pour en sortir.
+ 
+-  4. Taper  :set xxx  active l'option 'xxx'.
++  1. Taper  o  ouvre une ligne SOUS le curseur et démarre le mode Insertion.
++     Taper  O  ouvre une ligne au-DESSUS du curseur.
+ 
++  2. Taper  a  pour insérer du texte APRÈS le curseur.
++     Taper  A  pour insérer du texte après la fin de ligne.
+ 
++  3. Taper  e  déplace à la fin du mot.
+ 
++  4. Taper  y  copie du texte,  p  le colle.
+ 
++  5. Taper  R  majuscule active le mode Remplacement jusqu'à ce qu' <Échap>
++     soit appuyé.
+ 
++  6. Taper  ":set xxx"  active l'option "xxx". Quelques options sont :
++        'ic'  'ingnorecase' pour ignorer la casse lors des recherches.
++        'is'  'incsearch'   pour montrer les appariements partiels.
++        'hls' 'hlsearch'    pour mettre en surbrillance les appariements.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		     Leçon 7 : ACCÉDER À L'AIDE EN LIGNE
++                         Leçon 7.1 : OBTENIR DE L'AIDE
+ 
+-		  ** Utiliser le système d'aide en ligne. **
+ 
+-  Vim a un système complet d'aide en ligne.  Pour y accéder, essayez l'une de
+-  ces trois méthodes:
+-	- appuyez la touche <Help> (si vous en avez une)
+-	- appuyez la touche <F1> (si vous en avez une)
+-	- tapez  :help <Entrée>
++                  ** Utiliser le système d'aide en ligne. **
+ 
+-  Tapez  :q <Entrée>  pour fermer la fenêtre d'aide.
++  Vim a un système complet d'aide en ligne. Pour y accéder, essayez l'une de
++  ces trois méthodes :
++        - appuyez la touche <Help> (si vous en avez une)
++        - appuyez la touche <F1> (si vous en avez une)
++        - tapez  :help <Entrée>
++
++
++  Lisez le texte dans la fenêtre d'aide pour savoir comment fonctionne l'aide.
++  Tapez  CTRL-W CTRL-W   pour sauter d'une fenêtre à l'autre.
++  Tapez  :q <Entrée>     pour fermer la fenêtre d'aide.
+ 
+   Vous pouvez accéder à l'aide sur à peu près n'importe quel sujet en donnant
+   des arguments à la commande  :help . Essayez par exemple (n'oubliez pas
+-  d'appuyer sur <Entrée>):
++  d'appuyer sur <Entrée>) :
+ 
+-	:help w
+-	:help c_<T
+-	:help insert-index
+-	:help user-manual
++        :help w
++        :help c_CTRL-D
++        :help c_<T
++        :help insert-index
++        :help user-manual
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		    Leçon 8 : CRÉER UN SCRIPT DE DÉMARRAGE
++                    Leçon 7.2 : CRÉER UN SCRIPT DE DÉMARRAGE
+ 
+-		  ** Activer les fonctionnalités de Vim. **
++                   ** Activer les fonctionnalités de Vim. **
+ 
+   Vim a beaucoup plus de fonctionnalités que Vi, mais la plupart de celles-ci
+-  sont désactivées par défaut.  Pour commencer à les utiliser, vous devez
++  sont désactivées par défaut. Pour commencer à les utiliser, vous devez
+   créer un fichier "vimrc".
+ 
+-  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système:
+-	:edit ~/.vimrc			pour Unix
+-	:edit $VIM/_vimrc		pour MS-Windows
++  1. Commencez à éditer le fichier "vimrc". Ceci dépend de votre système :
++        :edit ~/.vimrc         pour Unix
++        :edit $VIM/_vimrc      pour MS-Windows
+ 
+-  2. Intégrez maintenant le texte du fichier "vimrc" d'exemple:
+-	:read $VIMRUNTIME/vimrc_example.vim
++  2. Lisez maintenant le fichier d'exemple "vimrc" :
++        :r $VIMRUNTIME/vimrc_example.vim
+ 
+-  3. Enregistrez le fichier avec:
+-	:write
++  3. Enregistrez le fichier avec :
++        :w
+ 
+-  La prochaine fois que vous démarrerez Vim, le surlignage syntactique sera
+-  activé. Vous pouvez ajouter tous vos réglages préférés dans ce fichier.
++  La prochaine fois que vous démarrerez Vim, la coloration syntaxique sera
++  activée. Vous pouvez ajouter tous vos réglages préférés dans ce fichier
++  "vimrc". Pour plus d'informations, tapez  :help vimrc-intro
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                            Leçon 7.3 : COMPLÈTEMENT
++
++
++          ** Complètement de ligne de commande avec CTRL-D et <TAB> **
++
++  1. Mettez Vim soit en mode non compatible :   set nocp
++
++  2. Regardez quels fichiers existent dans le répertoire :  !ls  ou  !dir
++
++  3. Tapez le début d'une commande :   :e
++
++  4. Appuyez  CTRL-D  et Vim affichera une liste de commandes qui commencent
++     par "e".
++
++  5. Appuyez  <TAB>  et Vim complétera le nom de la commande :  ":edit"
++
++  6. Ajoutez maintenant un espace et le début d'un fichier existant :
++     :edit  FIC
++
++  7  Appuyez  <TAB>. Vim va compléter le nom (s'il est unique).
++
++NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
++       d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour  :help .
+ 
+-  Ceci conclut le Tutoriel Vim.  Le but était de vous donner un bref aperçu de
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++                              RÉSUMÉ DE LA LEÇON 7
++
++
++  1. Tapez  :help  ou appuyez <F1> ou <Aide> pour ouvrir la fenêtre d'aide.
++
++  2. Tapez  :help cmd  pour trouver l'aide sur  cmd .
++
++  3. Tapez  CTRL-W CTRL-W  pour sauter à une autre fenêtre.
++
++  4. Tapez  :q  pour fermer la fenêtre d'aide.
++
++  5. Créez un script de démarrage vimrc pour conserver vos réglages préférés.
++
++  6. Quand vous tapez une commande  :  appuyez CTRL-D pour voir les
++     complètements possibles. Appuyez <TAB> pour utiliser un complètement.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
+   l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
+-  relativement facilement.  Il est loin d'être complet, vu que Vim a beaucoup
+-  beaucoup plus de commandes.  Un Manuel de l'utilisateur est disponible en
+-  anglais:  :help user-manual .
++  relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
++  beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
++  anglais :  :help user-manual .
+ 
+   Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
+   français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
+-	L'éditeur Vi - Collection Précis et concis - par Arnold Robbins
+-	Éditeur: O'Reilly France
+-	ISBN: 2-84177-102-4
++        L'éditeur Vi - Collection Précis et concis - par Arnold Robbins
++        Éditeur : O'Reilly France
++        ISBN : 2-84177-102-4
+ 
+   Deux livres en anglais sont également mentionnés dans la version originale
+   de ce tutoriel, dont un qui traite spécifiquement de Vim. Merci de vous y
+-  référer si vous êtes intéressé.
++  référer si vous êtes intéressés.
+ 
+   Ce tutoriel a été écrit par Michael C. Pierce et Robert K. Ware de l'École
+   des Mines du Colorado et reprend des idées fournies par Charles Smith,
+-  Universté d'État du Colorado.  E-mail: [email protected].
++  Université d'État du Colorado. E-mail : [email protected].
+ 
+   Modifié pour Vim par Bram Moolenar.
+-
+   Traduit en Français par Adrien Beau, en avril 2001.
+-  E-mail:	[email protected]
+-  Last Change:	2003 May 29
++  Dernières mises à jour par Dominique Pellé.
++
++  E-mail :      [email protected]
++  Last Change : 2010 May 23
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+diff -Nur runtime/tutor/tutor.hu runtime/tutor/tutor.hu
+--- runtime/tutor/tutor.hu	2006-10-09 12:37:11.000000000 -0700
++++ runtime/tutor/tutor.hu	2011-01-18 10:40:56.525145377 -0800
+@@ -1,5 +1,5 @@
+ ===============================================================================
+-=    � d v � z � l j � k   a   V I M   T u t o r b a n  -    1.5-�s  verzi� ===
++== � d v � z � l j � k   a   V I M - o k t a t � b a n  -    1.5-�s  verzi�  ==
+ ===============================================================================
+ 
+      A Vim egy nagyon hat�kony szerkeszt�, amelnyek rengeteg utas�t�sa
+@@ -38,7 +38,7 @@
+   2. Tartsa lenyomva a lefel�t (j), akkor ism�tl�dik!
+ ---> Most tudja, hogyan mehet a k�vetkez� leck�re.
+ 
+-  3. A lefel� fomb haszn�lat�val menjen a 1.2. leck�re!
++  3. A lefel� gomb haszn�lat�val menjen a 1.2. leck�re!
+ 
+ Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
+       norm�l m�dba ker�lj�n, �s ism�telje meg a parancsot!
+@@ -60,8 +60,8 @@
+      Ha menteni szeretn� a v�ltoz�sokat �s kil�pni, �rja:
+ 				:wq  <ENTER>
+ 
+-  3. Amikor a shell promptot l�tja, �rja be a parancsot, amely ebbe a
+-     tutorba hozza:
++  3. Amikor a shell promptot l�tja, �rja be a parancsot, amely ebbe az
++     oktat�ba hozza:
+      Ez val�sz�n�leg:	vimtutor <ENTER>
+      Norm�lis esetben ezt �rn�:	vim tutor.hu <ENTER>
+ 
+@@ -230,7 +230,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 2.5.  lecke: A VISSZAVON�S (UNDO) PARANCS
++		   2.5.  lecke: A VISSZAVON�S (UNDO) PARANCS
+ 
+ 
+ ** u g�pel�s�vel visszavonhat� az utols� parancs, U az eg�sz sort helyre�ll�tja. **
+@@ -245,9 +245,9 @@
+   7. CTRL-R (CTRL gomb lenyom�sa mellett �ss�n R-t) p�rszor csin�lja �jra a
+      visszavont parancsokat (redo)!
+ 
+----> Jav��tsd a hhib�kaat ebbben a sooorban majd �ll�tsa visszaaa az eredetit.
++---> Jav��tsa a hhib�kaat ebbben a sooorban majd �ll�tsa visszaaa az eredetit.
+ 
+-  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke �sszefoglal�j�ra.
++  8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke �sszefoglal�j�ra.
+ 
+ 
+ 
+@@ -257,7 +257,7 @@
+ 
+   1. T�rl�s a kurzort�l a sz� v�g�ig:    dw
+ 
+-  2. T�rl�s a kurzort�l a sz� v�g�ig:    d$
++  2. T�rl�s a kurzort�l a sor v�g�ig:    d$
+ 
+   3. Eg�sz sor t�rl�se:    dd
+ 
+@@ -275,7 +275,7 @@
+      Visszavon�sok visszavon�sa:	     CTRL-R
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 3.1.  lecke: A PUT PARANCS
++		3.1.  lecke: A BEILLESZT�S (PUT) PARANCS
+ 
+ 
+   ** p  le�t�s�vel az utols�nak t�r�ltet a kurzor ut�n illeszhetj�k. **
+@@ -284,8 +284,8 @@
+ 
+   2. dd le�t�s�vel t�r�lj�k a sort �s elt�rol�dik a Vim puffer�ben.
+ 
+-  3. Mozgassuk a kurzort AF�L� a sor f�l�, ahov� mozgatni szeretn�nk a
+-     t�r�lt sort.
++  3. Mozgassuk a kurzort azel�tt a  sor EL�TTI sorba, ahov� mozgatni
++     szeretn�nk a t�r�lt sort.
+ 
+   4. Norm�l m�dban �rjunk  p   bet�t a t�r�lt sor beilleszt�s�hez.
+ 
+@@ -299,7 +299,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       3.2.  lecke: A REPLACE PARANCS
++		       3.2.  lecke: AZ �T�R�S (REPLACE) PARANCS
+ 
+ 
+ ** r  �s  a karakterek le�t�s�vel a kurzor alatti karaktert megv�ltoztatjuk. **
+@@ -321,7 +321,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			3.3.  lecke: A CHANGE PARANCS
++			3.3.  lecke: A CSERE (CHANGE) PARANCS
+ 
+ 
+ 	   ** A sz� egy r�sz�nek megv�ltoztat�s�hoz �rjuk:  cw . **
+@@ -415,7 +415,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			4.2.  lecke: A SEARCH PARANCS
++			4.2.  lecke: A KERES�S (SEARCH) PARANCS
+ 
+ 
+   ** / majd a k�v�nt kifejez�s be�r�s�val kereshetj�k meg a kifejez�st. **
+@@ -459,7 +459,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      4.4.  lecke: A HIB�K KIJAV�T�S�NAK EGY M�DJA
++		  4.4.  lecke: A HIB�K KIJAV�T�S�NAK EGY M�DJA
+ 
+ 
+     ** :s/�j/r�gi/g beg�pel�s�vel az '�j'-ra cser�lj�k a 'r�gi'-t. **
+@@ -470,10 +470,10 @@
+      sorban.
+ 
+   3. Most ezt �rjuk:	 :s/eggy/egg/g	   amely glob�lisan helyettes�t
+-     a sorban.
++     a sorban, azaz minden el�fordul�st.
+      Ez a sorban minden el�fordul�st helyettes�t.
+ 
+----> eggy hegy meggy, szembe j�n eggy m�sik heggy.
++---> eggy heggy meggy, szembe j�n eggy m�sik heggy.
+ 
+   4. K�t sor k�z�tt a karaktersor minden el�fordul�s�nak helyettes�t�se:
+      :#,#s/r�gi/�j/g    ahol #,# a k�t sor sorsz�ma.
+@@ -530,7 +530,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      5.2.  lecke: B�VEBBEN A F�JLOK �R�S�R�L
++		 5.2.  lecke: B�VEBBEN A F�JLOK �R�S�R�L
+ 
+ 
+      ** A f�jlok v�ltoz�sait �gy �rhatjuk ki  :w F�JLN�V. **
+@@ -542,12 +542,12 @@
+ 
+   3. �rja:	:w TESZT   (ahol TESZT a v�lasztott f�jln�v)!
+ 
+-  4. Ez elmenti a teljes f�jlt (a Vim Tutort) TESZT n�ven.
++  4. Ez elmenti a teljes f�jlt (a Vim oktat�j�t) TESZT n�ven.
+      Ellen�rz�sk�pp �rjuk ism�t    :!dir   hogy l�ssuk a k�nyvt�rat!
+      (Felfel� gombbal : ut�n az el�z� utas�t�sok visszahozhat�ak.)
+ 
+ Megj: Ha �n kil�pne a Vimb�l �s �s visszat�rne a TESZT f�jln�vvel, akkor a
+-      f�jl a tutor ment�skori pontos m�solata lenne.
++      f�jl az oktat� ment�skori pontos m�solata lenne.
+ 
+   5. T�vol�tsa el a f�jlt  (MS-DOS):	:!del TESZT
+ 			vagy (Unix):	:!rm TESZT
+@@ -626,7 +626,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 6.1.  lecke: A OPEN PARANCS
++		   6.1.  lecke: A MEGNYIT�S (OPEN) PARANCS
+ 
+ 
+ ** o  be�r�s�val nyithat egy �j sort a kurzor alatt �s v�lthat besz�r� m�dba **
+@@ -684,16 +684,17 @@
+ 
+   1. Mozgassuk a kurzort az els� ---> kezdet� sorra!
+ 
+-  2. Place the cursor at the beginning of the first word that is different
+-     from the second line marked ---> (the word 'last').
++  2. Helyezze a kurzort az els� sz� elej�re amely elt�r a m�sodik
++     ---> kezdet� sor tartalm�t�l (a 'az utols�val' r�szt�l).
+ 
+-  3. Now type  R  and replace the remainder of the text on the first line by
+-     typing over the old text to make the first line the same as the second.
++  3. Nyomjon R karaktert �s �rja �t a sz�veg marad�k�t az els� sorban
++     �gy, hogy a  k�t sor egyez� legyen.
+ 
+----> To make the first line the same as the last on this page use the keys.
+----> To make the first line the same as the second, type R and the new text.
++---> Az els� sort tegye azonoss� az utols�val: haszn�lja a gombokat.
++---> Az els� sort tegye azonoss� a m�sodikkal: �rjon R-t �s az �j sz�veget.
+ 
+-  4. Note that when you press <ESC> to exit, any unaltered text remains.
++  4. Jegyezz�k meg, ha <ESC>-et nyomok, akkor a v�ltozatlanuk hagyott
++     sz�vegek v�ltozatlanok maradnak.
+ 
+ 
+ 
+@@ -726,16 +727,16 @@
+ 			       6. LECKE �SSZEFOGLAL�JA
+ 
+ 
+-  1. Typing  o	opens a line BELOW the cursor and places the cursor on the open
+-     line in Insert mode.
+-     Typing a capital  O  opens the line ABOVE the line the cursor is on.
++  1. o	be�r�s�val �j sort nyitunk meg a sor ALATT �s a kurzor az �j
++     sorban lesz besz�r�s-m�dban.
++     Nagy  O  a sor FELETT nyit �j sort, �s oda ker�l a kurzor.
+ 
+-  2. Type an  a  to insert text AFTER the character the cursor is on.
+-     Typing a capital  A  automatically appends text to the end of the line.
++  2. a  be�r�s�val az aktu�lis karaktert�l UT�N (jobbra) sz�rhatunk be sz�veget.
++     Nagy A  automatikusan a sor legv�g�hez adja hozz� a sz�veget.
+ 
+-  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
++  3. A nagy  R  be�t�s�vel �t�r� (replace) m�dba ker�l�nk  <ESC> lenyom�s�ig.
+ 
+-  4. Typing ":set xxx" sets the option "xxx"
++  4. ":set xxx" be�r�s�val az "xxx" opci� �ll�that� be.
+ 
+ 
+ 
+@@ -746,7 +747,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       7. lecke: ON-LINE HELP PARANCSOK
++		     7. lecke: AZ ON-LINE S�G� PARANCSAI
+ 
+ 
+ 		    ** Az online s�g�rendszer haszn�lata **
+@@ -801,8 +802,9 @@
+   tud�knak: ":help user-manual". (egyel�re nem tud magyarul)
+ 
+   Tov�bbi magyar olvasnival�k �rhet�ek el az al�bbi oldalr�l.
+-  http://ubuntu.hu/index.php?title=Vim
++  http://wiki.hup.hu/index.php/Vim
+ 
++  Angol olvasm�nyok:
+   For further reading and studying, this book is recommended:
+ 	Vim - Vi Improved - by Steve Oualline
+ 	Publisher: New Riders
+@@ -816,8 +818,13 @@
+   It is a good book to get to know almost anything you want to do with Vi.
+   The sixth edition also includes information on Vim.
+ 
+-  This tutorial was written by Michael C. Pierce and Robert K. Ware,
+-  Colorado School of Mines using ideas supplied by Charles Smith,
+-  Colorado State University.  E-mail: [email protected].
++  Ezt az oktat�t Michael C. Pierce �s Robert K. Ware �rta, a Colorado
++  School of Mines dolgoz�i Charles Smith (Colorado State University)
++  t�mogat�s�val.
++
++  E-mail: [email protected].
++
++  A Vimhez idom�totta Bram Moolenaar.
++
++  Magyar�totta: Horv�th �rp�d <[email protected]>, 2006-2008
+ 
+-  Modified for Vim by Bram Moolenaar.
+diff -Nur runtime/tutor/tutor.hu.cp1250 runtime/tutor/tutor.hu.cp1250
+--- runtime/tutor/tutor.hu.cp1250	2008-01-18 11:51:48.000000000 -0800
++++ runtime/tutor/tutor.hu.cp1250	2011-01-18 10:40:56.525972594 -0800
+@@ -1,5 +1,5 @@
+ ===============================================================================
+-=    � d v � z � l j � k   a   V I M   T u t o r b a n  -    1.5-�s  verzi� ===
++== � d v � z � l j � k   a   V I M - o k t a t � b a n  -    1.5-�s  verzi�  ==
+ ===============================================================================
+ 
+      A Vim egy nagyon hat�kony szerkeszt�, amelnyek rengeteg utas�t�sa
+@@ -38,7 +38,7 @@
+   2. Tartsa lenyomva a lefel�t (j), akkor ism�tl�dik!
+ ---> Most tudja, hogyan mehet a k�vetkez� leck�re.
+ 
+-  3. A lefel� fomb haszn�lat�val menjen a 1.2. leck�re!
++  3. A lefel� gomb haszn�lat�val menjen a 1.2. leck�re!
+ 
+ Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
+       norm�l m�dba ker�lj�n, �s ism�telje meg a parancsot!
+@@ -60,8 +60,8 @@
+      Ha menteni szeretn� a v�ltoz�sokat �s kil�pni, �rja:
+ 				:wq  <ENTER>
+ 
+-  3. Amikor a shell promptot l�tja, �rja be a parancsot, amely ebbe a
+-     tutorba hozza:
++  3. Amikor a shell promptot l�tja, �rja be a parancsot, amely ebbe az
++     oktat�ba hozza:
+      Ez val�sz�n�leg:	vimtutor <ENTER>
+      Norm�lis esetben ezt �rn�:	vim tutor.hu <ENTER>
+ 
+@@ -230,7 +230,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 2.5.  lecke: A VISSZAVON�S (UNDO) PARANCS
++		   2.5.  lecke: A VISSZAVON�S (UNDO) PARANCS
+ 
+ 
+ ** u g�pel�s�vel visszavonhat� az utols� parancs, U az eg�sz sort helyre�ll�tja. **
+@@ -245,9 +245,9 @@
+   7. CTRL-R (CTRL gomb lenyom�sa mellett �ss�n R-t) p�rszor csin�lja �jra a
+      visszavont parancsokat (redo)!
+ 
+----> Jav��tsd a hhib�kaat ebbben a sooorban majd �ll�tsa visszaaa az eredetit.
++---> Jav��tsa a hhib�kaat ebbben a sooorban majd �ll�tsa visszaaa az eredetit.
+ 
+-  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke �sszefoglal�j�ra.
++  8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke �sszefoglal�j�ra.
+ 
+ 
+ 
+@@ -257,7 +257,7 @@
+ 
+   1. T�rl�s a kurzort�l a sz� v�g�ig:    dw
+ 
+-  2. T�rl�s a kurzort�l a sz� v�g�ig:    d$
++  2. T�rl�s a kurzort�l a sor v�g�ig:    d$
+ 
+   3. Eg�sz sor t�rl�se:    dd
+ 
+@@ -275,7 +275,7 @@
+      Visszavon�sok visszavon�sa:	     CTRL-R
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 3.1.  lecke: A PUT PARANCS
++		3.1.  lecke: A BEILLESZT�S (PUT) PARANCS
+ 
+ 
+   ** p  le�t�s�vel az utols�nak t�r�ltet a kurzor ut�n illeszhetj�k. **
+@@ -284,8 +284,8 @@
+ 
+   2. dd le�t�s�vel t�r�lj�k a sort �s elt�rol�dik a Vim puffer�ben.
+ 
+-  3. Mozgassuk a kurzort AF�L� a sor f�l�, ahov� mozgatni szeretn�nk a
+-     t�r�lt sort.
++  3. Mozgassuk a kurzort azel�tt a  sor EL�TTI sorba, ahov� mozgatni
++     szeretn�nk a t�r�lt sort.
+ 
+   4. Norm�l m�dban �rjunk  p   bet�t a t�r�lt sor beilleszt�s�hez.
+ 
+@@ -299,7 +299,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       3.2.  lecke: A REPLACE PARANCS
++		       3.2.  lecke: AZ �T�R�S (REPLACE) PARANCS
+ 
+ 
+ ** r  �s  a karakterek le�t�s�vel a kurzor alatti karaktert megv�ltoztatjuk. **
+@@ -321,7 +321,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			3.3.  lecke: A CHANGE PARANCS
++			3.3.  lecke: A CSERE (CHANGE) PARANCS
+ 
+ 
+ 	   ** A sz� egy r�sz�nek megv�ltoztat�s�hoz �rjuk:  cw . **
+@@ -415,7 +415,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			4.2.  lecke: A SEARCH PARANCS
++			4.2.  lecke: A KERES�S (SEARCH) PARANCS
+ 
+ 
+   ** / majd a k�v�nt kifejez�s be�r�s�val kereshetj�k meg a kifejez�st. **
+@@ -459,7 +459,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      4.4.  lecke: A HIB�K KIJAV�T�S�NAK EGY M�DJA
++		  4.4.  lecke: A HIB�K KIJAV�T�S�NAK EGY M�DJA
+ 
+ 
+     ** :s/�j/r�gi/g beg�pel�s�vel az '�j'-ra cser�lj�k a 'r�gi'-t. **
+@@ -470,10 +470,10 @@
+      sorban.
+ 
+   3. Most ezt �rjuk:	 :s/eggy/egg/g	   amely glob�lisan helyettes�t
+-     a sorban.
++     a sorban, azaz minden el�fordul�st.
+      Ez a sorban minden el�fordul�st helyettes�t.
+ 
+----> eggy hegy meggy, szembe j�n eggy m�sik heggy.
++---> eggy heggy meggy, szembe j�n eggy m�sik heggy.
+ 
+   4. K�t sor k�z�tt a karaktersor minden el�fordul�s�nak helyettes�t�se:
+      :#,#s/r�gi/�j/g    ahol #,# a k�t sor sorsz�ma.
+@@ -530,7 +530,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      5.2.  lecke: B�VEBBEN A F�JLOK �R�S�R�L
++		 5.2.  lecke: B�VEBBEN A F�JLOK �R�S�R�L
+ 
+ 
+      ** A f�jlok v�ltoz�sait �gy �rhatjuk ki  :w F�JLN�V. **
+@@ -542,12 +542,12 @@
+ 
+   3. �rja:	:w TESZT   (ahol TESZT a v�lasztott f�jln�v)!
+ 
+-  4. Ez elmenti a teljes f�jlt (a Vim Tutort) TESZT n�ven.
++  4. Ez elmenti a teljes f�jlt (a Vim oktat�j�t) TESZT n�ven.
+      Ellen�rz�sk�pp �rjuk ism�t    :!dir   hogy l�ssuk a k�nyvt�rat!
+      (Felfel� gombbal : ut�n az el�z� utas�t�sok visszahozhat�ak.)
+ 
+ Megj: Ha �n kil�pne a Vimb�l �s �s visszat�rne a TESZT f�jln�vvel, akkor a
+-      f�jl a tutor ment�skori pontos m�solata lenne.
++      f�jl az oktat� ment�skori pontos m�solata lenne.
+ 
+   5. T�vol�tsa el a f�jlt  (MS-DOS):	:!del TESZT
+ 			vagy (Unix):	:!rm TESZT
+@@ -626,7 +626,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 6.1.  lecke: A OPEN PARANCS
++		   6.1.  lecke: A MEGNYIT�S (OPEN) PARANCS
+ 
+ 
+ ** o  be�r�s�val nyithat egy �j sort a kurzor alatt �s v�lthat besz�r� m�dba **
+@@ -684,16 +684,17 @@
+ 
+   1. Mozgassuk a kurzort az els� ---> kezdet� sorra!
+ 
+-  2. Place the cursor at the beginning of the first word that is different
+-     from the second line marked ---> (the word 'last').
++  2. Helyezze a kurzort az els� sz� elej�re amely elt�r a m�sodik
++     ---> kezdet� sor tartalm�t�l (a 'az utols�val' r�szt�l).
+ 
+-  3. Now type  R  and replace the remainder of the text on the first line by
+-     typing over the old text to make the first line the same as the second.
++  3. Nyomjon R karaktert �s �rja �t a sz�veg marad�k�t az els� sorban
++     �gy, hogy a  k�t sor egyez� legyen.
+ 
+----> To make the first line the same as the last on this page use the keys.
+----> To make the first line the same as the second, type R and the new text.
++---> Az els� sort tegye azonoss� az utols�val: haszn�lja a gombokat.
++---> Az els� sort tegye azonoss� a m�sodikkal: �rjon R-t �s az �j sz�veget.
+ 
+-  4. Note that when you press <ESC> to exit, any unaltered text remains.
++  4. Jegyezz�k meg, ha <ESC>-et nyomok, akkor a v�ltozatlanuk hagyott
++     sz�vegek v�ltozatlanok maradnak.
+ 
+ 
+ 
+@@ -726,16 +727,16 @@
+ 			       6. LECKE �SSZEFOGLAL�JA
+ 
+ 
+-  1. Typing  o	opens a line BELOW the cursor and places the cursor on the open
+-     line in Insert mode.
+-     Typing a capital  O  opens the line ABOVE the line the cursor is on.
++  1. o	be�r�s�val �j sort nyitunk meg a sor ALATT �s a kurzor az �j
++     sorban lesz besz�r�s-m�dban.
++     Nagy  O  a sor FELETT nyit �j sort, �s oda ker�l a kurzor.
+ 
+-  2. Type an  a  to insert text AFTER the character the cursor is on.
+-     Typing a capital  A  automatically appends text to the end of the line.
++  2. a  be�r�s�val az aktu�lis karaktert�l UT�N (jobbra) sz�rhatunk be sz�veget.
++     Nagy A  automatikusan a sor legv�g�hez adja hozz� a sz�veget.
+ 
+-  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
++  3. A nagy  R  be�t�s�vel �t�r� (replace) m�dba ker�l�nk  <ESC> lenyom�s�ig.
+ 
+-  4. Typing ":set xxx" sets the option "xxx"
++  4. ":set xxx" be�r�s�val az "xxx" opci� �ll�that� be.
+ 
+ 
+ 
+@@ -746,7 +747,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       7. lecke: ON-LINE HELP PARANCSOK
++		     7. lecke: AZ ON-LINE S�G� PARANCSAI
+ 
+ 
+ 		    ** Az online s�g�rendszer haszn�lata **
+@@ -801,8 +802,9 @@
+   tud�knak: ":help user-manual". (egyel�re nem tud magyarul)
+ 
+   Tov�bbi magyar olvasnival�k �rhet�ek el az al�bbi oldalr�l.
+-  http://ubuntu.hu/index.php?title=Vim
++  http://wiki.hup.hu/index.php/Vim
+ 
++  Angol olvasm�nyok:
+   For further reading and studying, this book is recommended:
+ 	Vim - Vi Improved - by Steve Oualline
+ 	Publisher: New Riders
+@@ -816,8 +818,13 @@
+   It is a good book to get to know almost anything you want to do with Vi.
+   The sixth edition also includes information on Vim.
+ 
+-  This tutorial was written by Michael C. Pierce and Robert K. Ware,
+-  Colorado School of Mines using ideas supplied by Charles Smith,
+-  Colorado State University.  E-mail: [email protected].
++  Ezt az oktat�t Michael C. Pierce �s Robert K. Ware �rta, a Colorado
++  School of Mines dolgoz�i Charles Smith (Colorado State University)
++  t�mogat�s�val.
++
++  E-mail: [email protected].
++
++  A Vimhez idom�totta Bram Moolenaar.
++
++  Magyar�totta: Horv�th �rp�d <[email protected]>, 2006-2008
+ 
+-  Modified for Vim by Bram Moolenaar.
+diff -Nur runtime/tutor/tutor.hu.utf-8 runtime/tutor/tutor.hu.utf-8
+--- runtime/tutor/tutor.hu.utf-8	2006-10-06 11:00:07.000000000 -0700
++++ runtime/tutor/tutor.hu.utf-8	2011-01-18 10:40:56.526592217 -0800
+@@ -1,5 +1,5 @@
+ ===============================================================================
+-=    Ü d v ö z ö l j ü k   a   V I M   T u t o r b a n  -    1.5-ös  verzió ===
++== Ü d v ö z ö l j ü k   a   V I M - o k t a t ó b a n  -    1.5-ös  verzió  ==
+ ===============================================================================
+ 
+      A Vim egy nagyon hatékony szerkesztő, amelnyek rengeteg utasítása
+@@ -38,7 +38,7 @@
+   2. Tartsa lenyomva a lefelét (j), akkor ismétlődik!
+ ---> Most tudja, hogyan mehet a következő leckére.
+ 
+-  3. A lefelé fomb használatával menjen a 1.2. leckére!
++  3. A lefelé gomb használatával menjen a 1.2. leckére!
+ 
+ Megj: Ha nem biztos benne, mit nyomott meg, nyomja meg az <ESC>-et, hogy
+       normál módba kerüljön, és ismételje meg a parancsot!
+@@ -60,8 +60,8 @@
+      Ha menteni szeretné a változásokat és kilépni, írja:
+ 				:wq  <ENTER>
+ 
+-  3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe a
+-     tutorba hozza:
++  3. Amikor a shell promptot látja, írja be a parancsot, amely ebbe az
++     oktatóba hozza:
+      Ez valószínűleg:	vimtutor <ENTER>
+      Normális esetben ezt írná:	vim tutor.hu <ENTER>
+ 
+@@ -230,7 +230,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 2.5.  lecke: A VISSZAVONÁS (UNDO) PARANCS
++		   2.5.  lecke: A VISSZAVONÁS (UNDO) PARANCS
+ 
+ 
+ ** u gépelésével visszavonható az utolsó parancs, U az egész sort helyreállítja. **
+@@ -245,9 +245,9 @@
+   7. CTRL-R (CTRL gomb lenyomása mellett üssön R-t) párszor csinálja újra a
+      visszavont parancsokat (redo)!
+ 
+----> Javíítsd a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit.
++---> Javíítsa a hhibákaat ebbben a sooorban majd állítsa visszaaa az eredetit.
+ 
+-  8. Ezek nagyon hasznos parancsok. Most ugarjon a 2. lecke összefoglalójára.
++  8. Ezek nagyon hasznos parancsok. Most ugorjon a 2. lecke összefoglalójára.
+ 
+ 
+ 
+@@ -257,7 +257,7 @@
+ 
+   1. Törlés a kurzortól a szó végéig:    dw
+ 
+-  2. Törlés a kurzortól a szó végéig:    d$
++  2. Törlés a kurzortól a sor végéig:    d$
+ 
+   3. Egész sor törlése:    dd
+ 
+@@ -275,7 +275,7 @@
+      Visszavonások visszavonása:	     CTRL-R
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 3.1.  lecke: A PUT PARANCS
++		3.1.  lecke: A BEILLESZTÉS (PUT) PARANCS
+ 
+ 
+   ** p  leütésével az utolsónak töröltet a kurzor után illeszhetjük. **
+@@ -284,8 +284,8 @@
+ 
+   2. dd leütésével töröljük a sort és eltérolódik a Vim pufferében.
+ 
+-  3. Mozgassuk a kurzort AFÖLÉ a sor fölé, ahová mozgatni szeretnénk a
+-     törölt sort.
++  3. Mozgassuk a kurzort azelőtt a  sor ELŐTTI sorba, ahová mozgatni
++     szeretnénk a törölt sort.
+ 
+   4. Normál módban írjunk  p   betűt a törölt sor beillesztéséhez.
+ 
+@@ -299,7 +299,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       3.2.  lecke: A REPLACE PARANCS
++		       3.2.  lecke: AZ ÁTÍRÁS (REPLACE) PARANCS
+ 
+ 
+ ** r  és  a karakterek leütésével a kurzor alatti karaktert megváltoztatjuk. **
+@@ -321,7 +321,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			3.3.  lecke: A CHANGE PARANCS
++			3.3.  lecke: A CSERE (CHANGE) PARANCS
+ 
+ 
+ 	   ** A szó egy részének megváltoztatásához írjuk:  cw . **
+@@ -415,7 +415,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			4.2.  lecke: A SEARCH PARANCS
++			4.2.  lecke: A KERESÉS (SEARCH) PARANCS
+ 
+ 
+   ** / majd a kívánt kifejezés beírásával kereshetjük meg a kifejezést. **
+@@ -459,7 +459,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      4.4.  lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA
++		  4.4.  lecke: A HIBÁK KIJAVÍTÁSÁNAK EGY MÓDJA
+ 
+ 
+     ** :s/új/régi/g begépelésével az 'új'-ra cseréljük a 'régi'-t. **
+@@ -470,10 +470,10 @@
+      sorban.
+ 
+   3. Most ezt írjuk:	 :s/eggy/egg/g	   amely globálisan helyettesít
+-     a sorban.
++     a sorban, azaz minden előfordulást.
+      Ez a sorban minden előfordulást helyettesít.
+ 
+----> eggy hegy meggy, szembe jön eggy másik heggy.
++---> eggy heggy meggy, szembe jön eggy másik heggy.
+ 
+   4. Két sor között a karaktersor minden előfordulásának helyettesítése:
+      :#,#s/régi/új/g    ahol #,# a két sor sorszáma.
+@@ -530,7 +530,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		      5.2.  lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL
++		 5.2.  lecke: BŐVEBBEN A FÁJLOK ÍRÁSÁRÓL
+ 
+ 
+      ** A fájlok változásait így írhatjuk ki  :w FÁJLNÉV. **
+@@ -542,12 +542,12 @@
+ 
+   3. Írja:	:w TESZT   (ahol TESZT a választott fájlnév)!
+ 
+-  4. Ez elmenti a teljes fájlt (a Vim Tutort) TESZT néven.
++  4. Ez elmenti a teljes fájlt (a Vim oktatóját) TESZT néven.
+      Ellenőrzésképp írjuk ismét    :!dir   hogy lássuk a könyvtárat!
+      (Felfelé gombbal : után az előző utasítások visszahozhatóak.)
+ 
+ Megj: Ha Ön kilépne a Vimből és és visszatérne a TESZT fájlnévvel, akkor a
+-      fájl a tutor mentéskori pontos másolata lenne.
++      fájl az oktató mentéskori pontos másolata lenne.
+ 
+   5. Távolítsa el a fájlt  (MS-DOS):	:!del TESZT
+ 			vagy (Unix):	:!rm TESZT
+@@ -626,7 +626,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			 6.1.  lecke: A OPEN PARANCS
++		   6.1.  lecke: A MEGNYITÁS (OPEN) PARANCS
+ 
+ 
+ ** o  beírásával nyithat egy új sort a kurzor alatt és válthat beszúró módba **
+@@ -684,16 +684,17 @@
+ 
+   1. Mozgassuk a kurzort az első ---> kezdetű sorra!
+ 
+-  2. Place the cursor at the beginning of the first word that is different
+-     from the second line marked ---> (the word 'last').
++  2. Helyezze a kurzort az első szó elejére amely eltér a második
++     ---> kezdetű sor tartalmától (a 'az utolsóval' résztől).
+ 
+-  3. Now type  R  and replace the remainder of the text on the first line by
+-     typing over the old text to make the first line the same as the second.
++  3. Nyomjon R karaktert és írja ét a szöveg maradékát az első sorban
++     úgy, hogy a  két sor egyező legyen.
+ 
+----> To make the first line the same as the last on this page use the keys.
+----> To make the first line the same as the second, type R and the new text.
++---> Az első sort tegye azonossá az utolsóval: használja a gombokat.
++---> Az első sort tegye azonossá a másodikkal: írjon R-t és az új szöveget.
+ 
+-  4. Note that when you press <ESC> to exit, any unaltered text remains.
++  4. Jegyezzük meg, ha <ESC>-et nyomok, akkor a változatlanuk hagyott
++     szövegek változatlanok maradnak.
+ 
+ 
+ 
+@@ -726,16 +727,16 @@
+ 			       6. LECKE ÖSSZEFOGLALÓJA
+ 
+ 
+-  1. Typing  o	opens a line BELOW the cursor and places the cursor on the open
+-     line in Insert mode.
+-     Typing a capital  O  opens the line ABOVE the line the cursor is on.
++  1. o	beírásával új sort nyitunk meg a sor ALATT és a kurzor az új
++     sorban lesz beszúrás-módban.
++     Nagy  O  a sor FELETT nyit új sort, és oda kerül a kurzor.
+ 
+-  2. Type an  a  to insert text AFTER the character the cursor is on.
+-     Typing a capital  A  automatically appends text to the end of the line.
++  2. a  beírásával az aktuális karaktertől UTÁN (jobbra) szúrhatunk be szöveget.
++     Nagy A  automatikusan a sor legvégéhez adja hozzá a szöveget.
+ 
+-  3. Typing a capital  R  enters Replace mode until  <ESC>  is pressed to exit.
++  3. A nagy  R  beütésével átíró (replace) módba kerülünk  <ESC> lenyomásáig.
+ 
+-  4. Typing ":set xxx" sets the option "xxx"
++  4. ":set xxx" beírásával az "xxx" opció állítható be.
+ 
+ 
+ 
+@@ -746,7 +747,7 @@
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		       7. lecke: ON-LINE HELP PARANCSOK
++		     7. lecke: AZ ON-LINE SÚGÓ PARANCSAI
+ 
+ 
+ 		    ** Az online súgórendszer használata **
+@@ -801,8 +802,9 @@
+   tudóknak: ":help user-manual". (egyelőre nem tud magyarul)
+ 
+   További magyar olvasnivalók érhetőek el az alábbi oldalról.
+-  http://ubuntu.hu/index.php?title=Vim
++  http://wiki.hup.hu/index.php/Vim
+ 
++  Angol olvasmányok:
+   For further reading and studying, this book is recommended:
+ 	Vim - Vi Improved - by Steve Oualline
+ 	Publisher: New Riders
+@@ -816,8 +818,13 @@
+   It is a good book to get to know almost anything you want to do with Vi.
+   The sixth edition also includes information on Vim.
+ 
+-  This tutorial was written by Michael C. Pierce and Robert K. Ware,
+-  Colorado School of Mines using ideas supplied by Charles Smith,
+-  Colorado State University.  E-mail: [email protected].
++  Ezt az oktatót Michael C. Pierce és Robert K. Ware írta, a Colorado
++  School of Mines dolgozói Charles Smith (Colorado State University)
++  támogatásával.
++
++  E-mail: [email protected].
++
++  A Vimhez idomította Bram Moolenaar.
++
++  Magyarította: Horváth Árpád <[email protected]>, 2006-2008
+ 
+-  Modified for Vim by Bram Moolenaar.
+Files vim72/runtime/tutor/tutor.info and ../../../vim-hg/runtime/tutor/tutor.info differ
+diff -Nur runtime/tutor/tutor.it runtime/tutor/tutor.it
+--- runtime/tutor/tutor.it	2006-11-27 12:45:51.000000000 -0800
++++ runtime/tutor/tutor.it	2011-01-18 10:40:56.527978597 -0800
+@@ -288,7 +288,7 @@
+ 
+   2. Batti  d2w  per cancellare le due parole MAIUSCOLE
+ 
+-  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare la parole
++  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare le parole
+      MAIUSCOLE consecutive con un solo comando
+ 
+ --->  questa ABC DE linea FGHI JK LMN OP di parole � Q RS TUV ora ripulita.
+diff -Nur runtime/tutor/tutor.it.utf-8 runtime/tutor/tutor.it.utf-8
+--- runtime/tutor/tutor.it.utf-8	2008-06-21 11:19:49.000000000 -0700
++++ runtime/tutor/tutor.it.utf-8	2011-01-18 10:40:56.528692336 -0800
+@@ -288,7 +288,7 @@
+ 
+   2. Batti  d2w  per cancellare le due parole MAIUSCOLE
+ 
+-  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare la parole
++  3. Ripeti i passi 1 e 2 con un contatore diverso per cancellare le parole
+      MAIUSCOLE consecutive con un solo comando
+ 
+ --->  questa ABC DE linea FGHI JK LMN OP di parole è Q RS TUV ora ripulita.
+diff -Nur runtime/tutor/tutor.ja.euc runtime/tutor/tutor.ja.euc
+--- runtime/tutor/tutor.ja.euc	2006-02-20 13:27:09.000000000 -0800
++++ runtime/tutor/tutor.ja.euc	2011-01-18 10:40:56.529481750 -0800
+@@ -257,7 +257,7 @@
+ 
+       ** �����Ԥ����������֤��Υ⡼���������˿��ͤ򥿥��פ��ޤ��� **
+ 
+-  1. �ʲ��� ---> �ȼ����줿�Ȥ���Ƭ�˥���������ư���ޤ���
++  1. �ʲ��� ---> �ȼ����줿�Ԥ���Ƭ�˥���������ư���ޤ���
+ 
+   2. 2dw �򥿥��פ���ñ��2��ʬ��ư���ޤ���
+ 
+@@ -741,7 +741,7 @@
+ 
+       ** ��������μ��ΰ��֤���ƥ����Ȥ��ɲä���ˤ� a �ȥ����פ��ޤ� **
+ 
+-  1. ��������� ---> �Ǽ����줿�Ȥذ�ư���ޤ��礦��
++  1. ��������� ---> �Ǽ����줿�Ԥذ�ư���ޤ��礦��
+ 
+   2. e �򲡤��� li �ν�ü���ޤǥ���������ư���ޤ���
+ 
+@@ -764,7 +764,7 @@
+ 
+ 	  ** 1ʸ���ʾ���֤�������ˤ���ʸ���� R �ȥ����פ��ޤ��礦 **
+ 
+-  1. �ʲ��� ---> �ȼ����줿�Ȥ˥���������ư���ޤ����ǽ�� xxx ����Ƭ�˰�ư��
++  1. �ʲ��� ---> �ȼ����줿�Ԥ˥���������ư���ޤ����ǽ�� xxx ����Ƭ�˰�ư��
+      �ޤ���
+ 
+   2. R �򲡤��ơ�2���ܤο��ͤ򥿥��פ��뤳�Ȥǡ�xxx ���ִ�����ޤ���
+diff -Nur runtime/tutor/tutor.ja.sjis runtime/tutor/tutor.ja.sjis
+--- runtime/tutor/tutor.ja.sjis	2006-02-20 13:27:09.000000000 -0800
++++ runtime/tutor/tutor.ja.sjis	2011-01-18 10:40:56.530316654 -0800
+@@ -257,7 +257,7 @@
+ 
+       ** ������s�������J��Ԃ��̃��[�V�����̑O�ɐ��l���^�C�v���܂��B **
+ 
+-  1. �ȉ��� ---> �Ǝ����ꂽ�Ƃ̐擪�ɃJ�[�\�����ړ����܂��B
++  1. �ȉ��� ---> �Ǝ����ꂽ�s�̐擪�ɃJ�[�\�����ړ����܂��B
+ 
+   2. 2dw ���^�C�v���ĒP��2�•��ړ����܂��B
+ 
+@@ -741,7 +741,7 @@
+ 
+       ** �J�[�\���̎��̈ʒu����e�L�X�g��lj�����ɂ� a �ƃ^�C�v���܂� **
+ 
+-  1. �J�[�\���� ---> �Ŏ����ꂽ�Ƃֈړ����܂��傤�B
++  1. �J�[�\���� ---> �Ŏ����ꂽ�s�ֈړ����܂��傤�B
+ 
+   2. e �������� li �̏I�[���܂ŃJ�[�\�����ړ����܂��B
+ 
+@@ -764,7 +764,7 @@
+ 
+ 	  ** 1�����ȏ��u��������ɂ͑啶���� R �ƃ^�C�v���܂��傤 **
+ 
+-  1. �ȉ��� ---> �Ǝ����ꂽ�ƂɃJ�[�\�����ړ����܂��B�ŏ��� xxx �̐擪�Ɉړ���
++  1. �ȉ��� ---> �Ǝ����ꂽ�s�ɃJ�[�\�����ړ����܂��B�ŏ��� xxx �̐擪�Ɉړ���
+      �܂��B
+ 
+   2. R �������āA2�s�ڂ̐��l���^�C�v���邱�ƂŁAxxx ���u������܂��B
+diff -Nur runtime/tutor/tutor.ja.utf-8 runtime/tutor/tutor.ja.utf-8
+--- runtime/tutor/tutor.ja.utf-8	2006-02-17 02:40:38.000000000 -0800
++++ runtime/tutor/tutor.ja.utf-8	2011-01-18 10:40:56.531172007 -0800
+@@ -257,7 +257,7 @@
+ 
+       ** 何回も行いたい繰り返しのモーションの前に数値をタイプします。 **
+ 
+-  1. 以下の ---> と示された業の先頭にカーソルを移動します。
++  1. 以下の ---> と示された行の先頭にカーソルを移動します。
+ 
+   2. 2dw をタイプして単語2つ分移動します。
+ 
+@@ -741,7 +741,7 @@
+ 
+       ** カーソルの次の位置からテキストを追加するには a とタイプします **
+ 
+-  1. カーソルを ---> で示された業へ移動しましょう。
++  1. カーソルを ---> で示された行へ移動しましょう。
+ 
+   2. e を押して li の終端部までカーソルを移動します。
+ 
+@@ -764,7 +764,7 @@
+ 
+ 	  ** 1文字以上を置き換えるには大文字の R とタイプしましょう **
+ 
+-  1. 以下の ---> と示された業にカーソルを移動します。最初の xxx の先頭に移動し
++  1. 以下の ---> と示された行にカーソルを移動します。最初の xxx の先頭に移動し
+      ます。
+ 
+   2. R を押して、2行目の数値をタイプすることで、xxx が置換されます。
+diff -Nur runtime/tutor/tutor.nb runtime/tutor/tutor.nb
+--- runtime/tutor/tutor.nb	1969-12-31 16:00:00.000000000 -0800
++++ runtime/tutor/tutor.nb	2011-01-18 10:40:56.533318922 -0800
+@@ -0,0 +1,973 @@
++===============================================================================
++= V e l k o m m e n   t i l   i n n f � r i n g e n   i   V i m  --  Ver. 1.7 =
++===============================================================================
++
++     Vim er en meget kraftig editor med mange kommandoer, alt for mange til �
++     kunne g� gjennom alle i en innf�ring som denne. Den er beregnet p� �
++     sette deg inn i bruken av nok kommandoer s� du vil v�re i stand til lett
++     � kunne bruke Vim som en editor til alle form�l.
++
++     Tiden som kreves for � g� gjennom denne innf�ringen tar ca. 25-30
++     minutter, avhengig av hvor mye tid du bruker til eksperimentering.
++
++     MERK:
++     Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
++     filen som du kan �ve deg p� (hvis du kj�rte �vimtutor�-kommandoen, er
++     dette allerede en kopi).
++
++     Det er viktig � huske at denne innf�ringen er beregnet p� l�ring gjennom
++     bruk. Det betyr at du m� utf�re kommandoene for � l�re dem skikkelig.
++     Hvis du bare leser teksten, vil du glemme kommandoene!
++
++     F�rst av alt, sjekk at �Caps Lock� IKKE er aktiv og trykk �j�-tasten for
++     � flytte mark�ren helt til leksjon 1.1 fyller skjermen.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 1.1:  FLYTTING AV MARK�REN
++
++
++       ** For � flytte mark�ren, trykk tastene h, j, k, l som vist. **
++	     ^
++	     k		Tips: h-tasten er til venstre og flytter til venstre.
++       < h	 l >	      l-tasten er til h�yre og flytter til h�yre.
++	     j		      j-tasten ser ut som en pil som peker nedover.
++	     v
++  1. Flytt mark�ren rundt p� skjermen til du har f�tt det inn i fingrene.
++
++  2. Hold inne nedovertasten (j) til den repeterer.
++     N� vet du hvordan du beveger deg til neste leksjon.
++
++  3. G� til leksjon 1.2 ved hjelp av nedovertasten.
++
++Merk: Hvis du blir usikker p� noe du har skrevet, trykk <ESC> for � g� til
++      normalmodus. Skriv deretter kommandoen du �nsket p� nytt.
++
++Merk: Piltastene skal ogs� virke. Men ved � bruke hjkl vil du v�re i stand til
++      � bevege mark�ren mye raskere n�r du er blitt vant til det. Helt sant!
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  Leksjon 1.2: AVSLUTTE VIM
++
++
++  !! MERK: F�r du utf�rer noen av punktene nedenfor, les hele leksjonen!!
++
++  1. Trykk <ESC>-tasten (for � forsikre deg om at du er i normalmodus).
++
++  2. Skriv:	:q! <ENTER>.
++     Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
++
++  3. N�r du ser kommandolinjen i skallet, skriv kommandoen som startet denne
++     innf�ringen. Den er:   vimtutor <ENTER>
++
++  4. Hvis du er sikker p� at du husker dette, utf�r punktene 1 til 3 for �
++     avslutte og starte editoren p� nytt.
++
++MERK:  :q! <ENTER>  forkaster alle forandringer som du gjorde. I l�pet av noen
++       f� leksjoner vil du l�re hvordan du lagrer forandringene til en fil.
++
++  5. Flytt mark�ren ned til leksjon 1.3.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		 Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
++
++
++	     ** Trykk  x  for � slette tegnet under mark�ren. **
++
++  1. Flytt mark�ren til den f�rste linjen merket med  --->.
++
++  2. For � ordne feilene p� linjen, flytt mark�ren til den er opp� tegnet som
++     skal slettes.
++
++  3. Trykk tasten  x  for � slette det u�nskede tegnet.
++
++  4. Repeter punkt 2 til 4 til setningen er lik den som er under.
++
++---> Hessstennnn brrr�snudddde ii gaaata.
++---> Hesten br�snudde i gata.
++
++  5. N� som linjen er korrekt, g� til leksjon 1.4.
++
++MERK: N�r du g�r gjennom innf�ringen, ikke bare pr�v � huske kommandoene, men
++      bruk dem helt til de sitter.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
++
++
++		    ** Trykk  i  for � sette inn tekst. **
++
++  1. Flytt mark�ren til den f�rste linjen som er merket med --->.
++
++  2. For � gj�re den f�rste linjen lik den andre, flytt mark�ren til den st�r
++     p� tegnet ETTER posisjonen der teksten skal settes inn.
++
++  3. Trykk  i  og skriv inn teksten som mangler.
++
++  4. Etterhvert som hver feil er fikset, trykk <ESC> for � returnere til
++     normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
++
++---> Det er tkst som mnglr .
++---> Det er ganske mye tekst som mangler her.
++
++  5. N�r du f�ler deg komfortabel med � sette inn tekst, g� til oppsummeringen
++     nedenfor.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
++
++
++		    ** Trykk  A  for � legge til tekst. **
++
++  1. Flytt mark�ren til den f�rste linjen nedenfor merket --->.
++     Det har ikke noe � si hvor mark�ren er plassert p� den linjen.
++
++  2. Trykk  A  og skriv inn det som skal legges til.
++
++  3. N�r teksten er lagt til, trykk <ESC> for � returnere til normalmodusen.
++
++  4. Flytt mark�ren til den andre linjen markert med ---> og repeter steg 2 og
++     3 for � reparere denne setningen.
++
++---> Det mangler noe tekst p
++     Det mangler noe tekst p� denne linjen.
++---> Det mangler ogs� litt tek
++     Det mangler ogs� litt tekst p� denne linjen.
++
++  5. N�r du f�ler at du behersker � legge til tekst, g� til leksjon 1.6.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			 Leksjon 1.6: REDIGERE EN FIL
++
++
++	       ** Bruk	:wq  for � lagre en fil og avslutte. **
++
++  !! MERK: F�r du utf�rer noen av stegene nedenfor, les hele denne leksjonen!!
++
++  1. Avslutt denne innf�ringen som du gjorde i leksjon 1.2:  :q!
++
++  2. Skriv denne kommandoen p� kommandolinja:  vim tutor <ENTER>
++     �vim� er kommandoen for � starte Vim-editoren, �tutor� er navnet p� fila
++     som du vil redigere. Bruk en fil som kan forandres.
++
++  3. Sett inn og slett tekst som du l�rte i de foreg�ende leksjonene.
++
++  4. Lagre filen med forandringene og avslutt Vim med:	:wq <ENTER>
++
++  5. Start innf�ringen p� nytt og flytt ned til oppsummeringen som f�lger.
++
++  6. Etter � ha lest og forst�tt stegene ovenfor: Sett i gang.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 1
++
++
++  1. Mark�ren beveges ved hjelp av piltastene eller hjkl-tastene.
++	 h (venstre)	 j (ned)     k (opp)	 l (h�yre)
++
++  2. For � starte Vim fra skall-kommandolinjen, skriv:	vim FILNAVN <ENTER>
++
++  3. For � avslutte Vim, skriv:  <ESC> :q! <ENTER>  for � forkaste endringer.
++		   ELLER skriv:  <ESC> :wq <ENTER>  for � lagre forandringene.
++
++  4. For � slette tegnet under mark�ren, trykk:  x
++
++  5. For � sette inn eller legge til tekst, trykk:
++	 i    skriv innsatt tekst  <ESC>	sett inn f�r mark�ren
++	 A    skriv tillagt tekst  <ESC>	legg til p� slutten av linjen
++
++MERK: N�r du trykker <ESC> g�r du til normalmodus eller du avbryter en u�nsket
++      og delvis fullf�rt kommando.
++
++  N� kan du g� videre til leksjon 2.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			Leksjon 2.1: SLETTEKOMMANDOER
++
++
++		    ** Trykk  dw  for � slette et ord. **
++
++  1. Trykk <ESC> for � v�re sikker p� at du er i normalmodus.
++
++  2. Flytt mark�ren til den f�rste linjen nedenfor merket --->.
++
++  3. Flytt mark�ren til begynnelsen av ordet som skal slettes.
++
++  4. Trykk  dw	og ordet vil forsvinne.
++
++MERK: Bokstaven  d  vil komme til syne p� den nederste linjen p� skjermen n�r
++      du skriver den. Vim venter p� at du skal skrive w . Hvis du ser et annet
++      tegn enn	d  har du skrevet noe feil; trykk <ESC> og start p� nytt.
++
++---> Det er agurk tre ord eple som ikke h�rer p�re hjemme i denne setningen.
++---> Det er tre ord som ikke h�rer hjemme i denne setningen.
++
++  5. Repeter punkt 3 og 4 til den f�rste setningen er lik den andre. G�
++     deretter til leksjon 2.2.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 2.2: FLERE SLETTEKOMMANDOER
++
++
++	     ** Trykk  d$  for � slette til slutten av linjen. **
++
++  1. Trykk <ESC> for � v�re sikker p� at du er i normalmodus.
++
++  2. Flytt mark�ren til linjen nedenfor merket --->.
++
++  3. Flytt mark�ren til punktet der linjen skal kuttes (ETTER f�rste punktum).
++
++  4. Trykk  d$	for � slette alt til slutten av linjen.
++
++---> Noen skrev slutten p� linjen en gang for mye. linjen en gang for mye.
++
++  5. G� til leksjon 2.3 for � forst� hva som skjer.
++
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 2.3: OM OPERATORER OG BEVEGELSER
++
++
++  Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
++  bevegelse. Formatet for en slettekommando med sletteoperatoren  d  er:
++
++	d   bevegelse
++
++  Der:
++    d	      - er sletteoperatoren.
++    bevegelse - er hva operatoren vil opere p� (listet nedenfor).
++
++  En kort liste med bevegelser:
++    w - til starten av det neste ordet, UNNTATT det f�rste tegnet.
++    e - til slutten av det n�v�rende ordet, INKLUDERT det siste tegnet.
++    $ - til slutten av linjen, INKLUDERT det siste tegnet.
++
++  Ved � skrive	de  vil alts� alt fra mark�ren til slutten av ordet bli
++  slettet.
++
++MERK:  Ved � skrive kun bevegelsen i normalmodusen uten en operator vil
++       mark�ren flyttes som spesifisert.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		 LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
++
++
++ ** Ved � skrive et tall foran en bevegelse repeterer den s� mange ganger. **
++
++  1. Flytt mark�ren til starten av linjen markert ---> nedenfor.
++
++  2. Skriv  2w	for � flytte mark�ren to ord framover.
++
++  3. Skriv  3e	for � flytte mark�ren framover til slutten av det tredje
++     ordet.
++
++  4. Skriv  0  (null) for � flytte til starten av linjen.
++
++  5. Repeter steg 2 og 3 med forskjellige tall.
++
++---> Dette er en linje med noen ord som du kan bevege deg rundt p�.
++
++  6. G� videre til leksjon 2.5.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		 Leksjon 2.5: BRUK AV ANTALL FOR � SLETTE MER
++
++
++     ** Et tall sammen med en operator repeterer den s� mange ganger. **
++
++  I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
++  inn antall f�r bevegelsen for � slette mer:
++	 d  nummer  bevegelse
++
++  1. Flytt mark�ren til det f�rste ordet med STORE BOKSTAVER p� linjen markert
++     med --->.
++
++  2. Skriv  2dw  for � slette de to ordene med store bokstaver.
++
++  3. Repeter steg 1 og 2 med forskjelling antall for � slette de etterf�lgende
++     ordene som har store bokstaver.
++
++---> Denne ABC DE linjen FGHI JK LMN OP er n� Q RS TUV litt mer lesbar.
++
++MERK: Et antall mellom operatoren  d  og bevegelsen virker p� samme m�te som �
++      bruke bevegelsen uten en operator.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			Leksjon 2.6: OPERERE P� LINJER
++
++
++		 ** Trykk  dd  for � slette en hel linje. **
++
++  P� grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
++  det vil v�re lettere � rett og slett trykke to d-er for � slette en linje.
++
++  1. Flytt mark�ren til den andre linjen i verset nedenfor.
++  2. Trykk  dd	 � slette linjen.
++  3. Flytt deretter til den fjerde linjen.
++  4. Trykk  2dd  for � slette to linjer.
++
++--->  1) Roser er r�de,
++--->  2) Gj�rme er g�y,
++--->  3) Fioler er bl�,
++--->  4) Jeg har en bil,
++--->  5) Klokker viser tiden,
++--->  6) Druer er s�te
++--->  7) Og du er likes�.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			Leksjon 2.7: ANGRE-KOMMANDOEN
++
++
++  ** Trykk  u  for � angre siste kommando,  U  for � fikse en hel linje. **
++
++  1. Flytt mark�ren til linjen nedenfor merket ---> og plasser den p� den
++     f�rste feilen.
++  2. Trykk  x  for � slette det f�rste u�nskede tegnet.
++  3. Trykk s�  u  for � angre den siste utf�rte kommandoen.
++  4. Deretter ordner du alle feilene p� linjene ved � bruke kommandoen	x  .
++  5. Trykk n� en stor  U  for � sette linjen tilbake til det den var
++     originalt.
++  6. Trykk  u  noen ganger for � angre	U  og foreg�ende kommandoer.
++  7. Deretter trykker du  CTRL-R  (hold CTRL nede mens du trykker R) noen
++     ganger for � gjenopprette kommandoene (omgj�re angrekommandoene).
++
++---> RReparer feiilene p�� denne linnnjen oog erssstatt dem meed angre.
++
++  8. Dette er meget nyttige kommandoer. N� kan du g� til oppsummeringen av
++     leksjon 2.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 2
++
++
++  1. For � slette fra mark�ren fram til det neste ordet, trykk:  dw
++  2. For � slette fra mark�ren til slutten av en linje, trykk:	d$
++  3. For � slette en hel linje, trykk:	dd
++
++  4. For � repetere en bevegelse, sett et nummer foran:  2w
++  5. Formatet for en forandringskommando er:
++	       operator  [nummer]  bevegelse
++     der:
++       operator  - hva som skal gj�res, f.eks.	d  for � slette
++       [nummer]  - et valgfritt antall for � repetere bevegelsen
++       bevegelse - hva kommandoen skal operere p�, eksempelvis	w  (ord),
++		   $  (til slutten av linjen) og s� videre.
++
++  6. For � g� til starten av en linje, bruk en null:  0
++
++  7. For � angre tidligere endringer, skriv:		u  (liten u)
++     For � angre alle forandringer p� en linje, skriv:	U  (stor U)
++     For � omgj�re angringen, trykk:			CTRL-R
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 3.1: �LIM INN�-KOMMANDOEN
++
++
++    ** Trykk  p  for � lime inn tidligere slettet tekst etter mark�ren **
++
++  1. Flytt mark�ren til den f�rste linjen med ---> nedenfor.
++
++  2. Trykk  dd	for � slette linjen og lagre den i et Vim-register.
++
++  3. Flytt mark�ren til c)-linjen, OVER posisjonen linjen skal settes inn.
++
++  4. Trykk  p  for � legge linjen under mark�ren.
++
++  5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkef�lge.
++
++---> d) Kan du ogs� l�re?
++---> b) Fioler er bl�,
++---> c) Intelligens m� l�res,
++---> a) Roser er r�de,
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 3.2: �ERSTATT�-KOMMANDOEN
++
++
++	 ** Trykk  rx  for � erstatte tegnet under mark�ren med x. **
++
++  1. Flytt mark�ren til den f�rste linjen nedenfor merket --->.
++
++  2. Flytt mark�ren s� den st�r opp� den f�rste feilen.
++
++  3. Trykk  r  og deretter tegnet som skal v�re der.
++
++  4. Repeter punkt 2 og 3 til den f�rste linjen er lik den andre.
++
++---> Da dfnne lynjxn ble zkrevet, var det n�en som tjykket feite taster!
++---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
++
++  5. G� videre til leksjon 3.2.
++
++MERK: Husk at du b�r l�re ved � BRUKE, ikke pugge.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 3.3: �FORANDRE�-OPERATOREN
++
++
++	   ** For � forandre til slutten av et ord, trykk  ce . **
++
++  1. Flytt mark�ren til den f�rste linjen nedenfor som er merket --->.
++
++  2. Plasser mark�ren p�  u  i �lubjwr�.
++
++  3. Trykk  ce	og det korrekte ordet (i dette tilfellet, skriv �injen�).
++
++  4. Trykk <ESC> og g� til det neste tegnet som skal forandres.
++
++  5. Repeter punkt 3 og 4 helt til den f�rste setningen er lik den andre.
++
++---> Denne lubjwr har noen wgh som m� forkw�p med �for�kzryas�-kommandoen.
++---> Denne linjen har noen ord som m� forandres med �forandre�-kommandoen.
++
++V�r oppmerksom p� at  ce  sletter ordet og g�r inn i innsettingsmodus.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
++
++
++ ** Forandringskommandoen blir brukt med de samme bevegelser som �slett�. **
++
++  1. Forandringsoperatoren fungerer p� samme m�te som �slett�. Formatet er:
++
++	 c    [nummer]	 bevegelse
++
++  2. Bevegelsene er de samme, som for eksempel	w  (ord) og  $	(slutten av en
++     linje).
++
++  3. G� til den f�rste linjen nedenfor som er merket --->.
++
++  4. Flytt mark�ren til den f�rste feilen.
++
++  5. Skriv  c$	og skriv resten av linjen lik den andre og trykk <ESC>.
++
++---> Slutten p� denne linjen trenger litt hjelp for � gj�re den lik den neste.
++---> Slutten p� denne linjen trenger � bli rettet ved bruk av c$-kommandoen.
++
++MERK: Du kan bruke slettetasten for � rette feil mens du skriver.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 3
++
++
++  1. For � legge tilbake tekst som nettopp er blitt slettet, trykk  p  . Dette
++     limer inn den slettede teksten ETTER mark�ren (hvis en linje ble slettet
++     vil den bli limt inn p� linjen under mark�ren).
++
++  2. For � erstatte et tegn under mark�ren, trykk  r  og deretter tegnet som
++     du vil ha der.
++
++  3. Forandringsoperatoren lar deg forandre fra mark�ren til dit bevegelsen
++     tar deg. Det vil si, skriv  ce  for � forandre fra mark�ren til slutten
++     av ordet,	c$  for � forandre til slutten av linjen.
++
++  4. Formatet for �forandre� er:
++
++	 c   [nummer]	bevegelse
++
++N� kan du g� til neste leksjon.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++	     Leksjon 4.1: POSISJONERING AV MARK�REN OG FILSTATUS
++
++	** Trykk CTRL-G for � vise posisjonen i filen og filstatusen.
++	   Trykk  G  for � g� til en spesifikk linje i filen. **
++
++  Merk: Les hele leksjonen f�r du utf�rer noen av punktene!
++
++  1. Hold nede Ctrl-tasten og trykk  g	. Vi kaller dette CTRL-G. En melding
++     vil komme til syne p� bunnen av skjermen med filnavnet og posisjonen i
++     filen. Husk linjenummeret for bruk i steg 3.
++
++Merk: Du kan se mark�rposisjonen i nederste h�yre hj�rne av skjermen. Dette
++      skjer n�r �ruler�-valget er satt (forklart i leksjon 6).
++
++  2. Trykk  G  for � g� til bunnen av filen.
++     Skriv  gg	for � g� til begynnelsen av filen.
++
++  3. Skriv inn linjenummeret du var p� og deretter  G . Dette vil f�re deg
++     tilbake til linjen du var p� da du f�rst trykket CTRL-G.
++
++  4. Utf�r steg 1 til 3 hvis du f�ler deg sikker p� prosedyren.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			 Leksjon 4.2: S�KEKOMMANDOEN
++
++      ** Skriv	/  etterfulgt av en s�kestreng som du vil lete etter. **
++
++  1. Trykk  /  n�r du er i normalmodusen. Legg merke til at skr�streken og
++     mark�ren kommer til syne p� bunnen av skjermen i likhet med
++     �:�-kommandoene.
++
++  2. Skriv �feeeiil� og trykk <ENTER>. Dette er teksten du vil lete etter.
++
++  3. For � finne neste forekomst av s�kestrengen, trykk  n .
++     For � lete etter samme s�keteksten i motsatt retning, trykk  N .
++
++  4. For � lete etter en tekst bakover i filen, bruk  ?  istedenfor  /	.
++
++  5. For � g� tilbake til der du kom fra, trykk  CTRL-O  (Hold Ctrl nede mens
++     du trykker bokstaven  o ). Repeter for � g� enda lengre tilbake. CTRL-I
++     g�r framover.
++
++---> �feeeiil� er ikke m�ten � skrive �feil� p�, feeeiil er helt feil.
++Merk: N�r s�kingen n�r slutten av filen, vil den fortsette fra starten unntatt
++      hvis �wrapscan�-valget er resatt.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 4.3: FINN SAMSVARENDE PARENTESER
++
++
++	  ** Trykk  %  for � finne en samsvarende ), ] eller } . **
++
++  1. Plasser mark�ren p� en (, [ eller { p� linjen nedenfor merket --->.
++
++  2. Trykk  %  .
++
++  3. Mark�ren vil g� til den samsvarende parentesen eller hakeparentesen.
++
++  4. Trykk  %  for � flytte mark�ren til den andre samsvarende parentesen.
++
++  5. Flytt mark�ren til en annen (, ), [, ], { eller } og se hva  %  gj�r.
++
++---> Dette ( er en testlinje med (, [ ] og { } i den )).
++
++Merk: Dette er veldig nyttig til feils�king i programmer som har ubalansert
++      antall parenteser!
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		       Leksjon 4.4: ERSTATT-KOMMANDOEN
++
++
++	** Skriv  :s/gammel/ny/g  for � erstatte �gammel� med �ny�. **
++
++  1. Flytt mark�ren til linjen nedenfor som er merket med --->.
++
++  2. Skriv  :s/deen/den/ <ENTER>  . Legg merke til at denne kommandoen bare
++     forandrer den f�rste forekomsten av �deen� p� linjen.
++
++  3. Skriv  :s/deen/den/g . N�r g-flagget legges til, betyr dette global
++     erstatning p� linjen og erstatter alle forekomster av �deen� p� linjen.
++
++---> deen som kan kaste deen tyngste steinen lengst er deen beste
++
++  4. For � erstatte alle forekomster av en tekststreng mellom to linjer,
++     skriv  :#,#s/gammel/ny/g  der #,# er linjenumrene p� de to linjene for
++			       linjeomr�det erstatningen skal gj�res.
++     Skriv  :%s/gammel/ny/g    for � erstatte tekst i hele filen.
++     Skriv  :%s/gammel/ny/gc   for � finne alle forekomster i hele filen, og
++			       deretter sp�rre om teksten skal erstattes eller
++			       ikke.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 4
++
++
++  1. Ctrl-G viser n�v�rende posisjon i filen og filstatusen.
++	     G	g�r til slutten av filen.
++     nummer  G	g�r til det linjenummeret.
++	    gg	g�r til den f�rste linjen.
++
++  2. Skriv  /  etterfulgt av en s�ketekst for � lete FRAMOVER etter teksten.
++     Skriv  ?  etterfulgt av en s�ketekst for � lete BAKOVER etter teksten.
++     Etter et s�k kan du trykke  n  for � finne neste forekomst i den samme
++     retningen eller  N  for � lete i motsatt retning.
++     CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
++
++  3. Skriv  %  n�r mark�ren st�r p� en (, ), [, ], { eller } for � finne den
++     som samsvarer.
++
++  4. Erstatte �gammel� med f�rste �ny� p� en linje:  :s/gammel/ny
++     Erstatte alle �gammel� med �ny� p� en linje:    :s/gammel/ny/g
++     Erstatte tekst mellom to linjenumre:	     :#,#s/gammel/ny/g
++     Erstatte alle forekomster i en fil:	     :%s/gammel/ny/g
++     For � godkjenne hver erstatning, legg til �c�:  :%s/gammel/ny/gc
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++	       Leksjon 5.1: HVORDAN UTF�RE EN EKSTERN KOMMANDO
++
++
++    ** Skriv  :!  etterfulgt av en ekstern kommando for � utf�re denne. **
++
++  1. Skriv den velkjente kommandoen  :	 for � plassere mark�ren p� bunnen av
++     skjermen. Dette lar deg skrive en kommandolinjekommando.
++
++  2. N� kan du skrive tegnet  !  . Dette lar deg utf�re en hvilken som helst
++     ekstern kommando.
++
++  3. Som et eksempel, skriv  ls  etter utropstegnet og trykk <ENTER>. Du vil
++     n� f� en liste over filene i katalogen, akkurat som om du hadde kj�rt
++     kommandoen direkte fra kommandolinjen i skallet. Eller bruk  :!dir  hvis
++     �ls� ikke virker.
++
++MERK: Det er mulig � kj�re alle eksterne kommandoer p� denne m�ten, ogs� med
++      parametere.
++
++MERK: Alle �:�-kommandoer m� avsluttes med <ENTER>. Fra dette punktet er det
++      ikke alltid vi nevner det.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 5.2: MER OM LAGRING AV FILER
++
++
++      ** For � lagre endringene gjort i en tekst, skriv  :w FILNAVN. **
++
++  1. Skriv  :!dir  eller  :!ls	for � f� en liste over filene i katalogen. Du
++     vet allerede at du m� trykke <ENTER> etter dette.
++
++  2. Velg et filnavn p� en fil som ikke finnes, som for eksempel  TEST .
++
++  3. Skriv  :w TEST  (der TEST er filnavnet du velger).
++
++  4. Dette lagrer hele filen (denne innf�ringen) under navnet TEST . For �
++     sjekke dette, skriv  :!dir  eller	:!ls  igjen for � se innholdet av
++     katalogen.
++
++Merk: Hvis du n� hadde avsluttet Vim og startet p� nytt igjen med �vim TEST�,
++      ville filen v�rt en eksakt kopi av innf�ringen da du lagret den.
++
++  5. Fjern filen ved � skrive  :!rm TEST  hvis du er p� et Unix-lignende
++     operativsystem, eller  :!del TEST	hvis du bruker MS-DOS.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
++
++
++     ** For � lagre en del av en fil, skriv  v	bevegelse  :w FILNAVN **
++
++  1. Flytt mark�ren til denne linjen.
++
++  2. Trykk  v  og flytt mark�ren til det femte elementet nedenfor. Legg merke
++     til at teksten blir markert.
++
++  3. Trykk  :  (kolon). P� bunnen av skjermen vil  :'<,'>  komme til syne.
++
++  4. Trykk  w TEST  , der TEST er et filnavn som ikke finnes enda. Kontroller
++     at du ser	:'<,'>w TEST  f�r du trykker Enter.
++
++  5. Vim vil skrive de valgte linjene til filen TEST. Bruk  :!dir  eller  !ls
++     for � se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
++
++MERK: Ved � trykke  v  startes visuelt valg. Du kan flytte mark�ren rundt for
++      � gj�re det valgte omr�det st�rre eller mindre. Deretter kan du bruke en
++      operator for � gj�re noe med teksten. For eksempel sletter  d  teksten.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 5.4: HENTING OG SAMMENSL�ING AV FILER
++
++
++ ** For � lese inn en annen fil inn i n�v�rende buffer, skriv  :r FILNAVN  **
++
++  1. Plasser mark�ren like over denne linjen.
++
++MERK: Etter � ha utf�rt steg 2 vil du se teksten fra leksjon 5.3. G� deretter
++      NED for � se denne leksjonen igjen.
++
++  2. Hent TEST-filen ved � bruke kommandoen  :r TEST  der TEST er navnet p�
++     filen du brukte. Filen du henter blir plassert nedenfor mark�rlinjen.
++
++  3. For � sjekke at filen ble hentet, g� tilbake og se at det er to kopier av
++     leksjon 5.3, originalen og denne versjonen.
++
++MERK: Du kan ogs� lese utdataene av en ekstern kommando. For eksempel,	:r !ls
++      leser utdataene av ls-kommandoen og legger dem nedenfor mark�ren.
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 5
++
++
++  1.  :!kommando  utf�rer en ekstern kommandio.
++
++      Noen nyttige eksempler er:
++	 (MS-DOS)	  (Unix)
++	  :!dir		   :!ls		  - List filene i katalogen.
++	  :!del FILNAVN    :!rm FILNAVN   - Slett filen FILNAVN.
++
++  2.  :w FILNAVN  skriver den n�v�rende Vim-filen disken med navnet FILNAVN .
++
++  3.  v  bevegelse  :w FILNAVN	lagrer de visuelt valgte linjene til filen
++     FILNAVN.
++
++  4.  :r FILNAVN  henter filen FILNAVN og legger den inn nedenfor mark�ren.
++
++  5.  :r !dir  leser utdataene fra �dir�-kommandoen og legger dem nedenfor
++     mark�rposisjonen.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 6.1: ��PNE LINJE�-KOMMANDOEN
++
++
++    ** Skriv  o  for � ��pne opp� for en ny linje etter mark�ren og g� til
++       innsettingsmodus **
++
++  1. Flytt mark�ren til linjen nedenfor merket --->.
++
++  2. Skriv  o  (liten o) for � �pne opp en linje NEDENFOR mark�ren og g� inn i
++     innsettingsmodus.
++
++  3. Skriv litt tekst og trykk <ESC> for � g� ut av innsettingsmodusen.
++
++---> Etter at  o  er skrevet blir mark�ren plassert p� den tomme linjen.
++
++  4. For � �pne en ny linje OVER mark�ren, trykk rett og slett en stor	O
++     istedenfor en liten  o . Pr�v dette p� linjen nedenfor.
++
++---> Lag ny linje over denne ved � trykke O mens mark�ren er p� denne linjen.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 6.2: �LEGG TIL�-KOMMANDOEN
++
++
++	    ** Skriv  a  for � legge til tekst ETTER mark�ren. **
++
++  1. Flytt mark�ren til starten av linjen merket ---> nedenfor.
++
++  2. Trykk  e  til mark�ren er p� slutten av �li�.
++
++  3. Trykk  a  (liten a) for � legge til tekst ETTER mark�ren.
++
++  4. Fullf�r ordet s�nn som p� linjen nedenfor. Trykk <ESC> for � g� ut av
++     innsettingsmodusen.
++
++  5. Bruk  e  for � g� til det neste ufullstendige ordet og repeter steg 3 og
++     4.
++
++---> Denne li lar deg �ve p� � leg til tek p� en linje.
++---> Denne linjen lar deg �ve p� � legge til tekst p� en linje.
++
++Merk: a, i og A g�r alle til den samme innsettingsmodusen, den eneste
++      forskjellen er hvor tegnene blir satt inn.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 6.3: EN ANNEN M�TE � ERSTATTE P�
++
++
++	   ** Skriv en stor  R	for � erstatte mer enn ett tegn. **
++
++  1. Flytt mark�ren til den f�rste linjen nedenfor merket --->. Flytt mark�ren
++     til begynnelsen av den f�rste �xxx�-en.
++
++  2. Trykk  R  og skriv inn tallet som st�r nedenfor p� den andre linjen s�
++     det erstatter xxx.
++
++  3. Trykk <ESC> for � g� ut av erstatningsmodusen. Legg merke til at resten
++     av linjen forblir uforandret.
++
++  4. Repeter stegene for � erstatte den gjenv�rende xxx.
++
++---> Ved � legge 123 til xxx f�r vi xxx.
++---> Ved � legge 123 til 456 f�r vi 579.
++
++MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
++      erstatter et eksisterende tegn.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		    Leksjon 6.4: KOPIERE OG LIME INN TEKST
++
++
++    ** Bruk y-operatoren for � kopiere tekst og  p  for � lime den inn **
++
++  1. G� til linjen merket ---> nedenfor og plasser mark�ren etter �a)�.
++
++  2. G� inn i visuell modus med  v  og flytt mark�ren til like f�r �f�rste�.
++
++  3. Trykk  y  for � kopiere (engelsk: �yank�) den uthevede teksten.
++
++  4. Flytt mark�ren til slutten av den neste linjen:  j$
++
++  5. Trykk  p  for � lime inn teksten. Trykk deretter:	a andre <ESC> .
++
++  6. Bruk visuell modus for � velge � valget.�, kopier det med	y , g� til
++     slutten av den neste linjen med  j$  og legg inn teksten der med  p .
++
++---> a) Dette er det f�rste valget.
++     b)
++
++Merk: Du kan ogs� bruke  y  som en operator;  yw  kopierer ett ord.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			    Leksjon 6.5: SETT VALG
++
++
++  ** Sett et valg s� s�k eller erstatning ignorerer store/sm� bokstaver. **
++
++  1. Let etter �ignore� ved � skrive:  /ignore <ENTER>
++     Repeter flere ganger ved � trykke	n .
++
++  2. Sett �ic�-valget (Ignore Case) ved � skrive:  :set ic
++
++  3. S�k etter �ignore� igjen ved � trykke  n .
++     Legg merke til at b�de �Ignore� og �IGNORE� blir funnet.
++
++  4. Sett �hlsearch�- og �incsearch�-valgene:  :set hls is
++
++  5. Skriv s�kekommandoen igjen og se hva som skjer:  /ignore <ENTER>
++
++  6. For � sl� av ignorering av store/sm� bokstaver, skriv:  :set noic
++
++Merk: For � fjerne uthevingen av treff, skriv:	:nohlsearch
++Merk: Hvis du vil ignorere store/sm� bokstaver for kun en s�kekommando, bruk
++      \c  i uttrykket:	/ignore\c <ENTER>
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 6
++
++  1. Trykk  o  for � legge til en linje NEDENFOR mark�ren og g� inn i
++     innsettingsmodus.
++     Trykk  O  for � �pne en linje OVER mark�ren.
++
++  2. Skriv  a  for � sette inn tekst ETTER mark�ren.
++     Skriv  A  for � sette inn tekst etter slutten av linjen.
++
++  3. Kommandoen  e  g�r til slutten av et ord.
++
++  4. Operatoren  y  (�yank�) kopierer tekst,  p  (�paste�) limer den inn.
++
++  5. Ved � trykke  R  g�r du inn i erstatningsmodus helt til  <ESC>  trykkes.
++
++  6. Skriv �:set xxx� for � sette valget �xxx�. Noen valg er:
++	�ic� �ignorecase�	ignorer store/sm� bokstaver under s�k
++	�is� �incsearch�	vis delvise treff for en s�ketekst
++	�hls� �hlsearch�	uthev alle s�ketreff
++
++  7. Legg til �no� foran valget for � sl� det av:  :set noic
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			    Leksjon 7.1: F� HJELP
++
++
++		   ** Bruk det innebygde hjelpesystemet. **
++
++  Vim har et omfattende innebygget hjelpesystem. For � starte det, pr�v en av
++  disse m�tene:
++    - Trykk Hjelp-tasten (hvis du har en)
++    - Trykk F1-tasten (hvis du har en)
++    - Skriv  :help <ENTER>
++
++  Les teksten i hjelpevinduet for � finne ut hvordan hjelpen virker.
++  Skriv  CTRL-W CTRL-W	for � hoppe fra et vindu til et annet
++  Skriv  :q <ENTER>	for � lukke hjelpevinduet.
++
++  Du kan f� hjelp for omtrent alle temaer om Vim ved � skrive et parameter til
++  �:help�-kommandoen. Pr�v disse (ikke glem � trykke <ENTER>):
++
++    :help w
++    :help c_CTRL-D
++    :help insert-index
++    :help user-manual
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
++
++
++			** Sl� p� funksjoner i Vim **
++
++  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er sl�tt av
++  som standard. For � begynne � bruke flere funksjoner m� du lage en
++  �vimrc�-fil.
++
++  1. Start redigeringen av �vimrc�-filen. Dette avhenger av systemet ditt:
++	:e ~/.vimrc	  for Unix
++	:e $VIM/_vimrc	  for MS Windows
++
++  2. Les inn eksempelfilen for �vimrc�:
++	:r $VIMRUNTIME/vimrc_example.vim
++
++  3. Lagre filen med:
++	:w
++
++  Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
++  alle dine foretrukne oppsett i denne �vimrc�-filen.
++  For mer informasjon, skriv  :help vimrc-intro
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			   Leksjon 7.3: FULLF�RING
++
++
++	      ** Kommandolinjefullf�ring med CTRL-D og <TAB> **
++
++  1. V�r sikker p� at Vim ikke er i Vi-kompatibel modus:  :set nocp
++
++  2. Se hvilke filer som er i katalogen:  :!ls	eller  :!dir
++
++  3. Skriv starten p� en kommando:  :e
++
++  4. Trykk  CTRL-D  og Vim vil vise en liste over kommandoer som starter med
++     �e�.
++
++  5. Trykk  <TAB>  og Vim vil fullf�re kommandonavnet til �:edit�.
++
++  6. Legg til et mellomrom og starten p� et eksisterende filnavn:  :edit FIL
++
++  7. Trykk <TAB>. Vim vil fullf�re navnet (hvis det er unikt).
++
++MERK: Fullf�ring fungerer for mange kommandoer. Pr�v ved � trykke CTRL-D og
++      <TAB>. Det er spesielt nyttig for bruk sammen med  :help .
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 7
++
++
++  1. Skriv  :help  eller trykk <F1> eller <Help> for � �pne et hjelpevindu.
++
++  2. Skriv  :help kommando  for � f� hjelp om  kommando .
++
++  3. Trykk  CTRL-W CTRL-W  for � hoppe til et annet vindu.
++
++  4. Trykk  :q	for � lukke hjelpevinduet.
++
++  5. Opprett et vimrc-oppstartsskript for � lagre favorittvalgene dine.
++
++  6. N�r du skriver en �:�-kommando, trykk CTRL-D for � se mulige
++     fullf�ringer. Trykk <TAB> for � bruke en fullf�ring.
++
++
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  Her slutter innf�ringen i Vim. Den var ment som en rask oversikt over
++  editoren, akkurat nok til � la deg sette i gang med enkel bruk. Den er p�
++  langt n�r komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
++  ved � skrive	:help user-manual  .
++
++  For videre lesing og studier, kan denne boken anbefales:
++      �Vim - Vi Improved� av Steve Oualline
++      Utgiver: New Riders
++  Den f�rste boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
++  nybegynnere. Inneholder mange eksempler og illustrasjoner.
++  Se http://iccf-holland.org/click5.html
++
++  Denne boken er eldre og handler mer om Vi enn Vim, men anbefales ogs�:
++      �Learning the Vi Editor� av Linda Lamb
++      Utgiver: O'Reilly & Associates Inc.
++  Det er en god bok for � f� vite omtrent hva som helst om Vi.
++  Den sjette utgaven inneholder ogs� informasjon om Vim.
++
++  Denne innf�ringen er skrevet av Michael C. Pierce og Robert K. Ware,
++  Colorado School of Mines med id�er av Charles Smith, Colorado State
++  University. E-mail: [email protected] .
++
++  Modifisert for Vim av Bram Moolenaar.
++  Oversatt av �yvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
++  Id: tutor.no 406 2007-03-18 22:48:36Z sunny
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++vim: set ts=8 :
+diff -Nur runtime/tutor/tutor.nb.utf-8 runtime/tutor/tutor.nb.utf-8
+--- runtime/tutor/tutor.nb.utf-8	1969-12-31 16:00:00.000000000 -0800
++++ runtime/tutor/tutor.nb.utf-8	2011-01-18 10:40:56.534222890 -0800
+@@ -0,0 +1,973 @@
++===============================================================================
++= V e l k o m m e n   t i l   i n n f ø r i n g e n   i   V i m  --  Ver. 1.7 =
++===============================================================================
++
++     Vim er en meget kraftig editor med mange kommandoer, alt for mange til å
++     kunne gå gjennom alle i en innføring som denne. Den er beregnet på å
++     sette deg inn i bruken av nok kommandoer så du vil være i stand til lett
++     å kunne bruke Vim som en editor til alle formål.
++
++     Tiden som kreves for å gå gjennom denne innføringen tar ca. 25-30
++     minutter, avhengig av hvor mye tid du bruker til eksperimentering.
++
++     MERK:
++     Kommandoene i leksjonene vil modifisere teksten. Lag en kopi av denne
++     filen som du kan øve deg på (hvis du kjørte «vimtutor»-kommandoen, er
++     dette allerede en kopi).
++
++     Det er viktig å huske at denne innføringen er beregnet på læring gjennom
++     bruk. Det betyr at du må utføre kommandoene for å lære dem skikkelig.
++     Hvis du bare leser teksten, vil du glemme kommandoene!
++
++     Først av alt, sjekk at «Caps Lock» IKKE er aktiv og trykk «j»-tasten for
++     å flytte markøren helt til leksjon 1.1 fyller skjermen.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 1.1:  FLYTTING AV MARKØREN
++
++
++       ** For å flytte markøren, trykk tastene h, j, k, l som vist. **
++	     ^
++	     k		Tips: h-tasten er til venstre og flytter til venstre.
++       < h	 l >	      l-tasten er til høyre og flytter til høyre.
++	     j		      j-tasten ser ut som en pil som peker nedover.
++	     v
++  1. Flytt markøren rundt på skjermen til du har fått det inn i fingrene.
++
++  2. Hold inne nedovertasten (j) til den repeterer.
++     Nå vet du hvordan du beveger deg til neste leksjon.
++
++  3. Gå til leksjon 1.2 ved hjelp av nedovertasten.
++
++Merk: Hvis du blir usikker på noe du har skrevet, trykk <ESC> for å gå til
++      normalmodus. Skriv deretter kommandoen du ønsket på nytt.
++
++Merk: Piltastene skal også virke. Men ved å bruke hjkl vil du være i stand til
++      å bevege markøren mye raskere når du er blitt vant til det. Helt sant!
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  Leksjon 1.2: AVSLUTTE VIM
++
++
++  !! MERK: Før du utfører noen av punktene nedenfor, les hele leksjonen!!
++
++  1. Trykk <ESC>-tasten (for å forsikre deg om at du er i normalmodus).
++
++  2. Skriv:	:q! <ENTER>.
++     Dette avslutter editoren og FORKASTER alle forandringer som du har gjort.
++
++  3. Når du ser kommandolinjen i skallet, skriv kommandoen som startet denne
++     innføringen. Den er:   vimtutor <ENTER>
++
++  4. Hvis du er sikker på at du husker dette, utfør punktene 1 til 3 for å
++     avslutte og starte editoren på nytt.
++
++MERK:  :q! <ENTER>  forkaster alle forandringer som du gjorde. I løpet av noen
++       få leksjoner vil du lære hvordan du lagrer forandringene til en fil.
++
++  5. Flytt markøren ned til leksjon 1.3.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		 Leksjon 1.3: REDIGERING AV TEKST -- SLETTING
++
++
++	     ** Trykk  x  for å slette tegnet under markøren. **
++
++  1. Flytt markøren til den første linjen merket med  --->.
++
++  2. For å ordne feilene på linjen, flytt markøren til den er oppå tegnet som
++     skal slettes.
++
++  3. Trykk tasten  x  for å slette det uønskede tegnet.
++
++  4. Repeter punkt 2 til 4 til setningen er lik den som er under.
++
++---> Hessstennnn brrråsnudddde ii gaaata.
++---> Hesten bråsnudde i gata.
++
++  5. Nå som linjen er korrekt, gå til leksjon 1.4.
++
++MERK: Når du går gjennom innføringen, ikke bare prøv å huske kommandoene, men
++      bruk dem helt til de sitter.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 1.4: REDIGERING AV TEKST -- INNSETTING
++
++
++		    ** Trykk  i  for å sette inn tekst. **
++
++  1. Flytt markøren til den første linjen som er merket med --->.
++
++  2. For å gjøre den første linjen lik den andre, flytt markøren til den står
++     på tegnet ETTER posisjonen der teksten skal settes inn.
++
++  3. Trykk  i  og skriv inn teksten som mangler.
++
++  4. Etterhvert som hver feil er fikset, trykk <ESC> for å returnere til
++     normalmodus. Repeter punkt 2 til 4 til setningen er korrekt.
++
++---> Det er tkst som mnglr .
++---> Det er ganske mye tekst som mangler her.
++
++  5. Når du føler deg komfortabel med å sette inn tekst, gå til oppsummeringen
++     nedenfor.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 1.5: REDIGERING AV TEKST -- LEGGE TIL
++
++
++		    ** Trykk  A  for å legge til tekst. **
++
++  1. Flytt markøren til den første linjen nedenfor merket --->.
++     Det har ikke noe å si hvor markøren er plassert på den linjen.
++
++  2. Trykk  A  og skriv inn det som skal legges til.
++
++  3. Når teksten er lagt til, trykk <ESC> for å returnere til normalmodusen.
++
++  4. Flytt markøren til den andre linjen markert med ---> og repeter steg 2 og
++     3 for å reparere denne setningen.
++
++---> Det mangler noe tekst p
++     Det mangler noe tekst på denne linjen.
++---> Det mangler også litt tek
++     Det mangler også litt tekst på denne linjen.
++
++  5. Når du føler at du behersker å legge til tekst, gå til leksjon 1.6.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			 Leksjon 1.6: REDIGERE EN FIL
++
++
++	       ** Bruk	:wq  for å lagre en fil og avslutte. **
++
++  !! MERK: Før du utfører noen av stegene nedenfor, les hele denne leksjonen!!
++
++  1. Avslutt denne innføringen som du gjorde i leksjon 1.2:  :q!
++
++  2. Skriv denne kommandoen på kommandolinja:  vim tutor <ENTER>
++     «vim» er kommandoen for å starte Vim-editoren, «tutor» er navnet på fila
++     som du vil redigere. Bruk en fil som kan forandres.
++
++  3. Sett inn og slett tekst som du lærte i de foregående leksjonene.
++
++  4. Lagre filen med forandringene og avslutt Vim med:	:wq <ENTER>
++
++  5. Start innføringen på nytt og flytt ned til oppsummeringen som følger.
++
++  6. Etter å ha lest og forstått stegene ovenfor: Sett i gang.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 1
++
++
++  1. Markøren beveges ved hjelp av piltastene eller hjkl-tastene.
++	 h (venstre)	 j (ned)     k (opp)	 l (høyre)
++
++  2. For å starte Vim fra skall-kommandolinjen, skriv:	vim FILNAVN <ENTER>
++
++  3. For å avslutte Vim, skriv:  <ESC> :q! <ENTER>  for å forkaste endringer.
++		   ELLER skriv:  <ESC> :wq <ENTER>  for å lagre forandringene.
++
++  4. For å slette tegnet under markøren, trykk:  x
++
++  5. For å sette inn eller legge til tekst, trykk:
++	 i    skriv innsatt tekst  <ESC>	sett inn før markøren
++	 A    skriv tillagt tekst  <ESC>	legg til på slutten av linjen
++
++MERK: Når du trykker <ESC> går du til normalmodus eller du avbryter en uønsket
++      og delvis fullført kommando.
++
++  Nå kan du gå videre til leksjon 2.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			Leksjon 2.1: SLETTEKOMMANDOER
++
++
++		    ** Trykk  dw  for å slette et ord. **
++
++  1. Trykk <ESC> for å være sikker på at du er i normalmodus.
++
++  2. Flytt markøren til den første linjen nedenfor merket --->.
++
++  3. Flytt markøren til begynnelsen av ordet som skal slettes.
++
++  4. Trykk  dw	og ordet vil forsvinne.
++
++MERK: Bokstaven  d  vil komme til syne på den nederste linjen på skjermen når
++      du skriver den. Vim venter på at du skal skrive w . Hvis du ser et annet
++      tegn enn	d  har du skrevet noe feil; trykk <ESC> og start på nytt.
++
++---> Det er agurk tre ord eple som ikke hører pære hjemme i denne setningen.
++---> Det er tre ord som ikke hører hjemme i denne setningen.
++
++  5. Repeter punkt 3 og 4 til den første setningen er lik den andre. Gå
++     deretter til leksjon 2.2.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 2.2: FLERE SLETTEKOMMANDOER
++
++
++	     ** Trykk  d$  for å slette til slutten av linjen. **
++
++  1. Trykk <ESC> for å være sikker på at du er i normalmodus.
++
++  2. Flytt markøren til linjen nedenfor merket --->.
++
++  3. Flytt markøren til punktet der linjen skal kuttes (ETTER første punktum).
++
++  4. Trykk  d$	for å slette alt til slutten av linjen.
++
++---> Noen skrev slutten på linjen en gang for mye. linjen en gang for mye.
++
++  5. Gå til leksjon 2.3 for å forstå hva som skjer.
++
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 2.3: OM OPERATORER OG BEVEGELSER
++
++
++  Mange kommandoer som forandrer teksten er laget ut i fra en operator og en
++  bevegelse. Formatet for en slettekommando med sletteoperatoren  d  er:
++
++	d   bevegelse
++
++  Der:
++    d	      - er sletteoperatoren.
++    bevegelse - er hva operatoren vil opere på (listet nedenfor).
++
++  En kort liste med bevegelser:
++    w - til starten av det neste ordet, UNNTATT det første tegnet.
++    e - til slutten av det nåværende ordet, INKLUDERT det siste tegnet.
++    $ - til slutten av linjen, INKLUDERT det siste tegnet.
++
++  Ved å skrive	de  vil altså alt fra markøren til slutten av ordet bli
++  slettet.
++
++MERK:  Ved å skrive kun bevegelsen i normalmodusen uten en operator vil
++       markøren flyttes som spesifisert.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		 LEKSJON 2.4: BRUK AV TELLER FOR EN BEVEGELSE
++
++
++ ** Ved å skrive et tall foran en bevegelse repeterer den så mange ganger. **
++
++  1. Flytt markøren til starten av linjen markert ---> nedenfor.
++
++  2. Skriv  2w	for å flytte markøren to ord framover.
++
++  3. Skriv  3e	for å flytte markøren framover til slutten av det tredje
++     ordet.
++
++  4. Skriv  0  (null) for å flytte til starten av linjen.
++
++  5. Repeter steg 2 og 3 med forskjellige tall.
++
++---> Dette er en linje med noen ord som du kan bevege deg rundt på.
++
++  6. Gå videre til leksjon 2.5.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		 Leksjon 2.5: BRUK AV ANTALL FOR Å SLETTE MER
++
++
++     ** Et tall sammen med en operator repeterer den så mange ganger. **
++
++  I kombinasjonen med sletteoperatoren og en bevegelse nevnt ovenfor setter du
++  inn antall før bevegelsen for å slette mer:
++	 d  nummer  bevegelse
++
++  1. Flytt markøren til det første ordet med STORE BOKSTAVER på linjen markert
++     med --->.
++
++  2. Skriv  2dw  for å slette de to ordene med store bokstaver.
++
++  3. Repeter steg 1 og 2 med forskjelling antall for å slette de etterfølgende
++     ordene som har store bokstaver.
++
++---> Denne ABC DE linjen FGHI JK LMN OP er nå Q RS TUV litt mer lesbar.
++
++MERK: Et antall mellom operatoren  d  og bevegelsen virker på samme måte som å
++      bruke bevegelsen uten en operator.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			Leksjon 2.6: OPERERE PÅ LINJER
++
++
++		 ** Trykk  dd  for å slette en hel linje. **
++
++  På grunn av at sletting av linjer er mye brukt, fant utviklerne av Vi ut at
++  det vil være lettere å rett og slett trykke to d-er for å slette en linje.
++
++  1. Flytt markøren til den andre linjen i verset nedenfor.
++  2. Trykk  dd	 å slette linjen.
++  3. Flytt deretter til den fjerde linjen.
++  4. Trykk  2dd  for å slette to linjer.
++
++--->  1) Roser er røde,
++--->  2) Gjørme er gøy,
++--->  3) Fioler er blå,
++--->  4) Jeg har en bil,
++--->  5) Klokker viser tiden,
++--->  6) Druer er søte
++--->  7) Og du er likeså.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			Leksjon 2.7: ANGRE-KOMMANDOEN
++
++
++  ** Trykk  u  for å angre siste kommando,  U  for å fikse en hel linje. **
++
++  1. Flytt markøren til linjen nedenfor merket ---> og plasser den på den
++     første feilen.
++  2. Trykk  x  for å slette det første uønskede tegnet.
++  3. Trykk så  u  for å angre den siste utførte kommandoen.
++  4. Deretter ordner du alle feilene på linjene ved å bruke kommandoen	x  .
++  5. Trykk nå en stor  U  for å sette linjen tilbake til det den var
++     originalt.
++  6. Trykk  u  noen ganger for å angre	U  og foregående kommandoer.
++  7. Deretter trykker du  CTRL-R  (hold CTRL nede mens du trykker R) noen
++     ganger for å gjenopprette kommandoene (omgjøre angrekommandoene).
++
++---> RReparer feiilene påå denne linnnjen oog erssstatt dem meed angre.
++
++  8. Dette er meget nyttige kommandoer. Nå kan du gå til oppsummeringen av
++     leksjon 2.
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 2
++
++
++  1. For å slette fra markøren fram til det neste ordet, trykk:  dw
++  2. For å slette fra markøren til slutten av en linje, trykk:	d$
++  3. For å slette en hel linje, trykk:	dd
++
++  4. For å repetere en bevegelse, sett et nummer foran:  2w
++  5. Formatet for en forandringskommando er:
++	       operator  [nummer]  bevegelse
++     der:
++       operator  - hva som skal gjøres, f.eks.	d  for å slette
++       [nummer]  - et valgfritt antall for å repetere bevegelsen
++       bevegelse - hva kommandoen skal operere på, eksempelvis	w  (ord),
++		   $  (til slutten av linjen) og så videre.
++
++  6. For å gå til starten av en linje, bruk en null:  0
++
++  7. For å angre tidligere endringer, skriv:		u  (liten u)
++     For å angre alle forandringer på en linje, skriv:	U  (stor U)
++     For å omgjøre angringen, trykk:			CTRL-R
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 3.1: «LIM INN»-KOMMANDOEN
++
++
++    ** Trykk  p  for å lime inn tidligere slettet tekst etter markøren **
++
++  1. Flytt markøren til den første linjen med ---> nedenfor.
++
++  2. Trykk  dd	for å slette linjen og lagre den i et Vim-register.
++
++  3. Flytt markøren til c)-linjen, OVER posisjonen linjen skal settes inn.
++
++  4. Trykk  p  for å legge linjen under markøren.
++
++  5. Repeter punkt 2 til 4 helt til linjene er i riktig rekkefølge.
++
++---> d) Kan du også lære?
++---> b) Fioler er blå,
++---> c) Intelligens må læres,
++---> a) Roser er røde,
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 3.2: «ERSTATT»-KOMMANDOEN
++
++
++	 ** Trykk  rx  for å erstatte tegnet under markøren med x. **
++
++  1. Flytt markøren til den første linjen nedenfor merket --->.
++
++  2. Flytt markøren så den står oppå den første feilen.
++
++  3. Trykk  r  og deretter tegnet som skal være der.
++
++  4. Repeter punkt 2 og 3 til den første linjen er lik den andre.
++
++---> Da dfnne lynjxn ble zkrevet, var det nøen som tjykket feite taster!
++---> Da denne linjen ble skrevet, var det noen som trykket feile taster!
++
++  5. Gå videre til leksjon 3.2.
++
++MERK: Husk at du bør lære ved å BRUKE, ikke pugge.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 3.3: «FORANDRE»-OPERATOREN
++
++
++	   ** For å forandre til slutten av et ord, trykk  ce . **
++
++  1. Flytt markøren til den første linjen nedenfor som er merket --->.
++
++  2. Plasser markøren på  u  i «lubjwr».
++
++  3. Trykk  ce	og det korrekte ordet (i dette tilfellet, skriv «injen»).
++
++  4. Trykk <ESC> og gå til det neste tegnet som skal forandres.
++
++  5. Repeter punkt 3 og 4 helt til den første setningen er lik den andre.
++
++---> Denne lubjwr har noen wgh som må forkwåp med «forækzryas»-kommandoen.
++---> Denne linjen har noen ord som må forandres med «forandre»-kommandoen.
++
++Vær oppmerksom på at  ce  sletter ordet og går inn i innsettingsmodus.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 3.4: FLERE FORANDRINGER VED BRUK AV c
++
++
++ ** Forandringskommandoen blir brukt med de samme bevegelser som «slett». **
++
++  1. Forandringsoperatoren fungerer på samme måte som «slett». Formatet er:
++
++	 c    [nummer]	 bevegelse
++
++  2. Bevegelsene er de samme, som for eksempel	w  (ord) og  $	(slutten av en
++     linje).
++
++  3. Gå til den første linjen nedenfor som er merket --->.
++
++  4. Flytt markøren til den første feilen.
++
++  5. Skriv  c$	og skriv resten av linjen lik den andre og trykk <ESC>.
++
++---> Slutten på denne linjen trenger litt hjelp for å gjøre den lik den neste.
++---> Slutten på denne linjen trenger å bli rettet ved bruk av c$-kommandoen.
++
++MERK: Du kan bruke slettetasten for å rette feil mens du skriver.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 3
++
++
++  1. For å legge tilbake tekst som nettopp er blitt slettet, trykk  p  . Dette
++     limer inn den slettede teksten ETTER markøren (hvis en linje ble slettet
++     vil den bli limt inn på linjen under markøren).
++
++  2. For å erstatte et tegn under markøren, trykk  r  og deretter tegnet som
++     du vil ha der.
++
++  3. Forandringsoperatoren lar deg forandre fra markøren til dit bevegelsen
++     tar deg. Det vil si, skriv  ce  for å forandre fra markøren til slutten
++     av ordet,	c$  for å forandre til slutten av linjen.
++
++  4. Formatet for «forandre» er:
++
++	 c   [nummer]	bevegelse
++
++Nå kan du gå til neste leksjon.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++	     Leksjon 4.1: POSISJONERING AV MARKØREN OG FILSTATUS
++
++	** Trykk CTRL-G for å vise posisjonen i filen og filstatusen.
++	   Trykk  G  for å gå til en spesifikk linje i filen. **
++
++  Merk: Les hele leksjonen før du utfører noen av punktene!
++
++  1. Hold nede Ctrl-tasten og trykk  g	. Vi kaller dette CTRL-G. En melding
++     vil komme til syne på bunnen av skjermen med filnavnet og posisjonen i
++     filen. Husk linjenummeret for bruk i steg 3.
++
++Merk: Du kan se markørposisjonen i nederste høyre hjørne av skjermen. Dette
++      skjer når «ruler»-valget er satt (forklart i leksjon 6).
++
++  2. Trykk  G  for å gå til bunnen av filen.
++     Skriv  gg	for å gå til begynnelsen av filen.
++
++  3. Skriv inn linjenummeret du var på og deretter  G . Dette vil føre deg
++     tilbake til linjen du var på da du først trykket CTRL-G.
++
++  4. Utfør steg 1 til 3 hvis du føler deg sikker på prosedyren.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			 Leksjon 4.2: SØKEKOMMANDOEN
++
++      ** Skriv	/  etterfulgt av en søkestreng som du vil lete etter. **
++
++  1. Trykk  /  når du er i normalmodusen. Legg merke til at skråstreken og
++     markøren kommer til syne på bunnen av skjermen i likhet med
++     «:»-kommandoene.
++
++  2. Skriv «feeeiil» og trykk <ENTER>. Dette er teksten du vil lete etter.
++
++  3. For å finne neste forekomst av søkestrengen, trykk  n .
++     For å lete etter samme søketeksten i motsatt retning, trykk  N .
++
++  4. For å lete etter en tekst bakover i filen, bruk  ?  istedenfor  /	.
++
++  5. For å gå tilbake til der du kom fra, trykk  CTRL-O  (Hold Ctrl nede mens
++     du trykker bokstaven  o ). Repeter for å gå enda lengre tilbake. CTRL-I
++     går framover.
++
++---> «feeeiil» er ikke måten å skrive «feil» på, feeeiil er helt feil.
++Merk: Når søkingen når slutten av filen, vil den fortsette fra starten unntatt
++      hvis «wrapscan»-valget er resatt.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 4.3: FINN SAMSVARENDE PARENTESER
++
++
++	  ** Trykk  %  for å finne en samsvarende ), ] eller } . **
++
++  1. Plasser markøren på en (, [ eller { på linjen nedenfor merket --->.
++
++  2. Trykk  %  .
++
++  3. Markøren vil gå til den samsvarende parentesen eller hakeparentesen.
++
++  4. Trykk  %  for å flytte markøren til den andre samsvarende parentesen.
++
++  5. Flytt markøren til en annen (, ), [, ], { eller } og se hva  %  gjør.
++
++---> Dette ( er en testlinje med (, [ ] og { } i den )).
++
++Merk: Dette er veldig nyttig til feilsøking i programmer som har ubalansert
++      antall parenteser!
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		       Leksjon 4.4: ERSTATT-KOMMANDOEN
++
++
++	** Skriv  :s/gammel/ny/g  for å erstatte «gammel» med «ny». **
++
++  1. Flytt markøren til linjen nedenfor som er merket med --->.
++
++  2. Skriv  :s/deen/den/ <ENTER>  . Legg merke til at denne kommandoen bare
++     forandrer den første forekomsten av «deen» på linjen.
++
++  3. Skriv  :s/deen/den/g . Når g-flagget legges til, betyr dette global
++     erstatning på linjen og erstatter alle forekomster av «deen» på linjen.
++
++---> deen som kan kaste deen tyngste steinen lengst er deen beste
++
++  4. For å erstatte alle forekomster av en tekststreng mellom to linjer,
++     skriv  :#,#s/gammel/ny/g  der #,# er linjenumrene på de to linjene for
++			       linjeområdet erstatningen skal gjøres.
++     Skriv  :%s/gammel/ny/g    for å erstatte tekst i hele filen.
++     Skriv  :%s/gammel/ny/gc   for å finne alle forekomster i hele filen, og
++			       deretter spørre om teksten skal erstattes eller
++			       ikke.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 4
++
++
++  1. Ctrl-G viser nåværende posisjon i filen og filstatusen.
++	     G	går til slutten av filen.
++     nummer  G	går til det linjenummeret.
++	    gg	går til den første linjen.
++
++  2. Skriv  /  etterfulgt av en søketekst for å lete FRAMOVER etter teksten.
++     Skriv  ?  etterfulgt av en søketekst for å lete BAKOVER etter teksten.
++     Etter et søk kan du trykke  n  for å finne neste forekomst i den samme
++     retningen eller  N  for å lete i motsatt retning.
++     CTRL-O tar deg tilbake til gamle posisjoner, CTRL-I til nyere posisjoner.
++
++  3. Skriv  %  når markøren står på en (, ), [, ], { eller } for å finne den
++     som samsvarer.
++
++  4. Erstatte «gammel» med første «ny» på en linje:  :s/gammel/ny
++     Erstatte alle «gammel» med «ny» på en linje:    :s/gammel/ny/g
++     Erstatte tekst mellom to linjenumre:	     :#,#s/gammel/ny/g
++     Erstatte alle forekomster i en fil:	     :%s/gammel/ny/g
++     For å godkjenne hver erstatning, legg til «c»:  :%s/gammel/ny/gc
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++	       Leksjon 5.1: HVORDAN UTFØRE EN EKSTERN KOMMANDO
++
++
++    ** Skriv  :!  etterfulgt av en ekstern kommando for å utføre denne. **
++
++  1. Skriv den velkjente kommandoen  :	 for å plassere markøren på bunnen av
++     skjermen. Dette lar deg skrive en kommandolinjekommando.
++
++  2. Nå kan du skrive tegnet  !  . Dette lar deg utføre en hvilken som helst
++     ekstern kommando.
++
++  3. Som et eksempel, skriv  ls  etter utropstegnet og trykk <ENTER>. Du vil
++     nå få en liste over filene i katalogen, akkurat som om du hadde kjørt
++     kommandoen direkte fra kommandolinjen i skallet. Eller bruk  :!dir  hvis
++     «ls» ikke virker.
++
++MERK: Det er mulig å kjøre alle eksterne kommandoer på denne måten, også med
++      parametere.
++
++MERK: Alle «:»-kommandoer må avsluttes med <ENTER>. Fra dette punktet er det
++      ikke alltid vi nevner det.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 5.2: MER OM LAGRING AV FILER
++
++
++      ** For å lagre endringene gjort i en tekst, skriv  :w FILNAVN. **
++
++  1. Skriv  :!dir  eller  :!ls	for å få en liste over filene i katalogen. Du
++     vet allerede at du må trykke <ENTER> etter dette.
++
++  2. Velg et filnavn på en fil som ikke finnes, som for eksempel  TEST .
++
++  3. Skriv  :w TEST  (der TEST er filnavnet du velger).
++
++  4. Dette lagrer hele filen (denne innføringen) under navnet TEST . For å
++     sjekke dette, skriv  :!dir  eller	:!ls  igjen for å se innholdet av
++     katalogen.
++
++Merk: Hvis du nå hadde avsluttet Vim og startet på nytt igjen med «vim TEST»,
++      ville filen vært en eksakt kopi av innføringen da du lagret den.
++
++  5. Fjern filen ved å skrive  :!rm TEST  hvis du er på et Unix-lignende
++     operativsystem, eller  :!del TEST	hvis du bruker MS-DOS.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 5.3: VELGE TEKST SOM SKAL LAGRES
++
++
++     ** For å lagre en del av en fil, skriv  v	bevegelse  :w FILNAVN **
++
++  1. Flytt markøren til denne linjen.
++
++  2. Trykk  v  og flytt markøren til det femte elementet nedenfor. Legg merke
++     til at teksten blir markert.
++
++  3. Trykk  :  (kolon). På bunnen av skjermen vil  :'<,'>  komme til syne.
++
++  4. Trykk  w TEST  , der TEST er et filnavn som ikke finnes enda. Kontroller
++     at du ser	:'<,'>w TEST  før du trykker Enter.
++
++  5. Vim vil skrive de valgte linjene til filen TEST. Bruk  :!dir  eller  !ls
++     for å se den. Ikke slett den enda! Vi vil bruke den i neste leksjon.
++
++MERK: Ved å trykke  v  startes visuelt valg. Du kan flytte markøren rundt for
++      å gjøre det valgte området større eller mindre. Deretter kan du bruke en
++      operator for å gjøre noe med teksten. For eksempel sletter  d  teksten.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		Leksjon 5.4: HENTING OG SAMMENSLÅING AV FILER
++
++
++ ** For å lese inn en annen fil inn i nåværende buffer, skriv  :r FILNAVN  **
++
++  1. Plasser markøren like over denne linjen.
++
++MERK: Etter å ha utført steg 2 vil du se teksten fra leksjon 5.3. Gå deretter
++      NED for å se denne leksjonen igjen.
++
++  2. Hent TEST-filen ved å bruke kommandoen  :r TEST  der TEST er navnet på
++     filen du brukte. Filen du henter blir plassert nedenfor markørlinjen.
++
++  3. For å sjekke at filen ble hentet, gå tilbake og se at det er to kopier av
++     leksjon 5.3, originalen og denne versjonen.
++
++MERK: Du kan også lese utdataene av en ekstern kommando. For eksempel,	:r !ls
++      leser utdataene av ls-kommandoen og legger dem nedenfor markøren.
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 5
++
++
++  1.  :!kommando  utfører en ekstern kommandio.
++
++      Noen nyttige eksempler er:
++	 (MS-DOS)	  (Unix)
++	  :!dir		   :!ls		  - List filene i katalogen.
++	  :!del FILNAVN    :!rm FILNAVN   - Slett filen FILNAVN.
++
++  2.  :w FILNAVN  skriver den nåværende Vim-filen disken med navnet FILNAVN .
++
++  3.  v  bevegelse  :w FILNAVN	lagrer de visuelt valgte linjene til filen
++     FILNAVN.
++
++  4.  :r FILNAVN  henter filen FILNAVN og legger den inn nedenfor markøren.
++
++  5.  :r !dir  leser utdataene fra «dir»-kommandoen og legger dem nedenfor
++     markørposisjonen.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 6.1: «ÅPNE LINJE»-KOMMANDOEN
++
++
++    ** Skriv  o  for å «åpne opp» for en ny linje etter markøren og gå til
++       innsettingsmodus **
++
++  1. Flytt markøren til linjen nedenfor merket --->.
++
++  2. Skriv  o  (liten o) for å åpne opp en linje NEDENFOR markøren og gå inn i
++     innsettingsmodus.
++
++  3. Skriv litt tekst og trykk <ESC> for å gå ut av innsettingsmodusen.
++
++---> Etter at  o  er skrevet blir markøren plassert på den tomme linjen.
++
++  4. For å åpne en ny linje OVER markøren, trykk rett og slett en stor	O
++     istedenfor en liten  o . Prøv dette på linjen nedenfor.
++
++---> Lag ny linje over denne ved å trykke O mens markøren er på denne linjen.
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		      Leksjon 6.2: «LEGG TIL»-KOMMANDOEN
++
++
++	    ** Skriv  a  for å legge til tekst ETTER markøren. **
++
++  1. Flytt markøren til starten av linjen merket ---> nedenfor.
++
++  2. Trykk  e  til markøren er på slutten av «li».
++
++  3. Trykk  a  (liten a) for å legge til tekst ETTER markøren.
++
++  4. Fullfør ordet sånn som på linjen nedenfor. Trykk <ESC> for å gå ut av
++     innsettingsmodusen.
++
++  5. Bruk  e  for å gå til det neste ufullstendige ordet og repeter steg 3 og
++     4.
++
++---> Denne li lar deg øve på å leg til tek på en linje.
++---> Denne linjen lar deg øve på å legge til tekst på en linje.
++
++Merk: a, i og A går alle til den samme innsettingsmodusen, den eneste
++      forskjellen er hvor tegnene blir satt inn.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		   Leksjon 6.3: EN ANNEN MÅTE Å ERSTATTE PÅ
++
++
++	   ** Skriv en stor  R	for å erstatte mer enn ett tegn. **
++
++  1. Flytt markøren til den første linjen nedenfor merket --->. Flytt markøren
++     til begynnelsen av den første «xxx»-en.
++
++  2. Trykk  R  og skriv inn tallet som står nedenfor på den andre linjen så
++     det erstatter xxx.
++
++  3. Trykk <ESC> for å gå ut av erstatningsmodusen. Legg merke til at resten
++     av linjen forblir uforandret.
++
++  4. Repeter stegene for å erstatte den gjenværende xxx.
++
++---> Ved å legge 123 til xxx får vi xxx.
++---> Ved å legge 123 til 456 får vi 579.
++
++MERK: Erstatningsmodus er lik insettingsmodus, men hvert tegn som skrives
++      erstatter et eksisterende tegn.
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		    Leksjon 6.4: KOPIERE OG LIME INN TEKST
++
++
++    ** Bruk y-operatoren for å kopiere tekst og  p  for å lime den inn **
++
++  1. Gå til linjen merket ---> nedenfor og plasser markøren etter «a)».
++
++  2. Gå inn i visuell modus med  v  og flytt markøren til like før «første».
++
++  3. Trykk  y  for å kopiere (engelsk: «yank») den uthevede teksten.
++
++  4. Flytt markøren til slutten av den neste linjen:  j$
++
++  5. Trykk  p  for å lime inn teksten. Trykk deretter:	a andre <ESC> .
++
++  6. Bruk visuell modus for å velge « valget.», kopier det med	y , gå til
++     slutten av den neste linjen med  j$  og legg inn teksten der med  p .
++
++---> a) Dette er det første valget.
++     b)
++
++Merk: Du kan også bruke  y  som en operator;  yw  kopierer ett ord.
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			    Leksjon 6.5: SETT VALG
++
++
++  ** Sett et valg så søk eller erstatning ignorerer store/små bokstaver. **
++
++  1. Let etter «ignore» ved å skrive:  /ignore <ENTER>
++     Repeter flere ganger ved å trykke	n .
++
++  2. Sett «ic»-valget (Ignore Case) ved å skrive:  :set ic
++
++  3. Søk etter «ignore» igjen ved å trykke  n .
++     Legg merke til at både «Ignore» og «IGNORE» blir funnet.
++
++  4. Sett «hlsearch»- og «incsearch»-valgene:  :set hls is
++
++  5. Skriv søkekommandoen igjen og se hva som skjer:  /ignore <ENTER>
++
++  6. For å slå av ignorering av store/små bokstaver, skriv:  :set noic
++
++Merk: For å fjerne uthevingen av treff, skriv:	:nohlsearch
++Merk: Hvis du vil ignorere store/små bokstaver for kun en søkekommando, bruk
++      \c  i uttrykket:	/ignore\c <ENTER>
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 6
++
++  1. Trykk  o  for å legge til en linje NEDENFOR markøren og gå inn i
++     innsettingsmodus.
++     Trykk  O  for å åpne en linje OVER markøren.
++
++  2. Skriv  a  for å sette inn tekst ETTER markøren.
++     Skriv  A  for å sette inn tekst etter slutten av linjen.
++
++  3. Kommandoen  e  går til slutten av et ord.
++
++  4. Operatoren  y  («yank») kopierer tekst,  p  («paste») limer den inn.
++
++  5. Ved å trykke  R  går du inn i erstatningsmodus helt til  <ESC>  trykkes.
++
++  6. Skriv «:set xxx» for å sette valget «xxx». Noen valg er:
++	«ic» «ignorecase»	ignorer store/små bokstaver under søk
++	«is» «incsearch»	vis delvise treff for en søketekst
++	«hls» «hlsearch»	uthev alle søketreff
++
++  7. Legg til «no» foran valget for å slå det av:  :set noic
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			    Leksjon 7.1: FÅ HJELP
++
++
++		   ** Bruk det innebygde hjelpesystemet. **
++
++  Vim har et omfattende innebygget hjelpesystem. For å starte det, prøv en av
++  disse måtene:
++    - Trykk Hjelp-tasten (hvis du har en)
++    - Trykk F1-tasten (hvis du har en)
++    - Skriv  :help <ENTER>
++
++  Les teksten i hjelpevinduet for å finne ut hvordan hjelpen virker.
++  Skriv  CTRL-W CTRL-W	for å hoppe fra et vindu til et annet
++  Skriv  :q <ENTER>	for å lukke hjelpevinduet.
++
++  Du kan få hjelp for omtrent alle temaer om Vim ved å skrive et parameter til
++  «:help»-kommandoen. Prøv disse (ikke glem å trykke <ENTER>):
++
++    :help w
++    :help c_CTRL-D
++    :help insert-index
++    :help user-manual
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++		     Leksjon 7.2: LAG ET OPPSTARTSSKRIPT
++
++
++			** Slå på funksjoner i Vim **
++
++  Vim har mange flere funksjoner enn Vi, men flesteparten av dem er slått av
++  som standard. For å begynne å bruke flere funksjoner må du lage en
++  «vimrc»-fil.
++
++  1. Start redigeringen av «vimrc»-filen. Dette avhenger av systemet ditt:
++	:e ~/.vimrc	  for Unix
++	:e $VIM/_vimrc	  for MS Windows
++
++  2. Les inn eksempelfilen for «vimrc»:
++	:r $VIMRUNTIME/vimrc_example.vim
++
++  3. Lagre filen med:
++	:w
++
++  Neste gang du starter Vim vil den bruke syntaks-utheving. Du kan legge til
++  alle dine foretrukne oppsett i denne «vimrc»-filen.
++  For mer informasjon, skriv  :help vimrc-intro
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			   Leksjon 7.3: FULLFØRING
++
++
++	      ** Kommandolinjefullføring med CTRL-D og <TAB> **
++
++  1. Vær sikker på at Vim ikke er i Vi-kompatibel modus:  :set nocp
++
++  2. Se hvilke filer som er i katalogen:  :!ls	eller  :!dir
++
++  3. Skriv starten på en kommando:  :e
++
++  4. Trykk  CTRL-D  og Vim vil vise en liste over kommandoer som starter med
++     «e».
++
++  5. Trykk  <TAB>  og Vim vil fullføre kommandonavnet til «:edit».
++
++  6. Legg til et mellomrom og starten på et eksisterende filnavn:  :edit FIL
++
++  7. Trykk <TAB>. Vim vil fullføre navnet (hvis det er unikt).
++
++MERK: Fullføring fungerer for mange kommandoer. Prøv ved å trykke CTRL-D og
++      <TAB>. Det er spesielt nyttig for bruk sammen med  :help .
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++			  OPPSUMMERING AV LEKSJON 7
++
++
++  1. Skriv  :help  eller trykk <F1> eller <Help> for å åpne et hjelpevindu.
++
++  2. Skriv  :help kommando  for å få hjelp om  kommando .
++
++  3. Trykk  CTRL-W CTRL-W  for å hoppe til et annet vindu.
++
++  4. Trykk  :q	for å lukke hjelpevinduet.
++
++  5. Opprett et vimrc-oppstartsskript for å lagre favorittvalgene dine.
++
++  6. Når du skriver en «:»-kommando, trykk CTRL-D for å se mulige
++     fullføringer. Trykk <TAB> for å bruke en fullføring.
++
++
++
++
++
++
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++  Her slutter innføringen i Vim. Den var ment som en rask oversikt over
++  editoren, akkurat nok til å la deg sette i gang med enkel bruk. Den er på
++  langt nær komplett, da Vim har mange flere kommandoer. Les bruksanvisningen
++  ved å skrive	:help user-manual  .
++
++  For videre lesing og studier, kan denne boken anbefales:
++      «Vim - Vi Improved» av Steve Oualline
++      Utgiver: New Riders
++  Den første boken som er fullt og helt dedisert til Vim. Spesielt nyttig for
++  nybegynnere. Inneholder mange eksempler og illustrasjoner.
++  Se http://iccf-holland.org/click5.html
++
++  Denne boken er eldre og handler mer om Vi enn Vim, men anbefales også:
++      «Learning the Vi Editor» av Linda Lamb
++      Utgiver: O'Reilly & Associates Inc.
++  Det er en god bok for å få vite omtrent hva som helst om Vi.
++  Den sjette utgaven inneholder også informasjon om Vim.
++
++  Denne innføringen er skrevet av Michael C. Pierce og Robert K. Ware,
++  Colorado School of Mines med idéer av Charles Smith, Colorado State
++  University. E-mail: [email protected] .
++
++  Modifisert for Vim av Bram Moolenaar.
++  Oversatt av Øyvind A. Holm. E-mail: vimtutor _AT_ sunbase.org
++  Id: tutor.no 406 2007-03-18 22:48:36Z sunny
++
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++vim: set ts=8 :
+diff -Nur runtime/tutor/tutor.pl runtime/tutor/tutor.pl
+--- runtime/tutor/tutor.pl	2008-06-26 13:52:38.000000000 -0700
++++ runtime/tutor/tutor.pl	2011-01-18 10:40:56.536934280 -0800
+@@ -2,9 +2,9 @@
+ =    W i t a j   w   t u t o r i a l u   V I M - a      -    Wersja  1.7.     =
+ ===============================================================================
+ 
+-     Vim to pot�ny edytor, kt�ry posiada wiele polece�, zbyt du�o by
++     Vim to pot�ny edytor, kt�ry posiada wiele polece�, zbyt du�o, by
+      wyja�ni� je wszystkie w tym tutorialu. Ten przewodnik ma nauczy�
+-     Ci� pos�ugiwa� si� wystarczaj�co wieloma komendami by� m�g� �atwo
++     Ci� pos�ugiwa� si� wystarczaj�co wieloma komendami, by� m�g� �atwo
+      u�ywa� Vima jako edytora og�lnego przeznaczenia.
+ 
+      Czas potrzebny na uko�czenie tutoriala to 25 do 30 minut i zale�y
+@@ -13,14 +13,14 @@
+ 	 UWAGA:
+ 	 Polecenia wykonywane w czasie lekcji zmodyfikuj� tekst. Zr�b
+ 	 wcze�niej kopi� tego pliku do �wicze� (je�li zacz��e� komend�
+-	 "vimtutor" to ju� pracujesz na kopii).
++	 "vimtutor", to ju� pracujesz na kopii).
+ 
+-	 Pami�taj �e przewodnik ten zosta� zaprojektowany do nauki poprzez
+-	 �wiczenia. Oznacza to, �e musisz wykonywa� polecenia by nauczy� si� ich
+-	 prawid�owo. Je�li b�dziesz jedynie czyta� tekst szybko zapomnisz wiele
++	 Pami�taj, �e przewodnik ten zosta� zaprojektowany do nauki poprzez
++	 �wiczenia. Oznacza to, �e musisz wykonywa� polecenia, by nauczy� si� ich
++	 prawid�owo. Je�li b�dziesz jedynie czyta� tekst, szybko zapomnisz wiele
+ 	 polece�!
+ 
+-     Teraz upewnij si�, �e nie masz wci�ni�tego CapsLocka i wciskaj  j
++     Teraz upewnij si�, �e nie masz wci�ni�tego Caps Locka i wciskaj  j
+      tak d�ugo dop�ki Lekcja 1.1. nie wype�ni ca�kowicie ekranu.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@@ -40,28 +40,28 @@
+ 
+   3. U�ywaj�c strza�ki w d� przejd� do nast�pnej lekcji.
+ 
+-Uwaga: Je�li nie jeste� pewien czego� co wpisa�e�, wci�nij <ESC> by wr�ci� do
++Uwaga: Je�li nie jeste� pewien czego� co wpisa�e�, wci�nij <ESC>, by wr�ci� do
+        trybu Normal. Wtedy powt�rz polecenie.
+ 
+ Uwaga: Klawisze kursora tak�e powinny dzia�a�, ale u�ywaj�c  hjkl  b�dziesz
+-       w stanie porusza� si� o wiele szybciej jak si� tylko przyzwyczaisz.
++       w stanie porusza� si� o wiele szybciej, jak si� tylko przyzwyczaisz.
+        Naprawd�!
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
+ 
+- !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca�� lekcj�.!!
++ !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca�� lekcj� !!
+ 
+   1. Wci�nij <ESC> (aby upewni� si�, �e jeste� w trybie Normal).
+   2. Wpisz:			:q!<ENTER>.
+-     To spowoduje wyj�cie z edytora PORZUCAJ�C wszelkie zmiany jakie
+-     zd��y�e� zrobi�. Je�li chcesz zapami�ta� zmiany i wyj��
++     To spowoduje wyj�cie z edytora PORZUCAJ�C wszelkie zmiany, jakie
++     zd��y�e� zrobi�. Je�li chcesz zapami�ta� zmiany i wyj��,
+      wpisz:			:wq<ENTER>
+ 
+   3. Kiedy widzisz znak zach�ty pow�oki wpisz komend�, �eby wr�ci�
+      do tutoriala. Czyli:	vimtutor<ENTER>
+ 
+-  4. Je�li chcesz zapami�ta� polecenia, wykonaj kroki 1. do 3. aby
++  4. Je�li chcesz zapami�ta� polecenia, wykonaj kroki 1. do 3., aby
+      wyj�� i wr�ci� do edytora.
+ 
+ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi�e�. W nast�pnych
+@@ -85,7 +85,7 @@
+ 
+ ---> Kkrowa prrzeskoczy�a prrzez ksii�ycc.
+ 
+-  5. Teraz kiedy zdanie jest poprawione przejd� do Lekcji 1.4.
++  5. Teraz, kiedy zdanie jest poprawione, przejd� do Lekcji 1.4.
+ 
+ UWAGA: Ucz si� przez �wiczenie, nie wkuwanie.
+ 
+@@ -101,18 +101,18 @@
+ 
+   1. Przenie� kursor do pierwszej linii poni�ej oznaczonej --->.
+ 
+-  2. Aby poprawi� pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym
++  2. Aby poprawi� pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym,
+      gdzie tekst ma by� wstawiony.
+ 
+   3. Wci�nij  i  a nast�pnie wpisz konieczne poprawki.
+ 
+-  4. Po poprawieniu b��du wci�nij <ESC> by wr�ci� do trybu Normal.
+-     Powtarzaj kroki 2. do 4. aby poprawi� ca�e zdanie.
++  4. Po poprawieniu b��du wci�nij <ESC>, by wr�ci� do trybu Normal.
++     Powtarzaj kroki 2. do 4., aby poprawi� ca�e zdanie.
+ 
+ ---> W tej brkje troch� .
+ ---> W tej linii brakuje troch� tekstu.
+ 
+-  5. Kiedy czujesz si� swobodnie wstawiaj�c tekst przejd� do
++  5. Kiedy czujesz si� swobodnie wstawiaj�c tekst, przejd� do
+      podsumowania poni�ej.
+ 
+ 
+@@ -129,7 +129,7 @@
+ 
+   3. Kiedy tekst zosta� dodany, wci�nij <ESC> i wr�� do trybu Normalnego.
+ 
+-  4. Przenie� kursor do drugiej linii oznaczonej ---> i powt�rz kroki 2 i 3
++  4. Przenie� kursor do drugiej linii oznaczonej ---> i powt�rz kroki 2. i 3.,
+      aby poprawi� zdanie.
+ 
+ ---> Brakuje tu tro
+@@ -137,27 +137,27 @@
+ ---> Tu te� troch� bra
+      Tu te� troch� brakuje.
+ 
+-  5. Kiedy ju� utrwali�e� �wiczenie przejd� do lekcji 1.6.
++  5. Kiedy ju� utrwali�e� �wiczenie, przejd� do lekcji 1.6.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			  Lekcja 1.6.: EDYCJA PLIKU
+ 
+ 		  ** U�yj  :wq  aby zapisa� plik i wyj��. **
+ 
+-   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca�� lekcj� !!
++   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca�� lekcj� !!
+ 
+   1. Zako�cz tutorial tak jak w lekcji 1.2.:  :q!
+-     Lub je�li masz dost�p do innego terminala zr�b kolejne kroki tam.
++     lub, je�li masz dost�p do innego terminala, wykonaj kolejne kroki tam.
+ 
+   2. W pow�oce wydaj polecenie:  vim tutor<ENTER>
+-     "vim" jest poleceniem uruchamiaj�cym edytor Vim. 'tutor' to nazwa pliku
+-     jaki chcesz edytowa�. U�yj pliku jaki mo�e zosta� zmieniony.
++     "vim" jest poleceniem uruchamiaj�cym edytor Vim. 'tutor' to nazwa pliku,
++     jaki chcesz edytowa�. U�yj pliku, kt�ry mo�e zosta� zmieniony.
+ 
+-  3. Dodaj i usu� tekst tak jak si� nauczy�e� w poprzednich lekcjach.
++  3. Dodaj i usu� tekst tak, jak si� nauczy�e� w poprzednich lekcjach.
+ 
+   4. Zapisz plik ze zmianami i opu�� Vima:  :wq<ENTER>
+ 
+-  5. Je�li zako�czy�e� vimtutor w kroku 1. uruchom go ponownie i przejd�
++  5. Je�li zako�czy�e� vimtutor w kroku 1., uruchom go ponownie i przejd�
+      do podsumowania poni�ej.
+ 
+   6. Po przeczytaniu wszystkich krok�w i ich zrozumieniu: wykonaj je.
+@@ -168,14 +168,14 @@
+   1. Poruszasz kursorem u�ywaj�c "strza�ek" i klawiszy  hjkl .
+        h (w lewo)	 j (w d�)	 k (do g�ry)		l (w prawo)
+ 
+-  2. By wej�� do Vima (z pow�oki) wpisz:
++  2. By wej�� do Vima, (z pow�oki) wpisz:
+ 			    vim NAZWA_PLIKU<ENTER>
+ 
+-  3. By wyj�� z Vima wpisz:
+-			    <ESC> :q!<ENTER>  by usun�c wszystkie zmiany.
++  3. By wyj�� z Vima, wpisz:
++			    <ESC> :q!<ENTER>  by usun�� wszystkie zmiany.
+ 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachowa�.
+ 
+-  4. By usun�� znak pod kursorem wci�nij:  x
++  4. By usun�� znak pod kursorem, wci�nij:  x
+ 
+   5. By wstawi� tekst przed kursorem lub doda�:
+ 	i   wpisz tekst   <ESC>         wstawi przed kursorem
+@@ -189,18 +189,18 @@
+ 		  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
+ 
+ 
+-		      ** Wpisz  dw  by usun�c wyraz. **
++		      ** Wpisz  dw  by usun�� wyraz. **
+ 
+-  1. Wci�nij  <ESC>  by upewni� si�, �e jeste� w trybie Normal.
++  1. Wci�nij  <ESC>, by upewni� si�, �e jeste� w trybie Normal.
+ 
+   2. Przenie� kursor do linii poni�ej oznaczonej --->.
+ 
+-  3. Przesu� kursor na pocz�tek wyrazu, kt�re chcesz usun��.
++  3. Przesu� kursor na pocz�tek wyrazu, kt�ry chcesz usun��.
+ 
+   4. Wpisz   dw   by usun�� wyraz.
+ 
+   UWAGA: Litera  d  pojawi si� na dole ekranu. Vim czeka na wpisanie  w .
+-	 Je�li zobaczysz inny znak oznacza to, �e wpisa�e� co� �le, wci�nij
++	 Je�li zobaczysz inny znak, oznacza to, �e wpisa�e� co� �le; wci�nij
+ 	 <ESC> i zacznij od pocz�tku.
+ 
+ ---> Jest tu par� papier wyraz�w, kt�re kamie� nie nale�� do no�yce tego zdania.
+@@ -225,7 +225,7 @@
+ ---> Kto� wpisa� koniec tego zdania dwukrotnie. zdania dwukrotnie.
+ 
+ 
+-  5. Przejd� do Lekcji 2.3. by zrozumie� co si� sta�o.
++  5. Przejd� do Lekcji 2.3., by zrozumie� co si� sta�o.
+ 
+ 
+ 
+@@ -235,12 +235,12 @@
+ 		     Lekcja 2.3.: O OPERATORACH I RUCHACH
+ 
+ 
+-  Wiele polece� zmieniaj�cych tekst s� z�o�one z operatora i ruchu.
+-  Format dla polecenia usuwaj�cego z operatorem  d  jest taki:
++  Wiele polece� zmieniaj�cych tekst jest z�o�onych z operatora i ruchu.
++  Format dla polecenia usuwaj�cego z operatorem  d  jest nast�puj�cy:
+ 
+ 	    d  ruch
+ 
+-  Gdzie:
++  gdzie:
+    d      - operator usuwania.
+    ruch   - na czym polecenie b�dzie wykonywane (lista poni�ej).
+ 
+@@ -252,7 +252,7 @@
+ W ten spos�b wpisanie  de  usunie znaki od kursora do ko�ca wyrazu.
+ 
+ UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
+-       tak jak to okre�lono.
++       tak, jak to okre�lono.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		    Lekcja 2.4.: U�YCIE MNO�NIKA DLA RUCHU
+@@ -266,32 +266,32 @@
+ 
+   3. Wpisz  3e  aby przenie�� kursor do ko�ca trzeciego wyrazu w prz�d.
+ 
+-  4. Wpisz  0  (zero) aby przenie�� kursor do pocz�tku linii.
++  4. Wpisz  0  (zero), aby przenie�� kursor na pocz�tek linii.
+ 
+   5. Powt�rz kroki 2. i 3. z innymi liczbami.
+ 
+ 
+- ---> To jest zwyk�y wiersz z wyrazami po kt�rych mo�esz si� porusza�.
++ ---> To jest zwyk�y wiersz z wyrazami, po kt�rych mo�esz si� porusza�.
+ 
+   6. Przejd� do lekcji 2.5.
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		Lekcja 2.5.: U�YCIE MNO�NIKA BY WI�CEJ USUN��
++		Lekcja 2.5.: U�YCIE MNO�NIKA, BY WI�CEJ USUN��
+ 
+ 
+     ** Wpisanie liczby z operatorem powtarza go odpowiedni� ilo�� razy. **
+ 
+   W wy�ej wspomnianej kombinacji operatora usuwania i ruchu podaj mno�nik
+-  przed ruchem by wi�cej usun��:
++  przed ruchem, by wi�cej usun��:
+ 	d  liczba  ruch
+ 
+   1. Przenie� kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->.
+ 
+   2. Wpisz  2dw  aby usun�� dwa wyrazy KAPITALIKAMI.
+ 
+-  3. Powtarzaj kroki 1. i 2. z innymi mno�nikami aby usun�� kolejne wyrazy
++  3. Powtarzaj kroki 1. i 2. z innymi mno�nikami, aby usun�� kolejne wyrazy
+      KAPITALIKAMI jednym poleceniem
+ 
+ ---> ta ASD WE linia QWE ASDF ZXCV FG wyraz�w zosta�a ERT FGH CF oczyszczona.
+@@ -312,7 +312,7 @@
+   1. Przenie� kursor do drugiego zdania z wierszyka poni�ej.
+   2. Wpisz  dd  aby usun�� wiersz.
+   3. Teraz przenie� si� do czwartego wiersza.
+-  4. Wpisz  2dd  aby usun�c dwa wiersze.
++  4. Wpisz  2dd  aby usun�� dwa wiersze.
+ 
+ --->  1)  R�e s� czerwone,
+ --->  2)  B�oto jest fajne,
+@@ -335,12 +335,12 @@
+   2. Wpisz  x  aby usun�� pierwszy niechciany znak.
+   3. Teraz wci�nij  u  aby cofn�� skutki ostatniego polecenia.
+   4. Tym razem popraw wszystkie b��dy w linii u�ywaj�c polecenia  x .
+-  5. Teraz wci�nij wielkie U aby przywr�ci� lini� do oryginalnego stanu.
+-  6. Teraz wci�nij  u  kilka razy by cofn��  U  i poprzednie polecenia.
++  5. Teraz wci�nij wielkie  U  aby przywr�ci� lini� do oryginalnego stanu.
++  6. Teraz wci�nij  u  kilka razy, by cofn��  U  i poprzednie polecenia.
+   7. Teraz wpisz CTRL-R (trzymaj r�wnocze�nie wci�ni�te klawisze CTRL i R)
+      kilka razy, by cofn�� cofni�cia.
+ 
+----> Poopraw bl�dyyy w teej liniii i zaamiie� je prrzez coofnij.
++---> Poopraw b��dyyy w teej liniii i zaamiie� je prrzez coofnij.
+ 
+   8. To s� bardzo po�yteczne polecenia.
+ 
+@@ -350,22 +350,22 @@
+ 			     LEKCJA 2. PODSUMOWANIE
+ 
+ 
+-  1. By usun�� znaki od kursora do nast�pnego wyrazu wpisz:   dw
+-  2. By usun�� znaki od kursora do ko�ca linii wpisz:    d$
++  1. By usun�� znaki od kursora do nast�pnego wyrazu, wpisz:   dw
++  2. By usun�� znaki od kursora do ko�ca linii, wpisz:    d$
+   3. By usun�� ca�� lini�:    dd
+-  4. By powt�rzy� ruch poprzed� go liczb�:    2w
++  4. By powt�rzy� ruch, poprzed� go liczb�:    2w
+   5. Format polecenia zmiany to:
+                 operator  [liczba]  ruch
+   gdzie:
+-   operator  - to co trzeba zrobi� (np.  d  dla usuwania)
++   operator  - to, co trzeba zrobi� (np.  d  dla usuwania)
+    [liczba]  - opcjonalne, ile razy powt�rzy� ruch
+    ruch      - przenosi nad tekstem do operowania, takim jak  w (wyraz),
+-	       $  (do ko�ca linii), etc.
++	       $  (do ko�ca linii) etc.
+ 
+-  6. By przej�� do pocz�tku linii u�yj zera:  0
+-  7. By cofn�� poprzednie polecenie, wpisz:	  u (ma�e u)
+-     By cofn�� wszystkie zmiany w linii wpisz:	  U (wielkie U)
+-     By cofn�� cofni�cia wpisz:			  CTRL-R
++  6. By przej�� do pocz�tku linii, u�yj zera:  0
++  7. By cofn�� poprzednie polecenie, wpisz:	  u  (ma�e u)
++     By cofn�� wszystkie zmiany w linii, wpisz:	  U  (wielkie U)
++     By cofn�� cofni�cie, wpisz:			  CTRL-R
+ 
+ 
+ 
+@@ -379,7 +379,7 @@
+ 
+   2. Wpisz  dd  aby usun�� lini� i przechowa� j� w rejestrze Vima.
+ 
+-  3. Przenie� kursor do linii c), POWY�EJ tej gdzie usuni�ta linia powinna
++  3. Przenie� kursor do linii c), POWY�EJ tej, gdzie usuni�ta linia powinna
+      si� znajdowa�.
+ 
+   4. Wci�nij  p  by wstawi� lini� poni�ej kursora.
+@@ -404,21 +404,21 @@
+ 
+   3. Wpisz  r  a potem znak jaki powinien go zast�pi�.
+ 
+-  4. Powtarzaj kroki 2. i 3. dop�ki pierwsza linia nie b�dzie taka jak druga.
++  4. Powtarzaj kroki 2. i 3. dop�ki pierwsza linia nie b�dzie taka, jak druga.
+ 
+---->  Kjedy ten wiersz bi� wst�kiwany kto� wcizn�� per� z�ych klawirzy!
+---->  Kiedy ten wiersz by� wstukiwany kto� wcisn�� par� z�ych klawiszy!
++--->  Kjedy ten wiersz bi� wst�kiwany, kto� wcizn�� per� z�ych klawirzy!
++--->  Kiedy ten wiersz by� wstukiwany, kto� wcisn�� par� z�ych klawiszy!
+ 
+   5. Teraz czas na Lekcj� 3.3.
+ 
+ 
+-UWAGA: Pami�taj by uczy� si� �wicz�c, a nie pami�ciowo.
++UWAGA: Pami�taj, by uczy� si� �wicz�c, a nie pami�ciowo.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		     Lekcja 3.3.: OPERATOR CHANGE (zmie�)
+ 
+-		 ** By zmieni� do ko�ca wyrazu wpisz  ce . **
++		 ** By zmieni� do ko�ca wyrazu, wpisz  ce . **
+ 
+   1. Przenie� kursor do pierwszej linii poni�ej oznaczonej --->.
+ 
+@@ -428,7 +428,7 @@
+ 
+   4. Wci�nij <ESC> i przejd� do nast�pnej planowanej zmiany.
+ 
+-  5. Powtarzaj kroki 3. i 4. dop�ki pierwsze zdanie nie b�dzie takie same
++  5. Powtarzaj kroki 3. i 4. dop�ki pierwsze zdanie nie b�dzie takie same,
+      jak drugie.
+ 
+ ---> Ta lunos ma pire s��w, kt�re t�ina zbnic u�ifajonc pcmazu zmie�.
+@@ -442,13 +442,13 @@
+ 		      Lekcja 3.4.: WI�CEJ ZMIAN U�YWAJ�C c
+ 
+ 
+-	** Polecenie change u�ywa takich samych ruch�w jak delete. **
++	** Polecenie change u�ywa takich samych ruch�w, jak delete. **
+ 
+-  1. Operator change dzia�a tak samo jak delete. Format wygl�da tak:
++  1. Operator change dzia�a tak samo, jak delete. Format wygl�da tak:
+ 
+ 	    c   [liczba]   ruch
+ 
+-  2. Ruchy s� tak�e takie same, np.:  w  (wyraz),  $  (koniec linii), etc.
++  2. Ruchy s� tak�e takie same, np.:  w  (wyraz),  $  (koniec linii) etc.
+ 
+   3. Przenie� si� do pierwszej linii poni�ej oznaczonej --->
+ 
+@@ -456,7 +456,7 @@
+ 
+   5. Wpisz  c$ , popraw koniec wiersza i wci�nij <ESC>.
+ 
+----> Koniec tego wiersza musi by� poprawiony aby wygl�da� tak jak drugi.
++---> Koniec tego wiersza musi by� poprawiony, aby wygl�da� tak, jak drugi.
+ ---> Koniec tego wiersza musi by� poprawiony u�ywaj�c polecenia  c$ .
+ 
+ UWAGA:  Mo�esz u�ywa� <BS> aby poprawia� b��dy w czasie pisania.
+@@ -469,11 +469,11 @@
+      polecenie wstawia skasowany tekst PO kursorze (je�li ca�a linia
+      zosta�a usuni�ta, zostanie ona umieszczona w linii poni�ej kursora).
+ 
+-  2. By zamieni� znak pod kursorem wci�nij  r  a potem znak, kt�ry ma zast�pi�
++  2. By zamieni� znak pod kursorem, wci�nij  r  a potem znak, kt�ry ma zast�pi�
+      oryginalny.
+ 
+-  3. Operator change pozwala Ci na zast�pienie od kursora do miejsca gdzie
+-     zabra�by ci� ruch. Np. wpisz  ce  aby zamieni� tekst od kursora do ko�ca
++  3. Operator change pozwala Ci na zast�pienie od kursora do miejsca, gdzie
++     zabra�by Ci� ruch. Np. wpisz  ce  aby zamieni� tekst od kursora do ko�ca
+      wyrazu,  c$  aby zmieni� tekst do ko�ca linii.
+ 
+   4. Format do polecenia change (zmie�):
+@@ -497,12 +497,12 @@
+      Zapami�taj numer linii dla potrzeb kroku 3.
+ 
+ UWAGA: Mo�esz te� zobaczy� pozycj� kursora w prawym, dolnym rogu ekranu.
+-       Dzieje si� tak kiedy ustawiona jest opcja 'ruler' (wyja�nione w lekcji 6.).
++       Dzieje si� tak kiedy ustawiona jest opcja 'ruler' (wi�cej w lekcji 6.).
+ 
+   2. Wci�nij G aby przej�� na koniec pliku.
+      Wci�nij  gg  aby przej�� do pocz�tku pliku.
+ 
+-  3. Wpisz numer linii, w kt�rej by�e� a potem  G . To przeniesie ci�
++  3. Wpisz numer linii, w kt�rej by�e� a potem  G . To przeniesie Ci�
+      z powrotem do linii, w kt�rej by�e� kiedy wcisn��e� CTRL-G.
+ 
+   4. Je�li czujesz si� wystarczaj�co pewnie, wykonaj kroki 1-3.
+@@ -511,10 +511,10 @@
+ 			 Lekcja 4.2.: POLECENIE SZUKAJ
+ 
+ 
+-	     ** Wpisz  /  a nast�pnie wyra�enie aby je znale��. **
++	     ** Wpisz  /  a nast�pnie wyra�enie, aby je znale��. **
+ 
+-  1. W trybie Normal wpisz  / . Zauwa�, �e znak ten, oraz kursor pojawi�
+-     si� na dole ekranu tak samo jak polecenie  : .
++  1. W trybie Normal wpisz  / . Zauwa�, �e znak ten oraz kursor pojawi�
++     si� na dole ekranu tak samo, jak polecenie  : .
+ 
+   2. Teraz wpisz  b�ond<ENTER> .  To jest s�owo, kt�rego chcesz szuka�.
+ 
+@@ -523,11 +523,11 @@
+ 
+   4. Je�li chcesz szuka� frazy do ty�u, u�yj polecenia  ?  zamiast  / .
+ 
+-  5. Aby wr�ci� gdzie by�e� wci�nij  CTRL-O. Powtarzaj by wr�ci� dalej. CTRL-I
++  5. Aby wr�ci� gdzie by�e�, wci�nij  CTRL-O. Powtarzaj, by wr�ci� dalej. CTRL-I
+      idzie do przodu.
+ 
+-Uwaga:  'b�ond' to nie jest metoda by przeliterowa� b��d; 'b�ond' to b��d.
+-Uwaga:  Kiedy szukanie osi�gnie koniec pliku b�dzie kontynuowa�o od pocz�tku
++Uwaga:  'b�ond' to nie jest metoda, by przeliterowa� b��d; 'b�ond' to b��d.
++Uwaga:  Kiedy szukanie osi�gnie koniec pliku, b�dzie kontynuowane od pocz�tku
+         o ile opcja 'wrapscan' nie zosta�a przestawiona.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@@ -571,16 +571,16 @@
+ 
+   4. Aby zmieni� wszystkie wyst�pienia �a�cucha znak�w pomi�dzy dwoma liniami,
+      wpisz: :#,#s/stare/nowe/g gdzie #,# s� numerami linii ograniczaj�cych
+-                               region gdzie ma nast�pi� zamiana.
++                               region, gdzie ma nast�pi� zamiana.
+      wpisz  :%s/stare/nowe/g   by zmieni� wszystkie wyst�pienia w ca�ym pliku.
+      wpisz  :%s/stare/nowe/gc  by zmieni� wszystkie wyst�pienia w ca�ym
+-                               pliku, prosz�c o potwierdzenie za ka�dym razem
++                               pliku, prosz�c o potwierdzenie za ka�dym razem.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			     LEKCJA 4. PODSUMOWANIE
+ 
+   1. CTRL-G   poka�e Twoj� pozycj� w pliku i status pliku.  SHIFT-G przenosi
+-	      ci� do ko�ca pliku.
++	      Ci� do ko�ca pliku.
+      G        przenosi do ko�ca pliku.
+      liczba G przenosi do linii [liczba].
+      gg       przenosi do pierwszej linii.
+@@ -588,22 +588,22 @@
+   2. Wpisanie  /  a nast�pnie �a�cucha znak�w szuka �a�cucha DO PRZODU.
+      Wpisanie  ?  a nast�pnie �a�cucha znak�w szuka �a�cucha DO TY�U.
+      Po wyszukiwaniu wci�nij  n  by znale�� nast�pne wyst�pienie szukanej
+-     frazy tym samym kierunku lub  N  by szuka� w kierunku przeciwnym.
++     frazy w tym samym kierunku lub  N  by szuka� w kierunku przeciwnym.
+      CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych.
+ 
+   3. Wpisanie  %  gdy kursor znajduje si� na (,),[,],{, lub } lokalizuje
+      paruj�cy znak.
+ 
+-  4. By zamieni� pierwszy stary na nowy w linii wpisz      :s/stary/nowy
+-     By zamieni� wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
++  4. By zamieni� pierwszy stary na nowy w linii, wpisz      :s/stary/nowy
++     By zamieni� wszystkie stary na nowy w linii, wpisz     :s/stary/nowy/g
+      By zamieni� frazy pomi�dzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
+-     By zamieni� wszystkie wyst�pienia w pliku wpisz       :%s/stary/nowy/g
+-     By Vim prosi� Ci� o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
++     By zamieni� wszystkie wyst�pienia w pliku, wpisz       :%s/stary/nowy/g
++     By Vim prosi� Ci� o potwierdzenie, dodaj 'c'	   :%s/stary/nowy/gc
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Lekcja 5.1.: JAK WYKONA� POLECENIA ZEWN�TRZNE
++		 Lekcja 5.1.: JAK WYKONA� POLECENIA ZEWN�TRZNE?
+ 
+ 
+-	** Wpisz  :!  a nast�pnie zewn�trzne polecenie by je wykona�. **
++	** Wpisz  :!  a nast�pnie zewn�trzne polecenie, by je wykona�. **
+ 
+   1. Wpisz znajome polecenie  :  by ustawi� kursor na dole ekranu. To pozwala
+      na wprowadzenie komendy linii polece�.
+@@ -626,20 +626,20 @@
+ 		    Lekcja 5.2.: WI�CEJ O ZAPISYWANIU PLIK�W
+ 
+ 
+-	   ** By zachowa� zmiany w tek�ci wpisz :w NAZWA_PLIKU . **
++	   ** By zachowa� zmiany w tek�cie, wpisz :w NAZWA_PLIKU . **
+ 
+   1. Wpisz  :!dir  lub  :!ls  by zobaczy� spis plik�w w katalogu.
+-     Ju� wiesz, �e musisz wcisn�� <ENTER> po tym.
++     Ju� wiesz, �e musisz po tym wcisn�� <ENTER>.
+ 
+-  2. Wybierz nazw� pliku jaka jeszcze nie istnieje, np. TEST.
++  2. Wybierz nazw� pliku, jaka jeszcze nie istnieje, np. TEST.
+ 
+   3. Teraz wpisz:   :w TEST   (gdzie TEST jest nazw� pliku jak� wybra�e�.)
+ 
+   4. To polecenie zapami�ta ca�y plik (Vim Tutor) pod nazw� TEST.
+-     By to sprawdzi� wpisz  :!dir  lub  :!ls , �eby znowu zobaczy� list� plik�w.
++     By to sprawdzi�, wpisz  :!dir  lub  :!ls  �eby znowu zobaczy� list� plik�w.
+ 
+ Uwaga: Zauwa�, �e gdyby� teraz wyszed� z Vima, a nast�pnie wszed� ponownie
+-       poleceniem  vim TEST , plik by�by dok�adn� kopi� tutoriala kiedy go
++       poleceniem  vim TEST , plik by�by dok�adn� kopi� tutoriala, kiedy go
+        zapisywa�e�.
+ 
+   5. Teraz usu� plik wpisuj�c (MS-DOS):		   :!del TEST
+@@ -649,7 +649,7 @@
+ 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
+ 
+ 
+-	  ** By zachowa� cz�� pliku wpisz  v ruch :w NAZWA_PLIKU **
++	  ** By zachowa� cz�� pliku, wpisz  v ruch :w NAZWA_PLIKU **
+ 
+   1. Przenie� kursor do tego wiersza.
+ 
+@@ -664,26 +664,26 @@
+   5. Vim zapisze wybrane linie do pliku TEST. U�yj  :!dir  lub  :!ls , �eby to
+      zobaczy�. Jeszcze go nie usuwaj! U�yjemy go w nast�pnej lekcji.
+ 
+-UWAGA: Wci�ni�cie  v  zaczyna tryb Wizualny. Mo�esz porusza� kursorem by
+-       zmieni� rozmiary zaznaczenia. Mo�esz te� u�y� operatora by zrobi� co�
++UWAGA: Wci�ni�cie  v  zaczyna tryb Wizualny. Mo�esz porusza� kursorem, by
++       zmieni� rozmiary zaznaczenia. Mo�esz te� u�y� operatora, by zrobi� co�
+        z tekstem. Na przyk�ad  d  usuwa tekst.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		   Lekcja 5.4.: WSTAWIANIE I ��CZENIE PLIK�W
+ 
+ 
+-	    ** By wstawi� zawarto�� pliku wpisz   :r NAZWA_PLIKU **
++	    ** By wstawi� zawarto�� pliku, wpisz   :r NAZWA_PLIKU **
+ 
+   1. Umie�� kursor tu� powy�ej tej linii.
+ 
+ UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd�
+-       do DO�U by zobaczy� ponownie t� lekcj�.
++       do DO�U, by zobaczy� ponownie t� lekcj�.
+ 
+   2. Teraz wczytaj plik TEST u�ywaj�c polecenia  :r TEST , gdzie TEST
+      jest nazw� pliku.
+      Wczytany plik jest umieszczony poni�ej linii z kursorem.
+ 
+-  3. By sprawdzi� czy plik zosta� wczytany cofnij kursor i zobacz, �e
++  3. By sprawdzi� czy plik zosta� wczytany, cofnij kursor i zobacz, �e
+      teraz s� dwie kopie Lekcji 5.3., orygina� i kopia z pliku.
+ 
+ UWAGA: Mo�esz te� wczyta� wyj�cie zewn�trznego polecenia. Na przyk�ad
+@@ -723,14 +723,14 @@
+ 
+   1. Przenie� kursor do linii poni�ej oznaczonej --->.
+ 
+-  2. Wpisz  o  (ma�e) by otworzy� lini� PONI�EJ kursora i przenie�� si�
++  2. Wpisz  o  (ma�e), by otworzy� lini� PONI�EJ kursora i przenie�� si�
+      do trybu Insert (wprowadzanie).
+ 
+   3. Wpisz troch� tekstu i wci�nij <ESC> by wyj�� z trybu Insert (wprowadzanie).
+ 
+ ---> Po wci�ni�ciu  o  kursor znajdzie si� w otwartej linii w trybie Insert.
+ 
+-  4. By otworzy� lini� POWY�EJ kursora wci�nij wielkie  O  zamiast ma�ego
++  4. By otworzy� lini� POWY�EJ kursora, wci�nij wielkie  O  zamiast ma�ego
+      o . Wypr�buj to na linii poni�ej.
+ 
+ ---> Otw�rz lini� powy�ej wciskaj�c SHIFT-O gdy kursor b�dzie na tej linii.
+@@ -747,9 +747,9 @@
+ 
+   2. Wciskaj  e  dop�ki kursor nie b�dzie na ko�cu li .
+ 
+-  3. Wpisz  a  (ma�e) aby doda� tekst ZA znakiem pod kursorem.
++  3. Wpisz  a  (ma�e), aby doda� tekst ZA znakiem pod kursorem.
+ 
+-  4. Doko�cz wyraz tak jak w linii poni�ej. Wci�nij <ESC> aby opu�ci� tryb
++  4. Doko�cz wyraz tak, jak w linii poni�ej. Wci�nij <ESC> aby opu�ci� tryb
+      Insert.
+ 
+   5. U�yj  e  by przej�� do kolejnego niedoko�czonego wyrazu i powtarzaj kroki
+@@ -758,7 +758,7 @@
+ ---> Ta li poz Ci �wi dodaw teks do ko� lin
+ ---> Ta linia pozwoli Ci �wiczy� dodawanie tekstu do ko�ca linii.
+ 
+-Uwaga:  a ,  i  oraz  A  prowadz� do trybu Insert, jedyn� r�nic� jest miejsce
++Uwaga:  a ,  i  oraz  A  prowadz� do trybu Insert, jedyn� r�nic� jest miejsce,
+        gdzie nowe znaki b�d� dodawane.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
+@@ -791,16 +791,16 @@
+ 
+   1. Przejd� do linii oznaczonej ---> i umie�� kursor za "a)".
+ 
+-  2. Wejd� w tryb Visual  v  i przenie� kursor na pocz�tek "pierwszy".
++  2. Wejd� w tryb Wizualny  v  i przenie� kursor na pocz�tek "pierwszy".
+ 
+-  3. Wci�nij  y  aby yankowa� (kopiowa�) pod�wietlony tekst.
++  3. Wci�nij  y  aby kopiowa� (yankowa�) pod�wietlony tekst.
+ 
+   4. Przenie� kursor do ko�ca nast�pnej linii:  j$
+ 
+-  5. Wci�nij  p  aby wpakowa� (paste) tekst.  Dodaj:  a drugi<ESC> .
++  5. Wci�nij  p  aby wklei� (wpakowa�) tekst.  Dodaj:  a drugi<ESC> .
+ 
+-  6. U�yj trybu Wizualnego aby wybra� " element.", yankuj go  y , przejd� do
+-     ko�ca nast�pnej linii  j$ i upakuj tam tekst z  p .
++  6. U�yj trybu Wizualnego, aby wybra� " element.", yankuj go  y , przejd� do
++     ko�ca nast�pnej linii  j$  i upakuj tam tekst z  p .
+ 
+ --->  a) to jest pierwszy element.
+       b)
+@@ -810,7 +810,7 @@
+ 			 Lekcja 6.5.: USTAWIANIE OPCJI
+ 
+ 
+-** Ustawianie opcji tak by szukaj lub substytucja ignorowa�y wielko�� liter **
++** Ustawianie opcji tak, by szukaj lub substytucja ignorowa�y wielko�� liter **
+ 
+   1. Szukaj 'ignore' wpisuj�c:    /ignore<ENTER>
+      Powt�rz szukanie kilka razy naciskaj�c klawisz  n .
+@@ -828,7 +828,7 @@
+ 
+   6. Aby wy��czy� ignorowanie wielko�ci liter:  :set noic
+ 
+-Uwaga: Aby usun�� pod�wietlanie dopasowa� wpisz:   :nohlsearch
++Uwaga: Aby usun�� pod�wietlanie dopasowa�, wpisz:   :nohlsearch
+ Uwaga: Aby ignorowa� wielko�� liter dla jednego wyszukiwania: /ignore\c<ENTER>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			     LEKCJA 6. PODSUMOWANIE
+@@ -837,36 +837,36 @@
+   1. Wpisanie  o  otwiera lini� PONI�EJ kursora.
+      Wpisanie  O  otwiera lini� POWY�EJ kursora.
+ 
+-  2. Wpisanie  a  by wstawi� tekst ZA znakiem na, kt�rym jest kursor.
++  2. Wpisanie  a  wstawia tekst ZA znakiem, na kt�rym jest kursor.
+      Wpisanie  A  dodaje tekst na ko�cu linii.
+ 
+   3. Polecenie  e  przenosi do ko�ca wyrazu.
+-  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
++  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja) go.
+   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dop�ki
+      nie zostanie wci�ni�ty <ESC>.
+-  6. Wpisanie ":set xxx" ustawia opcj� "xxx". Nietk�re opcje:
++  6. Wpisanie ":set xxx" ustawia opcj� "xxx". Niekt�re opcje:
+ 	'ic'  'ignorecase'	ignoruj wielko�� znak�w
+ 	'is'  'incsearch'	poka� cz�ciowe dopasowania
+ 	'hls' 'hlsearch'	pod�wietl wszystkie dopasowania
+-     Mo�esz u�y� zar�wno d�ugiej jak i kr�tkiej formy.
+-  7. Dodaj "no" aby wy��czy� opcj�:   :set noic
++     Mo�esz u�y� zar�wno d�ugiej, jak i kr�tkiej formy.
++  7. Dodaj "no", aby wy��czy� opcj�:   :set noic
+ 
+ 
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			LEKCJA 7.1. JAK UZYSKA� POMOC
++			 LEKCJA 7.1. JAK UZYSKA� POMOC?
+ 
+ 		      ** U�ycie systemu pomocy on-line **
+ 
+-  Vim posiada bardzo dobry system pomocy on-line. By zacz�� spr�buj jednej
++  Vim posiada bardzo dobry system pomocy on-line. By zacz��, spr�buj jednej
+   z trzech mo�liwo�ci:
+ 	- wci�nij klawisz <HELP> (je�li taki masz)
+ 	- wci�nij klawisz <F1> (je�li taki masz)
+ 	- wpisz   :help<ENTER>
+ 
+-  Przeczytaj tekst w oknie pomocy  aby dowiedzie� si� jak dzia�a pomoc.
++  Przeczytaj tekst w oknie pomocy, aby dowiedzie� si� jak dzia�a pomoc.
+   wpisz CTRL-W CTRL-W    aby przeskoczy� z jednego okna do innego
+   wpisz :q<ENTER>        aby zamkn�� okno pomocy.
+ 
+@@ -894,10 +894,10 @@
+   3. Zapisz plik:
+      :w
+ 
+-  Nast�pnym razem gdy zaczniesz prac� w Vimie b�dzie on u�ywa� pod�wietlania
++  Nast�pnym razem, gdy zaczniesz prac� w Vimie b�dzie on u�ywa� pod�wietlania
+   sk�adni. Mo�esz doda� wszystkie swoje ulubione ustawienia do tego pliku
+   "vimrc".
+-  Aby uzyska� wi�cej informacji wpisz     :help vimrc-intro
++  Aby uzyska� wi�cej informacji, wpisz     :help vimrc-intro
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			  Lekcja 7.3.: UZUPE�NIANIE
+@@ -907,11 +907,11 @@
+ 
+   1. Upewnij si�, �e Vim nie jest w trybie kompatybilno�ci:   :set nocp
+ 
+-  2. Zerknij jakie pliki s� w bie��cm katalogu:   :!ls   lub   :!dir
++  2. Zerknij, jakie pliki s� w bie��cym katalogu:   :!ls   lub   :!dir
+ 
+   3. Wpisz pocz�tek polecenia:   :e
+ 
+-  4. Wci�nij  CTRL-D  i Vim poka�e list� polece� jakie zaczynaj� si� na "e".
++  4. Wci�nij  CTRL-D  i Vim poka�e list� polece�, jakie zaczynaj� si� na "e".
+ 
+   5. Wci�nij  <TAB>  i Vim uzupe�ni polecenie do ":edit".
+ 
+@@ -925,7 +925,7 @@
+ 			    Lekcja 7. PODSUMOWANIE
+ 
+ 
+-  1. Wpisz  :help  lub wci�nij <F1> lub <Help> aby otworzy� okno pomocy.
++  1. Wpisz  :help  albo wci�nij <F1> lub <Help> aby otworzy� okno pomocy.
+ 
+   2. Wpisz  :help cmd  aby uzyska� pomoc o  cmd .
+ 
+@@ -945,14 +945,14 @@
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+-  Tutaj si� ko�czy tutorial Vima. Zosta� on pomy�lany tak aby da� kr�tki
++  Tutaj si� ko�czy tutorial Vima. Zosta� on pomy�lany tak, aby da� kr�tki
+   przegl�d jego mo�liwo�ci, wystarczaj�cy by� m�g� go u�ywa�. Jest on
+-  daleki od kompletno�ci poniewa� Vim ma o wiele, wiele wi�cej polece�.
++  daleki od kompletno�ci, poniewa� Vim ma o wiele, wiele wi�cej polece�.
+ 
+   Dla dalszej nauki rekomendujemy ksi��k�:
+ 	Vim - Vi Improved - autor Steve Oualline
+ 	Wydawca: New Riders
+-  Pierwsza ksi�zka ca�kowicie po�wi�cona Vimowi. U�yteczna zw�aszcza dla
++  Pierwsza ksi��ka ca�kowicie po�wi�cona Vimowi. U�yteczna zw�aszcza dla
+   pocz�tkuj�cych. Zawiera wiele przyk�ad�w i ilustracji.
+   Zobacz http://iccf-holland.org./click5.html
+ 
+@@ -960,7 +960,7 @@
+   polecenia:
+ 	Learning the Vi Editor - autor Linda Lamb
+ 	Wydawca: O'Reilly & Associates Inc.
+-  To dobra ksi��ka by dowiedzie� si� niemal wszystkiego co chcia�by� zrobi�
++  To dobra ksi��ka, by dowiedzie� si� niemal wszystkiego, co chcia�by� zrobi�
+   z Vi. Sz�sta edycja zawiera te� informacje o Vimie.
+ 
+   Po polsku wydano:
+@@ -991,4 +991,5 @@
+   rev. Marzec 2002
+   2nd rev. Wrzesie� 2004
+   3rd rev. Marzec 2006
++  4th rev. Grudzie� 2008
+   Wszelkie uwagi prosz� kierowa� na: [email protected]
+diff -Nur runtime/tutor/tutor.pl.cp1250 runtime/tutor/tutor.pl.cp1250
+--- runtime/tutor/tutor.pl.cp1250	2008-06-26 13:52:38.000000000 -0700
++++ runtime/tutor/tutor.pl.cp1250	2011-01-18 10:40:56.537904439 -0800
+@@ -2,9 +2,9 @@
+ =    W i t a j   w   t u t o r i a l u   V I M - a      -    Wersja  1.7.     =
+ ===============================================================================
+ 
+-     Vim to pot�ny edytor, kt�ry posiada wiele polece�, zbyt du�o by
++     Vim to pot�ny edytor, kt�ry posiada wiele polece�, zbyt du�o, by
+      wyja�ni� je wszystkie w tym tutorialu. Ten przewodnik ma nauczy�
+-     Ci� pos�ugiwa� si� wystarczaj�co wieloma komendami by� m�g� �atwo
++     Ci� pos�ugiwa� si� wystarczaj�co wieloma komendami, by� m�g� �atwo
+      u�ywa� Vima jako edytora og�lnego przeznaczenia.
+ 
+      Czas potrzebny na uko�czenie tutoriala to 25 do 30 minut i zale�y
+@@ -13,14 +13,14 @@
+ 	 UWAGA:
+ 	 Polecenia wykonywane w czasie lekcji zmodyfikuj� tekst. Zr�b
+ 	 wcze�niej kopi� tego pliku do �wicze� (je�li zacz��e� komend�
+-	 "vimtutor" to ju� pracujesz na kopii).
++	 "vimtutor", to ju� pracujesz na kopii).
+ 
+-	 Pami�taj �e przewodnik ten zosta� zaprojektowany do nauki poprzez
+-	 �wiczenia. Oznacza to, �e musisz wykonywa� polecenia by nauczy� si� ich
+-	 prawid�owo. Je�li b�dziesz jedynie czyta� tekst szybko zapomnisz wiele
++	 Pami�taj, �e przewodnik ten zosta� zaprojektowany do nauki poprzez
++	 �wiczenia. Oznacza to, �e musisz wykonywa� polecenia, by nauczy� si� ich
++	 prawid�owo. Je�li b�dziesz jedynie czyta� tekst, szybko zapomnisz wiele
+ 	 polece�!
+ 
+-     Teraz upewnij si�, �e nie masz wci�ni�tego CapsLocka i wciskaj  j
++     Teraz upewnij si�, �e nie masz wci�ni�tego Caps Locka i wciskaj  j
+      tak d�ugo dop�ki Lekcja 1.1. nie wype�ni ca�kowicie ekranu.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@@ -40,28 +40,28 @@
+ 
+   3. U�ywaj�c strza�ki w d� przejd� do nast�pnej lekcji.
+ 
+-Uwaga: Je�li nie jeste� pewien czego� co wpisa�e�, wci�nij <ESC> by wr�ci� do
++Uwaga: Je�li nie jeste� pewien czego� co wpisa�e�, wci�nij <ESC>, by wr�ci� do
+        trybu Normal. Wtedy powt�rz polecenie.
+ 
+ Uwaga: Klawisze kursora tak�e powinny dzia�a�, ale u�ywaj�c  hjkl  b�dziesz
+-       w stanie porusza� si� o wiele szybciej jak si� tylko przyzwyczaisz.
++       w stanie porusza� si� o wiele szybciej, jak si� tylko przyzwyczaisz.
+        Naprawd�!
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
+ 
+- !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca�� lekcj�.!!
++ !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj ca�� lekcj� !!
+ 
+   1. Wci�nij <ESC> (aby upewni� si�, �e jeste� w trybie Normal).
+   2. Wpisz:			:q!<ENTER>.
+-     To spowoduje wyj�cie z edytora PORZUCAJ�C wszelkie zmiany jakie
+-     zd��y�e� zrobi�. Je�li chcesz zapami�ta� zmiany i wyj��
++     To spowoduje wyj�cie z edytora PORZUCAJ�C wszelkie zmiany, jakie
++     zd��y�e� zrobi�. Je�li chcesz zapami�ta� zmiany i wyj��,
+      wpisz:			:wq<ENTER>
+ 
+   3. Kiedy widzisz znak zach�ty pow�oki wpisz komend�, �eby wr�ci�
+      do tutoriala. Czyli:	vimtutor<ENTER>
+ 
+-  4. Je�li chcesz zapami�ta� polecenia, wykonaj kroki 1. do 3. aby
++  4. Je�li chcesz zapami�ta� polecenia, wykonaj kroki 1. do 3., aby
+      wyj�� i wr�ci� do edytora.
+ 
+ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi�e�. W nast�pnych
+@@ -85,7 +85,7 @@
+ 
+ ---> Kkrowa prrzeskoczy�a prrzez ksii�ycc.
+ 
+-  5. Teraz kiedy zdanie jest poprawione przejd� do Lekcji 1.4.
++  5. Teraz, kiedy zdanie jest poprawione, przejd� do Lekcji 1.4.
+ 
+ UWAGA: Ucz si� przez �wiczenie, nie wkuwanie.
+ 
+@@ -101,18 +101,18 @@
+ 
+   1. Przenie� kursor do pierwszej linii poni�ej oznaczonej --->.
+ 
+-  2. Aby poprawi� pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym
++  2. Aby poprawi� pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym,
+      gdzie tekst ma by� wstawiony.
+ 
+   3. Wci�nij  i  a nast�pnie wpisz konieczne poprawki.
+ 
+-  4. Po poprawieniu b��du wci�nij <ESC> by wr�ci� do trybu Normal.
+-     Powtarzaj kroki 2. do 4. aby poprawi� ca�e zdanie.
++  4. Po poprawieniu b��du wci�nij <ESC>, by wr�ci� do trybu Normal.
++     Powtarzaj kroki 2. do 4., aby poprawi� ca�e zdanie.
+ 
+ ---> W tej brkje troch� .
+ ---> W tej linii brakuje troch� tekstu.
+ 
+-  5. Kiedy czujesz si� swobodnie wstawiaj�c tekst przejd� do
++  5. Kiedy czujesz si� swobodnie wstawiaj�c tekst, przejd� do
+      podsumowania poni�ej.
+ 
+ 
+@@ -129,7 +129,7 @@
+ 
+   3. Kiedy tekst zosta� dodany, wci�nij <ESC> i wr�� do trybu Normalnego.
+ 
+-  4. Przenie� kursor do drugiej linii oznaczonej ---> i powt�rz kroki 2 i 3
++  4. Przenie� kursor do drugiej linii oznaczonej ---> i powt�rz kroki 2. i 3.,
+      aby poprawi� zdanie.
+ 
+ ---> Brakuje tu tro
+@@ -137,27 +137,27 @@
+ ---> Tu te� troch� bra
+      Tu te� troch� brakuje.
+ 
+-  5. Kiedy ju� utrwali�e� �wiczenie przejd� do lekcji 1.6.
++  5. Kiedy ju� utrwali�e� �wiczenie, przejd� do lekcji 1.6.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			  Lekcja 1.6.: EDYCJA PLIKU
+ 
+ 		  ** U�yj  :wq  aby zapisa� plik i wyj��. **
+ 
+-   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj ca�� lekcj� !!
++   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj ca�� lekcj� !!
+ 
+   1. Zako�cz tutorial tak jak w lekcji 1.2.:  :q!
+-     Lub je�li masz dost�p do innego terminala zr�b kolejne kroki tam.
++     lub, je�li masz dost�p do innego terminala, wykonaj kolejne kroki tam.
+ 
+   2. W pow�oce wydaj polecenie:  vim tutor<ENTER>
+-     "vim" jest poleceniem uruchamiaj�cym edytor Vim. 'tutor' to nazwa pliku
+-     jaki chcesz edytowa�. U�yj pliku jaki mo�e zosta� zmieniony.
++     "vim" jest poleceniem uruchamiaj�cym edytor Vim. 'tutor' to nazwa pliku,
++     jaki chcesz edytowa�. U�yj pliku, kt�ry mo�e zosta� zmieniony.
+ 
+-  3. Dodaj i usu� tekst tak jak si� nauczy�e� w poprzednich lekcjach.
++  3. Dodaj i usu� tekst tak, jak si� nauczy�e� w poprzednich lekcjach.
+ 
+   4. Zapisz plik ze zmianami i opu�� Vima:  :wq<ENTER>
+ 
+-  5. Je�li zako�czy�e� vimtutor w kroku 1. uruchom go ponownie i przejd�
++  5. Je�li zako�czy�e� vimtutor w kroku 1., uruchom go ponownie i przejd�
+      do podsumowania poni�ej.
+ 
+   6. Po przeczytaniu wszystkich krok�w i ich zrozumieniu: wykonaj je.
+@@ -168,14 +168,14 @@
+   1. Poruszasz kursorem u�ywaj�c "strza�ek" i klawiszy  hjkl .
+        h (w lewo)	 j (w d�)	 k (do g�ry)		l (w prawo)
+ 
+-  2. By wej�� do Vima (z pow�oki) wpisz:
++  2. By wej�� do Vima, (z pow�oki) wpisz:
+ 			    vim NAZWA_PLIKU<ENTER>
+ 
+-  3. By wyj�� z Vima wpisz:
+-			    <ESC> :q!<ENTER>  by usun�c wszystkie zmiany.
++  3. By wyj�� z Vima, wpisz:
++			    <ESC> :q!<ENTER>  by usun�� wszystkie zmiany.
+ 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachowa�.
+ 
+-  4. By usun�� znak pod kursorem wci�nij:  x
++  4. By usun�� znak pod kursorem, wci�nij:  x
+ 
+   5. By wstawi� tekst przed kursorem lub doda�:
+ 	i   wpisz tekst   <ESC>         wstawi przed kursorem
+@@ -189,18 +189,18 @@
+ 		  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
+ 
+ 
+-		      ** Wpisz  dw  by usun�c wyraz. **
++		      ** Wpisz  dw  by usun�� wyraz. **
+ 
+-  1. Wci�nij  <ESC>  by upewni� si�, �e jeste� w trybie Normal.
++  1. Wci�nij  <ESC>, by upewni� si�, �e jeste� w trybie Normal.
+ 
+   2. Przenie� kursor do linii poni�ej oznaczonej --->.
+ 
+-  3. Przesu� kursor na pocz�tek wyrazu, kt�re chcesz usun��.
++  3. Przesu� kursor na pocz�tek wyrazu, kt�ry chcesz usun��.
+ 
+   4. Wpisz   dw   by usun�� wyraz.
+ 
+   UWAGA: Litera  d  pojawi si� na dole ekranu. Vim czeka na wpisanie  w .
+-	 Je�li zobaczysz inny znak oznacza to, �e wpisa�e� co� �le, wci�nij
++	 Je�li zobaczysz inny znak, oznacza to, �e wpisa�e� co� �le; wci�nij
+ 	 <ESC> i zacznij od pocz�tku.
+ 
+ ---> Jest tu par� papier wyraz�w, kt�re kamie� nie nale�� do no�yce tego zdania.
+@@ -225,7 +225,7 @@
+ ---> Kto� wpisa� koniec tego zdania dwukrotnie. zdania dwukrotnie.
+ 
+ 
+-  5. Przejd� do Lekcji 2.3. by zrozumie� co si� sta�o.
++  5. Przejd� do Lekcji 2.3., by zrozumie� co si� sta�o.
+ 
+ 
+ 
+@@ -235,12 +235,12 @@
+ 		     Lekcja 2.3.: O OPERATORACH I RUCHACH
+ 
+ 
+-  Wiele polece� zmieniaj�cych tekst s� z�o�one z operatora i ruchu.
+-  Format dla polecenia usuwaj�cego z operatorem  d  jest taki:
++  Wiele polece� zmieniaj�cych tekst jest z�o�onych z operatora i ruchu.
++  Format dla polecenia usuwaj�cego z operatorem  d  jest nast�puj�cy:
+ 
+ 	    d  ruch
+ 
+-  Gdzie:
++  gdzie:
+    d      - operator usuwania.
+    ruch   - na czym polecenie b�dzie wykonywane (lista poni�ej).
+ 
+@@ -252,7 +252,7 @@
+ W ten spos�b wpisanie  de  usunie znaki od kursora do ko�ca wyrazu.
+ 
+ UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
+-       tak jak to okre�lono.
++       tak, jak to okre�lono.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		    Lekcja 2.4.: U�YCIE MNO�NIKA DLA RUCHU
+@@ -266,32 +266,32 @@
+ 
+   3. Wpisz  3e  aby przenie�� kursor do ko�ca trzeciego wyrazu w prz�d.
+ 
+-  4. Wpisz  0  (zero) aby przenie�� kursor do pocz�tku linii.
++  4. Wpisz  0  (zero), aby przenie�� kursor na pocz�tek linii.
+ 
+   5. Powt�rz kroki 2. i 3. z innymi liczbami.
+ 
+ 
+- ---> To jest zwyk�y wiersz z wyrazami po kt�rych mo�esz si� porusza�.
++ ---> To jest zwyk�y wiersz z wyrazami, po kt�rych mo�esz si� porusza�.
+ 
+   6. Przejd� do lekcji 2.5.
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		Lekcja 2.5.: U�YCIE MNO�NIKA BY WI�CEJ USUN��
++		Lekcja 2.5.: U�YCIE MNO�NIKA, BY WI�CEJ USUN��
+ 
+ 
+     ** Wpisanie liczby z operatorem powtarza go odpowiedni� ilo�� razy. **
+ 
+   W wy�ej wspomnianej kombinacji operatora usuwania i ruchu podaj mno�nik
+-  przed ruchem by wi�cej usun��:
++  przed ruchem, by wi�cej usun��:
+ 	d  liczba  ruch
+ 
+   1. Przenie� kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->.
+ 
+   2. Wpisz  2dw  aby usun�� dwa wyrazy KAPITALIKAMI.
+ 
+-  3. Powtarzaj kroki 1. i 2. z innymi mno�nikami aby usun�� kolejne wyrazy
++  3. Powtarzaj kroki 1. i 2. z innymi mno�nikami, aby usun�� kolejne wyrazy
+      KAPITALIKAMI jednym poleceniem
+ 
+ ---> ta ASD WE linia QWE ASDF ZXCV FG wyraz�w zosta�a ERT FGH CF oczyszczona.
+@@ -312,7 +312,7 @@
+   1. Przenie� kursor do drugiego zdania z wierszyka poni�ej.
+   2. Wpisz  dd  aby usun�� wiersz.
+   3. Teraz przenie� si� do czwartego wiersza.
+-  4. Wpisz  2dd  aby usun�c dwa wiersze.
++  4. Wpisz  2dd  aby usun�� dwa wiersze.
+ 
+ --->  1)  R�e s� czerwone,
+ --->  2)  B�oto jest fajne,
+@@ -335,12 +335,12 @@
+   2. Wpisz  x  aby usun�� pierwszy niechciany znak.
+   3. Teraz wci�nij  u  aby cofn�� skutki ostatniego polecenia.
+   4. Tym razem popraw wszystkie b��dy w linii u�ywaj�c polecenia  x .
+-  5. Teraz wci�nij wielkie U aby przywr�ci� lini� do oryginalnego stanu.
+-  6. Teraz wci�nij  u  kilka razy by cofn��  U  i poprzednie polecenia.
++  5. Teraz wci�nij wielkie  U  aby przywr�ci� lini� do oryginalnego stanu.
++  6. Teraz wci�nij  u  kilka razy, by cofn��  U  i poprzednie polecenia.
+   7. Teraz wpisz CTRL-R (trzymaj r�wnocze�nie wci�ni�te klawisze CTRL i R)
+      kilka razy, by cofn�� cofni�cia.
+ 
+----> Poopraw bl�dyyy w teej liniii i zaamiie� je prrzez coofnij.
++---> Poopraw b��dyyy w teej liniii i zaamiie� je prrzez coofnij.
+ 
+   8. To s� bardzo po�yteczne polecenia.
+ 
+@@ -350,22 +350,22 @@
+ 			     LEKCJA 2. PODSUMOWANIE
+ 
+ 
+-  1. By usun�� znaki od kursora do nast�pnego wyrazu wpisz:   dw
+-  2. By usun�� znaki od kursora do ko�ca linii wpisz:    d$
++  1. By usun�� znaki od kursora do nast�pnego wyrazu, wpisz:   dw
++  2. By usun�� znaki od kursora do ko�ca linii, wpisz:    d$
+   3. By usun�� ca�� lini�:    dd
+-  4. By powt�rzy� ruch poprzed� go liczb�:    2w
++  4. By powt�rzy� ruch, poprzed� go liczb�:    2w
+   5. Format polecenia zmiany to:
+                 operator  [liczba]  ruch
+   gdzie:
+-   operator  - to co trzeba zrobi� (np.  d  dla usuwania)
++   operator  - to, co trzeba zrobi� (np.  d  dla usuwania)
+    [liczba]  - opcjonalne, ile razy powt�rzy� ruch
+    ruch      - przenosi nad tekstem do operowania, takim jak  w (wyraz),
+-	       $  (do ko�ca linii), etc.
++	       $  (do ko�ca linii) etc.
+ 
+-  6. By przej�� do pocz�tku linii u�yj zera:  0
+-  7. By cofn�� poprzednie polecenie, wpisz:	  u (ma�e u)
+-     By cofn�� wszystkie zmiany w linii wpisz:	  U (wielkie U)
+-     By cofn�� cofni�cia wpisz:			  CTRL-R
++  6. By przej�� do pocz�tku linii, u�yj zera:  0
++  7. By cofn�� poprzednie polecenie, wpisz:	  u  (ma�e u)
++     By cofn�� wszystkie zmiany w linii, wpisz:	  U  (wielkie U)
++     By cofn�� cofni�cie, wpisz:			  CTRL-R
+ 
+ 
+ 
+@@ -379,7 +379,7 @@
+ 
+   2. Wpisz  dd  aby usun�� lini� i przechowa� j� w rejestrze Vima.
+ 
+-  3. Przenie� kursor do linii c), POWY�EJ tej gdzie usuni�ta linia powinna
++  3. Przenie� kursor do linii c), POWY�EJ tej, gdzie usuni�ta linia powinna
+      si� znajdowa�.
+ 
+   4. Wci�nij  p  by wstawi� lini� poni�ej kursora.
+@@ -404,21 +404,21 @@
+ 
+   3. Wpisz  r  a potem znak jaki powinien go zast�pi�.
+ 
+-  4. Powtarzaj kroki 2. i 3. dop�ki pierwsza linia nie b�dzie taka jak druga.
++  4. Powtarzaj kroki 2. i 3. dop�ki pierwsza linia nie b�dzie taka, jak druga.
+ 
+---->  Kjedy ten wiersz bi� wst�kiwany kto� wcizn�� per� z�ych klawirzy!
+---->  Kiedy ten wiersz by� wstukiwany kto� wcisn�� par� z�ych klawiszy!
++--->  Kjedy ten wiersz bi� wst�kiwany, kto� wcizn�� per� z�ych klawirzy!
++--->  Kiedy ten wiersz by� wstukiwany, kto� wcisn�� par� z�ych klawiszy!
+ 
+   5. Teraz czas na Lekcj� 3.3.
+ 
+ 
+-UWAGA: Pami�taj by uczy� si� �wicz�c, a nie pami�ciowo.
++UWAGA: Pami�taj, by uczy� si� �wicz�c, a nie pami�ciowo.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		     Lekcja 3.3.: OPERATOR CHANGE (zmie�)
+ 
+-		 ** By zmieni� do ko�ca wyrazu wpisz  ce . **
++		 ** By zmieni� do ko�ca wyrazu, wpisz  ce . **
+ 
+   1. Przenie� kursor do pierwszej linii poni�ej oznaczonej --->.
+ 
+@@ -428,7 +428,7 @@
+ 
+   4. Wci�nij <ESC> i przejd� do nast�pnej planowanej zmiany.
+ 
+-  5. Powtarzaj kroki 3. i 4. dop�ki pierwsze zdanie nie b�dzie takie same
++  5. Powtarzaj kroki 3. i 4. dop�ki pierwsze zdanie nie b�dzie takie same,
+      jak drugie.
+ 
+ ---> Ta lunos ma pire s��w, kt�re t�ina zbnic u�ifajonc pcmazu zmie�.
+@@ -442,13 +442,13 @@
+ 		      Lekcja 3.4.: WI�CEJ ZMIAN U�YWAJ�C c
+ 
+ 
+-	** Polecenie change u�ywa takich samych ruch�w jak delete. **
++	** Polecenie change u�ywa takich samych ruch�w, jak delete. **
+ 
+-  1. Operator change dzia�a tak samo jak delete. Format wygl�da tak:
++  1. Operator change dzia�a tak samo, jak delete. Format wygl�da tak:
+ 
+ 	    c   [liczba]   ruch
+ 
+-  2. Ruchy s� tak�e takie same, np.:  w  (wyraz),  $  (koniec linii), etc.
++  2. Ruchy s� tak�e takie same, np.:  w  (wyraz),  $  (koniec linii) etc.
+ 
+   3. Przenie� si� do pierwszej linii poni�ej oznaczonej --->
+ 
+@@ -456,7 +456,7 @@
+ 
+   5. Wpisz  c$ , popraw koniec wiersza i wci�nij <ESC>.
+ 
+----> Koniec tego wiersza musi by� poprawiony aby wygl�da� tak jak drugi.
++---> Koniec tego wiersza musi by� poprawiony, aby wygl�da� tak, jak drugi.
+ ---> Koniec tego wiersza musi by� poprawiony u�ywaj�c polecenia  c$ .
+ 
+ UWAGA:  Mo�esz u�ywa� <BS> aby poprawia� b��dy w czasie pisania.
+@@ -469,11 +469,11 @@
+      polecenie wstawia skasowany tekst PO kursorze (je�li ca�a linia
+      zosta�a usuni�ta, zostanie ona umieszczona w linii poni�ej kursora).
+ 
+-  2. By zamieni� znak pod kursorem wci�nij  r  a potem znak, kt�ry ma zast�pi�
++  2. By zamieni� znak pod kursorem, wci�nij  r  a potem znak, kt�ry ma zast�pi�
+      oryginalny.
+ 
+-  3. Operator change pozwala Ci na zast�pienie od kursora do miejsca gdzie
+-     zabra�by ci� ruch. Np. wpisz  ce  aby zamieni� tekst od kursora do ko�ca
++  3. Operator change pozwala Ci na zast�pienie od kursora do miejsca, gdzie
++     zabra�by Ci� ruch. Np. wpisz  ce  aby zamieni� tekst od kursora do ko�ca
+      wyrazu,  c$  aby zmieni� tekst do ko�ca linii.
+ 
+   4. Format do polecenia change (zmie�):
+@@ -497,12 +497,12 @@
+      Zapami�taj numer linii dla potrzeb kroku 3.
+ 
+ UWAGA: Mo�esz te� zobaczy� pozycj� kursora w prawym, dolnym rogu ekranu.
+-       Dzieje si� tak kiedy ustawiona jest opcja 'ruler' (wyja�nione w lekcji 6.).
++       Dzieje si� tak kiedy ustawiona jest opcja 'ruler' (wi�cej w lekcji 6.).
+ 
+   2. Wci�nij G aby przej�� na koniec pliku.
+      Wci�nij  gg  aby przej�� do pocz�tku pliku.
+ 
+-  3. Wpisz numer linii, w kt�rej by�e� a potem  G . To przeniesie ci�
++  3. Wpisz numer linii, w kt�rej by�e� a potem  G . To przeniesie Ci�
+      z powrotem do linii, w kt�rej by�e� kiedy wcisn��e� CTRL-G.
+ 
+   4. Je�li czujesz si� wystarczaj�co pewnie, wykonaj kroki 1-3.
+@@ -511,10 +511,10 @@
+ 			 Lekcja 4.2.: POLECENIE SZUKAJ
+ 
+ 
+-	     ** Wpisz  /  a nast�pnie wyra�enie aby je znale��. **
++	     ** Wpisz  /  a nast�pnie wyra�enie, aby je znale��. **
+ 
+-  1. W trybie Normal wpisz  / . Zauwa�, �e znak ten, oraz kursor pojawi�
+-     si� na dole ekranu tak samo jak polecenie  : .
++  1. W trybie Normal wpisz  / . Zauwa�, �e znak ten oraz kursor pojawi�
++     si� na dole ekranu tak samo, jak polecenie  : .
+ 
+   2. Teraz wpisz  b�ond<ENTER> .  To jest s�owo, kt�rego chcesz szuka�.
+ 
+@@ -523,11 +523,11 @@
+ 
+   4. Je�li chcesz szuka� frazy do ty�u, u�yj polecenia  ?  zamiast  / .
+ 
+-  5. Aby wr�ci� gdzie by�e� wci�nij  CTRL-O. Powtarzaj by wr�ci� dalej. CTRL-I
++  5. Aby wr�ci� gdzie by�e�, wci�nij  CTRL-O. Powtarzaj, by wr�ci� dalej. CTRL-I
+      idzie do przodu.
+ 
+-Uwaga:  'b�ond' to nie jest metoda by przeliterowa� b��d; 'b�ond' to b��d.
+-Uwaga:  Kiedy szukanie osi�gnie koniec pliku b�dzie kontynuowa�o od pocz�tku
++Uwaga:  'b�ond' to nie jest metoda, by przeliterowa� b��d; 'b�ond' to b��d.
++Uwaga:  Kiedy szukanie osi�gnie koniec pliku, b�dzie kontynuowane od pocz�tku
+         o ile opcja 'wrapscan' nie zosta�a przestawiona.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@@ -571,16 +571,16 @@
+ 
+   4. Aby zmieni� wszystkie wyst�pienia �a�cucha znak�w pomi�dzy dwoma liniami,
+      wpisz: :#,#s/stare/nowe/g gdzie #,# s� numerami linii ograniczaj�cych
+-                               region gdzie ma nast�pi� zamiana.
++                               region, gdzie ma nast�pi� zamiana.
+      wpisz  :%s/stare/nowe/g   by zmieni� wszystkie wyst�pienia w ca�ym pliku.
+      wpisz  :%s/stare/nowe/gc  by zmieni� wszystkie wyst�pienia w ca�ym
+-                               pliku, prosz�c o potwierdzenie za ka�dym razem
++                               pliku, prosz�c o potwierdzenie za ka�dym razem.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			     LEKCJA 4. PODSUMOWANIE
+ 
+   1. CTRL-G   poka�e Twoj� pozycj� w pliku i status pliku.  SHIFT-G przenosi
+-	      ci� do ko�ca pliku.
++	      Ci� do ko�ca pliku.
+      G        przenosi do ko�ca pliku.
+      liczba G przenosi do linii [liczba].
+      gg       przenosi do pierwszej linii.
+@@ -588,22 +588,22 @@
+   2. Wpisanie  /  a nast�pnie �a�cucha znak�w szuka �a�cucha DO PRZODU.
+      Wpisanie  ?  a nast�pnie �a�cucha znak�w szuka �a�cucha DO TY�U.
+      Po wyszukiwaniu wci�nij  n  by znale�� nast�pne wyst�pienie szukanej
+-     frazy tym samym kierunku lub  N  by szuka� w kierunku przeciwnym.
++     frazy w tym samym kierunku lub  N  by szuka� w kierunku przeciwnym.
+      CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych.
+ 
+   3. Wpisanie  %  gdy kursor znajduje si� na (,),[,],{, lub } lokalizuje
+      paruj�cy znak.
+ 
+-  4. By zamieni� pierwszy stary na nowy w linii wpisz      :s/stary/nowy
+-     By zamieni� wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
++  4. By zamieni� pierwszy stary na nowy w linii, wpisz      :s/stary/nowy
++     By zamieni� wszystkie stary na nowy w linii, wpisz     :s/stary/nowy/g
+      By zamieni� frazy pomi�dzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
+-     By zamieni� wszystkie wyst�pienia w pliku wpisz       :%s/stary/nowy/g
+-     By Vim prosi� Ci� o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
++     By zamieni� wszystkie wyst�pienia w pliku, wpisz       :%s/stary/nowy/g
++     By Vim prosi� Ci� o potwierdzenie, dodaj 'c'	   :%s/stary/nowy/gc
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Lekcja 5.1.: JAK WYKONA� POLECENIA ZEWN�TRZNE
++		 Lekcja 5.1.: JAK WYKONA� POLECENIA ZEWN�TRZNE?
+ 
+ 
+-	** Wpisz  :!  a nast�pnie zewn�trzne polecenie by je wykona�. **
++	** Wpisz  :!  a nast�pnie zewn�trzne polecenie, by je wykona�. **
+ 
+   1. Wpisz znajome polecenie  :  by ustawi� kursor na dole ekranu. To pozwala
+      na wprowadzenie komendy linii polece�.
+@@ -626,20 +626,20 @@
+ 		    Lekcja 5.2.: WI�CEJ O ZAPISYWANIU PLIK�W
+ 
+ 
+-	   ** By zachowa� zmiany w tek�ci wpisz :w NAZWA_PLIKU . **
++	   ** By zachowa� zmiany w tek�cie, wpisz :w NAZWA_PLIKU . **
+ 
+   1. Wpisz  :!dir  lub  :!ls  by zobaczy� spis plik�w w katalogu.
+-     Ju� wiesz, �e musisz wcisn�� <ENTER> po tym.
++     Ju� wiesz, �e musisz po tym wcisn�� <ENTER>.
+ 
+-  2. Wybierz nazw� pliku jaka jeszcze nie istnieje, np. TEST.
++  2. Wybierz nazw� pliku, jaka jeszcze nie istnieje, np. TEST.
+ 
+   3. Teraz wpisz:   :w TEST   (gdzie TEST jest nazw� pliku jak� wybra�e�.)
+ 
+   4. To polecenie zapami�ta ca�y plik (Vim Tutor) pod nazw� TEST.
+-     By to sprawdzi� wpisz  :!dir  lub  :!ls , �eby znowu zobaczy� list� plik�w.
++     By to sprawdzi�, wpisz  :!dir  lub  :!ls  �eby znowu zobaczy� list� plik�w.
+ 
+ Uwaga: Zauwa�, �e gdyby� teraz wyszed� z Vima, a nast�pnie wszed� ponownie
+-       poleceniem  vim TEST , plik by�by dok�adn� kopi� tutoriala kiedy go
++       poleceniem  vim TEST , plik by�by dok�adn� kopi� tutoriala, kiedy go
+        zapisywa�e�.
+ 
+   5. Teraz usu� plik wpisuj�c (MS-DOS):		   :!del TEST
+@@ -649,7 +649,7 @@
+ 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
+ 
+ 
+-	  ** By zachowa� cz�� pliku wpisz  v ruch :w NAZWA_PLIKU **
++	  ** By zachowa� cz�� pliku, wpisz  v ruch :w NAZWA_PLIKU **
+ 
+   1. Przenie� kursor do tego wiersza.
+ 
+@@ -664,26 +664,26 @@
+   5. Vim zapisze wybrane linie do pliku TEST. U�yj  :!dir  lub  :!ls , �eby to
+      zobaczy�. Jeszcze go nie usuwaj! U�yjemy go w nast�pnej lekcji.
+ 
+-UWAGA: Wci�ni�cie  v  zaczyna tryb Wizualny. Mo�esz porusza� kursorem by
+-       zmieni� rozmiary zaznaczenia. Mo�esz te� u�y� operatora by zrobi� co�
++UWAGA: Wci�ni�cie  v  zaczyna tryb Wizualny. Mo�esz porusza� kursorem, by
++       zmieni� rozmiary zaznaczenia. Mo�esz te� u�y� operatora, by zrobi� co�
+        z tekstem. Na przyk�ad  d  usuwa tekst.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		   Lekcja 5.4.: WSTAWIANIE I ��CZENIE PLIK�W
+ 
+ 
+-	    ** By wstawi� zawarto�� pliku wpisz   :r NAZWA_PLIKU **
++	    ** By wstawi� zawarto�� pliku, wpisz   :r NAZWA_PLIKU **
+ 
+   1. Umie�� kursor tu� powy�ej tej linii.
+ 
+ UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejd�
+-       do DO�U by zobaczy� ponownie t� lekcj�.
++       do DO�U, by zobaczy� ponownie t� lekcj�.
+ 
+   2. Teraz wczytaj plik TEST u�ywaj�c polecenia  :r TEST , gdzie TEST
+      jest nazw� pliku.
+      Wczytany plik jest umieszczony poni�ej linii z kursorem.
+ 
+-  3. By sprawdzi� czy plik zosta� wczytany cofnij kursor i zobacz, �e
++  3. By sprawdzi� czy plik zosta� wczytany, cofnij kursor i zobacz, �e
+      teraz s� dwie kopie Lekcji 5.3., orygina� i kopia z pliku.
+ 
+ UWAGA: Mo�esz te� wczyta� wyj�cie zewn�trznego polecenia. Na przyk�ad
+@@ -723,14 +723,14 @@
+ 
+   1. Przenie� kursor do linii poni�ej oznaczonej --->.
+ 
+-  2. Wpisz  o  (ma�e) by otworzy� lini� PONI�EJ kursora i przenie�� si�
++  2. Wpisz  o  (ma�e), by otworzy� lini� PONI�EJ kursora i przenie�� si�
+      do trybu Insert (wprowadzanie).
+ 
+   3. Wpisz troch� tekstu i wci�nij <ESC> by wyj�� z trybu Insert (wprowadzanie).
+ 
+ ---> Po wci�ni�ciu  o  kursor znajdzie si� w otwartej linii w trybie Insert.
+ 
+-  4. By otworzy� lini� POWY�EJ kursora wci�nij wielkie  O  zamiast ma�ego
++  4. By otworzy� lini� POWY�EJ kursora, wci�nij wielkie  O  zamiast ma�ego
+      o . Wypr�buj to na linii poni�ej.
+ 
+ ---> Otw�rz lini� powy�ej wciskaj�c SHIFT-O gdy kursor b�dzie na tej linii.
+@@ -747,9 +747,9 @@
+ 
+   2. Wciskaj  e  dop�ki kursor nie b�dzie na ko�cu li .
+ 
+-  3. Wpisz  a  (ma�e) aby doda� tekst ZA znakiem pod kursorem.
++  3. Wpisz  a  (ma�e), aby doda� tekst ZA znakiem pod kursorem.
+ 
+-  4. Doko�cz wyraz tak jak w linii poni�ej. Wci�nij <ESC> aby opu�ci� tryb
++  4. Doko�cz wyraz tak, jak w linii poni�ej. Wci�nij <ESC> aby opu�ci� tryb
+      Insert.
+ 
+   5. U�yj  e  by przej�� do kolejnego niedoko�czonego wyrazu i powtarzaj kroki
+@@ -758,7 +758,7 @@
+ ---> Ta li poz Ci �wi dodaw teks do ko� lin
+ ---> Ta linia pozwoli Ci �wiczy� dodawanie tekstu do ko�ca linii.
+ 
+-Uwaga:  a ,  i  oraz  A  prowadz� do trybu Insert, jedyn� r�nic� jest miejsce
++Uwaga:  a ,  i  oraz  A  prowadz� do trybu Insert, jedyn� r�nic� jest miejsce,
+        gdzie nowe znaki b�d� dodawane.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
+@@ -791,16 +791,16 @@
+ 
+   1. Przejd� do linii oznaczonej ---> i umie�� kursor za "a)".
+ 
+-  2. Wejd� w tryb Visual  v  i przenie� kursor na pocz�tek "pierwszy".
++  2. Wejd� w tryb Wizualny  v  i przenie� kursor na pocz�tek "pierwszy".
+ 
+-  3. Wci�nij  y  aby yankowa� (kopiowa�) pod�wietlony tekst.
++  3. Wci�nij  y  aby kopiowa� (yankowa�) pod�wietlony tekst.
+ 
+   4. Przenie� kursor do ko�ca nast�pnej linii:  j$
+ 
+-  5. Wci�nij  p  aby wpakowa� (paste) tekst.  Dodaj:  a drugi<ESC> .
++  5. Wci�nij  p  aby wklei� (wpakowa�) tekst.  Dodaj:  a drugi<ESC> .
+ 
+-  6. U�yj trybu Wizualnego aby wybra� " element.", yankuj go  y , przejd� do
+-     ko�ca nast�pnej linii  j$ i upakuj tam tekst z  p .
++  6. U�yj trybu Wizualnego, aby wybra� " element.", yankuj go  y , przejd� do
++     ko�ca nast�pnej linii  j$  i upakuj tam tekst z  p .
+ 
+ --->  a) to jest pierwszy element.
+       b)
+@@ -810,7 +810,7 @@
+ 			 Lekcja 6.5.: USTAWIANIE OPCJI
+ 
+ 
+-** Ustawianie opcji tak by szukaj lub substytucja ignorowa�y wielko�� liter **
++** Ustawianie opcji tak, by szukaj lub substytucja ignorowa�y wielko�� liter **
+ 
+   1. Szukaj 'ignore' wpisuj�c:    /ignore<ENTER>
+      Powt�rz szukanie kilka razy naciskaj�c klawisz  n .
+@@ -828,7 +828,7 @@
+ 
+   6. Aby wy��czy� ignorowanie wielko�ci liter:  :set noic
+ 
+-Uwaga: Aby usun�� pod�wietlanie dopasowa� wpisz:   :nohlsearch
++Uwaga: Aby usun�� pod�wietlanie dopasowa�, wpisz:   :nohlsearch
+ Uwaga: Aby ignorowa� wielko�� liter dla jednego wyszukiwania: /ignore\c<ENTER>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			     LEKCJA 6. PODSUMOWANIE
+@@ -837,36 +837,36 @@
+   1. Wpisanie  o  otwiera lini� PONI�EJ kursora.
+      Wpisanie  O  otwiera lini� POWY�EJ kursora.
+ 
+-  2. Wpisanie  a  by wstawi� tekst ZA znakiem na, kt�rym jest kursor.
++  2. Wpisanie  a  wstawia tekst ZA znakiem, na kt�rym jest kursor.
+      Wpisanie  A  dodaje tekst na ko�cu linii.
+ 
+   3. Polecenie  e  przenosi do ko�ca wyrazu.
+-  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
++  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja) go.
+   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dop�ki
+      nie zostanie wci�ni�ty <ESC>.
+-  6. Wpisanie ":set xxx" ustawia opcj� "xxx". Nietk�re opcje:
++  6. Wpisanie ":set xxx" ustawia opcj� "xxx". Niekt�re opcje:
+ 	'ic'  'ignorecase'	ignoruj wielko�� znak�w
+ 	'is'  'incsearch'	poka� cz�ciowe dopasowania
+ 	'hls' 'hlsearch'	pod�wietl wszystkie dopasowania
+-     Mo�esz u�y� zar�wno d�ugiej jak i kr�tkiej formy.
+-  7. Dodaj "no" aby wy��czy� opcj�:   :set noic
++     Mo�esz u�y� zar�wno d�ugiej, jak i kr�tkiej formy.
++  7. Dodaj "no", aby wy��czy� opcj�:   :set noic
+ 
+ 
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			LEKCJA 7.1. JAK UZYSKA� POMOC
++			 LEKCJA 7.1. JAK UZYSKA� POMOC?
+ 
+ 		      ** U�ycie systemu pomocy on-line **
+ 
+-  Vim posiada bardzo dobry system pomocy on-line. By zacz�� spr�buj jednej
++  Vim posiada bardzo dobry system pomocy on-line. By zacz��, spr�buj jednej
+   z trzech mo�liwo�ci:
+ 	- wci�nij klawisz <HELP> (je�li taki masz)
+ 	- wci�nij klawisz <F1> (je�li taki masz)
+ 	- wpisz   :help<ENTER>
+ 
+-  Przeczytaj tekst w oknie pomocy  aby dowiedzie� si� jak dzia�a pomoc.
++  Przeczytaj tekst w oknie pomocy, aby dowiedzie� si� jak dzia�a pomoc.
+   wpisz CTRL-W CTRL-W    aby przeskoczy� z jednego okna do innego
+   wpisz :q<ENTER>        aby zamkn�� okno pomocy.
+ 
+@@ -894,10 +894,10 @@
+   3. Zapisz plik:
+      :w
+ 
+-  Nast�pnym razem gdy zaczniesz prac� w Vimie b�dzie on u�ywa� pod�wietlania
++  Nast�pnym razem, gdy zaczniesz prac� w Vimie b�dzie on u�ywa� pod�wietlania
+   sk�adni. Mo�esz doda� wszystkie swoje ulubione ustawienia do tego pliku
+   "vimrc".
+-  Aby uzyska� wi�cej informacji wpisz     :help vimrc-intro
++  Aby uzyska� wi�cej informacji, wpisz     :help vimrc-intro
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			  Lekcja 7.3.: UZUPE�NIANIE
+@@ -907,11 +907,11 @@
+ 
+   1. Upewnij si�, �e Vim nie jest w trybie kompatybilno�ci:   :set nocp
+ 
+-  2. Zerknij jakie pliki s� w bie��cm katalogu:   :!ls   lub   :!dir
++  2. Zerknij, jakie pliki s� w bie��cym katalogu:   :!ls   lub   :!dir
+ 
+   3. Wpisz pocz�tek polecenia:   :e
+ 
+-  4. Wci�nij  CTRL-D  i Vim poka�e list� polece� jakie zaczynaj� si� na "e".
++  4. Wci�nij  CTRL-D  i Vim poka�e list� polece�, jakie zaczynaj� si� na "e".
+ 
+   5. Wci�nij  <TAB>  i Vim uzupe�ni polecenie do ":edit".
+ 
+@@ -925,7 +925,7 @@
+ 			    Lekcja 7. PODSUMOWANIE
+ 
+ 
+-  1. Wpisz  :help  lub wci�nij <F1> lub <Help> aby otworzy� okno pomocy.
++  1. Wpisz  :help  albo wci�nij <F1> lub <Help> aby otworzy� okno pomocy.
+ 
+   2. Wpisz  :help cmd  aby uzyska� pomoc o  cmd .
+ 
+@@ -945,14 +945,14 @@
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+-  Tutaj si� ko�czy tutorial Vima. Zosta� on pomy�lany tak aby da� kr�tki
++  Tutaj si� ko�czy tutorial Vima. Zosta� on pomy�lany tak, aby da� kr�tki
+   przegl�d jego mo�liwo�ci, wystarczaj�cy by� m�g� go u�ywa�. Jest on
+-  daleki od kompletno�ci poniewa� Vim ma o wiele, wiele wi�cej polece�.
++  daleki od kompletno�ci, poniewa� Vim ma o wiele, wiele wi�cej polece�.
+ 
+   Dla dalszej nauki rekomendujemy ksi��k�:
+ 	Vim - Vi Improved - autor Steve Oualline
+ 	Wydawca: New Riders
+-  Pierwsza ksi�zka ca�kowicie po�wi�cona Vimowi. U�yteczna zw�aszcza dla
++  Pierwsza ksi��ka ca�kowicie po�wi�cona Vimowi. U�yteczna zw�aszcza dla
+   pocz�tkuj�cych. Zawiera wiele przyk�ad�w i ilustracji.
+   Zobacz http://iccf-holland.org./click5.html
+ 
+@@ -960,7 +960,7 @@
+   polecenia:
+ 	Learning the Vi Editor - autor Linda Lamb
+ 	Wydawca: O'Reilly & Associates Inc.
+-  To dobra ksi��ka by dowiedzie� si� niemal wszystkiego co chcia�by� zrobi�
++  To dobra ksi��ka, by dowiedzie� si� niemal wszystkiego, co chcia�by� zrobi�
+   z Vi. Sz�sta edycja zawiera te� informacje o Vimie.
+ 
+   Po polsku wydano:
+@@ -991,4 +991,5 @@
+   rev. Marzec 2002
+   2nd rev. Wrzesie� 2004
+   3rd rev. Marzec 2006
++  4th rev. Grudzie� 2008
+   Wszelkie uwagi prosz� kierowa� na: [email protected]
+diff -Nur runtime/tutor/tutor.pl.utf-8 runtime/tutor/tutor.pl.utf-8
+--- runtime/tutor/tutor.pl.utf-8	2008-06-26 13:52:38.000000000 -0700
++++ runtime/tutor/tutor.pl.utf-8	2011-01-18 10:40:56.538741436 -0800
+@@ -2,9 +2,9 @@
+ =    W i t a j   w   t u t o r i a l u   V I M - a      -    Wersja  1.7.     =
+ ===============================================================================
+ 
+-     Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo by
++     Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo, by
+      wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć
+-     Cię posługiwać się wystarczająco wieloma komendami byś mógł łatwo
++     Cię posługiwać się wystarczająco wieloma komendami, byś mógł łatwo
+      używać Vima jako edytora ogólnego przeznaczenia.
+ 
+      Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy
+@@ -13,14 +13,14 @@
+ 	 UWAGA:
+ 	 Polecenia wykonywane w czasie lekcji zmodyfikują tekst. Zrób
+ 	 wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą
+-	 "vimtutor" to już pracujesz na kopii).
++	 "vimtutor", to już pracujesz na kopii).
+ 
+-	 Pamiętaj że przewodnik ten został zaprojektowany do nauki poprzez
+-	 ćwiczenia. Oznacza to, że musisz wykonywać polecenia by nauczyć się ich
+-	 prawidłowo. Jeśli będziesz jedynie czytał tekst szybko zapomnisz wiele
++	 Pamiętaj, że przewodnik ten został zaprojektowany do nauki poprzez
++	 ćwiczenia. Oznacza to, że musisz wykonywać polecenia, by nauczyć się ich
++	 prawidłowo. Jeśli będziesz jedynie czytał tekst, szybko zapomnisz wiele
+ 	 poleceń!
+ 
+-     Teraz upewnij się, że nie masz wciśniętego CapsLocka i wciskaj  j
++     Teraz upewnij się, że nie masz wciśniętego Caps Locka i wciskaj  j
+      tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@@ -40,28 +40,28 @@
+ 
+   3. Używając strzałki w dół przejdź do następnej lekcji.
+ 
+-Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC> by wrócić do
++Uwaga: Jeśli nie jesteś pewien czegoś co wpisałeś, wciśnij <ESC>, by wrócić do
+        trybu Normal. Wtedy powtórz polecenie.
+ 
+ Uwaga: Klawisze kursora także powinny działać, ale używając  hjkl  będziesz
+-       w stanie poruszać się o wiele szybciej jak się tylko przyzwyczaisz.
++       w stanie poruszać się o wiele szybciej, jak się tylko przyzwyczaisz.
+        Naprawdę!
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
+ 
+- !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję.!!
++ !! UWAGA: Przed wykonaniem jakiegokolwiek polecenia przeczytaj całą lekcję !!
+ 
+   1. Wciśnij <ESC> (aby upewnić się, że jesteś w trybie Normal).
+   2. Wpisz:			:q!<ENTER>.
+-     To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany jakie
+-     zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść
++     To spowoduje wyjście z edytora PORZUCAJĄC wszelkie zmiany, jakie
++     zdążyłeś zrobić. Jeśli chcesz zapamiętać zmiany i wyjść,
+      wpisz:			:wq<ENTER>
+ 
+   3. Kiedy widzisz znak zachęty powłoki wpisz komendę, żeby wrócić
+      do tutoriala. Czyli:	vimtutor<ENTER>
+ 
+-  4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3. aby
++  4. Jeśli chcesz zapamiętać polecenia, wykonaj kroki 1. do 3., aby
+      wyjść i wrócić do edytora.
+ 
+ UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych
+@@ -85,7 +85,7 @@
+ 
+ ---> Kkrowa prrzeskoczyła prrzez ksiiężycc.
+ 
+-  5. Teraz kiedy zdanie jest poprawione przejdź do Lekcji 1.4.
++  5. Teraz, kiedy zdanie jest poprawione, przejdź do Lekcji 1.4.
+ 
+ UWAGA: Ucz się przez ćwiczenie, nie wkuwanie.
+ 
+@@ -101,18 +101,18 @@
+ 
+   1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->.
+ 
+-  2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym
++  2. Aby poprawić pierwszy wiersz, ustaw kursor na pierwszym znaku PO tym,
+      gdzie tekst ma być wstawiony.
+ 
+   3. Wciśnij  i  a następnie wpisz konieczne poprawki.
+ 
+-  4. Po poprawieniu błędu wciśnij <ESC> by wrócić do trybu Normal.
+-     Powtarzaj kroki 2. do 4. aby poprawić całe zdanie.
++  4. Po poprawieniu błędu wciśnij <ESC>, by wrócić do trybu Normal.
++     Powtarzaj kroki 2. do 4., aby poprawić całe zdanie.
+ 
+ ---> W tej brkje trochę .
+ ---> W tej linii brakuje trochę tekstu.
+ 
+-  5. Kiedy czujesz się swobodnie wstawiając tekst przejdź do
++  5. Kiedy czujesz się swobodnie wstawiając tekst, przejdź do
+      podsumowania poniżej.
+ 
+ 
+@@ -129,7 +129,7 @@
+ 
+   3. Kiedy tekst został dodany, wciśnij <ESC> i wróć do trybu Normalnego.
+ 
+-  4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2 i 3
++  4. Przenieś kursor do drugiej linii oznaczonej ---> i powtórz kroki 2. i 3.,
+      aby poprawić zdanie.
+ 
+ ---> Brakuje tu tro
+@@ -137,27 +137,27 @@
+ ---> Tu też trochę bra
+      Tu też trochę brakuje.
+ 
+-  5. Kiedy już utrwaliłeś ćwiczenie przejdź do lekcji 1.6.
++  5. Kiedy już utrwaliłeś ćwiczenie, przejdź do lekcji 1.6.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			  Lekcja 1.6.: EDYCJA PLIKU
+ 
+ 		  ** Użyj  :wq  aby zapisać plik i wyjść. **
+ 
+-   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczyaj całą lekcję !!
++   !! UWAGA: zanim wykonasz jakiekolwiek polecenia przeczytaj całą lekcję !!
+ 
+   1. Zakończ tutorial tak jak w lekcji 1.2.:  :q!
+-     Lub jeśli masz dostęp do innego terminala zrób kolejne kroki tam.
++     lub, jeśli masz dostęp do innego terminala, wykonaj kolejne kroki tam.
+ 
+   2. W powłoce wydaj polecenie:  vim tutor<ENTER>
+-     "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku
+-     jaki chcesz edytować. Użyj pliku jaki może zostać zmieniony.
++     "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku,
++     jaki chcesz edytować. Użyj pliku, który może zostać zmieniony.
+ 
+-  3. Dodaj i usuń tekst tak jak się nauczyłeś w poprzednich lekcjach.
++  3. Dodaj i usuń tekst tak, jak się nauczyłeś w poprzednich lekcjach.
+ 
+   4. Zapisz plik ze zmianami i opuść Vima:  :wq<ENTER>
+ 
+-  5. Jeśli zakończyłeś vimtutor w kroku 1. uruchom go ponownie i przejdź
++  5. Jeśli zakończyłeś vimtutor w kroku 1., uruchom go ponownie i przejdź
+      do podsumowania poniżej.
+ 
+   6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je.
+@@ -168,14 +168,14 @@
+   1. Poruszasz kursorem używając "strzałek" i klawiszy  hjkl .
+        h (w lewo)	 j (w dół)	 k (do góry)		l (w prawo)
+ 
+-  2. By wejść do Vima (z powłoki) wpisz:
++  2. By wejść do Vima, (z powłoki) wpisz:
+ 			    vim NAZWA_PLIKU<ENTER>
+ 
+-  3. By wyjść z Vima wpisz:
+-			    <ESC> :q!<ENTER>  by usunąc wszystkie zmiany.
++  3. By wyjść z Vima, wpisz:
++			    <ESC> :q!<ENTER>  by usunąć wszystkie zmiany.
+ 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachować.
+ 
+-  4. By usunąć znak pod kursorem wciśnij:  x
++  4. By usunąć znak pod kursorem, wciśnij:  x
+ 
+   5. By wstawić tekst przed kursorem lub dodać:
+ 	i   wpisz tekst   <ESC>         wstawi przed kursorem
+@@ -189,18 +189,18 @@
+ 		  Lekcja 2.1.: POLECENIE DELETE (usuwanie)
+ 
+ 
+-		      ** Wpisz  dw  by usunąc wyraz. **
++		      ** Wpisz  dw  by usunąć wyraz. **
+ 
+-  1. Wciśnij  <ESC>  by upewnić się, że jesteś w trybie Normal.
++  1. Wciśnij  <ESC>, by upewnić się, że jesteś w trybie Normal.
+ 
+   2. Przenieś kursor do linii poniżej oznaczonej --->.
+ 
+-  3. Przesuń kursor na początek wyrazu, które chcesz usunąć.
++  3. Przesuń kursor na początek wyrazu, który chcesz usunąć.
+ 
+   4. Wpisz   dw   by usunąć wyraz.
+ 
+   UWAGA: Litera  d  pojawi się na dole ekranu. Vim czeka na wpisanie  w .
+-	 Jeśli zobaczysz inny znak oznacza to, że wpisałeś coś źle, wciśnij
++	 Jeśli zobaczysz inny znak, oznacza to, że wpisałeś coś źle; wciśnij
+ 	 <ESC> i zacznij od początku.
+ 
+ ---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania.
+@@ -225,7 +225,7 @@
+ ---> Ktoś wpisał koniec tego zdania dwukrotnie. zdania dwukrotnie.
+ 
+ 
+-  5. Przejdź do Lekcji 2.3. by zrozumieć co się stało.
++  5. Przejdź do Lekcji 2.3., by zrozumieć co się stało.
+ 
+ 
+ 
+@@ -235,12 +235,12 @@
+ 		     Lekcja 2.3.: O OPERATORACH I RUCHACH
+ 
+ 
+-  Wiele poleceń zmieniających tekst są złożone z operatora i ruchu.
+-  Format dla polecenia usuwającego z operatorem  d  jest taki:
++  Wiele poleceń zmieniających tekst jest złożonych z operatora i ruchu.
++  Format dla polecenia usuwającego z operatorem  d  jest następujący:
+ 
+ 	    d  ruch
+ 
+-  Gdzie:
++  gdzie:
+    d      - operator usuwania.
+    ruch   - na czym polecenie będzie wykonywane (lista poniżej).
+ 
+@@ -252,7 +252,7 @@
+ W ten sposób wpisanie  de  usunie znaki od kursora do końca wyrazu.
+ 
+ UWAGA: Wpisanie tylko ruchu w trybie Normal bez operatora przeniesie kursor
+-       tak jak to określono.
++       tak, jak to określono.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		    Lekcja 2.4.: UŻYCIE MNOŻNIKA DLA RUCHU
+@@ -266,32 +266,32 @@
+ 
+   3. Wpisz  3e  aby przenieść kursor do końca trzeciego wyrazu w przód.
+ 
+-  4. Wpisz  0  (zero) aby przenieść kursor do początku linii.
++  4. Wpisz  0  (zero), aby przenieść kursor na początek linii.
+ 
+   5. Powtórz kroki 2. i 3. z innymi liczbami.
+ 
+ 
+- ---> To jest zwykły wiersz z wyrazami po których możesz się poruszać.
++ ---> To jest zwykły wiersz z wyrazami, po których możesz się poruszać.
+ 
+   6. Przejdź do lekcji 2.5.
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		Lekcja 2.5.: UŻYCIE MNOŻNIKA BY WIĘCEJ USUNĄĆ
++		Lekcja 2.5.: UŻYCIE MNOŻNIKA, BY WIĘCEJ USUNĄĆ
+ 
+ 
+     ** Wpisanie liczby z operatorem powtarza go odpowiednią ilość razy. **
+ 
+   W wyżej wspomnianej kombinacji operatora usuwania i ruchu podaj mnożnik
+-  przed ruchem by więcej usunąć:
++  przed ruchem, by więcej usunąć:
+ 	d  liczba  ruch
+ 
+   1. Przenieś kursor do pierwszego wyrazu KAPITALIKAMI w linii zaznaczonej --->.
+ 
+   2. Wpisz  2dw  aby usunąć dwa wyrazy KAPITALIKAMI.
+ 
+-  3. Powtarzaj kroki 1. i 2. z innymi mnożnikami aby usunąć kolejne wyrazy
++  3. Powtarzaj kroki 1. i 2. z innymi mnożnikami, aby usunąć kolejne wyrazy
+      KAPITALIKAMI jednym poleceniem
+ 
+ ---> ta ASD WE linia QWE ASDF ZXCV FG wyrazów została ERT FGH CF oczyszczona.
+@@ -312,7 +312,7 @@
+   1. Przenieś kursor do drugiego zdania z wierszyka poniżej.
+   2. Wpisz  dd  aby usunąć wiersz.
+   3. Teraz przenieś się do czwartego wiersza.
+-  4. Wpisz  2dd  aby usunąc dwa wiersze.
++  4. Wpisz  2dd  aby usunąć dwa wiersze.
+ 
+ --->  1)  Róże są czerwone,
+ --->  2)  Błoto jest fajne,
+@@ -335,12 +335,12 @@
+   2. Wpisz  x  aby usunąć pierwszy niechciany znak.
+   3. Teraz wciśnij  u  aby cofnąć skutki ostatniego polecenia.
+   4. Tym razem popraw wszystkie błędy w linii używając polecenia  x .
+-  5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu.
+-  6. Teraz wciśnij  u  kilka razy by cofnąć  U  i poprzednie polecenia.
++  5. Teraz wciśnij wielkie  U  aby przywrócić linię do oryginalnego stanu.
++  6. Teraz wciśnij  u  kilka razy, by cofnąć  U  i poprzednie polecenia.
+   7. Teraz wpisz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R)
+      kilka razy, by cofnąć cofnięcia.
+ 
+----> Poopraw blędyyy w teej liniii i zaamiień je prrzez coofnij.
++---> Poopraw błędyyy w teej liniii i zaamiień je prrzez coofnij.
+ 
+   8. To są bardzo pożyteczne polecenia.
+ 
+@@ -350,22 +350,22 @@
+ 			     LEKCJA 2. PODSUMOWANIE
+ 
+ 
+-  1. By usunąć znaki od kursora do następnego wyrazu wpisz:   dw
+-  2. By usunąć znaki od kursora do końca linii wpisz:    d$
++  1. By usunąć znaki od kursora do następnego wyrazu, wpisz:   dw
++  2. By usunąć znaki od kursora do końca linii, wpisz:    d$
+   3. By usunąć całą linię:    dd
+-  4. By powtórzyć ruch poprzedź go liczbą:    2w
++  4. By powtórzyć ruch, poprzedź go liczbą:    2w
+   5. Format polecenia zmiany to:
+                 operator  [liczba]  ruch
+   gdzie:
+-   operator  - to co trzeba zrobić (np.  d  dla usuwania)
++   operator  - to, co trzeba zrobić (np.  d  dla usuwania)
+    [liczba]  - opcjonalne, ile razy powtórzyć ruch
+    ruch      - przenosi nad tekstem do operowania, takim jak  w (wyraz),
+-	       $  (do końca linii), etc.
++	       $  (do końca linii) etc.
+ 
+-  6. By przejść do początku linii użyj zera:  0
+-  7. By cofnąć poprzednie polecenie, wpisz:	  u (małe u)
+-     By cofnąć wszystkie zmiany w linii wpisz:	  U (wielkie U)
+-     By cofnąć cofnięcia wpisz:			  CTRL-R
++  6. By przejść do początku linii, użyj zera:  0
++  7. By cofnąć poprzednie polecenie, wpisz:	  u  (małe u)
++     By cofnąć wszystkie zmiany w linii, wpisz:	  U  (wielkie U)
++     By cofnąć cofnięcie, wpisz:			  CTRL-R
+ 
+ 
+ 
+@@ -379,7 +379,7 @@
+ 
+   2. Wpisz  dd  aby usunąć linię i przechować ją w rejestrze Vima.
+ 
+-  3. Przenieś kursor do linii c), POWYŻEJ tej gdzie usunięta linia powinna
++  3. Przenieś kursor do linii c), POWYŻEJ tej, gdzie usunięta linia powinna
+      się znajdować.
+ 
+   4. Wciśnij  p  by wstawić linię poniżej kursora.
+@@ -404,21 +404,21 @@
+ 
+   3. Wpisz  r  a potem znak jaki powinien go zastąpić.
+ 
+-  4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka jak druga.
++  4. Powtarzaj kroki 2. i 3. dopóki pierwsza linia nie będzie taka, jak druga.
+ 
+---->  Kjedy ten wiersz bił wstókiwany ktoś wciznął perę złych klawirzy!
+---->  Kiedy ten wiersz był wstukiwany ktoś wcisnął parę złych klawiszy!
++--->  Kjedy ten wiersz bił wstókiwany, ktoś wciznął perę złych klawirzy!
++--->  Kiedy ten wiersz był wstukiwany, ktoś wcisnął parę złych klawiszy!
+ 
+   5. Teraz czas na Lekcję 3.3.
+ 
+ 
+-UWAGA: Pamiętaj by uczyć się ćwicząc, a nie pamięciowo.
++UWAGA: Pamiętaj, by uczyć się ćwicząc, a nie pamięciowo.
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		     Lekcja 3.3.: OPERATOR CHANGE (zmień)
+ 
+-		 ** By zmienić do końca wyrazu wpisz  ce . **
++		 ** By zmienić do końca wyrazu, wpisz  ce . **
+ 
+   1. Przenieś kursor do pierwszej linii poniżej oznaczonej --->.
+ 
+@@ -428,7 +428,7 @@
+ 
+   4. Wciśnij <ESC> i przejdź do następnej planowanej zmiany.
+ 
+-  5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same
++  5. Powtarzaj kroki 3. i 4. dopóki pierwsze zdanie nie będzie takie same,
+      jak drugie.
+ 
+ ---> Ta lunos ma pire słów, które tżina zbnic użifajonc pcmazu zmień.
+@@ -442,13 +442,13 @@
+ 		      Lekcja 3.4.: WIĘCEJ ZMIAN UŻYWAJĄC c
+ 
+ 
+-	** Polecenie change używa takich samych ruchów jak delete. **
++	** Polecenie change używa takich samych ruchów, jak delete. **
+ 
+-  1. Operator change działa tak samo jak delete. Format wygląda tak:
++  1. Operator change działa tak samo, jak delete. Format wygląda tak:
+ 
+ 	    c   [liczba]   ruch
+ 
+-  2. Ruchy są także takie same, np.:  w  (wyraz),  $  (koniec linii), etc.
++  2. Ruchy są także takie same, np.:  w  (wyraz),  $  (koniec linii) etc.
+ 
+   3. Przenieś się do pierwszej linii poniżej oznaczonej --->
+ 
+@@ -456,7 +456,7 @@
+ 
+   5. Wpisz  c$ , popraw koniec wiersza i wciśnij <ESC>.
+ 
+----> Koniec tego wiersza musi być poprawiony aby wyglądał tak jak drugi.
++---> Koniec tego wiersza musi być poprawiony, aby wyglądał tak, jak drugi.
+ ---> Koniec tego wiersza musi być poprawiony używając polecenia  c$ .
+ 
+ UWAGA:  Możesz używać <BS> aby poprawiać błędy w czasie pisania.
+@@ -469,11 +469,11 @@
+      polecenie wstawia skasowany tekst PO kursorze (jeśli cała linia
+      została usunięta, zostanie ona umieszczona w linii poniżej kursora).
+ 
+-  2. By zamienić znak pod kursorem wciśnij  r  a potem znak, który ma zastąpić
++  2. By zamienić znak pod kursorem, wciśnij  r  a potem znak, który ma zastąpić
+      oryginalny.
+ 
+-  3. Operator change pozwala Ci na zastąpienie od kursora do miejsca gdzie
+-     zabrałby cię ruch. Np. wpisz  ce  aby zamienić tekst od kursora do końca
++  3. Operator change pozwala Ci na zastąpienie od kursora do miejsca, gdzie
++     zabrałby Cię ruch. Np. wpisz  ce  aby zamienić tekst od kursora do końca
+      wyrazu,  c$  aby zmienić tekst do końca linii.
+ 
+   4. Format do polecenia change (zmień):
+@@ -497,12 +497,12 @@
+      Zapamiętaj numer linii dla potrzeb kroku 3.
+ 
+ UWAGA: Możesz też zobaczyć pozycję kursora w prawym, dolnym rogu ekranu.
+-       Dzieje się tak kiedy ustawiona jest opcja 'ruler' (wyjaśnione w lekcji 6.).
++       Dzieje się tak kiedy ustawiona jest opcja 'ruler' (więcej w lekcji 6.).
+ 
+   2. Wciśnij G aby przejść na koniec pliku.
+      Wciśnij  gg  aby przejść do początku pliku.
+ 
+-  3. Wpisz numer linii, w której byłeś a potem  G . To przeniesie cię
++  3. Wpisz numer linii, w której byłeś a potem  G . To przeniesie Cię
+      z powrotem do linii, w której byłeś kiedy wcisnąłeś CTRL-G.
+ 
+   4. Jeśli czujesz się wystarczająco pewnie, wykonaj kroki 1-3.
+@@ -511,10 +511,10 @@
+ 			 Lekcja 4.2.: POLECENIE SZUKAJ
+ 
+ 
+-	     ** Wpisz  /  a następnie wyrażenie aby je znaleźć. **
++	     ** Wpisz  /  a następnie wyrażenie, aby je znaleźć. **
+ 
+-  1. W trybie Normal wpisz  / . Zauważ, że znak ten, oraz kursor pojawią
+-     się na dole ekranu tak samo jak polecenie  : .
++  1. W trybie Normal wpisz  / . Zauważ, że znak ten oraz kursor pojawią
++     się na dole ekranu tak samo, jak polecenie  : .
+ 
+   2. Teraz wpisz  błond<ENTER> .  To jest słowo, którego chcesz szukać.
+ 
+@@ -523,11 +523,11 @@
+ 
+   4. Jeśli chcesz szukać frazy do tyłu, użyj polecenia  ?  zamiast  / .
+ 
+-  5. Aby wrócić gdzie byłeś wciśnij  CTRL-O. Powtarzaj by wrócić dalej. CTRL-I
++  5. Aby wrócić gdzie byłeś, wciśnij  CTRL-O. Powtarzaj, by wrócić dalej. CTRL-I
+      idzie do przodu.
+ 
+-Uwaga:  'błond' to nie jest metoda by przeliterować błąd; 'błond' to błąd.
+-Uwaga:  Kiedy szukanie osiągnie koniec pliku będzie kontynuowało od początku
++Uwaga:  'błond' to nie jest metoda, by przeliterować błąd; 'błond' to błąd.
++Uwaga:  Kiedy szukanie osiągnie koniec pliku, będzie kontynuowane od początku
+         o ile opcja 'wrapscan' nie została przestawiona.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@@ -571,16 +571,16 @@
+ 
+   4. Aby zmienić wszystkie wystąpienia łańcucha znaków pomiędzy dwoma liniami,
+      wpisz: :#,#s/stare/nowe/g gdzie #,# są numerami linii ograniczających
+-                               region gdzie ma nastąpić zamiana.
++                               region, gdzie ma nastąpić zamiana.
+      wpisz  :%s/stare/nowe/g   by zmienić wszystkie wystąpienia w całym pliku.
+      wpisz  :%s/stare/nowe/gc  by zmienić wszystkie wystąpienia w całym
+-                               pliku, prosząc o potwierdzenie za każdym razem
++                               pliku, prosząc o potwierdzenie za każdym razem.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			     LEKCJA 4. PODSUMOWANIE
+ 
+   1. CTRL-G   pokaże Twoją pozycję w pliku i status pliku.  SHIFT-G przenosi
+-	      cię do końca pliku.
++	      Cię do końca pliku.
+      G        przenosi do końca pliku.
+      liczba G przenosi do linii [liczba].
+      gg       przenosi do pierwszej linii.
+@@ -588,22 +588,22 @@
+   2. Wpisanie  /  a następnie łańcucha znaków szuka łańcucha DO PRZODU.
+      Wpisanie  ?  a następnie łańcucha znaków szuka łańcucha DO TYŁU.
+      Po wyszukiwaniu wciśnij  n  by znaleźć następne wystąpienie szukanej
+-     frazy tym samym kierunku lub  N  by szukać w kierunku przeciwnym.
++     frazy w tym samym kierunku lub  N  by szukać w kierunku przeciwnym.
+      CTRL-O przenosi do starszych pozycji, CTRL-I do nowszych.
+ 
+   3. Wpisanie  %  gdy kursor znajduje się na (,),[,],{, lub } lokalizuje
+      parujący znak.
+ 
+-  4. By zamienić pierwszy stary na nowy w linii wpisz      :s/stary/nowy
+-     By zamienić wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
++  4. By zamienić pierwszy stary na nowy w linii, wpisz      :s/stary/nowy
++     By zamienić wszystkie stary na nowy w linii, wpisz     :s/stary/nowy/g
+      By zamienić frazy pomiędzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
+-     By zamienić wszystkie wystąpienia w pliku wpisz       :%s/stary/nowy/g
+-     By Vim prosił Cię o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
++     By zamienić wszystkie wystąpienia w pliku, wpisz       :%s/stary/nowy/g
++     By Vim prosił Cię o potwierdzenie, dodaj 'c'	   :%s/stary/nowy/gc
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-		 Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE
++		 Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE?
+ 
+ 
+-	** Wpisz  :!  a następnie zewnętrzne polecenie by je wykonać. **
++	** Wpisz  :!  a następnie zewnętrzne polecenie, by je wykonać. **
+ 
+   1. Wpisz znajome polecenie  :  by ustawić kursor na dole ekranu. To pozwala
+      na wprowadzenie komendy linii poleceń.
+@@ -626,20 +626,20 @@
+ 		    Lekcja 5.2.: WIĘCEJ O ZAPISYWANIU PLIKÓW
+ 
+ 
+-	   ** By zachować zmiany w tekści wpisz :w NAZWA_PLIKU . **
++	   ** By zachować zmiany w tekście, wpisz :w NAZWA_PLIKU . **
+ 
+   1. Wpisz  :!dir  lub  :!ls  by zobaczyć spis plików w katalogu.
+-     Już wiesz, że musisz wcisnąć <ENTER> po tym.
++     Już wiesz, że musisz po tym wcisnąć <ENTER>.
+ 
+-  2. Wybierz nazwę pliku jaka jeszcze nie istnieje, np. TEST.
++  2. Wybierz nazwę pliku, jaka jeszcze nie istnieje, np. TEST.
+ 
+   3. Teraz wpisz:   :w TEST   (gdzie TEST jest nazwą pliku jaką wybrałeś.)
+ 
+   4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST.
+-     By to sprawdzić wpisz  :!dir  lub  :!ls , żeby znowu zobaczyć listę plików.
++     By to sprawdzić, wpisz  :!dir  lub  :!ls  żeby znowu zobaczyć listę plików.
+ 
+ Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie
+-       poleceniem  vim TEST , plik byłby dokładną kopią tutoriala kiedy go
++       poleceniem  vim TEST , plik byłby dokładną kopią tutoriala, kiedy go
+        zapisywałeś.
+ 
+   5. Teraz usuń plik wpisując (MS-DOS):		   :!del TEST
+@@ -649,7 +649,7 @@
+ 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
+ 
+ 
+-	  ** By zachować część pliku wpisz  v ruch :w NAZWA_PLIKU **
++	  ** By zachować część pliku, wpisz  v ruch :w NAZWA_PLIKU **
+ 
+   1. Przenieś kursor do tego wiersza.
+ 
+@@ -664,26 +664,26 @@
+   5. Vim zapisze wybrane linie do pliku TEST. Użyj  :!dir  lub  :!ls , żeby to
+      zobaczyć. Jeszcze go nie usuwaj! Użyjemy go w następnej lekcji.
+ 
+-UWAGA: Wciśnięcie  v  zaczyna tryb Wizualny. Możesz poruszać kursorem by
+-       zmienić rozmiary zaznaczenia. Możesz też użyć operatora by zrobić coś
++UWAGA: Wciśnięcie  v  zaczyna tryb Wizualny. Możesz poruszać kursorem, by
++       zmienić rozmiary zaznaczenia. Możesz też użyć operatora, by zrobić coś
+        z tekstem. Na przykład  d  usuwa tekst.
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		   Lekcja 5.4.: WSTAWIANIE I ŁĄCZENIE PLIKÓW
+ 
+ 
+-	    ** By wstawić zawartość pliku wpisz   :r NAZWA_PLIKU **
++	    ** By wstawić zawartość pliku, wpisz   :r NAZWA_PLIKU **
+ 
+   1. Umieść kursor tuż powyżej tej linii.
+ 
+ UWAGA: Po wykonaniu kroku 2. zobaczysz tekst z Lekcji 5.3. Potem przejdź
+-       do DOŁU by zobaczyć ponownie tę lekcję.
++       do DOŁU, by zobaczyć ponownie tę lekcję.
+ 
+   2. Teraz wczytaj plik TEST używając polecenia  :r TEST , gdzie TEST
+      jest nazwą pliku.
+      Wczytany plik jest umieszczony poniżej linii z kursorem.
+ 
+-  3. By sprawdzić czy plik został wczytany cofnij kursor i zobacz, że
++  3. By sprawdzić czy plik został wczytany, cofnij kursor i zobacz, że
+      teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku.
+ 
+ UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład
+@@ -723,14 +723,14 @@
+ 
+   1. Przenieś kursor do linii poniżej oznaczonej --->.
+ 
+-  2. Wpisz  o  (małe) by otworzyć linię PONIŻEJ kursora i przenieść się
++  2. Wpisz  o  (małe), by otworzyć linię PONIŻEJ kursora i przenieść się
+      do trybu Insert (wprowadzanie).
+ 
+   3. Wpisz trochę tekstu i wciśnij <ESC> by wyjść z trybu Insert (wprowadzanie).
+ 
+ ---> Po wciśnięciu  o  kursor znajdzie się w otwartej linii w trybie Insert.
+ 
+-  4. By otworzyć linię POWYŻEJ kursora wciśnij wielkie  O  zamiast małego
++  4. By otworzyć linię POWYŻEJ kursora, wciśnij wielkie  O  zamiast małego
+      o . Wypróbuj to na linii poniżej.
+ 
+ ---> Otwórz linię powyżej wciskając SHIFT-O gdy kursor będzie na tej linii.
+@@ -747,9 +747,9 @@
+ 
+   2. Wciskaj  e  dopóki kursor nie będzie na końcu li .
+ 
+-  3. Wpisz  a  (małe) aby dodać tekst ZA znakiem pod kursorem.
++  3. Wpisz  a  (małe), aby dodać tekst ZA znakiem pod kursorem.
+ 
+-  4. Dokończ wyraz tak jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb
++  4. Dokończ wyraz tak, jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb
+      Insert.
+ 
+   5. Użyj  e  by przejść do kolejnego niedokończonego wyrazu i powtarzaj kroki
+@@ -758,7 +758,7 @@
+ ---> Ta li poz Ci ćwi dodaw teks do koń lin
+ ---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii.
+ 
+-Uwaga:  a ,  i  oraz  A  prowadzą do trybu Insert, jedyną różnicą jest miejsce
++Uwaga:  a ,  i  oraz  A  prowadzą do trybu Insert, jedyną różnicą jest miejsce,
+        gdzie nowe znaki będą dodawane.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
+@@ -791,16 +791,16 @@
+ 
+   1. Przejdź do linii oznaczonej ---> i umieść kursor za "a)".
+ 
+-  2. Wejdź w tryb Visual  v  i przenieś kursor na początek "pierwszy".
++  2. Wejdź w tryb Wizualny  v  i przenieś kursor na początek "pierwszy".
+ 
+-  3. Wciśnij  y  aby yankować (kopiować) podświetlony tekst.
++  3. Wciśnij  y  aby kopiować (yankować) podświetlony tekst.
+ 
+   4. Przenieś kursor do końca następnej linii:  j$
+ 
+-  5. Wciśnij  p  aby wpakować (paste) tekst.  Dodaj:  a drugi<ESC> .
++  5. Wciśnij  p  aby wkleić (wpakować) tekst.  Dodaj:  a drugi<ESC> .
+ 
+-  6. Użyj trybu Wizualnego aby wybrać " element.", yankuj go  y , przejdź do
+-     końca następnej linii  j$ i upakuj tam tekst z  p .
++  6. Użyj trybu Wizualnego, aby wybrać " element.", yankuj go  y , przejdź do
++     końca następnej linii  j$  i upakuj tam tekst z  p .
+ 
+ --->  a) to jest pierwszy element.
+       b)
+@@ -810,7 +810,7 @@
+ 			 Lekcja 6.5.: USTAWIANIE OPCJI
+ 
+ 
+-** Ustawianie opcji tak by szukaj lub substytucja ignorowały wielkość liter **
++** Ustawianie opcji tak, by szukaj lub substytucja ignorowały wielkość liter **
+ 
+   1. Szukaj 'ignore' wpisując:    /ignore<ENTER>
+      Powtórz szukanie kilka razy naciskając klawisz  n .
+@@ -828,7 +828,7 @@
+ 
+   6. Aby wyłączyć ignorowanie wielkości liter:  :set noic
+ 
+-Uwaga: Aby usunąć podświetlanie dopasowań wpisz:   :nohlsearch
++Uwaga: Aby usunąć podświetlanie dopasowań, wpisz:   :nohlsearch
+ Uwaga: Aby ignorować wielkość liter dla jednego wyszukiwania: /ignore\c<ENTER>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			     LEKCJA 6. PODSUMOWANIE
+@@ -837,36 +837,36 @@
+   1. Wpisanie  o  otwiera linię PONIŻEJ kursora.
+      Wpisanie  O  otwiera linię POWYŻEJ kursora.
+ 
+-  2. Wpisanie  a  by wstawić tekst ZA znakiem na, którym jest kursor.
++  2. Wpisanie  a  wstawia tekst ZA znakiem, na którym jest kursor.
+      Wpisanie  A  dodaje tekst na końcu linii.
+ 
+   3. Polecenie  e  przenosi do końca wyrazu.
+-  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
++  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja) go.
+   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopóki
+      nie zostanie wciśnięty <ESC>.
+-  6. Wpisanie ":set xxx" ustawia opcję "xxx". Nietkóre opcje:
++  6. Wpisanie ":set xxx" ustawia opcję "xxx". Niektóre opcje:
+ 	'ic'  'ignorecase'	ignoruj wielkość znaków
+ 	'is'  'incsearch'	pokaż częściowe dopasowania
+ 	'hls' 'hlsearch'	podświetl wszystkie dopasowania
+-     Możesz użyć zarówno długiej jak i krótkiej formy.
+-  7. Dodaj "no" aby wyłączyć opcję:   :set noic
++     Możesz użyć zarówno długiej, jak i krótkiej formy.
++  7. Dodaj "no", aby wyłączyć opcję:   :set noic
+ 
+ 
+ 
+ 
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-			LEKCJA 7.1. JAK UZYSKAĆ POMOC
++			 LEKCJA 7.1. JAK UZYSKAĆ POMOC?
+ 
+ 		      ** Użycie systemu pomocy on-line **
+ 
+-  Vim posiada bardzo dobry system pomocy on-line. By zacząć spróbuj jednej
++  Vim posiada bardzo dobry system pomocy on-line. By zacząć, spróbuj jednej
+   z trzech możliwości:
+ 	- wciśnij klawisz <HELP> (jeśli taki masz)
+ 	- wciśnij klawisz <F1> (jeśli taki masz)
+ 	- wpisz   :help<ENTER>
+ 
+-  Przeczytaj tekst w oknie pomocy  aby dowiedzieć się jak działa pomoc.
++  Przeczytaj tekst w oknie pomocy, aby dowiedzieć się jak działa pomoc.
+   wpisz CTRL-W CTRL-W    aby przeskoczyć z jednego okna do innego
+   wpisz :q<ENTER>        aby zamknąć okno pomocy.
+ 
+@@ -894,10 +894,10 @@
+   3. Zapisz plik:
+      :w
+ 
+-  Następnym razem gdy zaczniesz pracę w Vimie będzie on używać podświetlania
++  Następnym razem, gdy zaczniesz pracę w Vimie będzie on używać podświetlania
+   składni. Możesz dodać wszystkie swoje ulubione ustawienia do tego pliku
+   "vimrc".
+-  Aby uzyskać więcej informacji wpisz     :help vimrc-intro
++  Aby uzyskać więcej informacji, wpisz     :help vimrc-intro
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 			  Lekcja 7.3.: UZUPEŁNIANIE
+@@ -907,11 +907,11 @@
+ 
+   1. Upewnij się, że Vim nie jest w trybie kompatybilności:   :set nocp
+ 
+-  2. Zerknij jakie pliki są w bieżącm katalogu:   :!ls   lub   :!dir
++  2. Zerknij, jakie pliki są w bieżącym katalogu:   :!ls   lub   :!dir
+ 
+   3. Wpisz początek polecenia:   :e
+ 
+-  4. Wciśnij  CTRL-D  i Vim pokaże listę poleceń jakie zaczynają się na "e".
++  4. Wciśnij  CTRL-D  i Vim pokaże listę poleceń, jakie zaczynają się na "e".
+ 
+   5. Wciśnij  <TAB>  i Vim uzupełni polecenie do ":edit".
+ 
+@@ -925,7 +925,7 @@
+ 			    Lekcja 7. PODSUMOWANIE
+ 
+ 
+-  1. Wpisz  :help  lub wciśnij <F1> lub <Help> aby otworzyć okno pomocy.
++  1. Wpisz  :help  albo wciśnij <F1> lub <Help> aby otworzyć okno pomocy.
+ 
+   2. Wpisz  :help cmd  aby uzyskać pomoc o  cmd .
+ 
+@@ -945,14 +945,14 @@
+ 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+-  Tutaj się kończy tutorial Vima. Został on pomyślany tak aby dać krótki
++  Tutaj się kończy tutorial Vima. Został on pomyślany tak, aby dać krótki
+   przegląd jego możliwości, wystarczający byś mógł go używać. Jest on
+-  daleki od kompletności ponieważ Vim ma o wiele, wiele więcej poleceń.
++  daleki od kompletności, ponieważ Vim ma o wiele, wiele więcej poleceń.
+ 
+   Dla dalszej nauki rekomendujemy książkę:
+ 	Vim - Vi Improved - autor Steve Oualline
+ 	Wydawca: New Riders
+-  Pierwsza ksiązka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla
++  Pierwsza książka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla
+   początkujących. Zawiera wiele przykładów i ilustracji.
+   Zobacz http://iccf-holland.org./click5.html
+ 
+@@ -960,7 +960,7 @@
+   polecenia:
+ 	Learning the Vi Editor - autor Linda Lamb
+ 	Wydawca: O'Reilly & Associates Inc.
+-  To dobra książka by dowiedzieć się niemal wszystkiego co chciałbyś zrobić
++  To dobra książka, by dowiedzieć się niemal wszystkiego, co chciałbyś zrobić
+   z Vi. Szósta edycja zawiera też informacje o Vimie.
+ 
+   Po polsku wydano:
+@@ -991,4 +991,5 @@
+   rev. Marzec 2002
+   2nd rev. Wrzesień 2004
+   3rd rev. Marzec 2006
++  4th rev. Grudzień 2008
+   Wszelkie uwagi proszę kierować na: [email protected]
+Files vim72/runtime/tutor.info and ../../../vim-hg/runtime/tutor.info differ
+Files vim72/runtime/vimlogo.cdr and ../../../vim-hg/runtime/vimlogo.cdr differ
+diff -Nur runtime/vimlogo.eps runtime/vimlogo.eps
+--- runtime/vimlogo.eps	1969-12-31 16:00:00.000000000 -0800
++++ runtime/vimlogo.eps	2011-01-18 10:40:56.554311158 -0800
+@@ -0,0 +1,791 @@
++%!PS-Adobe-3.0 EPSF-3.0
++%%BoundingBox: 147 74 429 356 
++%%LanguageLevel: 1
++%%Creator: CorelDRAW 11
++%%Title: vimlogo.eps
++%%CreationDate: Mon Feb 02 14:35:16 2004
++%%DocumentProcessColors: Cyan Yellow Black 
++%%DocumentSuppliedResources: (atend)
++%%EndComments
++%%BeginProlog
++/AutoFlatness false def
++/AutoSteps 0 def
++/CMYKMarks true def
++/UseLevel 1 def
++%Build: CorelDRAW 11 Version 11.633
++%Color profile:  Generic offset separations profile
++/CorelIsEPS true def
++%%BeginResource: procset wCorel11Dict 11.0 0
++/wCorel11Dict 300 dict def wCorel11Dict begin
++% Copyright (c)1992-2002 Corel Corporation
++% All rights reserved.     v11.0 r0.0
++/bd{bind def}bind def/ld{load def}bd/xd{exch def}bd/_ null def/rp{{pop}repeat}
++bd/@cp/closepath ld/@gs/gsave ld/@gr/grestore ld/@np/newpath ld/Tl/translate ld
++/$sv 0 def/@sv{/$sv save def}bd/@rs{$sv restore}bd/spg/showpage ld/showpage{}
++bd currentscreen/@dsp xd/$dsp/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF
++false def/$Scra 0 def/SetScr/setscreen ld/@ss{2 index 0 eq{$dsf 3 1 roll 4 -1
++roll pop}if exch $Scra add exch load SetScr}bd/SepMode_5 where{pop}{/SepMode_5
++0 def}ifelse/CorelIsSeps where{pop}{/CorelIsSeps false def}ifelse
++/CorelIsInRIPSeps where{pop}{/CorelIsInRIPSeps false def}ifelse/CorelIsEPS
++where{pop}{/CorelIsEPS false def}ifelse/CurrentInkName_5 where{pop}
++{/CurrentInkName_5(Composite)def}ifelse/$ink_5 where{pop}{/$ink_5 -1 def}
++ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def/$t 1 def/$n _ def/$o 0 def/$fil 0
++def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 def/$N _ def/$O 0 def/$PF false
++def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def/s1t 0 def/s1n _ def/$bkg false def
++/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op false def matrix currentmatrix/$ctm xd
++/$ptm matrix def/$ttm matrix def/$stm matrix def/$ffpnt true def
++/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring
++16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle
++16#60/grave 16#7C/bar
++16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl
++16#88/circumflex/perthousand/Scaron/guilsinglleft/OE
++16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash
++16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis
++16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section
++16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron
++16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
++16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
++16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
++16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
++16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
++16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
++16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
++16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
++16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
++16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
++/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def/Comp?{
++/LumSepsDict where{pop false}{/AldusSepsDict where{pop false}{1 0 0 0 @gs
++setcmykcolor currentcmykcolor @gr add add add 0 ne 0 1 0 0 @gs setcmykcolor
++currentcmykcolor @gr add add add 0 ne 0 0 1 0 @gs setcmykcolor currentcmykcolor
++@gr add add add 0 ne 0 0 0 1 @gs setcmykcolor currentcmykcolor @gr add add add
++0 ne and and and}ifelse}ifelse}bd/@PL{/LV where{pop LV 2 ge L2? not and{@np
++/Courier findfont 12 scalefont setfont 72 144 m
++(The PostScript level set in the Corel application is higher than)show 72 132 m
++(the PostScript level of this device. Change the PS Level in the Corel)show 72
++120 m(application to Level 1 by selecting the PostScript tab in the print)show
++72 108 m(dialog, and selecting Level 1 from the Compatibility drop down list.)
++show flush spg quit}if}if}bd/@BeginSysCorelDict{systemdict/Corel30Dict known
++{systemdict/Corel30Dict get exec}if systemdict/CorelLexDict known{1 systemdict
++/CorelLexDict get exec}if}bd/@EndSysCorelDict{systemdict/Corel30Dict known
++{end}if/EndCorelLexDict where{pop EndCorelLexDict}if}bd AutoFlatness{/@ifl{dup
++currentflat exch sub 10 gt{
++([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush
++@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{
++{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill
++{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip
++/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat}
++bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse}
++bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped
++{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{
++/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit
++ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l
++/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp}
++bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1
++exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1
++sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type
++/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd
++/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def}
++ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{
++/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{
++dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2
++copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix
++/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd
++{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd}
++if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch
++load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA}
++{$dsa}ifelse $SCP @ss}if}bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge
++{pop}{exch pop}ifelse}bd/InRange{3 -1 roll @MN @MX}bd/@sqr{dup 0 rl dup 0 exch
++rl neg 0 rl @cp}bd/currentscale{1 0 dtransform matrix defaultmatrix idtransform
++dup mul exch dup mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform
++dup mul exch dup mul add sqrt}bd/@unscale{}bd/wDstChck{2 1 roll dup 3 -1 roll
++eq{1 add}if}bd/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1
++exch sub}bd/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch}
++repeat pop}bd/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1
++roll sub neg exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index
++.114 mul add 4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb
++/setrgbcolor ld/GetRgb/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray
++ld/SetRgb2 systemdict/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor
++get def/SetHsb systemdict/sethsbcolor get def/GetHsb systemdict
++/currenthsbcolor get def/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor
++sub 3 1 roll SetHsb GetRgb2}bd/setcmykcolor where{pop/LumSepsDict where{pop
++/SetCmyk_5{LumSepsDict/setcmykcolor get exec}def}{/AldusSepsDict where{pop
++/SetCmyk_5{AldusSepsDict/setcmykcolor get exec}def}{/SetCmyk_5/setcmykcolor ld
++}ifelse}ifelse}{/SetCmyk_5{cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{
++pop/GetCmyk/currentcmykcolor ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse
++/setoverprint where{pop}{/setoverprint{/$op xd}bd}ifelse/currentoverprint where
++{pop}{/currentoverprint{$op}bd}ifelse/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1
++roll mul exch}repeat pop}ifelse}bd/@trp{exch pop 5 1 roll @tc_5}bd
++/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 4 $ink_5 sub index exch pop 5 1
++roll pop pop pop pop SepsColor true eq{$ink_5 3 gt{1 sub neg SetGry}{0 0 0 4
++$ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry}ifelse}ifelse}bd
++/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array astore}bd}ifelse
++/Corelsetcustomcolor_exists false def/setcustomcolor where{pop
++/Corelsetcustomcolor_exists true def}if CorelIsSeps true eq CorelIsInRIPSeps
++false eq and{/Corelsetcustomcolor_exists false def}if
++Corelsetcustomcolor_exists false eq{/setcustomcolor{exch aload pop SepMode_5 0
++eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0}ifelse 6 1 roll
++5 rp 1 sub neg SetGry}ifelse}bd}if/@scc_5{dup type/booleantype eq{dup
++currentoverprint ne{setoverprint}{pop}ifelse}{1 eq setoverprint}ifelse dup _ eq
++{pop setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse
++SepMode_5 0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage
++where{pop/ColorImage{colorimage}def}{/ColorImage{/ncolors xd/$multi xd $multi
++true eq{ncolors 3 eq{/daqB xd/daqG xd/daqR xd pop pop exch pop abs{daqR pop
++daqG pop daqB pop}repeat}{/daqK xd/daqY xd/daqM xd/daqC xd pop pop exch pop abs
++{daqC pop daqM pop daqY pop daqK pop}repeat}ifelse}{/dataaq xd{dataaq ncolors
++dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index get 255
++div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g 255 mul
++cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv getinterval pop}{
++4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 index get 255 div
++$dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div $dat 4 index 3
++add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 roll put}for $dat
++0 $dat length ncolors idiv getinterval}if}ifelse}image}ifelse}bd}ifelse
++/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd
++/currentcmykcolor{GetCmyk}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd
++/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor}
++bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd
++/currentgray{currentrgbcolor rgb2g}bd/InsideDCS false def/IMAGE/image ld/image
++{InsideDCS{IMAGE}{/EPSDict where{pop SepMode_5 0 eq{IMAGE}{dup type/dicttype eq
++{dup/ImageType get 1 ne{IMAGE}{dup dup/BitsPerComponent get 8 eq exch
++/BitsPerComponent get 1 eq or currentcolorspace 0 get/DeviceGray eq and{
++CurrentInkName_5(Black)eq{IMAGE}{dup/DataSource get/TCC xd/Height get abs{TCC
++pop}repeat}ifelse}{IMAGE}ifelse}ifelse}{2 index 1 ne{CurrentInkName_5(Black)eq
++{IMAGE}{/TCC xd pop pop exch pop abs{TCC pop}repeat}ifelse}{IMAGE}ifelse}
++ifelse}ifelse}{IMAGE}ifelse}ifelse}bd}ifelse/WaldoColor_5 true def/$fm 0 def
++/wfill{1 $fm eq{fill}{eofill}ifelse}bd/@Pf{@sv SepMode_5 0 eq $Psc 0 ne or
++$ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y $k $n $o @scc_5 pop $ctm setmatrix 72
++1000 div dup matrix scale dup concat dup Bburx exch Bbury exch itransform
++ceiling cvi/Bbury xd ceiling cvi/Bburx xd Bbllx exch Bblly exch itransform
++floor cvi/Bblly xd floor cvi/Bbllx xd $Prm aload pop $Psn load exec}{1 SetGry
++wfill}ifelse @rs @np}bd/F{matrix currentmatrix $sdf{$scf $sca $scp @ss}if $fil
++1 eq{CorelPtrnDoFill}{$fil 2 eq{@ff}{$fil 3 eq{@Pf}{$fil 4 eq
++{CorelShfillDoFill}{$t $c $m $y $k $n $o @scc_5{wfill}{@np}ifelse}ifelse}
++ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{
++matrix currentmatrix $ctm setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K
++$N $O @scc_5{matrix currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF
++{$dsf $dsa $dsp @ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/_E{
++5 array astore exch cvlit xd}bd/@cc{currentfile $dat readhexstring pop}bd/@sm{
++/$ctm $ctm currentmatrix def}bd/@E{/Bbury xd/Bburx xd/Bblly xd/Bbllx xd}bd/@c{
++@cp}bd/@P{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd}bd/tcc{@cc}def/@B{
++@gs S @gr F}bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq{/$ink_5 -1 def}
++{CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5(Magenta)eq{/$ink_5 1
++def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{CurrentInkName_5(Black)eq
++{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse}ifelse}ifelse}bd/@whi{@gs
++-72000 dup m -72000 72000 l 72000 dup l 72000 -72000 l @cp 1 SetGry fill @gr}
++bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec cvx]cvx settransfer @whi}
++bd/deflevel 0 def/@sax{/deflevel deflevel 1 add def}bd/@eax{/deflevel deflevel
++dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax}ifelse}bd/eax{{exec}forall}
++bd/@rax{deflevel 0 eq{@rs @sv}if}bd systemdict/pdfmark known not{/pdfmark
++/cleartomark ld}if/wclip{1 $fm eq{clip}{eoclip}ifelse}bd
++% Copyright (c)1992-2002 Corel Corporation
++% All rights reserved.     v11.0 r0.0
++/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index 3 index l 3
++index 3 index l clip pop pop pop pop}bd/@i{@sm @gs @ii 6 index 1 ne{/$frg true
++def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5/$frg xd}{/$frg false def}
++ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np/$ury xd/$urx xd/$lly xd
++/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 div ceiling cvi string
++def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl $urx $llx sub $ury
++$lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid $hei abs $bts 1 eq
++{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]/tcc load $bts
++1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa $dsp @ss}if}{$hei abs{tcc pop}
++repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd
++/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd $ngx $llx $lly Tl $urx $llx sub $ury
++$lly sub scale $wid $hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse
++]$msimage false eq $ncl 1 eq or{/$dat $wid $bts mul $ncl mul 8 div ceiling cvi
++string def/@cc load false $ncl ColorImage}{$wid $bts mul 8 div ceiling cvi $ncl
++3 eq{dup dup/$dat1 exch string def/$dat2 exch string def/$dat3 exch string def
++/@cc1 load/@cc2 load/@cc3 load}{dup dup dup/$dat1 exch string def/$dat2 exch
++string def/$dat3 exch string def/$dat4 exch string def/@cc1 load/@cc2 load
++/@cc3 load/@cc4 load}ifelse true $ncl ColorImage}ifelse $SDF{$dsf $dsa $dsp
++@ss}if @gr $ctm setmatrix}bd/@cc1{currentfile $dat1 readhexstring pop}bd/@cc2{
++currentfile $dat2 readhexstring pop}bd/@cc3{currentfile $dat3 readhexstring pop
++}bd/@cc4{currentfile $dat4 readhexstring pop}bd/$msimage false def/COMP 0 def
++/MaskedImage false def L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx
++xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling
++cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK}
++ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8
++dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent
++$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]}
++ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def
++/DataSource currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP
++2 eq{/RunLengthDecode filter}if}ifelse def currentdict end image $SDF{$dsf $dsa
++$dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/@I_3{@sm @gs @ii @np/$ury
++xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul
++$ncl mul 8 div ceiling cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq
++{/DeviceRGB}{/DeviceCMYK}ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub
++$ury $lly sub scale/ImageDataDict 8 dict def ImageDataDict begin/ImageType 1
++def/Width $wid def/Height $hei abs def/BitsPerComponent $bts def/Decode $ncl 1
++eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]}ifelse}ifelse def
++/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def/DataSource
++currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP 2 eq{
++/RunLengthDecode filter}if}ifelse def end/MaskedImageDict 7 dict def
++MaskedImageDict begin/ImageType 3 def/InterleaveType 3 def/MaskDict
++ImageMaskDict def/DataDict ImageDataDict def end MaskedImageDict image $SDF
++{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd/@SetMask{/$mbts xd/$mhei xd/$mwid
++xd/ImageMaskDict 8 dict def ImageMaskDict begin/ImageType 1 def/Width $mwid def
++/Height $mhei abs def/BitsPerComponent $mbts def/DataSource maskstream def
++/ImageMatrix[$mwid 0 0 $mhei neg 0 $mhei 0 gt{$mhei}{0}ifelse]def/Decode[1 0]
++def end}bd/@daq{dup type/arraytype eq{{}forall}if}bd/@BMP{/@cc xd UseLevel 3 eq
++MaskedImage true eq and{7 -2 roll pop pop @I_3}{12 index 1 gt UseLevel 2 eq
++UseLevel 3 eq or and{7 -2 roll pop pop @I_2}{11 index 1 eq{12 -1 roll pop @i}{
++7 -2 roll pop pop @I}ifelse}ifelse}ifelse}bd
++% Copyright (c)1992-2002 Corel Corporation
++% All rights reserved.     v11.0 r0.0
++/@p{/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true def}{@gs $t $c $m $y $k $n $o
++@scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd/$pn xd}bd
++/CorelPtrnDoFill{@gs $ctm setmatrix $pm concat CorelPtrnSetBBox wclip @sv Bburx
++Bbury $pm itransform/$tury xd/$turx xd Bbllx Bblly $pm itransform/$tlly xd
++/$tllx xd newpath $tllx $tlly m $tllx $tury l $turx $tury l $turx $tlly l $tllx
++$tlly m @cp pathbbox @rs/$tury xd/$turx xd/$tlly xd/$tllx xd/$wid $turx $tllx
++sub def/$hei $tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{wfill}if}{
++$t $c $m $y $k $n $o @scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei
++scale <00> 8 1 false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse
++@gr $wid 0 gt $hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub
++/$phei xd exch sub/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div
++ceiling 1 add/$tly xd currentdict/CorelPtrnL2Pattern known $psy 0 eq and $psx 0
++eq and{CorelPtrnL2Pattern}{$psx 0 eq{CorelPtrnTileVeritcal}{CorelPtrnTileHoriz
++}ifelse}ifelse}if @gr @np/$bkg false def}bd/CorelPtrnSetBBox{pathbbox/$ury xd
++/$urx xd/$lly xd/$llx xd}bd/CorelPtrnSetFirstTile{$tllx $pxf add dup $tllx gt
++{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei add}if/$ty xd}bd/p{/$pm
++xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def}bd/CorelPtrnDraw{@ep}bd
++/CorelPtrnPutTile{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei
++sub $ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{
++/$in false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0
++$phei rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3
++index sub Tl matrix currentmatrix/$ctm xd CorelPtrnDraw pop pop pop pop}{pop
++pop}ifelse @rs}bd/CorelPtrnTileHoriz{CorelPtrnSetFirstTile 0 1 $tly 1 sub{dup
++$psx mul $tx add{dup $llx gt{$pwid sub}{exit}ifelse}loop exch $phei mul $ty
++exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 roll add exch CorelPtrnPutTile
++pop}for pop pop}for}bd/CorelPtrnTileVeritcal{CorelPtrnSetFirstTile 0 1 $tlx 1
++sub{dup $pwid mul $tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}
++{exit}ifelse}loop 0 1 $tly 1 sub{$phei mul 3 copy sub CorelPtrnPutTile pop}for
++pop pop}for}bd L2? UseLevel 2 ge and{/CorelPtrnL2Pattern{@sv[$pn cvlit load
++aload pop pop]$pwid $phei $pn cvlit load aload pop pop pop pop pathbbox pop pop
++2 index sub exch 3 index sub 4 -2 roll pop pop exch matrix identmatrix
++translate/PatternMatrix xd/PatternYStep xd/PatternXStep xd/PatternBBox xd
++currentdict/PatternMainDict xd <</PaintType 1/PatternType 1/TilingType 1/BBox
++PatternBBox/XStep PatternXStep/YStep PatternYStep/PaintProc{begin
++PatternMainDict begin $ctm currentmatrix pop 0 CorelPtrnDraw end end}bind >>
++PatternMatrix makepattern setpattern fill @rs}def}if
++end
++%%EndResource
++%%EndProlog
++%%BeginSetup
++wCorel11Dict begin
++@BeginSysCorelDict
++2.6131 setmiterlimit
++1.00 setflat
++/$fst 128 def
++%%EndSetup
++
++%%Page: 1 1
++%LogicalPage: 1
++%%BeginPageSetup
++@sv
++@sm
++@sv
++%%EndPageSetup
++@rax %Note: Object
++147.81600 74.66400 428.47200 355.32000 @E
++ 0 O 0 @g
++0.00 0.00 0.00 1.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++428.47200 216.43200 m
++286.70400 355.32000 L
++147.81600 213.62400 L
++286.70400 74.66400 L
++428.47200 216.43200 L
++@c
++B
++
++@rax %Note: Object
++286.70400 80.35200 422.78400 216.43200 @E
++ 0 O 0 @g
++0.60 0.00 0.40 0.58 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++414.28800 216.43200 m
++422.78400 216.43200 L
++286.70400 80.35200 L
++286.70400 88.84800 L
++414.28800 216.43200 L
++@c
++B
++
++@rax %Note: Object
++153.50400 80.35200 286.70400 213.62400 @E
++ 0 O 0 @g
++0.60 0.00 0.40 0.51 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++153.50400 213.62400 m
++162.00000 213.62400 L
++286.70400 88.84800 L
++286.70400 80.35200 L
++153.50400 213.62400 L
++@c
++B
++
++@rax %Note: Object
++153.50400 213.62400 286.70400 349.63200 @E
++ 0 O 0 @g
++0.60 0.00 0.40 0.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++286.70400 341.20800 m
++286.70400 349.63200 L
++153.50400 213.62400 L
++162.00000 213.62400 L
++286.70400 341.20800 L
++@c
++B
++
++@rax %Note: Object
++286.70400 216.43200 422.78400 349.63200 @E
++ 0 O 0 @g
++0.73 0.00 0.99 0.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++286.70400 349.63200 m
++286.70400 341.20800 L
++414.28800 216.43200 L
++422.78400 216.43200 L
++286.70400 349.63200 L
++@c
++B
++
++@rax %Note: Object
++162.00000 88.84800 414.28800 341.20800 @E
++ 0 O 0 @g
++0.60 0.00 0.40 0.40 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++286.70400 88.84800 m
++414.28800 216.43200 L
++286.70400 341.20800 L
++162.00000 213.62400 L
++286.70400 88.84800 L
++@c
++B
++
++@rax %Note: Object
++165.81600 103.03200 423.72000 344.01600 @E
++ 0 O 0 @g
++0.00 0.00 0.00 1.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++313.20000 312.84000 m
++321.69600 304.27200 L
++321.69600 304.27200 L
++263.08800 244.80000 L
++263.08800 304.27200 L
++268.77600 304.27200 L
++277.27200 312.84000 L
++277.27200 335.44800 L
++268.77600 344.01600 L
++174.31200 344.01600 L
++165.81600 335.44800 L
++165.81600 312.84000 L
++174.31200 304.27200 L
++180.93600 304.27200 L
++180.93600 111.52800 L
++191.30400 103.03200 L
++220.60800 103.03200 L
++423.72000 312.84000 L
++423.72000 335.44800 L
++415.22400 344.01600 L
++322.63200 344.01600 L
++313.20000 335.44800 L
++313.20000 312.84000 L
++@c
++B
++
++@rax %Note: Object
++171.43200 309.96000 271.58400 338.40000 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++177.12000 309.96000 m
++171.43200 315.64800 L
++171.43200 332.64000 L
++177.12000 338.32800 L
++265.96800 338.40000 L
++271.58400 332.64000 L
++265.96800 329.90400 L
++263.08800 332.64000 L
++177.12000 318.52800 L
++177.12000 309.96000 L
++@c
++B
++
++@rax %Note: Object
++187.48800 108.72000 194.11200 315.64800 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++194.11200 108.72000 m
++187.48800 114.40800 L
++187.48800 310.03200 L
++194.11200 315.64800 L
++194.11200 108.72000 L
++@c
++B
++
++@rax %Note: Object
++247.03200 207.93600 341.56800 315.64800 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++335.88000 309.96000 m
++341.56800 315.64800 L
++341.56800 304.27200 L
++247.03200 207.93600 L
++257.47200 230.61600 L
++335.88000 309.96000 L
++@c
++B
++
++@rax %Note: Object
++177.12000 309.96000 196.05600 321.33600 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.50 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++196.05600 318.45600 m
++194.11200 315.64800 L
++187.48800 309.96000 L
++177.12000 309.96000 L
++177.12000 321.33600 L
++196.05600 318.45600 L
++@c
++B
++
++@rax %Note: Object
++247.03200 208.00800 271.58400 332.64000 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.50 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++257.47200 309.96000 m
++257.47200 230.61600 L
++247.03200 208.00800 L
++247.03200 315.72000 L
++263.08800 315.72000 L
++265.96800 318.52800 L
++263.08800 332.64000 L
++271.58400 332.64000 L
++271.58400 315.64800 L
++265.96800 309.96000 L
++257.47200 309.96000 L
++@c
++B
++
++@rax %Note: Object
++318.88800 309.96000 418.10400 338.32800 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++324.50400 309.96000 m
++318.88800 315.64800 L
++318.88800 332.64000 L
++325.44000 338.32800 L
++411.48000 338.32800 L
++418.10400 332.64000 L
++408.60000 324.14400 L
++324.50400 318.52800 L
++324.50400 309.96000 L
++@c
++B
++
++@rax %Note: Object
++194.11200 108.72000 418.10400 332.64000 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.50 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++418.10400 315.64800 m
++218.66400 108.72000 L
++194.11200 108.72000 L
++194.11200 117.21600 L
++212.11200 117.21600 L
++411.48000 321.33600 L
++408.60000 332.64000 L
++418.10400 332.64000 L
++418.10400 315.64800 L
++@c
++B
++
++@rax %Note: Object
++324.50400 309.96000 343.44000 321.33600 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.50 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++343.44000 318.45600 m
++341.49600 315.64800 L
++335.88000 309.96000 L
++324.50400 309.96000 L
++324.50400 321.33600 L
++343.44000 318.45600 L
++@c
++B
++
++@rax %Note: Object
++177.12000 114.40800 412.41600 332.71200 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.20 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++247.03200 208.00800 m
++247.03200 315.72000 L
++263.08800 315.72000 L
++265.96800 318.52800 L
++265.96800 329.90400 L
++263.08800 332.71200 L
++179.92800 332.71200 L
++177.12000 329.90400 L
++177.12000 318.52800 L
++179.92800 315.72000 L
++194.11200 315.72000 L
++194.11200 117.21600 L
++197.78400 114.40800 L
++213.98400 114.40800 L
++412.41600 321.33600 L
++412.41600 329.47200 L
++409.53600 332.71200 L
++327.38400 332.71200 L
++324.50400 329.90400 L
++324.50400 318.45600 L
++327.38400 315.64800 L
++341.56800 315.64800 L
++341.56800 304.27200 L
++247.03200 208.00800 L
++@c
++B
++
++@rax %Note: Object
++292.89600 185.18400 326.95200 213.55200 @E
++ 0 O 0 @g
++0.00 0.00 0.00 1.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++298.58400 207.86400 m
++305.20800 213.55200 L
++322.20000 213.55200 L
++326.95200 207.86400 L
++321.26400 190.87200 L
++314.71200 185.18400 L
++297.72000 185.18400 L
++292.89600 190.87200 L
++298.58400 207.86400 L
++@c
++B
++
++@rax %Note: Object
++304.27200 114.33600 424.22400 182.37600 @E
++ 0 O 0 @g
++0.00 0.00 0.00 1.00 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++304.27200 114.33600 m
++321.33600 165.31200 L
++315.64800 165.31200 L
++321.33600 182.37600 L
++346.75200 182.37600 L
++352.44000 176.68800 L
++356.25600 176.68800 L
++361.87200 182.37600 L
++380.80800 182.37600 L
++386.49600 176.68800 L
++390.24000 176.68800 L
++395.92800 182.37600 L
++416.66400 182.37600 L
++424.22400 171.00000 L
++411.84000 130.68000 L
++417.45600 130.68000 L
++411.98400 114.33600 L
++377.92800 114.33600 L
++391.24800 154.00800 L
++382.75200 154.00800 L
++374.90400 130.82400 L
++380.52000 130.82400 L
++375.19200 114.33600 L
++341.13600 114.33600 L
++354.38400 154.00800 L
++345.88800 154.00800 L
++337.96800 130.68000 L
++343.65600 130.68000 L
++338.32800 114.33600 L
++304.27200 114.33600 L
++@c
++B
++
++@rax %Note: Object
++311.83200 120.02400 418.46400 176.68800 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.20 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++414.07200 176.68800 m
++418.46400 170.42400 L
++404.49600 125.64000 L
++410.11200 125.64000 L
++408.24000 120.02400 L
++385.56000 120.02400 L
++398.80800 159.69600 L
++378.93600 159.69600 L
++367.63200 125.64000 L
++373.24800 125.64000 L
++371.37600 120.02400 L
++348.69600 120.02400 L
++361.94400 159.69600 L
++342.07200 159.69600 L
++330.76800 125.64000 L
++336.45600 125.64000 L
++334.51200 120.02400 L
++311.83200 120.02400 L
++328.89600 171.00000 L
++323.20800 171.00000 L
++325.08000 176.68800 L
++345.88800 176.68800 L
++351.57600 171.00000 L
++357.19200 171.00000 L
++362.88000 176.68800 L
++379.87200 176.68800 L
++385.56000 171.00000 L
++391.24800 171.00000 L
++396.93600 176.68800 L
++414.07200 176.68800 L
++@c
++B
++
++@rax %Note: Object
++267.40800 114.33600 318.45600 182.37600 @E
++ 0 O 0 @g
++0.00 0.00 0.00 1.00 k
++/$fm 0 def
++318.45600 182.37600 m
++301.10400 130.75200 L
++307.00800 130.75200 L
++301.39200 114.33600 L
++267.40800 114.33600 L
++284.40000 165.31200 L
++278.71200 165.31200 L
++318.45600 182.37600 L
++@c
++278.71200 165.31200 m
++284.40000 182.37600 L
++318.45600 182.37600 L
++@c
++F
++
++@rax %Note: Object
++267.40800 114.33600 318.45600 182.37600 @E
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++318.45600 182.37600 m
++301.10400 130.75200 L
++307.00800 130.75200 L
++301.39200 114.33600 L
++267.40800 114.33600 L
++284.40000 165.31200 L
++278.71200 165.31200 L
++@c
++278.71200 165.31200 m
++284.40000 182.37600 L
++318.45600 182.37600 L
++@c
++S
++
++@rax %Note: Object
++274.96800 120.02400 310.89600 176.68800 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.20 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++297.64800 120.02400 m
++299.52000 125.64000 L
++293.83200 125.64000 L
++310.89600 176.68800 L
++287.28000 176.68800 L
++285.33600 171.00000 L
++291.96000 171.00000 L
++274.96800 120.02400 L
++297.64800 120.02400 L
++@c
++B
++
++@rax %Note: Object
++299.52000 190.87200 320.32800 207.86400 @E
++ 0 O 0 @g
++0.00 0.00 0.00 0.20 k
++0 J 0 j [] 0 d 0 R 0 @G
++0.00 0.00 0.00 1.00 K
++0 0.21600 0.21600 0.00000 @w
++/$fm 0 def
++316.51200 193.68000 m
++320.32800 205.05600 L
++318.45600 207.86400 L
++307.08000 207.86400 L
++303.33600 205.05600 L
++299.52000 193.68000 L
++301.46400 190.87200 L
++312.84000 190.87200 L
++316.51200 193.68000 L
++@c
++B
++
++%%PageTrailer
++@rs
++@rs
++%%Trailer
++@EndSysCorelDict
++end
++%%DocumentSuppliedResources: procset wCorel11Dict 11.0 0
++%%EOF
+Files vim72/runtime/vimlogo.gif and ../../../vim-hg/runtime/vimlogo.gif differ
+Files vim72/runtime/vimlogo.pdf and ../../../vim-hg/runtime/vimlogo.pdf differ
+diff -Nur runtime/vimlogo.xpm runtime/vimlogo.xpm
+--- runtime/vimlogo.xpm	1969-12-31 16:00:00.000000000 -0800
++++ runtime/vimlogo.xpm	2011-01-18 10:40:56.555203913 -0800
+@@ -0,0 +1,75 @@
++/* XPM */
++static char *vimlogo[] = {
++/* width height num_colors chars_per_pixel */
++"   125    60        8            1",
++/* colors */
++". c #000000",
++"# c #00007f",
++"a c #007f00",
++"b c #7f7f7f",
++"c c #00ff00",
++"d c #bfbfbf",
++"e c #ffffff",
++"f c None",
++/* pixels */
++"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffffffffffffffffffffee.cc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"fffffffffffffffffffffffffee.cccc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffeeeeeeeeeeeeeeeeeeee.ccaacc.eeffeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"fffffee....................caaaacc.eeee...................eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffee.deeeeeeeeeeeeeeeeeeb.aaaaacc.ee.deeeeeeeeeeeeeeeeeb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffe.dedddddddddddddddddddb.aaaaacc..dedddddddddddddddddd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffe.eddddddddddddddddddddb.aaaaaacc.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffe.eddddddddddddddddddddb.aaaaaaac.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffe.edddddddddddddddddddbb.aaaaaaaa.eddddddddddddddddddbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffe.bbdddddddddddddddddbbb.aaaaaaaa.bbddddddddddddddddbb.befffffffffffffffffffffffffffeeeeeffffffffffffffffffffffffffffffff",
++"ffffee.bbbbddddddddddddbbbb.aaaaaaaaaa.bbbbddddddddddddbbb.eefffffffffffffffeeeeeeeeeeeee...effffffffffffffffffffffffffffffff",
++"fffffee..beddddddddddddbbb.aaaaaaaaaaaa..dedddddddddddbbb.eeffffffffffffffffe..........ee...effffffffffffffffffffffffffffffff",
++"ffffffeee.eddddddddddddbb.aaaaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffe..........eee..eeeeeefffeeeeeeefffffffffffffffff",
++"ffffffffe.eddddddddddddbb.aaaaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffe..ee..ee..efe..e....eefee.....eeffffffffffffffff",
++"ffffffffe.eddddddddddddbb.aaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffe..ee..ee..efe........eee.......eefffffffffffffff",
++"ffffffffe.eddddddddddddbb.aaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffe..ee..ee..efe...eee..ee..eeeee..efffffffffffffff",
++"ffffffffe.eddddddddddddbb.aaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffeeeee..eeeeefe..eefe..ee.........efffffffffffffff",
++"ffffffffe.eddddddddddddbb.aaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffe..efffffe..effe..ee.........efffffffffffffff",
++"ffffffffe.eddddddddddddbb.aaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffffffffe..efffffe..effe..ee..eeeeeeeefffffffffffffff",
++"fffffffee.eddddddddddddbb.aaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffeee..eeeffee..eeee..ee...eeee..efffffffffffffff",
++"ffffffee..eddddddddddddbb.aaaaa.eedddddddddddbbb.c.eefffffffffffffffffffffffffe......effe....ee....ee........efffffffffffffff",
++"fffffee.c.eddddddddddddbb.aaaa.eedddddddddddbbb.acc.eeffffffffffffffffffffffffe......effe....ee....eee......eefffffffffffffff",
++"ffffee.cc.eddddddddddddbb.aaa.eedddddddddddbbb.aaacc.eefffffffffffffffffffffffeeeeeeeeffeeeeeeeeeeeefeeeeeeeeffffffffffffffff",
++"fffee.cca.eddddddddddddbb.aa.eedddddddddddbbb.aaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffee.ccaa.eddddddddddddbb.a.eedddddddddddbbb.aaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"fee.ccaaa.eddddddddddddbb..eedddddddddddbbb.aaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ee.ccaaaa.eddddddddddddbb.eedddddddddddbbb.aaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"e.ccaaaaa.eddddddddddddbbeedddddddddddbbb.aaaaaaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"...aaaaaa.eddddddddddddbdedddddddddddbbb.aaaaaaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"e.##aaaaa.eddddddddddddbedddddddddddbbb.aaaaaaaaaaaaaaaaa...effffffffffffffffeeeeeffffeeeefffffeeeeffffffffffffffffffffffffff",
++"ee.##aaaa.eddddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eeffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
++"fee.##aaa.edddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
++"ffee.##aa.eddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffeeeeeeeffffeeeeee..efeeeeeeefffeee..eeeeefffeeeeeeeffeeeeeeeeee",
++"fffee.##a.edddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffee.....eeffee....e..efe.....efffe........effee.....eefe....e...e",
++"ffffee.##.edddddddddddddddddddd....aaaaaaaaaaaaaaaaa##.eefffee.......eeee........efe.....efffe........efee.......eee.........",
++"fffffee.#.eddddddddddddddddddd.dbb.aaaaaaaaaaaaaaaa##.eeffffe..eeeee..ee...eee...efeeee..efffeee..eeeeefe...eee...eeee...ee..",
++"ffffffee..eddddddddddddddddddd.ddb.aaaaaaaaaaaaaaa##.eefffffe.........ee..eefee..effffe..efffffe..efffffe..eefee..effe..eeeee",
++"fffffffee.eddddddddddddddddddb.bbb.aaaaaaaaaaaaaa##.eeffffffe.........ee..efffe..effffe..efffffe..efffffe..efffe..effe..effff",
++"ffffffffe.edddddddddddddddddbbb...aaaaaaaaaaaaaa##.eeeeeeeffe..eeeeeeeee..eefee..effffe..efffffe..efeeeee..eefee..effe..effff",
++"ffffffffe.eddddddddddddddddbb......aa.....aa.....#......beefe...eeee..ee...eee...eeeeee..eeeeffe..eee..ee...eee...eeee..eeeee",
++"ffffffffe.edddddddddddddddbbb.dbbb.aa.dbbb..dbbbb..dbbbb.befee........eee.........ee........effe.......eee.......eee........e",
++"ffffffffe.eddddddddddddddbbb..bdd.aaa.bdddbbdddddbbdddddb.effee......eefee....e...ee........effee....eeefee.....eefe........e",
++"ffffffffe.edddddddddddddbbb.a.ddb.aaa.ddddddddddddddddddb.efffeeeeeeeefffeeeeeeeeeeeeeeeeeeeefffeeeeeeffffeeeeeeeffeeeeeeeeee",
++"ffffffffe.eddddddddddddbbb.a.bddb.aa.bdddbbbbddddbbbbdddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.edddddddddddbbb.aa.bdd.aaa.bddb....bddb....bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.eddddddddddbbb.aaa.ddb.aaa.ddb.##b.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.edddddddddbbb..aa.bddb.aa.bddb.#e.bddb.ee.bddb.efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.eddddddddbbb..aaa.bdd.aaa.bdd.#ee.bdd.bee.bdd.befffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.edddddddbbb.aaaaa.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.eddddddbbb.##aaa.bddb.aa.bddb.ee.bddb.ee.bddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.edddddbbb.e.##aa.bdd.aaa.bdd.bee.bdd.bee.bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffe.bddddbbb.eee.##a.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffee..bbbb..eefee.#.bbbbb.a.bbbbb.e.bbbbb.e.bbbbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"fffffffffeeb....beefffee........a.......e.......e.......effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffffeeeeeeeefffffee.##aaaa##.eeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffffffffffffffffffee.##aa##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"fffffffffffffffffffffffffee.####.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"ffffffffffffffffffffffffffee.##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
++"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
++};
+diff -Nur runtime/vimrc_example.vim runtime/vimrc_example.vim
+--- runtime/vimrc_example.vim	2008-07-02 13:11:53.000000000 -0700
++++ runtime/vimrc_example.vim	2011-01-18 10:40:56.555587456 -0800
+@@ -1,7 +1,7 @@
+ " An example for a vimrc file.
+ "
+ " Maintainer:	Bram Moolenaar <[email protected]>
+-" Last change:	2008 Jul 02
++" Last change:	2008 Dec 17
+ "
+ " To use it, copy it to
+ "     for Unix and OS/2:  ~/.vimrc
+@@ -14,7 +14,7 @@
+   finish
+ endif
+ 
+-" Use Vim settings, rather then Vi settings (much better!).
++" Use Vim settings, rather than Vi settings (much better!).
+ " This must be first, because it changes other options as a side effect.
+ set nocompatible
+