changeset 1118:2b8ff9e3c520

updated for version 7.1a
author vimboss
date Sat, 05 May 2007 17:10:09 +0000
parents a13e4b242735
children dd9842fb18dd
files Makefile README_os390.txt runtime/autoload/vimball.vim runtime/doc/index.txt runtime/doc/message.txt runtime/doc/os_mint.txt runtime/doc/tabpage.txt runtime/doc/usr_45.txt runtime/doc/version4.txt runtime/doc/vi_diff.txt runtime/indent/javascript.vim runtime/makemenu.vim runtime/plugin/netrwPlugin.vim runtime/syntax/fstab.vim runtime/syntax/perl.vim runtime/syntax/sisu.vim src/proto/digraph.pro src/proto/gui_athena.pro src/proto/os_mswin.pro src/vim.def
diffstat 20 files changed, 609 insertions(+), 301 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,7 @@ first:
 
 # Some make programs use the last target for the $@ default; put the other
 # targets separately to always let $@ expand to "first" by default.
-all install uninstall tools config configure proto depend lint tags types test testclean clean distclean:
+all install uninstall tools config configure reconfig proto depend lint tags types test testclean clean distclean:
 	@echo "Starting make in the src directory."
 	@echo "If there are problems, cd to the src directory and run make there"
 	cd src && $(MAKE) $@
@@ -69,7 +69,7 @@ all install uninstall tools config confi
 #    Before creating an archive first delete all backup files, *.orig, etc.
 
 MAJOR = 7
-MINOR = 0
+MINOR = 1a
 
 # Uncomment this line if the Win32s version is to be included.
 DOSBIN_S =  dosbin_s
@@ -81,14 +81,14 @@ DOSBIN_S =  dosbin_s
 #   runtime/doc/*.txt and nsis/gvim.nsi. Other things in README_os2.txt.  For a
 #   minor/major version: src/GvimExt/GvimExt.reg, src/vim.def, src/vim16.def.
 # - Correct included_patches[] in src/version.c.
-# - Compile Vim with GTK, Perl, Python, TCL, Ruby, MZscheme, Cscope and "huge"
-#   features.  Exclude workshop and SNiFF.
+# - Compile Vim with GTK, Perl, Python, TCL, Ruby, MZscheme (if you can make it
+#   work), Cscope and "huge" features.  Exclude workshop and SNiFF.
 # - With these features: "make proto" (requires cproto and Motif installed;
 #   ignore warnings for missing include files, fix problems for syntax errors).
 # - With these features: "make depend" (works best with gcc).
 # - "make lint" and check the output (ignore GTK warnings).
 # - Enable the efence library in "src/Makefile" and run "make test".  May
-#   require disabling Python to avoid trouble with threads.
+#   require disabling Python and Ruby to avoid trouble with threads.
 # - Check for missing entries in runtime/makemenu.vim (with checkmenu script).
 # - Check for missing options in runtime/optwin.vim et al. (with check.vim).
 # - Do "make menu" to update the runtime/synmenu.vim file.
@@ -128,25 +128,26 @@ DOSBIN_S =  dosbin_s
 # - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
 #   "uninstald32.exe".
 # Win32 console version:
-# - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat"
+# - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat" (adjust the
+#   paths when necessary).
 # - "nmake -f Make_mvc.mak"
 # - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
 # - Rename the executables to "vimw32.exe", "xxdw32.exe".
-# - Rename ObjC/vim.pdb to vimw32.pdb.
+# - Rename vim.pdb to vimw32.pdb.
 # - When building the Win32s version later, delete vimrun.exe, install.exe and
 #   uninstal.exe.  Otherwise rename executables to installw32.exe and
 #   uninstalw32.exe.
 # Win32 GUI version:
 # - "nmake -f Make_mvc.mak GUI=yes.
 # - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
-# - Move ObjG/gvim.pdb to here.
-# - Delete vimrun.exe, install.exe and uninstall.exe.
+# - Move gvim.pdb to here.
+# - Delete vimrun.exe, install.exe and uninstal.exe.
 # - Copy "GvimExt/gvimext.dll" to here.
 # Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME:
 # - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...)
 # - Rename "gvim.exe" to "gvim_ole.exe".
-# - Rename ObjGOLYTR/gvim.pdb to "gvim_ole.pdb".
-# - Delete install.exe and uninstall.exe.
+# - Rename gvim.pdb to "gvim_ole.pdb".
+# - Delete install.exe and uninstal.exe.
 # - If building the Win32s version delete vimrun.exe.
 # Win32s GUI version:
 # - Set environment for Visual C++ 4.1 (requires a new console window)
--- a/README_os390.txt
+++ b/README_os390.txt
@@ -1,4 +1,4 @@
-README_os_390.txt for version 7.0 of Vim: Vi IMproved.
+README_os_390.txt for version 7.1a of Vim: Vi IMproved.
 
 Welcome to the OS/390 Unix port of VIM.
 
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
-" vimball : construct a file containing both paths and files
-" Author: Charles E. Campbell, Jr.
-" Date:   May 01, 2006
-" Version: 13
+" vimball.vim : construct a file containing both paths and files
+" Author:	Charles E. Campbell, Jr.
+" Date:		Jan 03, 2007
+" Version:	21
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -11,18 +11,26 @@
 
 " ---------------------------------------------------------------------
 "  Load Once: {{{1
-if &cp || exists("g:loaded_vimball")
+if &cp || exists("g:loaded_vimball") || v:version < 700
  finish
 endif
 let s:keepcpo        = &cpo
-let g:loaded_vimball = "v13"
+let g:loaded_vimball = "v21"
 set cpo&vim
 
 " =====================================================================
+" Constants: {{{1
+if !exists("s:USAGE")
+ let s:USAGE   = 0
+ let s:WARNING = 1
+ let s:ERROR   = 2
+endif
+
+" =====================================================================
 "  Functions: {{{1
 
 " ---------------------------------------------------------------------
-" MkVimball: creates a vimball given a list of paths to files {{{2
+" vimball#MkVimball: creates a vimball given a list of paths to files {{{2
 " Vimball Format:
 "     path
 "     filesize
@@ -30,11 +38,24 @@ set cpo&vim
 "     path
 "     filesize
 "     [file]
-fun! vimball#MkVimball(line1,line2,writelevel,vimballname) range
-"  call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:vimballname.">")
-  let vbname= substitute(a:vimballname,'\.[^.]*$','','e').'.vba'
+fun! vimball#MkVimball(line1,line2,writelevel,...) range
+"  call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:1.">) a:0=".a:0)
+  if a:1 =~ '.vim' || a:1 =~ '.txt'
+   let vbname= substitute(a:1,'\.\a\{3}$','.vba','')
+  else
+   let vbname= a:1
+  endif
+  if vbname !~ '\.vba$'
+   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")
+"   call Dret("MkVimball : vimball name<".a:1."> should not include slashes")
+   return
+  endif
   if !a:writelevel && filereadable(vbname)
-   echohl Error | echoerr "(MkVimball) file<".vbname."> exists; use ! to insist" | echohl None
+   call vimball#ShowMesg(s:ERROR,"(MkVimball) file<".vbname."> exists; use ! to insist")
 "   call Dret("MkVimball : file<".vbname."> already exists; use ! to insist")
    return
   endif
@@ -42,17 +63,13 @@ fun! vimball#MkVimball(line1,line2,write
   " user option bypass
   call s:SaveSettings()
 
-  " go to vim plugin home
-  for home in split(&rtp,',') + ['']
-   if isdirectory(home) | break | endif
-  endfor
-  if home == ""
-   let home= substitute(&rtp,',.*$','','')
+  if a:0 >= 2
+   " allow user to specify where to get the files
+   let home= expand(a:2)
+  else
+   " use first existing directory from rtp
+   let home= s:VimballHome()
   endif
-  if (has("win32") || has("win95") || has("win64") || has("win16"))
-   let home= substitute(home,'/','\\','ge')
-  endif
-"  call Decho("home<".home.">")
 
   " save current directory
   let curdir = getcwd()
@@ -68,7 +85,7 @@ fun! vimball#MkVimball(line1,line2,write
 "   call Decho("svfile<".svfile.">")
  
    if !filereadable(svfile)
-    echohl Error | echo "unable to read file<".svfile.">" | echohl None
+    call vimball#ShowMesg(s:ERROR,"unable to read file<".svfile.">")
 	call s:ChgDir(curdir)
 	call s:RestoreSettings()
 "    call Dret("MkVimball")
@@ -89,9 +106,9 @@ fun! vimball#MkVimball(line1,line2,write
 	call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
 	call setline(2,'UseVimball')
 	call setline(3,'finish')
-	let lastline= 4
+	let lastline= line("$") + 1
    endif
-   call setline(lastline  ,svfile)
+   call setline(lastline  ,substitute(svfile,'$','	[[[1',''))
    call setline(lastline+1,0)
 
    " write the file from the tab
@@ -134,13 +151,13 @@ fun! vimball#MkVimball(line1,line2,write
 endfun
 
 " ---------------------------------------------------------------------
