changeset 828:01583c79d5f4 v7.0d03

updated for version 7.0d03
author vimboss
date Thu, 13 Apr 2006 20:37:35 +0000
parents fd1b3406fd1c
children dc8197342755
files runtime/autoload/netrw.vim runtime/doc/pi_netrw.txt runtime/doc/syntax.txt runtime/doc/tabpage.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/version7.txt runtime/indent/vhdl.vim runtime/syntax/abap.vim runtime/syntax/apache.vim runtime/syntax/help.vim runtime/syntax/kconfig.vim runtime/syntax/lifelines.vim runtime/syntax/sh.vim src/diff.c src/edit.c src/ex_getln.c src/misc1.c src/option.c src/os_mswin.c src/testdir/test3.in src/testdir/test3.ok src/version.h
diffstat 23 files changed, 658 insertions(+), 514 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Apr 06, 2006
-" Version:	86
+" Date:		Apr 12, 2006
+" Version:	87
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v86"
+let g:loaded_netrw = "v87"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -1155,7 +1155,7 @@ fun! s:NetBrowse(dirname)
 
   " set up menus
   let b:netrw_browser_active= 1
-  call s:NetMenu()
+  call s:NetMenu(1)
 
   " make this buffer modifiable
   setlocal ma nonu nowrap
@@ -1460,6 +1460,7 @@ fun! s:NetBrowse(dirname)
      else
       exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
      endif
+     " remove priority pattern prefix
      exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
     endif
     if w:netrw_longlist == 1
@@ -1494,14 +1495,17 @@ fun! s:NetBrowseChgDir(dirname,newdir)
   if newdir !~ '[\/]$'
    " handling a file
    let dirname= dirname.newdir
+   let didfile= 0
    if g:netrw_browse_split == 1
     new
     wincmd _
    elseif g:netrw_browse_split == 2
     rightb vert new
     wincmd |
+   else
+    " handling a file, didn't split, so possibly remove menu
+    call s:NetMenu(0)
    endif
-   call s:NetMenu()
 "   call Decho("handling a file: dirname<".dirname.">")
 
   elseif newdir == './'
@@ -2567,7 +2571,7 @@ fun! netrw#NetObtain(...)
 endfun
 
 " ---------------------------------------------------------------------
-" NetPrevWinOpen: opoen file/directory in previous window.  {{{2
+" NetPrevWinOpen: open file/directory in previous window.  {{{2
 "   If there's only one window, then the window will first be split.
 fun! s:NetPrevWinOpen(islocal)
 "  call Dfunc("NetPrevWinOpen(islocal=".a:islocal.")")
@@ -2644,69 +2648,81 @@ endfun
 
 " ---------------------------------------------------------------------
 " NetMenu: generates the menu for gvim and netrw {{{2
-fun! s:NetMenu()
+fun! s:NetMenu(domenu)
 
   if has("menu") && has("gui_running") && &go =~ 'm'
-"   call Dfunc("NetMenu()")
-   if !exists("s:netrw_menu_enabled")
+"   call Dfunc("NetMenu(domenu=".a:domenu.")")
+   if !exists("s:netrw_menu_enabled") && a:domenu
+"    call Decho("initialize menu")
     let s:netrw_menu_enabled= 1
-    if !exists("g:DrChipTopLvlMenu")
-     let g:DrChipTopLvlMenu= "DrChip."
+    if !exists("g:NetrwTopLvlMenu")
+     let g:NetrwTopLvlMenu= "Netrw."
     endif
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Help<tab>?	?'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Apply\ Special\ Viewer<tab>x	x'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Bookmark\ Current\ Directory<tab>b	Nb'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Go\ Up\ Directory<tab>-	-'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Goto\ Bookmarked\ Directory<tab>B	NB'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Recently\ Used\ Directory<tab>u	u'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Subsequently\ Used\ Directory<tab>U	U'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Delete\ File/Directory<tab>D	D'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<c-h>"
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory<tab><cr>	'."\<cr>"
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory,\ New\ Window<tab>o	o'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File/Directory,\ New\ Vertical\ Window\ <tab>v	v'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.List\ Bookmarks\ and\ History<tab>q	q'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Listing\ Style\ (thin-long-wide)<tab>i	i'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Make\ Subdirectory<tab>d	d'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Normal-Hide-Show<tab>a	a'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Obtain\ File<tab>O	O'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Preview\ File/Directory<tab>p	p'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Previous\ Window\ Browser<tab>P	P'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Rename\ File/Directory<tab>R	R'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Reverse\ Sorting\ Order<tab>'."r	r"
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Select\ Sorting\ Style<tab>s	s'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Sorting\ Sequence\ Edit<tab>S	S'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Set\ Current\ Directory<tab>c	c'
-    exe 'silent! menu '.g:DrChipTopLvlMenu.'Netrw.Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
-   else
-"    call Decho("clear menus")
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Help'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Apply\ Special\ Viewer'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Bookmark\ Current\ Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Go\ Up\ Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Goto\ Bookmarked\ Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Recently\ Used\ Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Change\ To\ Subsequently\ Used\ Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Delete\ File/Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File\ Hiding\ List'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Edit\ File'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Enter\ File/Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Enter\ File/Directory\ (vertical\ split)'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.List\ Bookmarks\ and\ History'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Listing\ Style\ (thin-long-wide)'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Make\ Subdirectory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Normal-Hide-Show'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Obtain\ File'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Preview\ File'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Previous\ Window\ Browser'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Refresh\ Listing'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Rename\ File/Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Reverse\ Sorting\ Order'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Select\ Sorting\ Style'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Sorting\ Sequence\ Edit'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Set\ Current\ Directory'
-    exe 'silent! unmenu '.g:DrChipTopLvlMenu.'Netrw.Settings/Options'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Help<tab><F1>	<F1>'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x	x'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory<tab>b	Nb'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-	-'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory<tab>B	NB'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory<tab>u	u'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory<tab>U	U'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<c-h>"
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory<tab><cr>	'."\<cr>"
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window<tab>o	o'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window<tab>v	v'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History<tab>q	q'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)<tab>i	i'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d	d'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Normal-Hide-Show<tab>a	a'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O	O'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Preview\ File/Directory<tab>p	p'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser<tab>P	P'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R	R'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order<tab>'."r	r"
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style<tab>s	s'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit<tab>S	S'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c	c'
+    exe 'silent! menu '.g:NetrwTopLvlMenu.'Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
+   elseif !a:domenu
+    let s:netrwcnt = 0
+    let curwin     = winnr()
+    windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif
+    exe curwin."wincmd w"
+    
+    if s:netrwcnt <= 1
+"     call Decho("clear menus")
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Help'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Delete\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory\ (vertical\ split)'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Make\ Subdirectory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Normal-Hide-Show'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Obtain\ File'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Preview\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Refresh\ Listing'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Rename\ File/Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory'
+     exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Settings/Options'
+     unlet s:netrw_menu_enabled
+    endif
    endif
 "   call Dret("NetMenu")
   endif
@@ -2766,7 +2782,7 @@ fun! netrw#DirBrowse(dirname)
 
   " set up menus
   let b:netrw_browser_active= 1
-  call s:NetMenu()
+  call s:NetMenu(1)
 
   " find buffer number of buffer named precisely the same as a:dirname
   let bufnum= bufnr(escape(a:dirname,'\'))
@@ -2793,7 +2809,7 @@ fun! netrw#DirBrowse(dirname)
   else
    exe "keepalt b ".bufnum
    if exists("s:last_sort_by") && g:netrw_sort_by == s:last_sort_by
-    if getline(2) =~ '^" Directory Listing '
+    if getline(2) =~ '^" Netrw Directory Listing '
      if !g:netrw_keepdir
 "      call Decho("change directory: cd ".b:netrw_curdir)
       exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape)
@@ -2911,7 +2927,7 @@ fun! netrw#DirBrowse(dirname)
 "  call Decho("set up banner")
   keepjumps put ='\" ============================================================================'
   keepjumps 1d
-  keepjumps put ='\" Directory Listing                                              (netrw '.g:loaded_netrw.')'
+  keepjumps put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
   keepjumps put ='\"   '.b:netrw_curdir
   let w:netrw_bannercnt= 3
 
@@ -2979,6 +2995,7 @@ fun! netrw#DirBrowse(dirname)
        exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
       endif
      endif
+     " remove priority pattern prefix
      exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
 
     else
@@ -3025,12 +3042,12 @@ fun! s:LocalBrowseList()
   let dirname    = escape(b:netrw_curdir,s:netrw_glob_escape)
   let dirnamelen = strlen(b:netrw_curdir)
   let filelist   = glob(dirname."/*")
-"  call Decho("glob(dirname<".dirname.">,*)=".filelist)
+"  call Decho("glob(dirname<".dirname."/.*>)=".filelist)
   if filelist != ""
    let filelist= filelist."\n"
   endif
   let filelist= filelist.glob(dirname."/.*")
-"  call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*"))
+"  call Decho("glob(dirname<".dirname."/.*>)=".glob(dirname.".*"))
 
   " if the directory name includes a "$", and possibly other characters,
   " the glob() doesn't include "." and ".." entries.