-" Vimball: {{{2
-fun! vimball#Vimball(really)
-"  call Dfunc("Vimball(really=".a:really.")")
+" vimball#Vimball: extract and distribute contents from a vimball {{{2
+fun! vimball#Vimball(really,...)
+"  call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0)
 
   if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$'
    echoerr "(Vimball) The current file does not appear to be a Vimball!"
-"   call Dret("Vimball")
+"   call Dret("vimball#Vimball")
    return
   endif
 
@@ -149,26 +166,27 @@ fun! vimball#Vimball(really)
   let curtabnr = tabpagenr()
 
   " set up vimball tab
+"  call Decho("setting up vimball tab")
   tabnew
   silent! file Vimball
   let vbtabnr= tabpagenr()
   let didhelp= ""
 
   " go to vim plugin home
-  for home in split(&rtp,',') + ['']
-   if isdirectory(home) | break | endif
-  endfor
-  if home == ""
-   let home= substitute(&rtp,',.*$','','')
-  endif
-  if (has("win32") || has("win95") || has("win64") || has("win16"))
-   let home= substitute(home,'/','\\','ge')
+  if a:0 > 0
+   let home= expand(a:1)
+  else
+   let home= s:VimballHome()
   endif
 "  call Decho("home<".home.">")
 
-  " save current directory
+  " save current directory and remove older same-named vimball, if any
   let curdir = getcwd()
+"  call Decho("home<".home.">")
+"  call Decho("curdir<".curdir.">")
+
   call s:ChgDir(home)
+  call vimball#RmVimball()
 
   let linenr  = 4
   let filecnt = 0
@@ -186,9 +204,12 @@ fun! vimball#Vimball(really)
   exe "tabn ".curtabnr
 "  call Decho("linenr=".linenr." line$=".line("$"))
   while 1 < linenr && linenr < line("$")
-   let fname   = getline(linenr)
+   let fname   = substitute(getline(linenr),'\t\[\[\[1$','','')
+   let fname   = substitute(fname,'\\','/','g')
    let fsize   = getline(linenr+1)
    let filecnt = filecnt + 1
+"   call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt)
+
    if a:really
     echomsg "extracted <".fname.">: ".fsize." lines"
    else
@@ -197,16 +218,30 @@ fun! vimball#Vimball(really)
 "   call Decho("using L#".linenr.": will extract file<".fname.">")
 "   call Decho("using L#".(linenr+1).": fsize=".fsize)
 
+   " Allow AsNeeded/ directory to take place of plugin/ directory
+   " when AsNeeded/filename is filereadable
+   if fname =~ '\<plugin/'
+   	let anfname= substitute(fname,'\<plugin/','AsNeeded/','')
+	if filereadable(anfname)
+"	 call Decho("using anfname<".anfname."> instead of <".fname.">")
+	 let fname= anfname
+	endif
+   endif
+
    " make directories if they don't exist yet
-"   call Decho("making directories if they don't exist yet")
    if a:really
-    let fnamebuf= fname
+"    call Decho("making directories if they don't exist yet (fname<".fname.">)")
+    let fnamebuf= substitute(fname,'\\','/','g')
+	let dirpath = substitute(home,'\\','/','g')
     while fnamebuf =~ '/'
-    	let dirname  = home."/".substitute(fnamebuf,'/.*$','','e')
-    	let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','e')
+     let dirname  = dirpath."/".substitute(fnamebuf,'/.*$','','')
+	 let dirpath  = dirname
+     let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','')
+"	 call Decho("dirname<".dirname.">")
      if !isdirectory(dirname)
-"     call Decho("making <".dirname.">")
+"      call Decho("making <".dirname.">")
       call mkdir(dirname)
+	  call s:RecordInVar(home,"rmdir('".dirname."')")
      endif
     endwhile
    endif
@@ -233,6 +268,7 @@ fun! vimball#Vimball(really)
 "    call Decho("exe w! ".fnamepath)
     exe "silent w! ".fnamepath
     echo "wrote ".fnamepath
+	call s:RecordInVar(home,"call delete('".fnamepath."')")
    endif
 
    " return to tab with vimball
@@ -242,7 +278,7 @@ fun! vimball#Vimball(really)
    " set up help if its a doc/*.txt file
 "   call Decho("didhelp<".didhelp."> fname<".fname.">")
    if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.txt$'
-   	let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','e')
+   	let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','')
 "	call Decho("didhelp<".didhelp.">")
    endif
 
@@ -255,7 +291,7 @@ fun! vimball#Vimball(really)
   " set up help
 "  call Decho("about to set up help: didhelp<".didhelp.">")
   if didhelp != ""
-   let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','ge'),' ')
+   let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','g'),' ')
 "   call Decho("exe helptags ".htpath)
    exe "helptags ".htpath
    echo "did helptags"
@@ -267,6 +303,9 @@ fun! vimball#Vimball(really)
    let filecnt= filecnt + 1
   endwhile
 
+  " record actions in <.VimballRecord>
+  call s:RecordInFile(home)
+
   " restore events, delete tab and buffer
   exe "tabn ".vbtabnr
   setlocal nomod bh=wipe
@@ -275,7 +314,76 @@ fun! vimball#Vimball(really)
   call s:RestoreSettings()
   call s:ChgDir(curdir)
 
-"  call Dret("Vimball")
+"  call Dret("vimball#Vimball")
+endfun
+
+" ---------------------------------------------------------------------
+" vimball#RmVimball: remove any files, remove any directories made by any {{{2
+"               previous vimball extraction based on a file of the current
+"               name.
+"  Usage:  RmVimball  (assume current file is a vimball; remove)
+"          RmVimball vimballname
+fun! vimball#RmVimball(...)
+"  call Dfunc("vimball#RmVimball() a:0=".a:0)
+  if exists("g:vimball_norecord")
+"   call Dret("vimball#RmVimball : (g:vimball_norecord)")
+   return
+  endif
+  let eikeep= &ei
+  set ei=all
+"  call Decho("turned off all events")
+
+  if a:0 == 0
+   let curfile= '^'.expand("%:tr")
+  else
+   if a:1 =~ '[\/]'
+    call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]")
+"    call Dret("vimball#RmVimball : suspect a:1<".a:1.">")
+    return
+   endif
+   let curfile= a:1
+  endif
+  if curfile !~ '.vba$'
+   let curfile= curfile.".vba: "
+  else
+   let curfile= curfile.": "
+  endif
+  if a:0 >= 2
+   let home= expand(a:2)
+  else
+   let home= s:VimballHome()
+  endif
+  let curdir = getcwd()
+"  call Decho("home   <".home.">")
+"  call Decho("curfile<".curfile.">")
+"  call Decho("curdir <".curdir.">")
+
+  call s:ChgDir(home)
+  if filereadable(".VimballRecord")
+"   call Decho(".VimballRecord is readable")
+"   call Decho("curfile<".curfile.">")
+   keepalt keepjumps 1split 
+   silent! keepalt keepjumps e .VimballRecord
+   let keepsrch= @/
+   if search(curfile,'cw')
+   	let exestring= substitute(getline("."),curfile,'','')
+"	call Decho("exe ".exestring)
+	silent! keepalt keepjumps exe exestring
+	silent! keepalt keepjumps d
+   else
+"   	call Decho("unable to find <".curfile."> in .VimballRecord")
+   endif
+   silent! keepalt keepjumps g/^\s*$/d
+   silent! keepalt keepjumps wq!
+   let @/= keepsrch
+  endif
+  call s:ChgDir(curdir)
+
+  " restoring events
+"  call Decho("restoring events")
+  let &ei= eikeep
+
+"  call Dret("vimball#RmVimball")
 endfun
 
 " ---------------------------------------------------------------------
@@ -288,24 +396,59 @@ fun! vimball#Decompress(fname)
    exe "!gunzip ".a:fname
    let fname= substitute(a:fname,'\.gz$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg("Source this file to extract it! (:so %)")
+   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
   elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
    exe "!bunzip2 ".a:fname
    let fname= substitute(a:fname,'\.bz2$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg("Source this file to extract it! (:so %)")
+   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
   elseif expand("%") =~ '.*\.zip' && executable("unzip")
    exe "!unzip ".a:fname
    let fname= substitute(a:fname,'\.zip$','','')
    exe "e ".escape(fname,' \')
-   call vimball#ShowMesg("Source this file to extract it! (:so %)")
+   call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)")
   endif
+  set noma bt=nofile fmr=[[[,]]] fdm=marker
 
 "  call Dret("Decompress")
 endfun
 
 " ---------------------------------------------------------------------
-" ChgDir: change directory (in spite of Windoze) {{{2
+" 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
+  else
+   if a:level == s:WARNING || a:level == s:USAGE
+    echohl WarningMsg
+   elseif a:level == s:ERROR
+    echohl Error
+   endif
+   echomsg "***vimball*** " a:msg
+   echohl None
+  endif
+
+  if a:level != s:USAGE
+   call inputsave()|let ok= input("Press <cr> to continue")|call inputrestore()
+  endif
+
+  let &ruler   = rulerkeep
+  let &showcmd = showcmdkeep
+
+"  call Dret("vimball#ShowMesg")
+endfun
+
+" ---------------------------------------------------------------------
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" =====================================================================
+" s:ChgDir: change directory (in spite of Windoze) {{{2
 fun! s:ChgDir(newdir)
 "  call Dfunc("ChgDir(newdir<".a:newdir.">)")
   if (has("win32") || has("win95") || has("win64") || has("win16"))
@@ -317,11 +460,11 @@ fun! s:ChgDir(newdir)
 endfun
 
 " ---------------------------------------------------------------------
-" Path: {{{2
+" s:Path: prepend and append quotes, do escaping, as necessary {{{2
 fun! s:Path(cmd,quote)
 "  call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">)")
   if (has("win32") || has("win95") || has("win64") || has("win16"))
-   let cmdpath= a:quote.substitute(a:cmd,'/','\\','ge').a:quote
+   let cmdpath= a:quote.substitute(a:cmd,'/','\\','g').a:quote
   else
    let cmdpath= a:quote.a:cmd.a:quote
   endif
@@ -333,16 +476,98 @@ fun! s:Path(cmd,quote)
 endfun
 
 " ---------------------------------------------------------------------
-" vimball#ShowMesg: {{{2
-fun! vimball#ShowMesg(msg)
-"  call Dfunc("vimball#ShowMesg(msg<".a:msg.">)")
-  let ich= 1
-  echohl WarningMsg | echo a:msg | echohl None
-  while ich < &ch
-   echo " "
-   let ich= ich + 1
-  endwhile
-"  call Dret("vimball#ShowMesg")
+" s:RecordInVar: record a un-vimball command in the .VimballRecord file {{{2
+fun! s:RecordInVar(home,cmd)
+"  call Dfunc("RecordInVar(home<".a:home."> cmd<".a:cmd.">)")
+  if a:cmd =~ '^rmdir'
+"   if !exists("s:recorddir")
+"    let s:recorddir= substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
+"   else
+"    let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'')
+"   endif
+"   call Decho("recorddir=".s:recorddir)
+  elseif !exists("s:recordfile")
+   let s:recordfile= a:cmd
+"   call Decho("recordfile=".s:recordfile)
+  else
+   let s:recordfile= s:recordfile."|".a:cmd
+"   call Decho("recordfile=".s:recordfile)
+  endif
+"  call Dret("RecordInVar")
+endfun
+
+" ---------------------------------------------------------------------
+" s:RecordInFile: {{{2
+fun! s:RecordInFile(home)
+"  call Dfunc("RecordInFile()")
+  if exists("g:vimball_norecord")
+"   call Dret("RecordInFile : (g:vimball_norecord)")
+   return
+  endif
+
+  if exists("s:recordfile") || exists("s:recorddir")
+   let curdir= getcwd()
+   call s:ChgDir(a:home)
+   keepalt keepjumps 1split 
+   let cmd= expand("%:tr").": "
+   silent! keepalt keepjumps e .VimballRecord
+   $
+   if exists("s:recordfile") && exists("s:recorddir")
+   	let cmd= cmd.s:recordfile."|".s:recorddir
+   elseif exists("s:recorddir")
+   	let cmd= cmd.s:recorddir
+   elseif exists("s:recordfile")
+   	let cmd= cmd.s:recordfile
+   else
+"    call Dret("RecordInFile")
+	return
+   endif
+   keepalt keepjumps put=cmd
+   silent! keepalt keepjumps g/^\s*$/d
+   silent! keepalt keepjumps wq!
+   call s:ChgDir(curdir)
+   if exists("s:recorddir") |unlet s:recorddir |endif
+   if exists("s:recordfile")|unlet s:recordfile|endif
+  else
+"   call Decho("s:record[file|dir] doesn't exist")
+  endif
+
+"  call Dret("RecordInFile")
+endfun
+
+" ---------------------------------------------------------------------
+" s:Rmdir: {{{2
+"fun! s:Rmdir(dirname)
+""  call Dfunc("s:Rmdir(dirname<".a:dirname.">)")
+"  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
+"    call system("del ".a:dirname)
+"  else
+"   call system("rmdir ".a:dirname)
+"  endif
+""  call Dret("s:Rmdir")
+"endfun
+
+" ---------------------------------------------------------------------
+" s:VimballHome: determine/get home directory path (usually from rtp) {{{2
+fun! s:VimballHome()
+"  call Dfunc("VimballHome()")
+  if exists("g:vimball_home")
+   let home= g:vimball_home
+  else
+   " go to vim plugin home
+   for home in split(&rtp,',') + ['']
+    if isdirectory(home) && filewritable(home) | 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
+"  call Dret("VimballHome <".home.">")
+  return home
 endfun
 
 " ---------------------------------------------------------------------
@@ -360,10 +585,11 @@ fun! s:SaveSettings()
   let s:ickeep  = &ic
   let s:repkeep = &report
   let s:vekeep  = &ve
+  let s:lzkeep  = &lz
   if exists("&acd")
-   set ei=all ve=all noacd nofen noic report=999 nohid
+   set ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz
   else
-   set ei=all ve=all nofen noic report=999 nohid
+   set ei=all ve=all nofen noic report=999 nohid bt= ma lz
   endif
 "  call Dret("SaveSettings")
 endfun
@@ -376,28 +602,27 @@ fun! s:RestoreSettings()
   if exists("&acd")
    let &acd   = s:acdkeep
   endif
-  let &ei     = s:eikeep
   let &fen    = s:fenkeep
   let &hidden = s:hidkeep
   let &ic     = s:ickeep
+  let &lz     = s:lzkeep
   let &report = s:repkeep
   let &ve     = s:vekeep
+  let &ei     = s:eikeep
   if s:makeep[0] != 0
    " restore mark a
 "   call Decho("restore mark-a: makeep=".string(makeep))
    call setpos("'a",s:makeep)
   endif
   if exists("&acd")
-   unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep
+   unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep
   else
-   unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep
+   unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep
   endif
+  set bt=nofile noma
 "  call Dret("RestoreSettings")
 endfun
 
 " ---------------------------------------------------------------------
-let &cpo= s:keepcpo
-unlet s:keepcpo
-" =====================================================================
 " Modelines: {{{1
 " vim: fdm=marker
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.0.  Last change: 2006 Apr 30
+*index.txt*     For Vim version 7.1a.  Last change: 2007 May 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -624,9 +624,10 @@ tag		char	      note action in Normal mo
 				   included files that contains the word under
 				   the cursor, start searching at beginning of
 				   current file
-|[p|		[p		2  like "P", but adjust indent to current line
 |[m|		[m		1  cursor N times back to start of member
 				   function
+|[p|		[p		2  like "P", but adjust indent to current line
+|[s|		[s		1  move to the previous misspelled word
 |[z|		[z		1  move to start of open fold
 |[{|		[{		1  cursor N times back to unmatched '{'
 |[<MiddleMouse> [<MiddleMouse>	2  same as "[p"
@@ -663,9 +664,10 @@ tag		char	      note action in Normal mo
 				   included files that contains the word under
 				   the cursor, start searching at cursor
 				   position
-|]p|		]p		2  like "p", but adjust indent to current line
 |]m|		]m		1  cursor N times forward to end of member
 				   function
+|]p|		]p		2  like "p", but adjust indent to current line
+|]s|		]s		1  move to next misspelled word
 |]z|		]z		1  move to end of open fold
 |]}|		]}		1  cursor N times forward to unmatched '}'
 |]<MiddleMouse> ]<MiddleMouse>	2  same as "]p"
@@ -748,6 +750,8 @@ tag		char	      note action in Normal mo
 |gu|		gu{motion}	2  make Nmove text lowercase
 |gv|		gv		   reselect the previous Visual area
 |gw|		gw{motion}	2  format Nmove text and keep cursor
+|netrw-gx|	gx		   execute application for file name under the
+				   cursor (only with |netrw| plugin)
 |g@|		g@{motion}	   call 'operatorfunc'
 |g~|		g~{motion}	2  swap case for Nmove text
 |g<Down>|	g<Down>		1  same as "gj"
@@ -984,7 +988,7 @@ file names, tags, commands etc. as appro
 				{expr}
 		CTRL-\ f - z	reserved for extensions
 		CTRL-\ others	not used
-		CTRL-]		not used
+|c_CTRL-]|	CTRL-]		trigger abbreviation
 |c_CTRL-^|	CTRL-^		toggle use of |:lmap| mappings
 |c_CTRL-_|	CTRL-_		when 'allowrevins' set: change language
 				(Hebrew, Farsi)
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 7.0.  Last change: 2006 Apr 30
+*message.txt*   For Vim version 7.1a.  Last change: 2007 Mar 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -25,7 +25,8 @@ for other versions.
 								*g<*
 The "g<" command can be used to see the last page of previous command output.
 This is especially useful if you accidentally typed <Space> at the hit-enter