@@ -3145,9 +3162,11 @@ fun! s:LocalBrowseChgDir(dirname,newdir,
     elseif g:netrw_browse_split == 2
      rightb vert new
      wincmd |
+    else
+     " handling a file, didn't split, so possibly remove menu
+     call s:NetMenu(0)
     endif
     exe "e! ".escape(dirname,s:netrw_cd_escape)
-    call s:NetMenu()
     set ma nomod
    endif
 
@@ -3177,8 +3196,9 @@ endfun
 " on the chance that s/he removed/created a file/directory with it.
 fun! s:LocalBrowseShellCmdRefresh()
 "  call Dfunc("LocalBrowseShellCmdRefresh() browselist=".string(s:netrw_browselist))
-  "  go through all buffers,
-  "  including unlisted (which is why I can't use bufdo)
+  "  GO through all buffers on netrw_browselist (ie. just local-netrw buffers):
+  "   | refresh any netrw window
+  "   | wipe out any non-displaying netrw buffer
   let curwin = winnr()
   let ibl    = 0
   for ibuf in s:netrw_browselist
@@ -4098,11 +4118,12 @@ fun! s:SetSort()
    let priority = priority + 1
   endwhile
 
-  " I'm afraid that I don't remember why the following line was present.  It
-  " has something to do with priority -- items that satisfy a two or more
-  " priority patterns get preceded by two or more priority patterns: ###/
-  " So, I want to remove priority patterns, but not ###/ directory names.
-  " Following pattern retains just one priority pattern.
+  " Following line associated with priority -- items that satisfy a priority
+  " pattern get prefixed by ###/ which permits easy sorting by priority.
+  " Sometimes files can satisfy multiple priority patterns -- only the latest
+  " 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}\/\)\%(\d\{3}\/\)\+\ze./\1/e'
 
 "  call Dret("SetSort")
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.0d.  Last change: Apr 06, 2006
+*pi_netrw.txt*  For Vim version 7.0d.  Last change: Apr 12, 2006
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
 
@@ -847,11 +847,10 @@ NETRW BROWSER VARIABLES					*netrw-brows
   *g:netrw_winsize*		specify initial size of new o/v windows
 				 default: ""
 
-  *g:DrChipTopLvlMenu*		This variable specifies the top level
-				submenu name; by default, its "DrChip.".
-				If you wish to change this, do so in your
-				.vimrc.  It affects all of my plugins which
-				have menus.
+  *g:NetrwTopLvlMenu*		This variable specifies the top level
+				menu name; by default, its "Netrw.".  If
+				you wish to change this, do so in your
+				.vimrc.
 
 INTRODUCTION TO DIRECTORY BROWSING			*netrw-browse-intro*
 
@@ -1448,6 +1447,7 @@ which is loaded automatically at startup
 ==============================================================================
 11. History						*netrw-history* {{{1
 
+	v87: * bug fix -- menus were partially disappearing
 	v85: * bug fix -- missing an endif
 	     * bug fix -- handles spaces in names and directories when using
 	       ftp-based browsing
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -2316,22 +2316,25 @@ If none of these cases pertain, then the
 (ex. /bin/sh  /bin/ksh	/bin/bash).  If the first line specifies a shelltype,
 then that shelltype is used.  However some files (ex. .profile) are known to
 be shell files but the type is not apparent.  Furthermore, on many systems
-sh is symbolically linked to "bash" (linux) or "ksh" (posix).
+sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix).
 
 One may specify a global default by instantiating one of the following three
 variables in your <.vimrc>:
 
     ksh: >
-	let is_kornshell = 1
+	let g:is_kornshell = 1
+<   posix: (using this is the same as setting is_kornshell to 1) >
+	let g:is_posix     = 1
 <   bash: >
-	let is_bash	 = 1
-<   sh: >
-	let is_sh	 = 1
+	let g:is_bash	   = 1
+<   sh: (default) Borne shell >
+	let g:is_sh	   = 1
 
 If there's no "#! ..." line, and the user hasn't availed himself/herself of a
 default sh.vim syntax setting as just shown, then syntax/sh.vim will assume
 the Borne shell syntax.  No need to quote RFCs or market penetration
-statistics in error reports, please.
+statistics in error reports, please -- just select the default version of
+the sh your system uses in your <.vimrc>.
 
 If, in your <.vimrc>, you set >
 	let g:sh_fold_enabled= 1
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0d.  Last change: 2006 Apr 09
+*tabpage.txt*   For Vim version 7.0d.  Last change: 2006 Apr 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -124,11 +124,12 @@ next tab page.  |'tabline'|
 
 :tabn[ext]				*:tabn* *:tabnext* *gt*
 gt					*CTRL-<PageDown>* *<C-PageDown>*
-<C-PageDown>	Go to the next tab page.  Wraps around from the last to the
+<C-PageDown>				*i_CTRL-<PageDown>* *i_<C-PageDown>*
+		Go to the next tab page.  Wraps around from the last to the
 		first one.
 
-:tabn[ext] {count}
-{count}gt				*CTRL-<PageUp>* *<C-PageUp>*
+: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.
 
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5367,7 +5367,7 @@ g,	motion.txt	/*g,*
 g-	undo.txt	/*g-*
 g0	motion.txt	/*g0*
 g8	various.txt	/*g8*
-g:DrChipTopLvlMenu	pi_netrw.txt	/*g:DrChipTopLvlMenu*
+g:NetrwTopLvlMenu	pi_netrw.txt	/*g:NetrwTopLvlMenu*
 g:netrw_alto	pi_netrw.txt	/*g:netrw_alto*
 g:netrw_altv	pi_netrw.txt	/*g:netrw_altv*
 g:netrw_browse_split	pi_netrw.txt	/*g:netrw_browse_split*
@@ -5730,6 +5730,8 @@ i_<BS>	insert.txt	/*i_<BS>*
 i_<C-End>	insert.txt	/*i_<C-End>*
 i_<C-Home>	insert.txt	/*i_<C-Home>*
 i_<C-Left>	insert.txt	/*i_<C-Left>*
+i_<C-PageDown>	tabpage.txt	/*i_<C-PageDown>*
+i_<C-PageUp>	tabpage.txt	/*i_<C-PageUp>*
 i_<C-Right>	insert.txt	/*i_<C-Right>*
 i_<CR>	insert.txt	/*i_<CR>*
 i_<Del>	insert.txt	/*i_<Del>*
@@ -5757,6 +5759,8 @@ i_<S-Up>	insert.txt	/*i_<S-Up>*
 i_<Tab>	insert.txt	/*i_<Tab>*
 i_<Up>	insert.txt	/*i_<Up>*
 i_BS	insert.txt	/*i_BS*
+i_CTRL-<PageDown>	tabpage.txt	/*i_CTRL-<PageDown>*
+i_CTRL-<PageUp>	tabpage.txt	/*i_CTRL-<PageUp>*
 i_CTRL-@	insert.txt	/*i_CTRL-@*
 i_CTRL-A	insert.txt	/*i_CTRL-A*
 i_CTRL-B-gone	version5.txt	/*i_CTRL-B-gone*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0d.  Last change: 2006 Apr 12
+*todo.txt*      For Vim version 7.0d.  Last change: 2006 Apr 13
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -32,6 +32,8 @@ be worked on, but only if you sponsor Vi
 
 Do some of the 'cindent' bugs below.
 
+Should a[:5] not give an error for a list with 4 items?
+
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
 Win32: Describe how to do debugging. (George Reilly)
@@ -2236,21 +2238,6 @@ 7   Use 'matchpairs' for 'showmatch': Wh
 
 
 'cindent', 'smartindent':
-8   Using "+" part of 'cinoptions' where it's not expected (Alexei Alexandrov):
-	if (a)
-	{
-	} else
-			asdf;
-8   Wrong indent for ":" after a method with line break in arguments:
-	Foo::Foo (int one,
-		    int two)
-	: something(4)
-	{}
-8   Wrong indent for ":" after a method with multiple lines:
-	Foo::Foo (int one, int two)
-		: something(4),
-	somethingelse(3)
-	{}
 9   Too much indent for "lulu": (Uwe Zeisberger)
        int main ()
        {
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0d.  Last change: 2006 Apr 12
+*version7.txt*  For Vim version 7.0d.  Last change: 2006 Apr 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2465,5 +2465,15 @@ When 'guitablabel' is set the effect was
 
 Fixed a few 'cindent' errors.
 
+When completing menu names, e.g., after ":emenu", don't sort the entries but
+keep them in the original order.
+
+Fixed a crash when editing a directory in diff mode.  Don't trigger
+autocommands when executing the diff command.
+
+Getting a keystroke could get stuck if 'encoding' is a multi-byte encoding and
+typing a special key.
+
+When 'foldignore' is set the folds were not updated right away.
 
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -1,8 +1,8 @@
 " VHDL indent ('93 syntax)
 " Language:    VHDL
 " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
-" Version:     1.34
-" Last Change: 2006 Feb 11
+" Version:     1.36
+" Last Change: 2006 Apr 12
 " URL:         http://www.vim.org/scripts/script.php?script_id=1450
 
 " only load this indent file when no other was loaded
@@ -15,37 +15,37 @@ let b:did_indent = 1
 setlocal indentexpr=GetVHDLindent()
 setlocal indentkeys=!^F,o,O,e,0(,0)
 setlocal indentkeys+==~if,=~then,=~elsif,=~else
-setlocal indentkeys+==~begin,=~is,=~select,=~--
+setlocal indentkeys+==~begin,=~is,=~select
 
 " count repeat
-function! <SID>CountWrapper(cmd)
-  let i = v:count1
-  if a:cmd[0] == ":"
-    while i > 0
-      execute a:cmd
-      let i = i - 1
-    endwhile
-  else
-    execute "normal! gv\<Esc>"
-    execute "normal ".i.a:cmd
-    let curcol = col(".")
-    let curline = line(".")
-    normal! gv
-    call cursor(curline, curcol)
-  endif
-endfunction
+"function! <SID>CountWrapper(cmd)
+"  let i = v:count1
+"  if a:cmd[0] == ":"
+"    while i > 0
+"      execute a:cmd
+"      let i = i - 1
+"    endwhile
+"  else
+"    execute "normal! gv\<Esc>"
+"    execute "normal ".i.a:cmd
+"    let curcol = col(".")
+"    let curline = line(".")
+"    normal! gv
+"    call cursor(curline, curcol)
+"  endif
+"endfunction
 
 " explore motion
 " keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units"
-let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
-noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
-noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
-noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
-noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
-vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
-vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
-vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
-vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
+"let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
+"noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+"noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+"noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+"noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+"vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
+"vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
+"vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
+"vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
 
 " constants
 " not a comment
@@ -56,26 +56,26 @@ let s:ES = '\s*\%(--.*\)\=$'
 let s:NE = '\%(\<end\s\+\)\@<!'
 
 " for matchit plugin
-if exists("loaded_matchit")
-  let b:match_ignorecase = 1
-  let b:match_words =
-    \ s:NE.'\<if\>:\<elsif\>:\<else\>:\<end\s\+if\>,'.
-    \ s:NE.'\<case\>:\<when\>:\<end\s\+case\>,'.
-    \ s:NE.'\<loop\>:\<end\s\+loop\>,'.
-    \ s:NE.'\<for\>:\<end\s\+for\>,'.
-    \ s:NE.'\<generate\>:\<end\s\+generate\>,'.
-    \ s:NE.'\<record\>:\<end\s\+record\>,'.
-    \ s:NE.'\<units\>:\<end\s\+units\>,'.
-    \ s:NE.'\<process\>:\<end\s\+process\>,'.
-    \ s:NE.'\<block\>:\<end\s\+block\>,'.
-    \ s:NE.'\<function\>:\<end\s\+function\>,'.
-    \ s:NE.'\<entity\>:\<end\s\+entity\>,'.
-    \ s:NE.'\<component\>:\<end\s\+component\>,'.
-    \ s:NE.'\<architecture\>:\<end\s\+architecture\>,'.
-    \ s:NE.'\<package\>:\<end\s\+package\>,'.
-    \ s:NE.'\<procedure\>:\<end\s\+procedure\>,'.
-    \ s:NE.'\<configuration\>:\<end\s\+configuration\>'
-endif
+"if exists("loaded_matchit")
+"  let b:match_ignorecase = 1
+"  let b:match_words =
+"    \ s:NE.'\<if\>:\<elsif\>:\<else\>:\<end\s\+if\>,'.
+"    \ s:NE.'\<case\>:\<when\>:\<end\s\+case\>,'.
+"    \ s:NE.'\<loop\>:\<end\s\+loop\>,'.
+"    \ s:NE.'\<for\>:\<end\s\+for\>,'.
+"    \ s:NE.'\<generate\>:\<end\s\+generate\>,'.
+"    \ s:NE.'\<record\>:\<end\s\+record\>,'.
+"    \ s:NE.'\<units\>:\<end\s\+units\>,'.
+"    \ s:NE.'\<process\>:\<end\s\+process\>,'.
+"    \ s:NE.'\<block\>:\<end\s\+block\>,'.
+"    \ s:NE.'\<function\>:\<end\s\+function\>,'.
+"    \ s:NE.'\<entity\>:\<end\s\+entity\>,'.
+"    \ s:NE.'\<component\>:\<end\s\+component\>,'.
+"    \ s:NE.'\<architecture\>:\<end\s\+architecture\>,'.
+"    \ s:NE.'\<package\>:\<end\s\+package\>,'.
+"    \ s:NE.'\<procedure\>:\<end\s\+procedure\>,'.
+"    \ s:NE.'\<configuration\>:\<end\s\+configuration\>'
+"endif
 
 " only define indent function once
 if exists("*GetVHDLindent")
--- a/runtime/syntax/abap.vim
+++ b/runtime/syntax/abap.vim
@@ -1,11 +1,11 @@
 " Vim ABAP syntax file
-"    Language:	SAP - ABAP/4
-"    Revision:	0.8
-"  Maintainer:	Marius van Wyk <marius@e.co.za>
-" Last Change:	2004 Aug 30
+"    Language: SAP - ABAP/R4
+"    Revision: 1.0
+"  Maintainer: Marius Piedallu van Wyk <marius@e.co.za>
+" Last Change: 2006 Apr 13
 
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
+" For version  < 6.0: Clear all syntax items
+" For version >= 6.0: Quit when a syntax file was already loaded
 if version < 600
   syntax clear
 elseif exists("b:current_syntax")
@@ -16,19 +16,19 @@ endif
 syn case ignore
 
 " Symbol Operators
-syn match   abapSymbolOperator      "[+\-/=<>$]"
-syn match   abapSymbolOperator      "\*"
-syn match   abapSymbolOperator      "[<>]="
-syn match   abapSymbolOperator      "<>"
-syn match   abapSymbolOperator      "\*\*"
-syn match   abapSymbolOperator      "[()]"
-syn match   abapSymbolOperator      "[:,\.]"
+syn match   abapSymbolOperator  "[+\-/=<>$]"
+syn match   abapSymbolOperator  "\*"
+syn match   abapSymbolOperator  "[<>]="
+syn match   abapSymbolOperator  "<>"
+syn match   abapSymbolOperator  "\*\*"
+syn match   abapSymbolOperator  "[()]"
+syn match   abapSymbolOperator  "[:,\.]"
 
 " Literals
 syn region  abapString matchgroup=abapString start="'" end="'" contains=abapStringEscape
 syn match   abapStringEscape contained "''"
 
-syn match   abapNumber	"-\=\<\d\+\>"
+syn match   abapNumber  "-\=\<\d\+\>"
 syn region  abapHex     matchgroup=abapHex start="X'" end="'"
 
 if version >= 600
@@ -52,7 +52,7 @@ syn keyword abapStatement MESSAGE MODIFY
 syn keyword abapStatement NEW-LINE NEW-PAGE NEW-SECTION
 syn keyword abapStatement ON OVERLAY
 syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PRINT-CONTROL PROGRAM PROVIDE PUT
-syn keyword abapStatement RAISE RANGES READ RECEIVE REFRESH REJECT REPLACE REPORT RESERVE RESTORE ROLLBACK
+syn keyword abapStatement RAISE RANGES READ RECEIVE REFRESH REJECT REPLACE REPORT RESERVE RESTORE ROLLBACK RP-PROVIDE-FROM-LAST
 syn keyword abapStatement SCAN SCROLL SEARCH SELECT SELECT-OPTIONS SELECTION-SCREEN SET SHIFT SKIP SORT SPLIT START-OF-SELECTION STATICS STOP SUBMIT SUBTRACT SUBTRACT-CORRESPONDING SUM SUMMARY SUPPRESS SYNTAX-CHECK SYNTAX-TRACE
 syn keyword abapStatement TABLES TOP-OF-PAGE TRANSFER TRANSLATE TYPE TYPE-POOL TYPE-POOLS TYPES
 syn keyword abapStatement UNPACK UPDATE
@@ -82,7 +82,7 @@ syn match   abapStatement "\(\W\|^\)REF\
 " Special ABAP specific tables:
 syn match   abapSpecial       "\(\W\|^\)\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)\(\W\|$\)"ms=s+1,me=e-1
 syn match   abapSpecialTables "\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
-syn match   abapSpecial       "\(\W\|^\)\w\+-\w\+"ms=s+1 contains=abapSpecialTables
+syn match   abapSpecial       "\(\W\|^\)\w\+-\(\w\+-\w\+\|\w\+\)"ms=s+1 contains=abapSpecialTables
 
 " Pointer
 syn match   abapSpecial  "<\w\+>"
@@ -118,7 +118,7 @@ syn match   abapError    "\.\."
 " Comments
 syn region  abapComment  start="^\*" end="$" contains=abapTodo
 syn match   abapComment  "\".*" contains=abapTodo
-syn keyword abapTodo     contained	TODO NOTE
+syn keyword abapTodo     contained TODO NOTE
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -132,17 +132,17 @@ if version >= 508 || !exists("did_abap_s
   endif
 
   HiLink abapError          Error
-  HiLink abapComment	      Comment
-  HiLink abapInclude	      Include
+  HiLink abapComment        Comment
+  HiLink abapInclude        Include
   HiLink abapSpecial        Special
   HiLink abapSpecialTables  PreProc
-  HiLink abapSymbolOperator	abapOperator
-  HiLink abapOperator	      Operator
-  HiLink abapStatement	    Statement
-  HiLink abapString	        String
-  HiLink abapFloat	        Float
-  HiLink abapNumber	        Number
-  HiLink abapHex	          Number
+  HiLink abapSymbolOperator abapOperator
+  HiLink abapOperator       Operator
+  HiLink abapStatement      Statement
+  HiLink abapString         String
+  HiLink abapFloat          Float
+  HiLink abapNumber         Number
+  HiLink abapHex            Number
 
   delcommand HiLink
 endif
@@ -150,3 +150,4 @@ endif
 let b:current_syntax = "abap"
 
 " vim: ts=8 sw=2
+
--- a/runtime/syntax/apache.vim
+++ b/runtime/syntax/apache.vim
@@ -2,9 +2,14 @@
 " This is a GENERATED FILE. Please always refer to source file at the URI below.
 " Language: Apache configuration (httpd.conf, srm.conf, access.conf, .htaccess)
 " Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2002-10-15
+" License: This file can be redistribued and/or modified under the same terms
+"		as Vim itself.
+" Last Change: 2006-04-12
 " URL: http://trific.ath.cx/Ftp/vim/syntax/apache.vim
-" Note: define apache_version to your Apache version, e.g. "1.3", "2", "2.0.39"
+" Notes: Last synced with apache-2.2.0, version 1.x is no longer supported
+" TODO: see particular FIXME's scattered through the file
+"		make it really linewise?
+"		+ add `display' where appropriate
 
 " Setup
 if version >= 600
@@ -15,25 +20,11 @@ else
 	syntax clear
 endif
 
-if exists("apache_version")
-	let s:av = apache_version
-else
-	let s:av = "1.3"
-endif
-let s:av = substitute(s:av, "[^.0-9]", "", "g")
-let s:av = substitute(s:av, "^\\d\\+$", "\\0.999", "")
-let s:av = substitute(s:av, "^\\d\\+\\.\\d\\+$", "\\0.999", "")
-let s:av = substitute(s:av, "\\<\\d\\>", "0\\0", "g")
-let s:av = substitute(s:av, "\\<\\d\\d\\>", "0\\0", "g")
-let s:av = substitute(s:av, "[.]", "", "g")
-
 syn case ignore
 
 " Base constructs
 syn match apacheComment "^\s*#.*$" contains=apacheFixme
-if s:av >= "002000000"
-	syn match apacheUserID "#-\?\d\+\>"
-endif
+syn match apacheUserID "#-\?\d\+\>"
 syn case match
 syn keyword apacheFixme FIXME TODO XXX NOT
 syn case ignore
@@ -43,146 +34,118 @@ syn region apacheString start=+"+ end=+"
 
 " Core and mpm
 syn keyword apacheDeclaration AccessFileName AddDefaultCharset AllowOverride AuthName AuthType ContentDigest DefaultType DocumentRoot ErrorDocument ErrorLog HostNameLookups IdentityCheck Include KeepAlive KeepAliveTimeout LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens TimeOut UseCanonicalName
-if s:av < "002000000"
-	syn keyword apacheDeclaration AccessConfig AddModule BindAddress BS2000Account ClearModuleList CoreDumpDirectory Group Listen ListenBacklog LockFile MaxClients MaxRequestsPerChild MaxSpareServers MinSpareServers PidFile Port ResourceConfig ScoreBoardFile SendBufferSize ServerType StartServers ThreadsPerChild ThreadStackSize User
-endif
-if s:av >= "002000000"
-	syn keyword apacheDeclaration AcceptPathInfo CGIMapExtension EnableMMAP FileETag ForceType LimitXMLRequestBody SetHandler SetInputFilter SetOutputFilter
-	syn keyword apacheOption INode MTime Size
-endif
+syn keyword apacheDeclaration AcceptPathInfo CGIMapExtension EnableMMAP FileETag ForceType LimitXMLRequestBody SetHandler SetInputFilter SetOutputFilter
+syn keyword apacheDeclaration AcceptFilter AllowEncodedSlashes EnableSendfile LimitInternalRecursion TraceEnable
+syn keyword apacheOption INode MTime Size
 syn keyword apacheOption Any All On Off Double EMail DNS Min Minimal OS Prod ProductOnly Full
 syn keyword apacheOption emerg alert crit error warn notice info debug
 syn keyword apacheOption registry script inetd standalone
 syn match apacheOptionOption "[+-]\?\<\(ExecCGI\|FollowSymLinks\|Includes\|IncludesNoExec\|Indexes\|MultiViews\|SymLinksIfOwnerMatch\)\>"
-syn keyword apacheOption user group valid-user
+syn keyword apacheOption user group
+syn match apacheOption "\<valid-user\>"
 syn case match
 syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK contained
 syn case ignore
-syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)\+.*>" contains=apacheAnything
-syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)\+.*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError
+syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything
+syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError
 syn keyword apacheLimitSectionKeyword Limit LimitExcept contained
 syn match apacheAuthType "AuthType\s.*$" contains=apacheAuthTypeValue
 syn keyword apacheAuthTypeValue Basic Digest
 syn match apacheAllowOverride "AllowOverride\s.*$" contains=apacheAllowOverrideValue,apacheComment
 syn keyword apacheAllowOverrideValue AuthConfig FileInfo Indexes Limit Options contained
-if s:av >= "002000000"
-	syn keyword apacheDeclaration CoreDumpDirectory Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MaxSpareThreadsPerChild MinSpareThreads NumServers PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild User
-	syn keyword apacheDeclaration MaxThreads ThreadStackSize
-	syn keyword apacheDeclaration AssignUserId ChildPerUserId
-	syn keyword apacheDeclaration AcceptMutex MaxSpareServers MinSpareServers
-	syn keyword apacheOption flock fcntl sysvsem pthread
-endif
+syn keyword apacheDeclaration CoreDumpDirectory EnableExceptionHook GracefulShutdownTimeout Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MaxSpareThreadsPerChild MinSpareThreads NumServers PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild User
+syn keyword apacheDeclaration MaxThreads ThreadStackSize
+syn keyword apacheDeclaration Win32DisableAcceptEx
+syn keyword apacheDeclaration AssignUserId ChildPerUserId
+syn keyword apacheDeclaration AcceptMutex MaxSpareServers MinSpareServers
+syn keyword apacheOption flock fcntl sysvsem pthread
 
 " Modules
+syn keyword apacheDeclaration Action Script
+syn keyword apacheDeclaration Alias AliasMatch Redirect RedirectMatch RedirectTemp RedirectPermanent ScriptAlias ScriptAliasMatch
+syn keyword apacheOption permanent temp seeother gone
+syn keyword apacheDeclaration AuthAuthoritative AuthGroupFile AuthUserFile
+syn keyword apacheDeclaration AuthBasicAuthoritative AuthBasicProvider
+syn keyword apacheDeclaration AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize
+syn keyword apacheOption none auth auth-int MD5 MD5-sess
+syn match apacheSection "<\/\=\(<AuthnProviderAlias\)[^>]*>" contains=apacheAnything
+syn keyword apacheDeclaration Anonymous Anonymous_Authoritative Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail
+syn keyword apacheDeclaration AuthDBDUserPWQuery AuthDBDUserRealmQuery
+syn keyword apacheDeclaration AuthDBMGroupFile AuthDBMAuthoritative
+syn keyword apacheDeclaration AuthDBM TypeAuthDBMUserFile
+syn keyword apacheOption default SDBM GDBM NDBM DB
+syn keyword apacheDeclaration AuthDefaultAuthoritative
+syn keyword apacheDeclaration AuthUserFile
+syn keyword apacheDeclaration AuthLDAPBindON AuthLDAPEnabled AuthLDAPFrontPageHack AuthLDAPStartTLS
+syn keyword apacheDeclaration AuthLDAPBindDN AuthLDAPBindPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPUrl AuthzLDAPAuthoritative
+syn keyword apacheOption always never searching finding
+syn keyword apacheOption ldap-user ldap-group ldap-dn ldap-attribute ldap-filter
+syn keyword apacheDeclaration AuthDBMGroupFile AuthzDBMAuthoritative AuthzDBMType
+syn keyword apacheDeclaration AuthzDefaultAuthoritative
+syn keyword apacheDeclaration AuthGroupFile AuthzGroupFileAuthoritative
 syn match apacheAllowDeny "Allow\s\+from.*$" contains=apacheAllowDenyValue,apacheComment
 syn match apacheAllowDeny "Deny\s\+from.*$" contains=apacheAllowDenyValue,apacheComment
 syn keyword apacheAllowDenyValue All None contained
 syn match apacheOrder "^\s*Order\s.*$" contains=apacheOrderValue,apacheComment
 syn keyword apacheOrderValue Deny Allow contained
-syn keyword apacheDeclaration Action Script
-syn keyword apacheDeclaration Alias AliasMatch Redirect RedirectMatch RedirectTemp RedirectPermanent ScriptAlias ScriptAliasMatch
-syn keyword apacheOption permanent temp seeother gone
-syn keyword apacheDeclaration AuthAuthoritative AuthGroupFile AuthUserFile
-syn keyword apacheDeclaration Anonymous Anonymous_Authoritative Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail
-if s:av < "002000000"
-	syn keyword apacheDeclaration AuthDBGroupFile AuthDBUserFile AuthDBAuthoritative
-endif
-syn keyword apacheDeclaration AuthDBMGroupFile AuthDBMUserFile AuthDBMAuthoritative
-if s:av >= "002000000"
-	syn keyword apacheDeclaration AuthDBMType
-	syn keyword apacheOption default SDBM GDBM NDBM DB
-endif
-syn keyword apacheDeclaration AuthDigestAlgorithm AuthDigestDomain AuthDigestFile AuthDigestGroupFile AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestQop
-syn keyword apacheOption none auth auth-int MD5 MD5-sess
-if s:av >= "002000000"
-	syn keyword apacheDeclaration AuthLDAPAuthoritative AuthLDAPBindON AuthLDAPBindPassword AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPEnabled AuthLDAPFrontPageHack AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPStartTLS AuthLDAPUrl
-	syn keyword apacheOption always never searching finding
-endif
-if s:av < "002000000"
-	syn keyword apacheDeclaration FancyIndexing
-endif
+syn keyword apacheDeclaration  AuthzOwnerAuthoritative
+syn keyword apacheDeclaration  AuthzUserAuthoritative
 syn keyword apacheDeclaration AddAlt AddAltByEncoding AddAltByType AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore IndexOptions IndexOrderDefault ReadmeName
+syn keyword apacheDeclaration IndexStyleSheet
 syn keyword apacheOption DescriptionWidth FancyIndexing FoldersFirst IconHeight IconsAreLinks IconWidth NameWidth ScanHTMLTitles SuppressColumnSorting SuppressDescription SuppressHTMLPreamble SuppressLastModified SuppressSize TrackModified
 syn keyword apacheOption Ascending Descending Name Date Size Description
-if s:av >= "002000000"
-	syn keyword apacheOption HTMLTable SupressIcon SupressRules VersionSort
-endif
-if s:av < "002000000"
-	syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase
-endif
-if s:av >= "002000000"
-	syn keyword apacheDeclaration CacheDefaultExpire CacheEnable CacheForceCompletion CacheIgnoreCacheControl CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheMaxStreamingBuffer
-endif
+syn keyword apacheOption HTMLTable SupressIcon SupressRules VersionSort XHTML
+syn keyword apacheOption IgnoreClient IgnoreCase ShowForbidden SuppresRules
+syn keyword apacheDeclaration CacheForceCompletion CacheMaxStreamingBuffer
+syn keyword apacheDeclaration CacheDefaultExpire CacheDisable CacheEnable CacheIgnoreCacheControl CacheIgnoreHeaders CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheStoreNoStore CacheStorePrivate
 syn keyword apacheDeclaration MetaFiles MetaDir MetaSuffix
 syn keyword apacheDeclaration ScriptLog ScriptLogLength ScriptLogBuffer
-if s:av >= "002000000"
-	syn keyword apacheDeclaration ScriptStock
-	syn keyword apacheDeclaration CharsetDefault CharsetOptions CharsetSourceEnc
-	syn keyword apacheOption DebugLevel ImplicitAdd NoImplicitAdd
-endif
-syn keyword apacheDeclaration Dav DavDepthInfinity DavLockDB DavMinTimeout
-if s:av < "002000000"
-	syn keyword apacheDeclaration Define
-end
-if s:av >= "002000000"
-	syn keyword apacheDeclaration DeflateBufferSize DeflateFilterNote DeflateMemLevel DeflateWindowSize
-endif
-if s:av < "002000000"
-	syn keyword apacheDeclaration AuthDigestFile
-endif
-syn keyword apacheDeclaration DirectoryIndex
-if s:av >= "002000000"
-	syn keyword apacheDeclaration ProtocolEcho
-endif
+syn keyword apacheDeclaration ScriptStock
+syn keyword apacheDeclaration CharsetDefault CharsetOptions CharsetSourceEnc
+syn keyword apacheOption DebugLevel ImplicitAdd NoImplicitAdd
+syn keyword apacheDeclaration Dav DavDepthInfinity DavMinTimeout
+syn keyword apacheDeclaration DavLockDB
+syn keyword apacheDeclaration DavGenericLockDB
+syn keyword apacheDeclaration DBDExptime DBDKeep DBDMax DBDMin DBDParams DBDPersist DBDPrepareSQL DBDriver
+syn keyword apacheDeclaration DeflateCompressionLevel DeflateBufferSize DeflateFilterNote DeflateMemLevel DeflateWindowSize
+syn keyword apacheDeclaration DirectoryIndex DirectorySlash
+syn keyword apacheDeclaration CacheExpiryCheck CacheGcClean CacheGcDaily CacheGcInterval CacheGcMemUsage CacheGcUnused CacheSize CacheTimeMargin
+syn keyword apacheDeclaration CacheDirLength CacheDirLevels CacheMaxFileSize CacheMinFileSize CacheRoot
+syn keyword apacheDeclaration DumpIOInput DumpIOOutput
+syn keyword apacheDeclaration ProtocolEcho
 syn keyword apacheDeclaration PassEnv SetEnv UnsetEnv
 syn keyword apacheDeclaration Example
 syn keyword apacheDeclaration ExpiresActive ExpiresByType ExpiresDefault
-if s:av >= "002000000"
-	syn keyword apacheDeclaration ExtFilterDefine ExtFilterOptions
-	syn keyword apacheOption PreservesContentLength DebugLevel LogStderr NoLogStderr
-	syn keyword apacheDeclaration CacheFile MMapFile
-endif
+syn keyword apacheDeclaration ExtFilterDefine ExtFilterOptions
+syn keyword apacheOption PreservesContentLength DebugLevel LogStderr NoLogStderr
+syn match apacheOption "\<\(cmd\|mode\|intype\|outtype\|ftype\|disableenv\|enableenv\)\ze="
+syn keyword apacheDeclaration CacheFile MMapFile
+syn keyword apacheDeclaration FilterChain FilterDeclare FilterProtocol FilterProvider FilterTrace
 syn keyword apacheDeclaration Header
-if s:av >= "002000000"
-	syn keyword apacheDeclaration RequestHeader
-endif
+syn keyword apacheDeclaration RequestHeader
 syn keyword apacheOption set unset append add
+syn keyword apacheDeclaration IdentityCheck IdentityCheckTimeout
 syn keyword apacheDeclaration ImapMenu ImapDefault ImapBase
 syn keyword apacheOption none formatted semiformatted unformatted
 syn keyword apacheOption nocontent referer error map
-syn keyword apacheDeclaration XBitHack
-if s:av >= "002000000"
-	syn keyword apacheDeclaration SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho
-endif
+syn keyword apacheDeclaration SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho XBitHack
 syn keyword apacheOption on off full
 syn keyword apacheDeclaration AddModuleInfo
 syn keyword apacheDeclaration ISAPIReadAheadBuffer ISAPILogNotSupported ISAPIAppendLogToErrors ISAPIAppendLogToQuery
-if s:av >= "002000000"
-	syn keyword apacheDeclaration ISAPICacheFile ISAIPFakeAsync
-	syn keyword apacheDeclaration LDAPCacheEntries LDAPCacheTTL LDAPCertDBPath LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheSize
-endif
-if s:av < "002000000"
-	syn keyword apacheDeclaration AgentLog
-endif
-syn keyword apacheDeclaration CookieLog CustomLog LogFormat TransferLog
-if s:av < "002000000"
-	syn keyword apacheDeclaration RefererIgnore RefererLog
-endif
-if s:av >= "002000000"
-endif
+syn keyword apacheDeclaration ISAPICacheFile ISAIPFakeAsync
+syn keyword apacheDeclaration LDAPCertDBPath
+syn keyword apacheDeclaration LDAPCacheEntries LDAPCacheTTL LDAPConnectionTimeout LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheFile LDAPSharedCacheSize LDAPTrustedClientCert LDAPTrustedGlobalCert LDAPTrustedMode LDAPVerifyServerCert
+syn keyword apacheOption CA_DER CA_BASE64 CA_CERT7_DB CA_SECMOD CERT_DER CERT_BASE64 CERT_KEY3_DB CERT_NICKNAME CERT_PFX KEY_DER KEY_BASE64 KEY_PFX
+syn keyword apacheDeclaration BufferedLogs CookieLog CustomLog LogFormat TransferLog
+syn keyword apacheDeclaration ForensicLog
+syn keyword apacheDeclaration MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreamingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize
 syn keyword apacheDeclaration AddCharset AddEncoding AddHandler AddLanguage AddType DefaultLanguage RemoveEncoding RemoveHandler RemoveType TypesConfig
-if s:av < "002000000"
-	syn keyword apacheDeclaration ForceType SetHandler
-endif
-if s:av >= "002000000"
-	syn keyword apacheDeclaration AddInputFilter AddOutputFilter ModMimeUsePathInfo MultiviewsMatch RemoveInputFilter RemoveOutputFilter
-endif
+syn keyword apacheDeclaration AddInputFilter AddOutputFilter ModMimeUsePathInfo MultiviewsMatch RemoveInputFilter RemoveOutputFilter RemoveCharset
+syn keyword apacheOption NegotiatedOnly Filters Handlers
 syn keyword apacheDeclaration MimeMagicFile
 syn keyword apacheDeclaration MMapFile
-syn keyword apacheDeclaration CacheNegotiatedDocs LanguagePriority
-if s:av >= "002000000"
-	syn keyword apacheDeclaration ForceLanguagePriority
-endif
+syn keyword apacheDeclaration CacheNegotiatedDocs LanguagePriority ForceLanguagePriority
+syn keyword apacheDeclaration NWSSLTrustedCerts NWSSLUpgradeable SecureListen
 syn keyword apacheDeclaration PerlModule PerlRequire PerlTaintCheck PerlWarn
 syn keyword apacheDeclaration PerlSetVar PerlSetEnv PerlPassEnv PerlSetupEnv
 syn keyword apacheDeclaration PerlInitHandler PerlPostReadRequestHandler PerlHeaderParserHandler
@@ -192,50 +155,25 @@ syn keyword apacheDeclaration PerlCleanu
 syn keyword apacheDeclaration PerlRestartHandler PerlDispatchHandler
 syn keyword apacheDeclaration PerlFreshRestart PerlSendHeader
 syn keyword apacheDeclaration php_value php_flag php_admin_value php_admin_flag
-syn keyword apacheDeclaration AllowCONNECT NoProxy ProxyBlock ProxyDomain ProxyPass ProxyPassReverse ProxyReceiveBufferSize ProxyRemote ProxyRequests ProxyVia
-if s:av < "002000000"
-	syn keyword apacheDeclaration CacheRoot CacheSize CacheMaxExpire CacheDefaultExpire CacheLastModifiedFactor CacheGcInterval CacheDirLevels CacheDirLength CacheForceCompletion NoCache
-	syn keyword apacheOption block
-endif
-if s:av >= "002000000"
-	syn match apacheSection "<\/\=\(Proxy\|ProxyMatch\)\+.*>" contains=apacheAnything
-	syn keyword apacheDeclaration ProxyErrorOverride ProxyIOBufferSize ProxyMaxForwards ProxyPreserveHost ProxyRemoteMatch ProxyTimeout
-endif
-syn keyword apacheDeclaration RewriteEngine RewriteOptions RewriteLog RewriteLogLevel RewriteLock RewriteMap RewriteBase RewriteCond RewriteRule
+syn match apacheSection "<\/\=\(Proxy\|ProxyMatch\)[^>]*>" contains=apacheAnything
+syn keyword apacheDeclaration AllowCONNECT NoProxy ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize ProxyMaxForwards ProxyPass ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia
+syn keyword apacheDeclaration RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule
 syn keyword apacheOption inherit
-if s:av < "002000000"
-	syn keyword apacheDeclaration RoamingAlias
-endif
 syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase
 syn keyword apacheDeclaration LoadFile LoadModule
 syn keyword apacheDeclaration CheckSpelling
-syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLEngine SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLRandomSeed SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLVerifyClient SSLVerifyDepth
-if s:av < "002000000"
-	syn keyword apacheDeclaration SSLLog SSLLogLevel
-endif
-if s:av >= "002000000"
-	syn keyword apacheDeclaration SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth
-endif
+syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCryptoDevice SSLEngine SSLHonorCipherOrder SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLUserName SSLVerifyClient SSLVerifyDepth
 syn match apacheOption "[+-]\?\<\(StdEnvVars\|CompatEnvVars\|ExportCertData\|FakeBasicAuth\|StrictRequire\|OptRenegotiate\)\>"
 syn keyword apacheOption builtin sem
 syn match apacheOption "\(file\|exec\|egd\|dbm\|shm\):"
-if s:av < "002000000"
-	syn match apacheOption "[+-]\?\<\(SSLv2\|SSLv3\|TLSv1\)\>"
-endif
-if s:av >= "002000000"
-	syn match apacheOption "[+-]\?\<\(SSLv2\|SSLv3\|TLSv1\|kRSA\|kHDr\|kDHd\|kEDH\|aNULL\|aRSA\|aDSS\|aRH\|eNULL\|DES\|3DES\|RC2\|RC4\|IDEA\|MD5\|SHA1\|SHA\|EXP\|EXPORT40\|EXPORT56\|LOW\|MEDIUM\|HIGH\|RSA\|DH\|EDH\|ADH\|DSS\|NULL\)\>"
-endif
-syn keyword apacheOption optional require optional_no_ca
+syn match apacheOption "[+-]\?\<\(SSLv2\|SSLv3\|TLSv1\|kRSA\|kHDr\|kDHd\|kEDH\|aNULL\|aRSA\|aDSS\|aRH\|eNULL\|DES\|3DES\|RC2\|RC4\|IDEA\|MD5\|SHA1\|SHA\|EXP\|EXPORT40\|EXPORT56\|LOW\|MEDIUM\|HIGH\|RSA\|DH\|EDH\|ADH\|DSS\|NULL\)\>"
+syn keyword apacheOption optional optional_no_ca
 syn keyword apacheDeclaration ExtendedStatus
-if s:av >= "002000000"
-	syn keyword apacheDeclaration SuexecUserGroup
-endif
+syn keyword apacheDeclaration SuexecUserGroup
 syn keyword apacheDeclaration UserDir
-syn keyword apacheDeclaration CookieExpires CookieName CookieTracking
-if s:av >= "002000000"
-	syn keyword apacheDeclaration CookieDomain CookieStyle
-	syn keyword apacheOption Netscape Cookie Cookie2 RFC2109 RFC2965
-endif
+syn keyword apacheDeclaration CookieDomain CookieExpires CookieName CookieStyle CookieTracking
+syn keyword apacheOption Netscape Cookie Cookie2 RFC2109 RFC2965
+syn match apacheSection "<\/\=\(<IfVersion\)[^>]*>" contains=apacheAnything
 syn keyword apacheDeclaration VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP
 
 " Define the default highlighting
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Vim help file
 " Maintainer:	Bram Moolenaar (Bram@vim.org)
-" Last Change:	2006 Apr 12
+" Last Change:	2006 Apr 13
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -14,14 +14,15 @@ syn match helpSectionDelim	"^-\{3,}.*--$
 syn region helpExample		matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
 if has("ebcdic")
   syn match helpHyperTextJump	"\\\@<!|[^"*|]\+|" contains=helpBar
-  syn match helpHyperTextEntry	"\*[^"*|]\+\*\s"he=e-1
-  syn match helpHyperTextEntry	"\*[^"*|]\+\*$"
+  syn match helpHyperTextEntry	"\*[^"*|]\+\*\s"he=e-1 contains=helpStar
+  syn match helpHyperTextEntry	"\*[^"*|]\+\*$" contains=helpStar
 else
   syn match helpHyperTextJump	"\\\@<!|[#-)!+-~]\+|" contains=helpBar
-  syn match helpHyperTextEntry	"\*[#-)!+-~]\+\*\s"he=e-1
-  syn match helpHyperTextEntry	"\*[#-)!+-~]\+\*$"
+  syn match helpHyperTextEntry	"\*[#-)!+-~]\+\*\s"he=e-1 contains=helpStar
+  syn match helpHyperTextEntry	"\*[#-)!+-~]\+\*$" contains=helpStar
 endif
 syn match helpBar		contained "|"
+syn match helpStar		contained "\*"
 syn match helpNormal		"|.*====*|"
 syn match helpNormal		":|vim:|"	" for :help modeline
 syn match helpVim		"Vim version [0-9.a-z]\+"
@@ -124,6 +125,7 @@ hi def link helpExampleStart	helpIgnore
 hi def link helpIgnore		Ignore
 hi def link helpHyperTextJump	Subtitle
 hi def link helpBar		Ignore
+hi def link helpStar		Ignore
 hi def link helpHyperTextEntry	String
 hi def link helpHeadline	Statement
 hi def link helpHeader		PreProc
--- a/runtime/syntax/kconfig.vim
+++ b/runtime/syntax/kconfig.vim
@@ -1,6 +1,6 @@
 " Vim syntax file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-12
+" Latest Revision:  2006-04-13
 
 if exists("b:current_syntax")
   finish
@@ -711,6 +711,8 @@ syn region  kconfigHelpText
       \ skip='^$'
       \ end='^\z1\@!'
 
+syn sync    match kconfigSyncHelp     grouphere kconfigHelpText 'help\|---help---'
+
 hi def link kconfigTodo         Todo
 hi def link kconfigComment      Comment
 hi def link kconfigKeyword      Keyword
--- a/runtime/syntax/lifelines.vim
+++ b/runtime/syntax/lifelines.vim
@@ -1,8 +1,15 @@
 " Vim syntax file
-" Language:	Lifelines (v 3.0.7) http://lifelines.sourceforge.net
-" Maintainer:	Patrick Texier <p.texier@orsennes.com>
-" Location:	ftp://216.71.72.236/lifelines.vim
-" Last Change:	2002 Mar 03
+" Language:	LifeLines (v 3.0.50) http://lifelines.sourceforge.net
+" Maintainer:	Patrick Texier <p.texier@genindre.org>
+" Location:	http://www.genindre.org/ftp/lifelines/lifelines.vim
+" Last Change:	2005 Dec 22.
+
+" 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
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -13,61 +20,94 @@ elseif exists("b:current_syntax")
   finish
 endif
 
-" A bunch of useful lifelines keywords 3.0.7
+" A bunch of useful lifelines keywords 3.0.50
 
-syn keyword	lifelinesStatement	set
-syn keyword	lifelinesUser		getindi geindiset getfam getint getstr choosechild
-syn keyword	lifelinesUser		chooseindi choosespouse choosesubset menuchoose
-syn keyword	lifelinesUser		choosefam getintmsg getindimsg getstrmsg
-syn keyword	lifelinesProc		proc func return call
-syn keyword	lifelinesInclude	include
-syn keyword	lifelinesDef		global
+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	lifelinesIndi		name fullname surname givens trimname birth
-syn keyword	lifelinesIndi		death baptism 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 lengthset 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	lifelinesList		list empty length enqueue dequeue requeue
-syn keyword	lifelinesList		push pop setel getel forlist inlist
-syn keyword	lifelinesTable		table insert lookup
-syn keyword	lifelinesGedcom		xref tag value parent child sibling savenode
-syn keyword	lifelinesGedcom		fornodes traverse createnode addnode deletenode
-syn keyword	lifelinesGedcom		reference dereference getrecord
-syn keyword     lifelinesGedcom		gengedcom gengedcomstrong gengedcomweak
-syn keyword	lifelinesFunct		date place year long short gettoday dayformat
-syn keyword	lifelinesFunct		monthformat dateformat extractdate
-syn keyword	lifelinesFunct		complexdate
-syn keyword	lifelinesFunct		extractnames extractplaces extracttokens lower
-syn keyword     lifelinesFunct		upper capitalize trim rjustify save strsave
-syn keyword     lifelinesFunct		concat strconcat strlen substring index
-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
-syn keyword	lifelinesFunct		database version system stddate program
-syn keyword	lifelinesFunct		pvalue pagemode level extractdatestr debug
-syn keyword	lifelinesFunct		f free getcol getproperty heapused
+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
+
+" option to highlight 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
+else
+	syn keyword	lifelinesIndi			baptism
+endif
 
 syn region	lifelinesString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lifelinesSpecial
 
-syn region	lifelinesComment	start="/\*"  end="\*/" contains=lifelinesComment
+syn match	lifelinesSpecial		"\\\(\\\|\(n\|t\)\)" contained
+
+syn region	lifelinesComment	start="/\*"  end="\*/" 
 
-" Only integers with lifelines
-
-syn match	lifelinesNumber		"\<\d\+\>"
+" integers
+syn match	lifelinesNumber		"-\=\<\d\+\>"
+"floats, with dot
+syn match	lifelinesNumber		"-\=\<\d\+\.\d*\>"
+"floats, starting with a dot
+syn match	lifelinesNumber		"-\=\.\d\+\>"
 
 "catch errors caused by wrong parenthesis
 "adapted from original c.vim written by Bram Moolenaar
@@ -90,25 +130,27 @@ if version >= 508 || !exists("did_lifeli
   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 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
 
   delcommand HiLink
 endif
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -3,18 +3,17 @@
 " Maintainer:		Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
 " Last Change:		Apr 12, 2006
-" Version:		83
+" Version:		84
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Using the following VIM variables: {{{1
-" b:is_kornshell	if defined, enhance with kornshell/POSIX syntax
-" b:is_bash		if defined, enhance with bash syntax
+" g:is_bash		if none of the previous three variables are
+"		defined, then if g:is_bash is set enhance with
+"		bash syntax highlighting
 " g:is_kornshell	if neither b:is_kornshell or b:is_bash is
 "		defined, then if g:is_kornshell is set
 "		enhance with kornshell/POSIX syntax highlighting
-" g:is_bash		if none of the previous three variables are
-"		defined, then if g:is_bash is set enhance with
-"		bash syntax highlighting
+" g:is_posix                    this variable is the same as g:is_kornshell
 " g:sh_fold_enabled	if non-zero, syntax folding is enabled
 " g:sh_minlines		sets up syn sync minlines (dflt: 200)
 " g:sh_maxlines		sets up syn sync maxlines (dflt: 2x sh_minlines)
@@ -37,12 +36,15 @@ endif
 " a b:is_sh is converted into b:is_bash/b:is_kornshell,
 " respectively.
 if !exists("b:is_kornshell") && !exists("b:is_bash")
-  if exists("is_kornshell")
+  if exists("g:is_posix") && !exists("g:is_kornshell")
+   let g:is_kornshell= g:is_posix
+  endif
+  if exists("g:is_kornshell")
     let b:is_kornshell= 1
     if exists("b:is_sh")
       unlet b:is_sh
     endif
-  elseif exists("is_bash")
+  elseif exists("g:is_bash")
     let b:is_bash= 1
     if exists("b:is_sh")
       unlet b:is_sh
--- a/src/diff.c
+++ b/src/diff.c
@@ -839,7 +839,13 @@ diff_file(tmp_orig, tmp_new, tmp_diff)
 		    (diff_flags & DIFF_ICASE) ? "-i " : "",
 		    tmp_orig, tmp_new);
 	    append_redir(cmd, p_srr, tmp_diff);
+#ifdef FEAT_AUTOCMD
+	    ++autocmd_block;	/* Avoid ShellCmdPost stuff */
+#endif
 	    (void)call_shell(cmd, SHELL_FILTER|SHELL_SILENT|SHELL_DOOUT);
+#ifdef FEAT_AUTOCMD
+	    --autocmd_block;
+#endif
 	    vim_free(cmd);
 	}
     }
@@ -942,7 +948,13 @@ ex_diffpatch(eap)
 		fullname != NULL ? fullname :
 # endif
 		eap->arg);
+#ifdef FEAT_AUTOCMD
+	++autocmd_block;	/* Avoid ShellCmdPost stuff */
+#endif
 	(void)call_shell(buf, SHELL_FILTER | SHELL_COOKED);
+#ifdef FEAT_AUTOCMD
+	--autocmd_block;
+#endif
     }
 
 #ifdef UNIX
--- a/src/edit.c
+++ b/src/edit.c
@@ -8494,6 +8494,16 @@ ins_pageup()
     pos_T	tpos;
 
     undisplay_dollar();
+
+#ifdef FEAT_WINDOWS
+    if (mod_mask & MOD_MASK_CTRL)
+    {
+	/* <C-PageUp>: tab page back */
+	goto_tabpage(-1);
+	return;
+    }
+#endif
+
     tpos = curwin->w_cursor;
     if (onepage(BACKWARD, 1L) == OK)
     {
@@ -8543,6 +8553,16 @@ ins_pagedown()
     pos_T	tpos;
 
     undisplay_dollar();
+
+#ifdef FEAT_WINDOWS
+    if (mod_mask & MOD_MASK_CTRL)
+    {
+	/* <C-PageDown>: tab page forward */
+	goto_tabpage(0);
+	return;
+    }
+#endif
+
     tpos = curwin->w_cursor;
     if (onepage(FORWARD, 1L) == OK)
     {
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4444,8 +4444,9 @@ ExpandGeneric(xp, regmatch, num_file, fi
 	}
     }
 
-    /* Sort the results. */
-    sort_strings(*file, *num_file);
+    /* Sort the results.  Keep menu's in the specified order. */
+    if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
+	sort_strings(*file, *num_file);
 
     return OK;
 }
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3085,6 +3085,7 @@ get_keystroke()
 		    mch_memmove(buf, buf + 3, (size_t)len);
 		continue;
 	    }
+	    break;
 	}
 #ifdef FEAT_MBYTE
 	if (has_mbyte)