-prompt.
+prompt.  You are then back at the hit-enter prompt and can then scroll further
+back.
 Note: when you stopped the output with "q" at the more prompt only up to that
 point will be displayed.
 The previous command output is cleared when another command produces output.
--- a/runtime/doc/os_mint.txt
+++ b/runtime/doc/os_mint.txt
@@ -1,4 +1,4 @@
-*os_mint.txt*   For Vim version 7.0.  Last change: 2005 Mar 29
+*os_mint.txt*   For Vim version 7.1a.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Jens M. Felderhoff
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0.  Last change: 2006 May 02
+*tabpage.txt*   For Vim version 7.1a.  Last change: 2007 Mar 11
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -74,7 +74,8 @@ In the GUI tab pages line you can use th
 
 :[count]tab {cmd}					*:tab*
 		Execute {cmd} and when it opens a new window open a new tab
-		page instead.  Doesn't work for |:diffsplit| or |:diffpatch|.
+		page instead.  Doesn't work for |:diffsplit|, |:diffpatch|,
+		|:execute| and |:normal|.
 		When [count] is omitted the tab page appears after the current
 		one.  When [count] is specified the new tab page comes after
 		tab page [count].  Use ":0tab cmd" to get the new tab page as
@@ -129,23 +130,25 @@ label to switch to that tab page.  Click
 next tab page.  |'tabline'|
 
 :tabn[ext]				*:tabn* *:tabnext* *gt*
-gt					*CTRL-<PageDown>* *<C-PageDown>*
-<C-PageDown>				*i_CTRL-<PageDown>* *i_<C-PageDown>*
+<C-PageDown>				*CTRL-<PageDown>* *<C-PageDown>*
+gt					*i_CTRL-<PageDown>* *i_<C-PageDown>*
 		Go to the next tab page.  Wraps around from the last to the
 		first one.
 
-:tabn[ext] {count}			*CTRL-<PageUp>* *<C-PageUp>*
-{count}gt				*i_CTRL-<PageUp>* *i_<C-PageUp>*
-<C-PageUp>	Go to tab page {count}.  The first tab page has number one.
+:tabn[ext] {count}
+{count}<C-PageDown>
+{count}gt	Go to tab page {count}.  The first tab page has number one.
 
 
-:tabp[revious]				*:tabp* *:tabprevious* *gT*
-:tabN[ext]				*:tabN* *:tabNext*
+:tabp[revious]				*:tabp* *:tabprevious* *gT* *:tabN*
+:tabN[ext]				*:tabNext* *CTRL-<PageUp>*
+<C-PageUp>			 *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>*
 gT		Go to the previous tab page.  Wraps around from the first one
 		to the last one.
 
 :tabp[revious] {count}
 :tabN[ext] {count}
+{count}<C-PageUp>
 {count}gT	Go {count} tab pages back.  Wraps around from the first one
 		to the last one.
 
@@ -203,7 +206,7 @@ The entries are:
 			pointer.
 	New Tab		Open a tab page, editing an empty buffer.  It appears
 			to the left of the mouse pointer.
-	Open Tab...	Like "New Tab" and additionaly use a file selector to
+	Open Tab...	Like "New Tab" and additionally use a file selector to
 			select a file to edit.
 
 Diff mode works per tab page.  You can see the diffs between several files
@@ -247,6 +250,10 @@ always.
 The highlighting of the tab pages line is set with the groups TabLine
 TabLineSel and TabLineFill.  |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill|
 
+A "+" will be shown for a tab page that has a modified window.  The number of
+windows in a tabpage is also shown.  Thus "3+" means three windows and one of
+them has a modified buffer.
+
 The 'tabline' option allows you to define your preferred way to tab pages
 labels.  This isn't easy, thus an example will be given here.
 
@@ -254,8 +261,8 @@ For basics see the 'statusline' option. 
 'tabline' option.  Additionally, the |tabpagebuflist()|, |tabpagenr()| and
 |tabpagewinnr()| functions are useful.
 
-Since the number of tab labels will vary, you need to use an expresion for the
-whole option.  Something like: >
+Since the number of tab labels will vary, you need to use an expression for
+the whole option.  Something like: >
 	:set tabline=%!MyTabLine()
 
 Then define the MyTabLine() function to list all the tab pages labels.  A
@@ -300,7 +307,7 @@ Now the MyTabLabel() function is called 
 
 This is just a simplistic example that results in a tab pages line that
 resembles the default, but without adding a + for a modified buffer or
-trunctating the names.  You will want to reduce the width of labels in a
+truncating the names.  You will want to reduce the width of labels in a
 clever way when there is not enough room.  Check the 'columns' option for the
 space available.
 
@@ -330,7 +337,7 @@ label: >
 	:set guitablabel=%N\ %f
 
 An example that resembles the default 'guitablabel': Show the number of
-windows in the tab page and a '+' if there is a modifed buffer: >
+windows in the tab page and a '+' if there is a modified buffer: >
 
 	function GuiTabLabel()
 	  let label = ''
--- a/runtime/doc/usr_45.txt
+++ b/runtime/doc/usr_45.txt
@@ -1,4 +1,4 @@
-*usr_45.txt*	For Vim version 7.0.  Last change: 2006 Apr 24
+*usr_45.txt*	For Vim version 7.1a.  Last change: 2006 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/version4.txt
+++ b/runtime/doc/version4.txt
@@ -1,4 +1,4 @@
-*version4.txt*  For Vim version 7.0.  Last change: 2006 Apr 24
+*version4.txt*  For Vim version 7.1a.  Last change: 2006 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -1,4 +1,4 @@
-*vi_diff.txt*   For Vim version 7.0.  Last change: 2006 Apr 24
+*vi_diff.txt*   For Vim version 7.1a.  Last change: 2006 Nov 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -25,7 +25,7 @@ 7. POSIX compliance			|posix-compliance|
 ==============================================================================
 1. Simulated command					*simulated-command*
 
-This command is in Vi, but Vim only simuates it:
+This command is in Vi, but Vim only simulates it:
 
 							*:o* *:op* *:open*
 :[range]o[pen]			Works like |:visual|: end Ex mode.
@@ -953,7 +953,7 @@ Only Vim is able to accept options in be
 ==============================================================================
 7. POSIX compliance				*posix* *posix-compliance*
 
-In 2005 the POSIX test suite was run to check the compatiblity of Vim.  Most
+In 2005 the POSIX test suite was run to check the compatibility of Vim.  Most
 of the test was executed properly.  There are the few things where Vim
 is not POSIX compliant, even when run in Vi compatibility mode.
 
new file mode 100644
--- /dev/null
+++ b/runtime/indent/javascript.vim
@@ -0,0 +1,15 @@
+" Vim indent file
+" Language:	Javascript
+" Maintainer:	None!  Wanna improve this?
+" Last Change:	2007 Jan 22
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+   finish
+endif
+let b:did_indent = 1
+
+" C indenting is not too bad.
+setlocal cindent
+
+let b:undo_indent = "setl cin<"
--- a/runtime/makemenu.vim
+++ b/runtime/makemenu.vim
@@ -1,6 +1,6 @@
 " Script to define the syntax menu in synmenu.vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Apr 27
+" Last Change:	2007 May 04
 
 " This is used by "make menu" in the src directory.
 edit <sfile>:p:h/synmenu.vim
@@ -87,6 +87,7 @@ SynMenu AB.ASN\.1:asn
 SynMenu AB.Asterisk\ config:asterisk
 SynMenu AB.Asterisk\ voicemail\ config:asteriskvm
 SynMenu AB.Atlas:atlas
+SynMenu AB.AutoIt:autoit
 SynMenu AB.Automake:automake
 SynMenu AB.Avenue:ave
 SynMenu AB.Awk:awk
@@ -94,7 +95,11 @@ SynMenu AB.AYacc:ayacc
 
 SynMenu AB.B:b
 SynMenu AB.Baan:baan
-SynMenu AB.BASIC:basic
+SynMenu AB.Basic.FreeBasic:freebasic
+SynMenu AB.Basic.IBasic:ibasic
+SynMenu AB.Basic.QBasic:basic
+SynMenu AB.Basic.Visual\ Basic:vb
+SynMenu AB.Bazaar\ commit\ file:bzr
 SynMenu AB.BC\ calculator:bc
 SynMenu AB.BDF\ font:bdf
 SynMenu AB.BibTeX.Bibliography\ database:bib
@@ -122,11 +127,11 @@ SynMenu C.Clean:clean
 SynMenu C.Clever:cl
 SynMenu C.Clipper:clipper
 SynMenu C.Cmake:cmake
+SynMenu C.Cmusrc:cmusrc
 SynMenu C.Cold\ Fusion:cf
 SynMenu C.Config.Cfg\ Config\ file:cfg
 SynMenu C.Config.Generic\ Config\ file:conf
 SynMenu C.Config.Configure\.in:config
-SynMenu C.ConTeXt:context
 SynMenu C.CRM114:crm
 SynMenu C.Ctrl-H:ctrlh
 SynMenu C.Cobol:cobol
@@ -209,6 +214,7 @@ SynMenu FG.Groff:groff
 SynMenu FG.Groovy:groovy
 SynMenu FG.GTKrc:gtkrc
 
+SynMenu HIJK.Hamster:hamster
 SynMenu HIJK.Haskell.Haskell:haskell
 SynMenu HIJK.Haskell.Haskell-c2hs:chaskell
 SynMenu HIJK.Haskell.Haskell-literate:lhaskell
@@ -230,6 +236,7 @@ SynMenu HIJK.IDL\Microsoft\ IDL:msidl
 SynMenu HIJK.Indent\ profile:indent
 SynMenu HIJK.Inform:inform
 SynMenu HIJK.Informix\ 4GL:fgl
+SynMenu HIJK.Initng:initng
 SynMenu HIJK.Inittab:inittab
 SynMenu HIJK.Inno\ setup:iss
 SynMenu HIJK.InstallShield\ script:ishd
@@ -290,6 +297,7 @@ SynMenu L-Ma.Matlab:matlab
 SynMenu L-Ma.Maxima:maxima
 
 SynMenu Me-NO.MEL\ (for\ Maya):mel
+SynMenu Me-NO.Messages\ (/var/log):messages
 SynMenu Me-NO.Metafont:mf
 SynMenu Me-NO.MetaPost:mp
 SynMenu Me-NO.MGL:mgl
@@ -357,6 +365,7 @@ SynMenu PQ.Povray.Povray\ scene\ descr:p
 SynMenu PQ.Povray.Povray\ configuration:povini
 SynMenu PQ.Prescribe\ (Kyocera):prescribe
 SynMenu PQ.Printcap:pcap
+SynMenu PQ.Privoxy:privoxy
 SynMenu PQ.Procmail:procmail
 SynMenu PQ.Product\ Spec\ File:psf
 SynMenu PQ.Progress:progress
@@ -463,6 +472,7 @@ SynMenu Sh-S.Stata.SMCL:smcl
 SynMenu Sh-S.Stata.Stata:stata
 SynMenu Sh-S.Stored\ Procedures:stp
 SynMenu Sh-S.Strace:strace
+SynMenu Sh-S.Streaming\ descriptor\ file:sd
 SynMenu Sh-S.Subversion\ commit:svn
 SynMenu Sh-S.Sudoers:sudoers
 SynMenu Sh-S.Sysctl\.conf:sysctl
@@ -477,7 +487,9 @@ SynMenu TUV.TealInfo:tli
 SynMenu TUV.Telix\ Salt:tsalt
 SynMenu TUV.Termcap/Printcap:ptcap
 SynMenu TUV.Terminfo:terminfo
-SynMenu TUV.TeX.TeX:tex
+SynMenu TUV.TeX.TeX/LaTeX:tex
+SynMenu TUV.TeX.plain\ TeX:plaintex
+SynMenu TUV.TeX.ConTeXt:context
 SynMenu TUV.TeX.TeX\ configuration:texmf
 SynMenu TUV.TeX.Texinfo:texinfo
 SynMenu TUV.TF\ mud\ client:tf
--- a/runtime/plugin/netrwPlugin.vim
+++ b/runtime/plugin/netrwPlugin.vim
@@ -1,7 +1,7 @@
 " netrwPlugin.vim: Handles file transfer and remote directory listing across a network
-"            PLUGIN PORTION
-" Date:		Oct 27, 2005
-" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+"            PLUGIN SECTION
+" Date:		Jan 05, 2007
+" Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
@@ -19,9 +19,11 @@
 
 " ---------------------------------------------------------------------
 " Load Once: {{{1
-if exists("g:loaded_netrw")
+if &cp || exists("g:loaded_netrwPlugin")
  finish
 endif
+let g:loaded_netrwPlugin = 1
+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
  finish
@@ -36,6 +38,9 @@ set cpo&vim
 augroup FileExplorer
  au!
  au BufEnter * silent! call s:LocalBrowse(expand("<amatch>"))
+ if has("win32") || has("win95") || has("win64") || has("win16")
+  au BufEnter .* silent! call s:LocalBrowse(expand("<amatch>"))
+ endif
 augroup END
 
 " Network Browsing Reading Writing: {{{2
@@ -51,6 +56,11 @@ augroup Network
  au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".expand("<amatch>")|exe 'Nread "'   .expand("<amatch>").'"'|exe "silent doau FileReadPost ".expand("<amatch>")
  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".expand("<amatch>")|exe 'Nwrite "' .expand("<amatch>").'"'|exe "silent doau BufWritePost ".expand("<amatch>")
  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*		exe "silent doau FileWritePre ".expand("<amatch>")|exe "'[,']".'Nwrite "' .expand("<amatch>").'"'|exe "silent doau FileWritePost ".expand("<amatch>")
+ try
+  au SourceCmd    ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe 'Nsource "'.expand("<amatch>").'"'
+ catch /^Vim\%((\a\+)\)\=:E216/
+  au SourcePre    ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe 'Nsource "'.expand("<amatch>").'"'
+ endtry
 augroup END
 
 " Commands: :Nread, :Nwrite, :NetUserPass {{{2
@@ -58,23 +68,27 @@ com! -count=1 -nargs=*	Nread		call netrw
 com! -range=% -nargs=*	Nwrite		call netrw#NetSavePosn()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call netrw#NetRestorePosn()
 com! -nargs=*		NetUserPass	call NetUserPass(<f-args>)
 com! -nargs=+           Ncopy           call netrw#NetObtain(<f-args>)
+com! -nargs=*	        Nsource		call netrw#NetSavePosn()<bar>call netrw#NetSource(<f-args>)<bar>call netrw#NetRestorePosn()
 
 " Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2
-com! -nargs=? -bar -bang -count=0	Explore		call netrw#Explore(<count>,0,0+<bang>0,<q-args>)
-com! -nargs=? -bar -bang -count=0	Sexplore	call netrw#Explore(<count>,1,0+<bang>0,<q-args>)
-com! -nargs=? -bar -bang -count=0	Hexplore	call netrw#Explore(<count>,1,2+<bang>0,<q-args>)
-com! -nargs=? -bar -bang -count=0	Vexplore	call netrw#Explore(<count>,1,4+<bang>0,<q-args>)
-com! -nargs=? -bar -bang		Nexplore	call netrw#Explore(-1,0,0,<q-args>)
-com! -nargs=? -bar -bang		Pexplore	call netrw#Explore(-2,0,0,<q-args>)
+com! -nargs=* -bar -bang -count=0 -complete=dir	Explore		call netrw#Explore(<count>,0,0+<bang>0,<q-args>)
+com! -nargs=* -bar -bang -count=0 -complete=dir	Sexplore	call netrw#Explore(<count>,1,0+<bang>0,<q-args>)
+com! -nargs=* -bar -bang -count=0 -complete=dir	Hexplore	call netrw#Explore(<count>,1,2+<bang>0,<q-args>)
+com! -nargs=* -bar -bang -count=0 -complete=dir	Vexplore	call netrw#Explore(<count>,1,4+<bang>0,<q-args>)
+com! -nargs=* -bar       -count=0 -complete=dir	Texplore	call netrw#Explore(<count>,0,6        ,<q-args>)
+com! -nargs=* -bar -bang			Nexplore	call netrw#Explore(-1,0,0,<q-args>)
+com! -nargs=* -bar -bang			Pexplore	call netrw#Explore(-2,0,0,<q-args>)
 
 " Commands: NetrwSettings {{{2
 com! -nargs=0 NetrwSettings :call netrwSettings#NetrwSettings()
 
 " Maps:
-if !hasmapto('<Plug>NetrwBrowseX')
- nmap <unique> gx <Plug>NetrwBrowseX
+if !exists("g:netrw_nogx") && maparg('g','n') == ""
+ if !hasmapto('<Plug>NetrwBrowseX')
+  nmap <unique> gx <Plug>NetrwBrowseX
+ endif
+ nno <silent> <Plug>NetrwBrowseX :call netrw#NetBrowseX(expand("<cWORD>"),0)<cr>
 endif
-nno <silent> <Plug>NetrwBrowseX :call netrw#NetBrowseX(expand("<cWORD>"),0)<cr>
 
 " ---------------------------------------------------------------------
 " LocalBrowse: {{{2
@@ -82,8 +96,17 @@ fun! s:LocalBrowse(dirname)
   " unfortunate interaction -- debugging calls can't be used here;
   " the BufEnter event causes triggering when attempts to write to
   " the DBG buffer are made.