@@ -4771,6 +4772,7 @@ static int	cin_isdo __ARGS((char_u *));
 static int	cin_iswhileofdo __ARGS((char_u *, linenr_T, int));
 static int	cin_isbreak __ARGS((char_u *));
 static int	cin_is_cpp_baseclass __ARGS((char_u *line, colnr_T *col));
+static int	get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass));
 static int	cin_ends_in __ARGS((char_u *, char_u *, char_u *));
 static int	cin_skip2pos __ARGS((pos_T *trypos));
 static pos_T	*find_start_brace __ARGS((int));
@@ -5447,7 +5449,8 @@ cin_isbreak(p)
     return (STRNCMP(p, "break", 5) == 0 && !vim_isIDc(p[5]));
 }
 
-/* Find the position of a C++ base-class declaration or
+/*
+ * Find the position of a C++ base-class declaration or
  * constructor-initialization. eg:
  *
  * class MyClass :
@@ -5462,10 +5465,11 @@ cin_isbreak(p)
     static int
 cin_is_cpp_baseclass(line, col)
     char_u	*line;
-    colnr_T	*col;
+    colnr_T	*col;	    /* return: column to align with */
 {
     char_u	*s;
     int		class_or_struct, lookfor_ctor_init, cpp_base_class;
+    linenr_T	lnum = curwin->w_cursor.lnum;
 
     *col = 0;
 
@@ -5478,8 +5482,49 @@ cin_is_cpp_baseclass(line, col)
 
     cpp_base_class = lookfor_ctor_init = class_or_struct = FALSE;
 
-    while(*s != NUL)
-    {
+    /* Search for a line starting with '#', empty, ending in ';' or containing
+     * '{' or '}' and start below it.  This handles the following situations:
+     *	a = cond ?
+     *	      func() :
+     *	           asdf;
+     *	func::foo()
+     *	      : something
+     *	{}
+     *	Foo::Foo (int one, int two)
+     *		: something(4),
+     *		somethingelse(3)
+     *	{}
+     */
+    while (lnum > 1)
+    {
+	s = skipwhite(ml_get(lnum - 1));
+	if (*s == '#' || *s == NUL)
+	    break;
+	while (*s != NUL)
+	{
+	    s = cin_skipcomment(s);
+	    if (*s == '{' || *s == '}'
+		    || (*s == ';' && cin_nocode(s + 1)))
+		break;
+	    if (*s != NUL)
+		++s;
+	}
+	if (*s != NUL)
+	    break;
+	--lnum;
+    }
+
+    s = cin_skipcomment(ml_get(lnum));
+    for (;;)
+    {
+	if (*s == NUL)
+	{
+	    if (lnum == curwin->w_cursor.lnum)
+		break;
+	    /* Continue in the cursor line. */
+	    s = cin_skipcomment(ml_get(++lnum));
+	}
+
 	if (s[0] == ':')
 	{
 	    if (s[1] == ':')
@@ -5542,43 +5587,53 @@ cin_is_cpp_baseclass(line, col)
 		lookfor_ctor_init = FALSE;
 
 		/* the first statement starts here: lineup with this one... */
-		if (cpp_base_class && *col == 0)
+		if (cpp_base_class)
 		    *col = (colnr_T)(s - line);
 	    }
 
+	    /* When the line ends in a comma don't align with it. */
+	    if (lnum == curwin->w_cursor.lnum && *s == ',' && cin_nocode(s + 1))
+		*col = 0;
+
 	    s = cin_skipcomment(s + 1);
 	}
     }
 
-    if (cpp_base_class && curwin->w_cursor.lnum > 1)
-    {
-	/* Check that there is no '?' in the previous line to catch:
-	 *	a = cond ?
-	 *	      func() :
-	 *	           asdf;
-	 */
-	s = ml_get(curwin->w_cursor.lnum - 1);
-	if (!cin_ispreproc(s))
-	    while (*s != NUL)
-	    {
-		s = cin_skipcomment(s);
-		if (*s == '?')
-		    /* Disable when finding a '?'... */
-		    cpp_base_class = FALSE;
-		else if (*s == ';' && cin_nocode(s + 1))
-		{
-		    /* ...but re-enable when the line ends in ';'. */
-		    cpp_base_class = TRUE;
-		    break;
-		}
-		if (*s != NUL)
-		    ++s;
-	    }
-    }
-
     return cpp_base_class;
 }
 