-  if isdirectory(a:dirname)
-   silent! call netrw#DirBrowse(a:dirname)
+"  echomsg "dirname<".a:dirname.">"
+  if has("amiga")
+   " The check against '' is made for the Amiga, where the empty
+   " string is the current directory and not checking would break
+   " things such as the help command.
+   if a:dirname != '' && isdirectory(a:dirname)
+    silent! call netrw#LocalBrowseCheck(a:dirname)
+   endif
+  elseif isdirectory(a:dirname)
+"   echomsg "dirname<".dirname."> isdir"
+   silent! call netrw#LocalBrowseCheck(a:dirname)
   endif
   " not a directory, ignore it
 endfun
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -1,14 +1,18 @@
 " Vim syntax file
 " Language: fstab file
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Original Maintainer: Radu Dineiu <littledragon@altern.org>
-" License: This file can be redistribued and/or modified under the same terms
-"   as Vim itself.
-" URL: http://trific.ath.cx/Ftp/vim/syntax/fstab.vim
-" Last Change: 2006-04-16
-
-" Options: let fstab_unknown_fs_errors = 1 to highlight unknown filesystems
-"          as errors
+" Maintaner: Radu Dineiu <radu.dineiu@gmail.com>
+" URL: http://ld.yi.org/vim/fstab.vim
+" Last Change: 2007 Apr 24
+" Version: 0.91
+"
+" Credits:
+"   David Necas (Yeti) <yeti@physics.muni.cz>
+"   Stefano Zacchiroli <zack@debian.org>
+"   Georgi Georgiev <chutz@gg3.net>
+"
+" Options:
+"   let fstab_unknown_fs_errors = 1
+"     highlight unknown filesystems as errors
 
 if version < 600
 	syntax clear
@@ -19,24 +23,27 @@ endif
 " General
 syn cluster fsGeneralCluster contains=fsComment
 syn match fsComment /\s*#.*/
-syn match fsOperator /[,=]/
+syn match fsOperator /[,=:]/
 
 " Device
 syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError
-syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:]\|^\w\{-}\ze\W\)/ contained
+syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained
 syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts sysfs usbfs
 syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel
+syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID
+syn match fsDeviceKeyword contained /^[a-zA-Z0-9.\-]\+\ze:/
 syn match fsDeviceLabel contained /=[^ \t]\+/hs=s+1 contains=fsOperator
+syn match fsDeviceUUID contained /=[^ \t]\+/hs=s+1 contains=fsOperator
 
 " Mount Point
 syn cluster fsMountPointCluster contains=fsMountPointKeyword,fsMountPointError