+    static int
+get_baseclass_amount(col, ind_maxparen, ind_maxcomment, ind_cpp_baseclass)
+    int		col;
+    int		ind_maxparen;
+    int		ind_maxcomment;
+    int		ind_cpp_baseclass;
+{
+    int		amount;
+    colnr_T	vcol;
+    pos_T	*trypos;
+
+    if (col == 0)
+    {
+	amount = get_indent();
+	if (find_last_paren(ml_get_curline(), '(', ')')
+		&& (trypos = find_match_paren(ind_maxparen,
+						     ind_maxcomment)) != NULL)
+	    amount = get_indent_lnum(trypos->lnum); /* XXX */
+	if (!cin_ends_in(ml_get_curline(), (char_u *)",", NULL))
+	    amount += ind_cpp_baseclass;
+    }
+    else
+    {
+	curwin->w_cursor.col = col;
+	getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
+	amount = (int)vcol;
+    }
+    if (amount < ind_cpp_baseclass)
+	amount = ind_cpp_baseclass;
+    return amount;
+}
+
 /*
  * Return TRUE if string "s" ends with the string "find", possibly followed by
  * white space and comments.  Skip strings and comments.
@@ -6902,22 +6957,17 @@ get_c_indent()
 			else
 			    amount += ind_continuation;
 		    }
-		    else if (col == 0 || theline[0] == '{')
+		    else if (theline[0] == '{')
 		    {
-			amount = get_indent();
-			if (find_last_paren(l, '(', ')')
-				&& (trypos = find_match_paren(ind_maxparen,
-					ind_maxcomment)) != NULL)
-			    amount = get_indent_lnum(trypos->lnum); /* XXX */
-			if (theline[0] != '{')
-			    amount += ind_cpp_baseclass;
+			/* Need to find start of the declaration. */
+			lookfor = LOOKFOR_UNTERM;
+			ind_continuation = 0;
+			continue;
 		    }
 		    else
-		    {
-			curwin->w_cursor.col = col;
-			getvcol(curwin, &curwin->w_cursor, &col, NULL, NULL);
-			amount = (int)col;
-		    }
+								     /* XXX */
+			amount = get_baseclass_amount(col, ind_maxparen,
+					   ind_maxcomment, ind_cpp_baseclass);
 		    break;
 		}
 		else if (lookfor == LOOKFOR_CPP_BASECLASS)
@@ -6967,7 +7017,8 @@ get_c_indent()
 		     * If we are looking for ',', we also look for matching
 		     * braces.
 		     */
-		    if (trypos == NULL && find_last_paren(l, '{', '}'))
+		    if (trypos == NULL && terminated == ','
+					      && find_last_paren(l, '{', '}'))
 			trypos = find_start_brace(ind_maxcomment);
 
 		    if (trypos != NULL)
@@ -7490,21 +7541,9 @@ term_again:
 		}
 		if (n)
 		{
-		    if (col == 0)
-		    {
-			amount = get_indent() + ind_cpp_baseclass;  /* XXX */
-			if (find_last_paren(l, '(', ')')
-				&& (trypos = find_match_paren(ind_maxparen,
-					ind_maxcomment)) != NULL)
-			    amount = get_indent_lnum(trypos->lnum)
-					   + ind_cpp_baseclass;	    /* XXX */
-		    }
-		    else
-		    {
-			curwin->w_cursor.col = col;
-			getvcol(curwin, &curwin->w_cursor, &col, NULL, NULL);
-			amount = (int)col;
-		    }
+								     /* XXX */
+		    amount = get_baseclass_amount(col, ind_maxparen,
+					   ind_maxcomment, ind_cpp_baseclass);
 		    break;
 		}
 