-syn match fsMountPointError /\%([^ \ta-zA-Z0-9_\/#@]\|\s\+\zs\w\{-}\ze\s\)/ contained
+syn match fsMountPointError /\%([^ \ta-zA-Z0-9_\/#@\.-]\|\s\+\zs\w\{-}\ze\s\)/ contained
 syn keyword fsMountPointKeyword contained none swap
 
 " Type
 syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
 syn match fsTypeUnknown /\s\+\zs\w\+/ contained
-syn keyword fsTypeKeyword contained adfs affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext3 fdesc hfs hpfs iso9660 jffs jffs2 jfs kernfs linprocfs mfs minix msdos ncpfs nfs none none ntfs null nwfs ovlfs portal proc procfs qnx4 reiserfs romfs shm smbfs 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 fdesc ffs filecore 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 std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
 
 " Options
 " -------
@@ -48,7 +55,7 @@ syn match fsOptionsString /[a-zA-Z0-9_-]
 syn keyword fsOptionsYesNo yes no
 syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck
 syn keyword fsOptionsSize 512 1024 2048
-syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodiratime noexec nomand nosuid nosymfollow nouser owner rbind rdonly remount ro rq rw suid suiddir supermount sw sync union update user[s] xx
+syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand nosuid nosymfollow nouser owner rbind rdonly remount ro rq rw suid suiddir supermount sw sync union update user users xx
 syn match fsOptionsGeneral /_netdev/
 
 " Options: adfs
@@ -101,6 +108,9 @@ syn match fsOptionsKeywords contained /\
 syn match fsOptionsKeywords contained /\<\%(dir\|file\|\)_umask=/ nextgroup=fsOptionsNumberOctal
 syn match fsOptionsKeywords contained /\<\%(session\|part\)=/ nextgroup=fsOptionsNumber
 
+" Options: ffs
+syn keyword fsOptionsKeyWords contained softdep
+
 " Options: hpfs
 syn match fsOptionsKeywords contained /\<case=/ nextgroup=fsOptionsHpfsCase
 syn keyword fsOptionsHpfsCase contained lower asis
@@ -197,9 +207,10 @@ if version >= 508 || !exists("did_config
 	HiLink fsTypeKeyword Type
 	HiLink fsDeviceKeyword Identifier
 	HiLink fsDeviceLabel String
+	HiLink fsDeviceUUID String
 	HiLink fsFreqPassNumber Number
 
-	if exists('fstab_unknown_fs_errors')
+	if exists('fstab_unknown_fs_errors') && fstab_unknown_fs_errors == 1
 		HiLink fsTypeUnknown Error
 	endif
 	HiLink fsDeviceError Error
--- a/runtime/syntax/perl.vim
+++ b/runtime/syntax/perl.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Perl
-" Maintainer:	Nick Hibma <n_hibma@van-laarhoven.org>
-" Last Change:	2005 October 18
+" Maintainer:	Nick Hibma <nick@van-laarhoven.org>
+" Last Change:	2006 November 23
 " Location:	http://www.van-laarhoven.org/vim/syntax/perl.vim
 "
 " Please download most recent version first before mailing
@@ -17,14 +17,16 @@
 " perl syntax highlighting, with defaults given:
 "
 " unlet perl_include_pod
-" unlet perl_no_scope_in_variables
-" unlet perl_no_extended_vars
+" unlet perl_want_scope_in_variables
+" unlet perl_extended_vars
 " unlet perl_string_as_statement
 " unlet perl_no_sync_on_sub
 " unlet perl_no_sync_on_global_var
 " let perl_sync_dist = 100
 " unlet perl_fold
 " unlet perl_fold_blocks
+" 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).
@@ -56,9 +58,9 @@ if exists("perl_include_pod")
 else
   " Use only the bare minimum of rules
   if exists("perl_fold")
-    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Spell fold
+    syn region perlPOD start="^=[a-z]" end="^=cut" fold
   else
-    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Spell
+    syn region perlPOD start="^=[a-z]" end="^=cut"
   endif
 endif
 
@@ -87,8 +89,8 @@ else
 endif
 syn keyword perlOperator		defined undef and or not bless ref
 if exists("perl_fold")
-  " if BEGIN/END is a keyword the perlBEGINENDFold does not work
-  syn match perlControl			"\<BEGIN\|END\|CHECK\|INIT\>" contained
+  " 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
@@ -108,8 +110,8 @@ syn keyword perlStatementFiles		chdir ch
 syn match   perlStatementFiles		"-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
 syn keyword perlStatementFlow		caller die dump eval exit wantarray
 syn keyword perlStatementInclude	require
-syn match   perlStatementInclude	"\<\(use\|no\)\s\+\(\(attributes\|autouse\|base\|big\(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\|fields\|filetest\|if\|integer\|less\|lib\|locale\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\(::shared\)\=\|utf8\|vars\|vmsish\|warnings\(::register\)\=\)\>\)\="
-
+syn 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
@@ -118,11 +120,8 @@ syn keyword perlStatementPword		getpwuid
 syn keyword perlStatementTime		gmtime localtime time times
 
 syn keyword perlStatementMisc		warn formline reset scalar delete prototype lock
-if !exists("perl_no_semi_keywords")
-  syn keyword perlStatementScope	import
-  syn keyword perlStatementNew		new
-  syn keyword perlStatementCarp		carp confess croak 		
-endif
+syn keyword perlStatementNew		new
+
 syn keyword perlTodo			TODO TBD FIXME XXX contained
 
 " Perl Identifiers.
@@ -137,34 +136,39 @@ syn keyword perlTodo			TODO TBD FIXME XX
 
 " Special variables first ($^A, ...) and ($|, $', ...)
 syn match  perlVarPlain		 "$^[ADEFHILMOPSTWX]\="
-syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~?@$<>(-]"
-syn match  perlVarPlain		 "$\(0\|[1-9]\d*\)"
+syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
+syn match  perlVarPlain		 "$\(0\|[1-9][0-9]*\)"
 " Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
 syn match  perlVarPlain		 "$:[^:]"
 " These variables are not recognized within matches.
 syn match  perlVarNotInMatches	 "$[|)]"
-" This variable is not recognized within matches delimited by '/'.
+" This variable is not recognized within matches delimited by m//.
 syn match  perlVarSlash		 "$/"
-" This variable is not recognized within matches delimited by '!'.
-syn match  perlVarBang		 "$!"
 
 " And plain identifiers
 syn match  perlPackageRef	 "\(\h\w*\)\=\(::\|'\)\I"me=e-1 contained
 
+" 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_no_scope_in_variables")
-  syn match  perlVarPlain	"\\\=\([@%$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+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
 else
-  syn match  perlVarPlain	"\\\=\([@%$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
+  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_no_extended_vars")
-  syn cluster perlExpr		contains=perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBang,perlVarBlock,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ
+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
@@ -179,18 +183,17 @@ endif
 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*[^,[:space:]]"me=e-1 transparent contained contains=perlFiledescStatement
+syn match  perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
 
 syn match  perlFiledescStatement	"\u\w*" contained
 
 " Special characters in strings and matches
 syn match  perlSpecialString	"\\\(\d\+\|[xX]\x\+\|c\u\|.\)" contained
 syn match  perlSpecialStringU	"\\['\\]" contained
-syn match  perlSpecialMatch	"{\d\+\(,\d*\)\=}" contained
+syn match  perlSpecialMatch	"{\d\+\(,\(\d\+\)\=\)\=}" contained
 syn match  perlSpecialMatch	"\[\(\]\|-\)\=[^\[\]]*\(\[\|\-\)\=\]" contained
 syn match  perlSpecialMatch	"[+*()?.]" contained
 syn match  perlSpecialMatch	"(?[#:=!]" contained
-syn match  perlSpecialMatch	"(?<[=!]" contained
 syn match  perlSpecialMatch	"(?[imsx]\+)" contained
 " FIXME the line below does not work. It should mark end of line and
 " begin of line as perlSpecial.
@@ -207,13 +210,13 @@ syn match  perlNotEmptyLine	"^\s\+$" con
 " Variable interpolation
 "
 " These items are interpolated inside "" strings and similar constructs.
-syn cluster perlInterpDQ	contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBang,perlVarBlock
+syn cluster perlInterpDQ	contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock
 " These items are interpolated inside '' strings and similar constructs.
 syn cluster perlInterpSQ	contains=perlSpecialStringU
 " These items are interpolated inside m// matches and s/// substitutions.
 syn cluster perlInterpSlash	contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock,perlSpecialBEOM
 " These items are interpolated inside m## matches and s### substitutions.
-syn cluster perlInterpMatch	contains=@perlInterpSlash,perlVarSlash,perlVarBang
+syn cluster perlInterpMatch	contains=@perlInterpSlash,perlVarSlash
 
 " Shell commands
 syn region  perlShellCommand	matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ
@@ -239,7 +242,7 @@ syn region perlMatch	matchgroup=perlMatc
 
 " 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/[^=[:space:][:digit:]$@%&]+lc=1,me=e-1,rs=e-1 start=+^/+ skip=+\\/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
+syn region perlMatch	matchgroup=perlMatchStartEnd start=+^split /+lc=5 start=+[^$@%]\<split /+lc=6 start=+^while /+lc=5 start=+[^$@%]\<while /+lc=6 start=+^if /+lc=2 start=+[^$@%]\<if /+lc=3 start=+[!=]\~\s*/+lc=2 start=+[(~]/+lc=1 start=+\.\./+lc=2 start=+\s/[^= \t0-9$@%]+lc=1,me=e-1,rs=e-1 start=+^/+ skip=+\\/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
 
 
 " Substitutions
@@ -258,7 +261,7 @@ syn region perlSubstitutionHash		matchgr
 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 s!!!x which allows for comments and extra whitespace in the pattern
+" 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
 
@@ -285,24 +288,24 @@ syn match  perlString "\<\I\i*\s*=>"me=e
 
 " Strings and q, qq, qw and qr expressions
 
-" Parentheses in qq()
-syn region perlParens	start=+(+ end=+)+ contained transparent contains=perlParens,@perlStringSQ
+" Brackets in qq()
+syn region perlBrackets	start=+(+ end=+)+ contained transparent contains=perlBrackets,@perlStringSQ
 
-syn region perlStringUnexpanded	matchgroup=perlStringStartEnd start="'" end="'" contains=@Spell,@perlInterpSQ
-syn region perlString		matchgroup=perlStringStartEnd start=+"+  end=+"+ contains=@Spell,@perlInterpDQ
+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,perlParens
+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,perlParens
+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,perlParens
+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
@@ -317,18 +320,18 @@ 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=+<<\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 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=+<<\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 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
 else
@@ -358,20 +361,19 @@ syn region perlFunction		start="\s*\<sub
 syn keyword perlStatementSub	sub contained
 
 syn match  perlFunctionPrototype	"([^)]*)" contained
-if !exists("perl_no_scope_in_variables")
+if exists("perl_want_scope_in_variables")
    syn match  perlFunctionPRef	"\h\w*::" contained
    syn match  perlFunctionName	"\h\w*[^:]" contained
 else
    syn match  perlFunctionName	"\h[[:alnum:]_:]*" contained
 endif
 
-
 " All other # are comments, except ^#!
-syn match  perlComment		"#.*" contains=@Spell,perlTodo
+syn match  perlComment		"#.*" contains=perlTodo
 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
+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
@@ -391,13 +393,17 @@ endif
 " Folding
 
 if exists("perl_fold")
-  syn region perlPackageFold start="^package \S\+;$" end="^1;$" end="\n\+package"me=s-1 transparent fold keepend
-  syn region perlSubFold     start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*$" end="^\z1}\s*\#.*$" transparent fold keepend
-  syn region perlBEGINENDFold start="^\z(\s*\)\<\(BEGIN\|END\|CHECK\|INIT\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
+  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 perlIfFold start="^\z(\s*\)\(if\|unless\|for\|while\|until\)\s*(.*)\(\s*{\)\=\s*$" start="^\z(\s*\)foreach\s*\(\(my\|our\)\=\s*\S\+\s*\)\=(.*)\(\s*{\)\=\s*$" start="\z(\s*\)else\s*{\s*$" end="^\z1}\s*;\=$" transparent fold keepend
-    syn region perlIfFold start="^\z(\s*\)do\(\s*{\)\=\s*$" end="^\z1}\s*while" end="^\z1}\s*;\=$" transparent fold keepend
+    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
@@ -444,13 +450,13 @@ if version >= 508 || !exists("did_perl_s
   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 perlVarBang		perlIdentifier
   HiLink perlQQ			perlString
   if version >= 600
     HiLink perlHereDoc		perlString
@@ -460,7 +466,7 @@ if version >= 508 || !exists("did_perl_s
     HiLink perlUntilEOFSQ	perlString
     HiLink perlUntilEmptyDQ	perlString
     HiLink perlUntilEmptySQ	perlString
-    HiLink perlUntilEOF		perlString		
+    HiLink perlUntilEOF		perlString
   endif
   HiLink perlStringUnexpanded	perlString
   HiLink perlSubstitutionSQ	perlString
@@ -496,7 +502,7 @@ if version >= 508 || !exists("did_perl_s
   HiLink perlStatementFiles	perlStatement
   HiLink perlStatementFlow	perlStatement
   HiLink perlStatementScope	perlStatement
-  HiLink perlStatementInclude	perlInclude
+  HiLink perlStatementInclude	perlStatement
   HiLink perlStatementProc	perlStatement
   HiLink perlStatementSocket	perlStatement
   HiLink perlStatementIPC	perlStatement
@@ -517,9 +523,9 @@ if version >= 508 || !exists("did_perl_s
   HiLink perlSpecialMatch	perlSpecial
   HiLink perlSpecialBEOM	perlSpecial
   HiLink perlDATA		perlComment
-  
-  HiLink perlParens		Error
-  
+
+  HiLink perlBrackets		Error
+
   " Possible errors
   HiLink perlNotEmptyLine	Error
   HiLink perlElseIfError	Error
--- a/runtime/syntax/sisu.vim
+++ b/runtime/syntax/sisu.vim
@@ -2,6 +2,8 @@
 " SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
 " SiSU Markup:     SiSU (sisu-0.38)
 " (originally looked at Ruby Vim by Mirko Nasato)
+" Last Update:	   2006 Jul 22
+
 if version < 600
   syntax clear
 elseif exists("b:current_syntax")
@@ -54,7 +56,8 @@ syn region sisu_content_alt contains=sis
 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 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 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 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"
 "%   images
 syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}\(\(https\?://\|\.\./\)\S\+\|image\)" oneline
--- a/src/proto/digraph.pro
+++ b/src/proto/digraph.pro
@@ -1,9 +1,9 @@
 /* digraph.c */
-extern int do_digraph __ARGS((int c));
-extern int get_digraph __ARGS((int cmdline));
-extern int getdigraph __ARGS((int char1, int char2, int meta));
-extern void putdigraph __ARGS((char_u *str));
-extern void listdigraphs __ARGS((void));
-extern char_u *keymap_init __ARGS((void));
-extern void ex_loadkeymap __ARGS((exarg_T *eap));
+int do_digraph __ARGS((int c));
+int get_digraph __ARGS((int cmdline));
+int getdigraph __ARGS((int char1, int char2, int meta));
+void putdigraph __ARGS((char_u *str));
+void listdigraphs __ARGS((void));
+char_u *keymap_init __ARGS((void));
+void ex_loadkeymap __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
--- a/src/proto/gui_athena.pro
+++ b/src/proto/gui_athena.pro
@@ -1,31 +1,31 @@
 /* gui_athena.c */
-extern void gui_x11_create_widgets __ARGS((void));
-extern void gui_x11_destroy_widgets __ARGS((void));
-extern void gui_mch_set_toolbar_pos __ARGS((int x, int y, int w, int h));
-extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-extern void gui_x11_set_back_color __ARGS((void));
-extern void gui_mch_enable_menu __ARGS((int flag));
-extern void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
-extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
-extern void gui_mch_new_menu_font __ARGS((void));
-extern void gui_mch_new_tooltip_font __ARGS((void));
-extern void gui_mch_new_tooltip_colors __ARGS((void));
-extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-extern void gui_mch_show_toolbar __ARGS((int showit));
-extern int gui_mch_compute_toolbar_height __ARGS((void));
-extern void gui_mch_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
-extern void gui_mch_toggle_tearoffs __ARGS((int enable));
-extern void gui_mch_new_menu_colors __ARGS((void));
-extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-extern void gui_mch_def_colors __ARGS((void));
-extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-extern void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
-extern Window gui_x11_get_wid __ARGS((void));
-extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+void gui_x11_create_widgets __ARGS((void));
+void gui_x11_destroy_widgets __ARGS((void));
+void gui_mch_set_toolbar_pos __ARGS((int x, int y, int w, int h));
+void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+void gui_x11_set_back_color __ARGS((void));
+void gui_mch_enable_menu __ARGS((int flag));
+void gui_mch_set_menu_pos __ARGS((int x, int y, int w, int h));
+void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
+void gui_mch_new_menu_font __ARGS((void));
+void gui_mch_new_tooltip_font __ARGS((void));
+void gui_mch_new_tooltip_colors __ARGS((void));
+void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+void gui_mch_show_toolbar __ARGS((int showit));
+int gui_mch_compute_toolbar_height __ARGS((void));
+void gui_mch_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
+void gui_mch_toggle_tearoffs __ARGS((int enable));
+void gui_mch_new_menu_colors __ARGS((void));
+void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+void gui_mch_def_colors __ARGS((void));
+void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+Window gui_x11_get_wid __ARGS((void));
+char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
 /* vim: set ft=c : */
--- a/src/proto/os_mswin.pro
+++ b/src/proto/os_mswin.pro
@@ -1,63 +1,63 @@
 /* os_mswin.c */
-extern void mch_exit __ARGS((int r));
-extern void mch_early_init __ARGS((void));
-extern int mch_input_isatty __ARGS((void));
-extern void mch_settitle __ARGS((char_u *title, char_u *icon));
-extern void mch_restore_title __ARGS((int which));
-extern int mch_can_restore_title __ARGS((void));
-extern int mch_can_restore_icon __ARGS((void));
-extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-extern int mch_isFullName __ARGS((char_u *fname));
-extern void slash_adjust __ARGS((char_u *p));
-extern int vim_stat __ARGS((const char *name, struct stat *stp));
-extern void mch_settmode __ARGS((int tmode));
-extern int mch_get_shellsize __ARGS((void));
-extern void mch_set_shellsize __ARGS((void));
-extern void mch_new_shellsize __ARGS((void));
-extern void mch_suspend __ARGS((void));
-extern void display_errors __ARGS((void));
-extern int mch_has_exp_wildcard __ARGS((char_u *p));
-extern int mch_has_wildcard __ARGS((char_u *p));
-extern int mch_chdir __ARGS((char *path));
-extern int can_end_termcap_mode __ARGS((int give_msg));
-extern int mch_screenmode __ARGS((char_u *arg));
-extern int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
-extern int utf8_to_ucs2 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
-extern int ucs2_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
-extern void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
-extern void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
-extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-extern short_u *enc_to_ucs2 __ARGS((char_u *str, int *lenp));
-extern char_u *ucs2_to_enc __ARGS((short_u *str, int *lenp));
-extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-extern void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
-extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-extern void DumpPutS __ARGS((const char *psz));
-extern int mch_get_winpos __ARGS((int *x, int *y));
-extern void mch_set_winpos __ARGS((int x, int y));
-extern void mch_print_cleanup __ARGS((void));
-extern int mch_print_init __ARGS((prt_settings_T *psettings, char_u *jobname, int forceit));
-extern int mch_print_begin __ARGS((prt_settings_T *psettings));
-extern void mch_print_end __ARGS((prt_settings_T *psettings));
-extern int mch_print_end_page __ARGS((void));
-extern int mch_print_begin_page __ARGS((char_u *msg));
-extern int mch_print_blank_page __ARGS((void));
-extern void mch_print_start_line __ARGS((int margin, int page_line));
-extern int mch_print_text_out __ARGS((char_u *p, int len));
-extern void mch_print_set_font __ARGS((int iBold, int iItalic, int iUnderline));
-extern void mch_print_set_bg __ARGS((long_u bgcol));
-extern void mch_print_set_fg __ARGS((long_u fgcol));
-extern char_u *mch_resolve_shortcut __ARGS((char_u *fname));
-extern void win32_set_foreground __ARGS((void));
-extern void serverInitMessaging __ARGS((void));
-extern void serverSetName __ARGS((char_u *name));
-extern char_u *serverGetVimNames __ARGS((void));
-extern int serverSendReply __ARGS((char_u *name, char_u *reply));
-extern int serverSendToVim __ARGS((char_u *name, char_u *cmd, char_u **result, void *ptarget, int asExpr, int silent));
-extern void serverForeground __ARGS((char_u *name));
-extern char_u *serverGetReply __ARGS((HWND server, int *expr_res, int remove, int wait));
-extern void serverProcessPendingMessages __ARGS((void));
-extern char *charset_id2name __ARGS((int id));
-extern int get_logfont __ARGS((LOGFONT *lf, char_u *name, HDC printer_dc, int verbose));
+void mch_exit __ARGS((int r));
+void mch_early_init __ARGS((void));
+int mch_input_isatty __ARGS((void));
+void mch_settitle __ARGS((char_u *title, char_u *icon));
+void mch_restore_title __ARGS((int which));
+int mch_can_restore_title __ARGS((void));
+int mch_can_restore_icon __ARGS((void));
+int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+int mch_isFullName __ARGS((char_u *fname));
+void slash_adjust __ARGS((char_u *p));
+int vim_stat __ARGS((const char *name, struct stat *stp));
+void mch_settmode __ARGS((int tmode));
+int mch_get_shellsize __ARGS((void));
+void mch_set_shellsize __ARGS((void));
+void mch_new_shellsize __ARGS((void));
+void mch_suspend __ARGS((void));
+void display_errors __ARGS((void));
+int mch_has_exp_wildcard __ARGS((char_u *p));
+int mch_has_wildcard __ARGS((char_u *p));
+int mch_chdir __ARGS((char *path));
+int can_end_termcap_mode __ARGS((int give_msg));
+int mch_screenmode __ARGS((char_u *arg));
+int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
+int utf8_to_ucs2 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
+int ucs2_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
+void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
+void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
+int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+short_u *enc_to_ucs2 __ARGS((char_u *str, int *lenp));
+char_u *ucs2_to_enc __ARGS((short_u *str, int *lenp));
+void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
+void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+void DumpPutS __ARGS((const char *psz));
+int mch_get_winpos __ARGS((int *x, int *y));
+void mch_set_winpos __ARGS((int x, int y));
+void mch_print_cleanup __ARGS((void));
+int mch_print_init __ARGS((prt_settings_T *psettings, char_u *jobname, int forceit));
+int mch_print_begin __ARGS((prt_settings_T *psettings));
+void mch_print_end __ARGS((prt_settings_T *psettings));
+int mch_print_end_page __ARGS((void));
+int mch_print_begin_page __ARGS((char_u *msg));
+int mch_print_blank_page __ARGS((void));
+void mch_print_start_line __ARGS((int margin, int page_line));
+int mch_print_text_out __ARGS((char_u *p, int len));
+void mch_print_set_font __ARGS((int iBold, int iItalic, int iUnderline));
+void mch_print_set_bg __ARGS((long_u bgcol));
+void mch_print_set_fg __ARGS((long_u fgcol));
+char_u *mch_resolve_shortcut __ARGS((char_u *fname));
+void win32_set_foreground __ARGS((void));
+void serverInitMessaging __ARGS((void));
+void serverSetName __ARGS((char_u *name));
+char_u *serverGetVimNames __ARGS((void));
+int serverSendReply __ARGS((char_u *name, char_u *reply));
+int serverSendToVim __ARGS((char_u *name, char_u *cmd, char_u **result, void *ptarget, int asExpr, int silent));
+void serverForeground __ARGS((char_u *name));
+char_u *serverGetReply __ARGS((HWND server, int *expr_res, int remove, int wait));
+void serverProcessPendingMessages __ARGS((void));
+char *charset_id2name __ARGS((int id));
+int get_logfont __ARGS((LOGFONT *lf, char_u *name, HDC printer_dc, int verbose));
 /* vim: set ft=c : */
--- a/src/vim.def
+++ b/src/vim.def
@@ -1,4 +1,4 @@
 CODE PRELOAD EXECUTEONLY
 DATA MULTIPLE SHARED
-DESCRIPTION 'Vim 7.0'
+DESCRIPTION 'Vim 7.1a'
 HEAPSIZE 0,0