@@ -7604,7 +7643,7 @@ term_again:
 		 *     bar;
 		 * indent_to_0 here;
 		 */
-		if (cin_ends_in(l, (char_u*)";", NULL))
+		if (cin_ends_in(l, (char_u *)";", NULL))
 		{
 		    l = ml_get(curwin->w_cursor.lnum - 1);
 		    if (cin_ends_in(l, (char_u *)",", NULL)
--- a/src/option.c
+++ b/src/option.c
@@ -2066,7 +2066,7 @@ static struct vimoption
     {"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
 #ifdef FEAT_SESSION
 			    (char_u *)&p_ssop, PV_NONE,
-	 {(char_u *)"blank,buffers,curdir,folds,help,options,tabpage,winsize",
+	 {(char_u *)"blank,buffers,curdir,folds,help,options,tabpages,winsize",
 							       (char_u *)0L}
 #else
 			    (char_u *)NULL, PV_NONE,
@@ -6458,6 +6458,12 @@ did_set_string_option(opt_idx, varp, new
 	if (check_opt_strings(p_fcl, p_fcl_values, TRUE) != OK)
 	    errmsg = e_invarg;
     }
+    /* 'foldignore' */
+    else if (gvarp == &curwin->w_allbuf_opt.wo_fdi)
+    {
+	if (foldmethodIsIndent(curwin))
+	    foldUpdateAll(curwin);
+    }
 #endif
 
 #ifdef FEAT_VIRTUALEDIT
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -584,20 +584,6 @@ display_errors()
 	for (p = (char *)error_ga.ga_data; *p; ++p)
 	    if (!isspace(*p))
 	    {
-#if 0
-		/* Truncate a very long message, it will go off-screen. */
-		if (STRLEN(p) > 2000)
-		{
-		    char_u	*s = p + 2000 - 14;
-
-#ifdef FEAT_MBYTE
-		    if (has_mbyte)
-			s -= (*mb_head_off)(p, s);
-#endif
-		    STRCPY(s, _("...(truncated)"));
-		}
-#endif
-
 		(void)gui_mch_dialog(
 #ifdef FEAT_GUI
 				     gui.starting ? VIM_INFO :
@@ -608,13 +594,6 @@ display_errors()
 #endif
 					     (char_u *)_("Error"),
 				     p, (char_u *)_("&Ok"), 1, NULL);
-#if 0
-#ifdef WIN3264
-		MessageBox(NULL, p, "Vim", MB_TASKMODAL|MB_SETFOREGROUND);
-#else
-		MessageBox(NULL, p, "Vim", MB_TASKMODAL);
-#endif
-#endif
 		break;
 	    }
 	ga_clear(&error_ga);
--- a/src/testdir/test3.in
+++ b/src/testdir/test3.in
@@ -742,6 +742,31 @@ int  main(void)
 	next_line_of_code();
 }
 
+barry()
+{
+	Foo::Foo (int one,
+			int two)
+		: something(4)
+	{}
+}
+
+barry()
+{
+	Foo::Foo (int one, int two)
+		: something(4)
+	{}
+}
+
+Constructor::Constructor(int a,
+		int b 
+		)  : 
+	BaseClass(a,
+			b,
+			c),
+	mMember(b)
+{
+}
+
 /* end of AUTO */
 
 STARTTEST
@@ -1189,6 +1214,20 @@ protected:
 };
 
 STARTTEST
+:set cino=+20
+2kdd]]=][
+ENDTEST
+
+	void
+foo()
+{
+	if (a)
+	{
+	} else
+		asdf;
+}
+
+STARTTEST
 :set cino=(0,W2s
 2kdd]]=][
 ENDTEST
--- a/src/testdir/test3.ok
+++ b/src/testdir/test3.ok
@@ -618,7 +618,7 @@ Constructor::Constructor(int a,
 
 Constructor::Constructor(int a,
 		int b ) /*x*/ : /*x*/ BaseClass(a),
-							  member(b)
+	member(b)
 {
 }
 
@@ -651,7 +651,7 @@ class CAbc :
 };
 
 class CAbc : public BaseClass1,
-			 protected BaseClass2
+	protected BaseClass2
 {
 };
 
@@ -730,6 +730,31 @@ int  main(void)
 	next_line_of_code();
 }
 
+barry()
+{
+	Foo::Foo (int one,
+			int two)
+		: something(4)
+	{}
+}
+
+barry()
+{
+	Foo::Foo (int one, int two)
+		: something(4)
+	{}
+}
+
+Constructor::Constructor(int a,
+		int b 
+		)  : 
+	BaseClass(a,
+			b,
+			c),
+	mMember(b)
+{
+}
+
 /* end of AUTO */
 
 
@@ -1070,6 +1095,16 @@ protected:
 };
 
 
+	void
+foo()
+{
+	if (a)
+	{
+	} else
+		asdf;
+}
+
+
 {
 	averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
 			asdasdf,
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70d"
 #define VIM_VERSION_SHORT	"7.0d"
-#define VIM_VERSION_MEDIUM	"7.0d02 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0d02 BETA (2006 Apr 12)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0d02 BETA (2006 Apr 12, compiled "
+#define VIM_VERSION_MEDIUM	"7.0d03 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0d03 BETA (2006 Apr 13)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0d03 BETA (2006 Apr 13, compiled "