diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 4ba9cae..ff2d381 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0g.  Last change: 2006 May 01
+*eval.txt*      For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2345,9 +2345,14 @@
 <		There must be no space between the symbol (&/$/*/#) and the
 		name.
 		Trailing characters that can't be part of the name are often
-		ignored, but don't depend on it.
-		Note that the argument must be a string, not the name of the
-		variable itself!  For example: >
+		ignored, but don't depend on it, it may change in the future!
+		Example: >
+			exists("*strftime()")
+<		This currently works, but it should really be: >
+			exists("*strftime")
+
+<		Note that the argument must be a string, not the name of the
+		variable itself.  For example: >
 			exists(bufcount)
 <		This doesn't check for existence of the "bufcount" variable,
 		but gets the value of "bufcount", and checks if that exists.
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index fe09d80..56a1ff5 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.0g.  Last change: 2006 Apr 02
+*gui.txt*       For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -588,12 +588,21 @@
 executed command are still given though.  To shut them up too, add a ":silent"
 in the executed command: >
 	:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
-<
+"<silent>" may also appear just after "<special>" or "<script>".
+
+					*:menu-<special>* *:menu-special*
+Define a menu with <> notation for special keys, even though the "<" flag
+may appear in 'cpoptions'.  This is useful if the side effect of setting
+'cpoptions' is not desired.  Example: >
+	:menu <special> Search.Header /Header<CR>
+"<special>" must appear as the very first argument to the ":menu" command or
+just after "<silent>" or "<script>".
+
 						*:menu-<script>* *:menu-script*
 The "to" part of the menu will be inspected for mappings.  If you don't want
 this, use the ":noremenu" command (or the similar one for a specific mode).
 If you do want to use script-local mappings, add "<script>" as the very first
-argument to the ":menu" command or after "<silent>".
+argument to the ":menu" command or just after "<silent>" or "<special>".
 
 							*menu-priority*
 You can give a priority to a menu.  Menus with a higher priority go more to
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 8257838..48d4550 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0g.  Last change: 2006 May 01
+*insert.txt*    For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -919,6 +919,8 @@
 
 See below for how the function is called and an example |complete-functions|.
 For remarks about specific filetypes see |compl-omni-filetypes|.
+More completion scripts will appear, check www.vim.org.  Currently there is a
+first version for C++.
 
 							*i_CTRL-X_CTRL-O*
 CTRL-X CTRL-O		Guess what kind of item is in front of the cursor and
@@ -1272,32 +1274,21 @@
 
 HTML flavor						*html-flavor*
 
-Default HTML completion depends on filetype. For HTML files it is HTML
-4.01 Transitional (&ft=='html'), for XHTML it is XHTML 1.0 Strict
-(&ft=='xhtml').
+The default HTML completion depends on the filetype.  For HTML files it is
+HTML 4.01 Transitional ('filetype' is "html"), for XHTML it is XHTML 1.0
+Strict ('filetype' is "xhtml").
 
-These are not the only HTML versions. To use another data file and still
-have benefits of custom completion for class, style, etc. attributes set
-b:html_omni_flavor variable. Example (in .vimrc or filetype plugin
-file): >
+When doing completion outside of any other tag you will have possibility to
+choose DOCTYPE and the appropriate data file will be loaded and used for all
+next completions.
 
-	let g:html_omni_flavor = 'xhtml10s'
+More about format of data file in |xml-omni-datafile|. Some of the data files
+may be found on the Vim website (|www|).
 
-(Completion data file for HTML 4.01 Strict is also provided by Vim
-distribution.)
-
-Data for HTML completion will be read from 'autoload/xml/html10s.vim' file
-located somewhere in 'runtimepath'.
-
-Note: HTML completion files are also located in 'autoload/xml'
-directory.
-
-More about format of data file in |xml-omni-datafile|. Some of data
-files may in future be found on vim-online site (|www|).
-
-Note that b:html_omni_flavor may point to file with any XML data.  This
-makes possible to mix PHP (|ft-php-omni|) completion with whatever XML
-dialect (assuming you have data file for it).
+Note that b:html_omni_flavor may point to a file with any XML data.  This
+makes possible to mix PHP (|ft-php-omni|) completion with any XML dialect
+(assuming you have data file for it).  Without setting that variable XHTML 1.0
+Strict will be used.
 
 
 JAVASCRIPT					       *ft-javascript-omni*
@@ -1486,86 +1477,100 @@
 
 XML							*ft-xml-omni*
 
-Vim 7 provides mechanism to context aware completion of XML files.  It depends
-on special |xml-omni-datafile| and two commands: |:XMLns| and |:XMLent|.
-Features are:
+Vim 7 provides a mechanism for context aware completion of XML files.  It
+depends on a special |xml-omni-datafile| and two commands: |:XMLns| and
+|:XMLent|.  Features are:
 
-- after "<" complete tag name depending on context (no div suggest
-  inside of an a tag)
-- inside of tag complete proper attributes (no width attribute for an
-  a tag)
-- when attribute has limited number of possible values help to complete
+- after "<" complete the tag name, depending on context
+- inside of a tag complete proper attributes
+- when an attribute has a limited number of possible values help to complete
   them
-- complete names of entities (defined in |xml-omni-datafile| and in current
-  file with "<!ENTITY" declarations
+- complete names of entities (defined in |xml-omni-datafile| and in the
+  current file with "<!ENTITY" declarations)
 - when used after "</" CTRL-X CTRL-O will close the last opened tag
 
 Format of XML data file					*xml-omni-datafile*
 
-Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim)
+XML data files are stored in the "autoload/xml" directory in 'runtimepath'.
+Vim distribution provides examples of data files in the
+"$VIMRUNTIME/autoload/xml" directory.  They have a meaningful name which will
+be used in commands.  It should be a unique name which will not create
+conflicts.  For example, the name xhtml10s.vim means it is the data file for
+XHTML 1.0 Strict.
 
-XML data files are stored in "autoload/xml" directory in 'runtimepath'.  They
-have meaningful name which will be used in commands. It should be unique name
-which will not create conflicts in future. For example name xhtml10s.vim means
-it is data file for XHTML 1.0 Strict.
+Each file contains a variable with a name like g:xmldata_xhtml10s . It is
+a compound from two parts:
 
-File contains one variable with fixed name: g:xmldata_xhtml10s . It is
-compound from two parts:
-
-1. "g:xmldata_"  general prefix
-2. "xhtml10s"    name of file and name of described XML dialect
+1. "g:xmldata_"  general prefix, constant for all data files
+2. "xhtml10s"    the name of the file and the name of the described XML
+		 dialect; it will be used as an argument for the |:XMLns|
+		 command
 
 Part two must be exactly the same as name of file.
 
-Variable is data structure in form of |Dictionary|. Keys are tag names and
-values are two element |List|. First element of List is also List with names
-of possible children, second element is |Dictionary| with names of attributes
-as keys and possible values of attributes as values. Example: >
+The variable is a |Dictionary|.  Keys are tag names and each value is a two
+element |List|.  The first element of the List is also a List with the names
+of possible children.  The second element is a |Dictionary| with the names of
+attributes as keys and the possible values of attributes as values.  Example: >
 
-    let g:xmldata_crippledhtml = {
-    \ "html":
-    \ [ ["body", "head"], {"id": [], "xmlns": ["http://www.w3.org/1999/xhtml"],
-    \ "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}],
-    \ "script":
-    \ [ [], {"id": [], "charset": [], "type": ["text/javascript"], "src": [],
-    \ "defer": ["BOOL"], "xml:space": ["preserve"]}],
-    \ "meta":
-    \ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme":
-    \ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
-    \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
+    let g:xmldata_crippled = {
+    \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"],
+    \ 'vimxmlroot': ['tag1'],
+    \ 'tag1':
+    \ [ ['childoftag1a', 'childoftag1b'], {'attroftag1a': [],
+    \ 'attroftag1b': ['valueofattr1', 'valueofattr2']}],
+    \ 'childoftag1a':
+    \ [ [], {'attrofchild': ['attrofchild']}],
+    \ 'childoftag1b':
+    \ [ ['childoftag1a'], {'attrofchild': []}],
     \ "vimxmltaginfo": {
-    \ 'meta': ['/>', '']},
-    \ "vimxmlattrinfo": {
-    \ 'http-equiv': ['ContentType', '']}
+    \ 'tag1': ['Menu info', 'Long information visible in preview window']},
+    \ 'vimxmlattrinfo': {
+    \ 'attrofchild': ['Menu info', 'Long information visible in preview window']}}
 
-This example should be put in "autoload/xml/crippledhtml.vim" file.
+This example would be put in the "autoload/xml/crippled.vim" file and could
+help to write this file: >
 
-In example are visible four special elements:
+    <tag1 attroftag1b="valueofattr1">
+        <childoftag1a attrofchild>
+                &amp; &lt;
+        </childoftag1a>
+        <childoftag1b attrofchild="5">
+            <childoftag1a>
+                &gt; &apos; &quot;
+            </childoftag1a>
+        </childoftag1b>
+    </tag1>
 
-1. "vimxmlentities" - special key with List containing entities of this XML
+In the example four special elements are visible:
+
+1. "vimxmlentities" - a special key with List containing entities of this XML
    dialect.
-2. "BOOL" - value of attribute key showing if attribute should be inserted
-   bare ("defer" vs. 'defer="'). It can be the only element of List of
-   attribute values.
-3. "vimxmltaginfo" - special key with dictionary containing as key tag names,
-   as value two element List for additional menu info and long description.
-4. "vimxmlattrinfo" - special key with dictionary containing as key attribute
-   names, as value two element List for additional menu info and long
+2. If the list containing possible values of attributes has one element and
+   this element is equal to the name of the attribute this attribute will be
+   treated as boolean and inserted as 'attrname' and not as 'attrname="'
+3. "vimxmltaginfo" - a special key with a Dictionary containing tag
+   names as keys and two element List as values, for additional menu info and
+   the long description.
+4. "vimxmlattrinfo" - special key with Dictionary containing attribute names
+   as keys and two element List as values, for additional menu info and long
    description.
 
-Note: Tag names in data file MUST not contain namespace description.  Check
-xsl.vim for example.
+Note: Tag names in the data file MUST not contain a namespace description.
+Check xsl.vim for an example.
+Note: All data and functions are publicly available as global
+variables/functions and can be used for personal editing functions.
 
 
 DTD -> Vim							*dtd2vim*
 
-On |www| is script |dtd2vim| which parses DTD and creates XML data file
+On |www| is the script |dtd2vim| which parses DTD and creates an XML data file
 for Vim XML omni completion.
 
     dtd2vim: http://www.vim.org/scripts/script.php?script_id=1462
 
-Check there and beginning of file for details of usage.
-Script requires perl and:
+Check the beginning of that file for usage details.
+The script requires perl and:
 
     perlSGML: http://savannah.nongnu.org/projects/perlsgml
 
@@ -1574,12 +1579,12 @@
 
 :XMLns {name} [{namespace}]					*:XMLns*
 
-Vim has to know which data file should be used and with which namespace. For
-loading of data file and connecting data with prope namespace use |:XMLns|
-command. First (obligatory) argument is name of data (xhtml10s, xsl). Second
-argument is code of namespace (h, xsl). When used without second argument
-dialect will be used as default - without namespace declaration. For example
-to use XML completion in .xsl files: >
+Vim has to know which data file should be used and with which namespace.  For
+loading of the data file and connecting data with the proper namespace use
+|:XMLns| command.  The first (obligatory) argument is the name of the data
+(xhtml10s, xsl).  The second argument is the code of namespace (h, xsl).  When
+used without a second argument the dialect will be used as default - without
+namespace declaration.  For example to use XML completion in .xsl files: >
 
 	:XMLns xhtml10s
 	:XMLns xsl xsl
@@ -1587,35 +1592,34 @@
 
 :XMLent {name}							*:XMLent*
 
-By default entities will be completed from data file of default
-namespace. XMLent command should be used in case when there is no
-default namespace: >
+By default entities will be completed from the data file of the default
+namespace.  The XMLent command should be used in case when there is no default
+namespace: >
 
 	:XMLent xhtml10s
 
 Usage
 
-While used in situation (after declarations from previous part, | is
+While used in this situation (after declarations from previous part, | is
 cursor position): >
 
 	<|
 
-Will complete to appropriate XHTML tag, and in this situation: >
+Will complete to an appropriate XHTML tag, and in this situation: >
 
 	<xsl:|
 
-Will complete to appropriate XSL tag.
+Will complete to an appropriate XSL tag.
 
-File xmlcomplete.vim provides through |autoload| mechanism
-GetLastOpenTag function which can be used in XML files to get name of
-last open tag with (b:unaryTagsStack has to be defined): >
+
+The script xmlcomplete.vim, provided through the |autoload| mechanism,
+has the xmlcomplete#GetLastOpenTag() function which can be used in XML files
+to get the name of the last open tag (b:unaryTagsStack has to be defined): >
 
 	:echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
 
 
 
-
-
 ==============================================================================
 8. Insert mode commands					*inserting*
 
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 23af8b5..34bee74 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.0g.  Last change: 2006 Apr 30
+*map.txt*       For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -157,8 +157,9 @@
 
 1.2 SPECIAL ARGUMENTS					*:map-arguments*
 
-"<buffer>", "<silent>", "<script>", "<expr>" and "<unique>" can be used in any
-order.  They must appear right after the command, before any other arguments.
+"<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can
+be used in any order.  They must appear right after the command, before any
+other arguments.
 
 				*:map-local* *:map-<buffer>* *E224* *E225*
 If the first argument to one of these commands is "<buffer>" it will apply to
@@ -185,6 +186,12 @@
 Using "<silent>" for an abbreviation is possible, but will cause redrawing of
 the command line to fail.
 
+						*:map-<special>* *:map-special*
+Define a mapping with <> notation for special keys, even though the "<" flag
+may appear in 'cpoptions'.  This is useful if the side effect of setting
+'cpoptions' is not desired.  Example: >
+	:map <special> <F12> /Header<CR>
+<
 						*:map-<script>* *:map-script*
 If the first argument to one of these commands is "<script>" and it is used to
 define a new mapping or abbreviation, the mapping will only remap characters
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 271ae87..37e440f 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0g.  Last change: 2006 May 02
+*options.txt*	For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4792,6 +4792,8 @@
 	completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O|
 	See |complete-functions| for an explanation of how the function is
 	invoked and what it should return.
+	This option is usually set by a filetype plugin.
+	|:filetype-plugin-on|
 
 
 						*'operatorfunc'* *'opfunc'*
diff --git a/runtime/doc/tags b/runtime/doc/tags
index f306093..5b6025d 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2273,6 +2273,7 @@
 :map-<expr>	map.txt	/*:map-<expr>*
 :map-<script>	map.txt	/*:map-<script>*
 :map-<silent>	map.txt	/*:map-<silent>*
+:map-<special>	map.txt	/*:map-<special>*
 :map-<unique>	map.txt	/*:map-<unique>*
 :map-alt-keys	map.txt	/*:map-alt-keys*
 :map-arguments	map.txt	/*:map-arguments*
@@ -2283,6 +2284,7 @@
 :map-operator	map.txt	/*:map-operator*
 :map-script	map.txt	/*:map-script*
 :map-silent	map.txt	/*:map-silent*
+:map-special	map.txt	/*:map-special*
 :map-special-chars	map.txt	/*:map-special-chars*
 :map-special-keys	map.txt	/*:map-special-keys*
 :map-undo	map.txt	/*:map-undo*
@@ -2301,10 +2303,12 @@
 :menu	gui.txt	/*:menu*
 :menu-<script>	gui.txt	/*:menu-<script>*
 :menu-<silent>	gui.txt	/*:menu-<silent>*
+:menu-<special>	gui.txt	/*:menu-<special>*
 :menu-disable	gui.txt	/*:menu-disable*
 :menu-enable	gui.txt	/*:menu-enable*
 :menu-script	gui.txt	/*:menu-script*
 :menu-silent	gui.txt	/*:menu-silent*
+:menu-special	gui.txt	/*:menu-special*
 :menut	mlang.txt	/*:menut*
 :menutrans	mlang.txt	/*:menutrans*
 :menutranslate	mlang.txt	/*:menutranslate*
diff --git a/runtime/macmap.vim b/runtime/macmap.vim
index 1717d99..dc76f15 100644
--- a/runtime/macmap.vim
+++ b/runtime/macmap.vim
@@ -4,80 +4,72 @@
 "
 " Define Mac-standard keyboard shortcuts.
 
-" Save and restore compatible mode.
-let s:save_cpo = &cpo
-set cpo&vim
+" We don't change 'cpoptions' here, because it would not be set properly when
+" a .vimrc file is found later.  Thus don't use line continuation and use
+" <special> in mappings.
 
-nnoremap <D-n> :confirm enew<CR>
-vmap <D-n> <Esc><D-n>gv
-imap <D-n> <C-O><D-n>
-cmap <D-n> <C-C><D-n>
-omap <D-n> <Esc><D-n>
+nnoremap <special> <D-n> :confirm enew<CR>
+vmap <special> <D-n> <Esc><D-n>gv
+imap <special> <D-n> <C-O><D-n>
+cmap <special> <D-n> <C-C><D-n>
+omap <special> <D-n> <Esc><D-n>
 
-nnoremap <D-o> :browse confirm e<CR>
-vmap <D-o> <Esc><D-o>gv
-imap <D-o> <C-O><D-o>
-cmap <D-o> <C-C><D-o>
-omap <D-o> <Esc><D-o>
+nnoremap <special> <D-o> :browse confirm e<CR>
+vmap <special> <D-o> <Esc><D-o>gv
+imap <special> <D-o> <C-O><D-o>
+cmap <special> <D-o> <C-C><D-o>
+omap <special> <D-o> <Esc><D-o>
 
-nnoremap <silent> <D-w> :if winheight(2) < 0 <Bar>
-	\   confirm enew <Bar>
-	\ else <Bar>
-	\   confirm close <Bar>
-	\ endif<CR>
-vmap <D-w> <Esc><D-w>gv
-imap <D-w> <C-O><D-w>
-cmap <D-w> <C-C><D-w>
-omap <D-w> <Esc><D-w>
+nnoremap <silent> <special> <D-w> :if winheight(2) < 0 <Bar> confirm enew <Bar> else <Bar> confirm close <Bar> endif<CR>
+vmap <special> <D-w> <Esc><D-w>gv
+imap <special> <D-w> <C-O><D-w>
+cmap <special> <D-w> <C-C><D-w>
+omap <special> <D-w> <Esc><D-w>
 
-nnoremap <silent> <D-s> :if expand("%") == ""<Bar>browse confirm w<Bar>
-	\ else<Bar>confirm w<Bar>endif<CR>
-vmap <D-s> <Esc><D-s>gv
-imap <D-s> <C-O><D-s>
-cmap <D-s> <C-C><D-s>
-omap <D-s> <Esc><D-s>
+nnoremap <silent> <special> <D-s> :if expand("%") == ""<Bar>browse confirm w<Bar> else<Bar>confirm w<Bar>endif<CR>
+vmap <special> <D-s> <Esc><D-s>gv
+imap <special> <D-s> <C-O><D-s>
+cmap <special> <D-s> <C-C><D-s>
+omap <special> <D-s> <Esc><D-s>
 
-nnoremap <D-S-s> :browse confirm saveas<CR>
-vmap <D-S-s> <Esc><D-s>gv
-imap <D-S-s> <C-O><D-s>
-cmap <D-S-s> <C-C><D-s>
-omap <D-S-s> <Esc><D-s>
+nnoremap <special> <D-S-s> :browse confirm saveas<CR>
+vmap <special> <D-S-s> <Esc><D-s>gv
+imap <special> <D-S-s> <C-O><D-s>
+cmap <special> <D-S-s> <C-C><D-s>
+omap <special> <D-S-s> <Esc><D-s>
 
 " From the Edit menu of SimpleText:
-nnoremap <D-z> u
-vmap <D-z> <Esc><D-z>gv
-imap <D-z> <C-O><D-z>
-cmap <D-z> <C-C><D-z>
-omap <D-z> <Esc><D-z>
+nnoremap <special> <D-z> u
+vmap <special> <D-z> <Esc><D-z>gv
+imap <special> <D-z> <C-O><D-z>
+cmap <special> <D-z> <C-C><D-z>
+omap <special> <D-z> <Esc><D-z>
 
-vnoremap <D-x> "+x
+vnoremap <special> <D-x> "+x
 
-vnoremap <D-c> "+y
+vnoremap <special> <D-c> "+y
 
-cnoremap <D-c> <C-Y>
+cnoremap <special> <D-c> <C-Y>
 
-nnoremap <D-v> "+gP
-cnoremap <D-v> <C-R>+
-execute 'vnoremap <script> <D-v>' paste#paste_cmd['v']
-execute 'inoremap <script> <D-v>' paste#paste_cmd['i']
+nnoremap <special> <D-v> "+gP
+cnoremap <special> <D-v> <C-R>+
+execute 'vnoremap <script> <special> <D-v>' paste#paste_cmd['v']
+execute 'inoremap <script> <special> <D-v>' paste#paste_cmd['i']
 
-nnoremap <silent> <D-a> :if &slm != ""<Bar>exe ":norm gggH<C-O>G"<Bar>
-	\ else<Bar>exe ":norm ggVG"<Bar>endif<CR>
-vmap <D-a> <Esc><D-a>
-imap <D-a> <Esc><D-a>
-cmap <D-a> <C-C><D-a>
-omap <D-a> <Esc><D-a>
+nnoremap <silent> <special> <D-a> :if &slm != ""<Bar>exe ":norm gggH<C-O>G"<Bar> else<Bar>exe ":norm ggVG"<Bar>endif<CR>
+vmap <special> <D-a> <Esc><D-a>
+imap <special> <D-a> <Esc><D-a>
+cmap <special> <D-a> <C-C><D-a>
+omap <special> <D-a> <Esc><D-a>
 
-nnoremap <D-f> /
-vmap <D-f> <Esc><D-f>
-imap <D-f> <Esc><D-f>
-cmap <D-f> <C-C><D-f>
-omap <D-f> <Esc><D-f>
+nnoremap <special> <D-f> /
+vmap <special> <D-f> <Esc><D-f>
+imap <special> <D-f> <Esc><D-f>
+cmap <special> <D-f> <C-C><D-f>
+omap <special> <D-f> <Esc><D-f>
 
-nnoremap <D-g> n
-vmap <D-g> <Esc><D-g>
-imap <D-g> <C-O><D-g>
-cmap <D-g> <C-C><D-g>
-omap <D-g> <Esc><D-g>
-
-let &cpo = s:save_cpo
+nnoremap <special> <D-g> n
+vmap <special> <D-g> <Esc><D-g>
+imap <special> <D-g> <C-O><D-g>
+cmap <special> <D-g> <C-C><D-g>
+omap <special> <D-g> <Esc><D-g>
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim
index 6a61ed2..8b63e48 100644
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -1,7 +1,8 @@
 " Vim syntax file
 " Language:	C#
-" Maintainer:	Johannes Zellner <johannes@zellner.org>
-" Last Change:	Mo, 24 Apr 2006 10:11:07 CEST
+" Maintainer:	Anduin Withers <awithers@anduin.com>
+" Former Maintainer:	Johannes Zellner <johannes@zellner.org>
+" Last Change:	Sun Apr 30 19:26:18 PDT 2006
 " Filenames:	*.cs
 " $Id$
 "
@@ -38,11 +39,16 @@
 " TODO:
 syn keyword csUnspecifiedStatement	as base checked event fixed in is lock new operator out params ref sizeof stackalloc this typeof unchecked unsafe using
 " TODO:
-syn keyword csUnsupportedStatement	get set add remove value
+syn keyword csUnsupportedStatement	add remove value
 " TODO:
 syn keyword csUnspecifiedKeyword	explicit implicit
 
 
+" Contextual Keywords
+syn match csContextualStatement	/\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
+syn match csContextualStatement	/\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
+syn match csContextualStatement	/\<\(get\|set\)[[:space:]\n]*{/me=s+3
+syn match csContextualStatement	/\<where\>[^:]\+:/me=s+5
 
 " Comments
 "
@@ -79,8 +85,10 @@
 
 " [1] 9.5 Pre-processing directives
 syn region	csPreCondit
-    \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\|region\|endregion\)"
+    \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)"
     \ skip="\\$" end="$" contains=csComment keepend
+syn region	csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
+    \ end="^\s*#\s*endregion" transparent fold contains=TOP
 
 
 
@@ -115,6 +123,7 @@
 hi def link csUnspecifiedStatement	Statement
 hi def link csUnsupportedStatement	Statement
 hi def link csUnspecifiedKeyword	Keyword
+hi def link csContextualStatement	Statement
 hi def link csOperatorError		Error
 
 hi def link csTodo			Todo
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
index 52873e9..2e38742 100644
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -52,6 +52,9 @@
 syn match   pythonComment	"#.*$" contains=pythonTodo
 syn keyword pythonTodo		TODO FIXME XXX contained
 
+" Decorators (new in Python 2.4)
+syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
+
 " strings
 syn region pythonString		matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape
 syn region pythonString		matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape
@@ -85,6 +88,8 @@
 
 if exists("python_highlight_builtins")
   " builtin functions, types and objects, not really part of the syntax
+  syn keyword pythonBuiltin	True False bool enumerate set frozenset help
+  syn keyword pythonBuiltin	reversed sorted sum
   syn keyword pythonBuiltin	Ellipsis None NotImplemented __import__ abs
   syn keyword pythonBuiltin	apply buffer callable chr classmethod cmp
   syn keyword pythonBuiltin	coerce compile complex delattr dict dir divmod
@@ -110,6 +115,8 @@
   syn keyword pythonException	StandardError StopIteration SyntaxError
   syn keyword pythonException	SyntaxWarning SystemError SystemExit TabError
   syn keyword pythonException	TypeError UnboundLocalError UnicodeError
+  syn keyword pythonException	UnicodeEncodeError UnicodeDecodeError
+  syn keyword pythonException	UnicodeTranslateError
   syn keyword pythonException	UserWarning ValueError Warning WindowsError
   syn keyword pythonException	ZeroDivisionError
 endif
@@ -151,6 +158,7 @@
   HiLink pythonPreCondit	PreCondit
   HiLink pythonComment		Comment
   HiLink pythonTodo		Todo
+  HiLink pythonDecorator	Define
   if exists("python_highlight_numbers")
     HiLink pythonNumber	Number
   endif
diff --git a/runtime/syntax/vrml.vim b/runtime/syntax/vrml.vim
index 651a39b..44814aa 100644
--- a/runtime/syntax/vrml.vim
+++ b/runtime/syntax/vrml.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:	   VRML97
 " Modified from:   VRML 1.0C by David Brown <dbrown@cgs.c4.gmeds.com>
-" Maintainer:	   Gregory Seidman <gseidman@acm.org>
-" URL:		   http://www.cs.brown.edu/~gss/vim/syntax/vrml.vim
-" Last change:	   2003 May 11
+" Maintainer:	   vacancy!
+" Former Maintainer:    Gregory Seidman <gsslist+vim@anthropohedron.net>
+" Last change:	   2006 May 03
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -195,7 +195,7 @@
 if version >= 600
 "FOLDS!
   syn sync fromstart
-  setlocal foldmethod=syntax
+  "setlocal foldmethod=syntax
   syn region braceFold start="{" end="}" transparent fold contains=TOP
   syn region bracketFold start="\[" end="]" transparent fold contains=TOP
   syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ fold contains=VRMLSpecial,VRMLjScriptString
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 5891f83..368d65c 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4999,7 +4999,7 @@
     char_u	*rep_buf = NULL;
     garray_T	*gap;
 
-    replace_termcodes(rep, &rep_buf, FALSE, FALSE);
+    replace_termcodes(rep, &rep_buf, FALSE, FALSE, FALSE);
     if (rep_buf == NULL)
     {
 	/* Can't replace termcodes - try using the string as is */
@@ -9855,29 +9855,12 @@
 	    return FAIL;
 
 	/*
-	 * Wipe out an empty unnamed buffer we started in.
-	 */
-	if (put_line(fd, "if exists('s:wipebuf')") == FAIL)
-	    return FAIL;
-	if (put_line(fd, "  exe 'bwipe ' . s:wipebuf") == FAIL)
-	    return FAIL;
-	if (put_line(fd, "endif") == FAIL)
-	    return FAIL;
-	if (put_line(fd, "unlet! s:wipebuf") == FAIL)
-	    return FAIL;
-
-	/*
 	 * Restore window sizes again after jumping around in windows, because
 	 * the current window has a minimum size while others may not.
 	 */
 	if (nr > 1 && ses_winsizes(fd, restore_size) == FAIL)
 	    return FAIL;
 
-	/* Re-apply 'winheight', 'winwidth' and 'shortmess'. */
-	if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
-			       p_wh, p_wiw, p_shm) < 0 || put_eol(fd) == FAIL)
-	    return FAIL;
-
 	/* Don't continue in another tab page when doing only the current one
 	 * or when at the last tab page. */
 	if (!(ssop_flags & SSOP_TABPAGES) || curtab->tp_next == NULL)
@@ -9893,6 +9876,22 @@
 	    return FAIL;
     }
 
+    /*
+     * Wipe out an empty unnamed buffer we started in.
+     */
+    if (put_line(fd, "if exists('s:wipebuf')") == FAIL)
+	return FAIL;
+    if (put_line(fd, "  exe 'bwipe ' . s:wipebuf") == FAIL)
+	return FAIL;
+    if (put_line(fd, "endif") == FAIL)
+	return FAIL;
+    if (put_line(fd, "unlet! s:wipebuf") == FAIL)
+	return FAIL;
+
+    /* Re-apply 'winheight', 'winwidth' and 'shortmess'. */
+    if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
+			       p_wh, p_wiw, p_shm) < 0 || put_eol(fd) == FAIL)
+	return FAIL;
 
     /*
      * Lastly, execute the x.vim file if it exists.
diff --git a/src/getchar.c b/src/getchar.c
index 88e724f..7d2cfd7 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3034,6 +3034,7 @@
     mapblock_T	**map_table;
     int		unique = FALSE;
     int		silent = FALSE;
+    int		special = FALSE;
 #ifdef FEAT_EVAL
     int		expr = FALSE;
 #endif
@@ -3075,6 +3076,16 @@
 	    continue;
 	}
 
+	/*
+	 * Check for "<special>": accept special keys in <>
+	 */
+	if (STRNCMP(keys, "<special>", 9) == 0)
+	{
+	    keys = skipwhite(keys + 9);
+	    special = TRUE;
+	    continue;
+	}
+
 #ifdef FEAT_EVAL
 	/*
 	 * Check for "<script>": remap script-local mappings only
@@ -3147,13 +3158,13 @@
      * replace_termcodes() also removes CTRL-Vs and sometimes backslashes.
      */
     if (haskey)
-	keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE);
+	keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special);
     if (hasarg)
     {
 	if (STRICMP(rhs, "<nop>") == 0)	    /* "<Nop>" means nothing */
 	    rhs = (char_u *)"";
 	else
-	    rhs = replace_termcodes(rhs, &arg_buf, FALSE, TRUE);
+	    rhs = replace_termcodes(rhs, &arg_buf, FALSE, TRUE, special);
     }
 
 #ifdef FEAT_FKMAP
@@ -3819,7 +3830,7 @@
     char_u	*buf;
     int		retval;
 
-    rhs = replace_termcodes(str, &buf, FALSE, TRUE);
+    rhs = replace_termcodes(str, &buf, FALSE, TRUE, FALSE);
 
     if (vim_strchr(modechars, 'n') != NULL)
 	mode |= NORMAL;
diff --git a/src/gui.c b/src/gui.c
index 0c90539..3a07cf1 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4544,6 +4544,12 @@
 	if (wp == curwin || wp == NULL)
 	    return;	/* still in the same old window, or none at all */
 
+#ifdef FEAT_WINDOWS
+	/* Ignore position in the tab pages line. */
+	if (Y_2_ROW(y) < tabline_height())
+	    return;
+#endif
+
 	/*
 	 * format a mouse click on status line input
 	 * ala gui_send_mouse_event(0, x, y, 0, 0);
@@ -4597,7 +4603,11 @@
     /* Don't move the mouse when it's left or right of the Vim window */
     if (x < 0 || x > Columns * gui.char_width)
 	return;
+# ifdef FEAT_WINDOWS
+    if (Y_2_ROW(y) >= tabline_height())
+# else
     if (y >= 0)
+# endif
 	wp = xy2win(x, y);
     if (wp != curwin && wp != NULL)	/* If in other than current window */
     {
diff --git a/src/if_ole.cpp b/src/if_ole.cpp
index 59c786a..45ee335 100644
--- a/src/if_ole.cpp
+++ b/src/if_ole.cpp
@@ -314,7 +314,7 @@
     }
 
     /* Translate key codes like <Esc> */
-    str = replace_termcodes((char_u *)buffer, &ptr, FALSE, TRUE);
+    str = replace_termcodes((char_u *)buffer, &ptr, FALSE, TRUE, FALSE);
 
     /* If ptr was set, then a new buffer was allocated,
      * so we can free the old one.
diff --git a/src/option.c b/src/option.c
index 8d5dcac..1234bac 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6420,7 +6420,7 @@
     {
 	if (*p_pt)
 	{
-	    (void)replace_termcodes(p_pt, &p, TRUE, TRUE);
+	    (void)replace_termcodes(p_pt, &p, TRUE, TRUE, FALSE);
 	    if (p != NULL)
 	    {
 		if (new_value_alloced)
diff --git a/src/proto/term.pro b/src/proto/term.pro
index 7b53749..9ce594e 100644
--- a/src/proto/term.pro
+++ b/src/proto/term.pro
@@ -51,7 +51,7 @@
 extern void del_termcode __ARGS((char_u *name));
 extern void set_mouse_topline __ARGS((win_T *wp));
 extern int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
-extern char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt));
+extern char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
 extern int find_term_bykeys __ARGS((char_u *src));
 extern void show_termcodes __ARGS((void));
 extern int show_one_termcode __ARGS((char_u *name, char_u *code, int printit));
diff --git a/src/quickfix.c b/src/quickfix.c
index 4f5fe24..19e03c4 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -118,6 +118,7 @@
 static void	qf_clean_dir_stack __ARGS((struct dir_stack_T **));
 #ifdef FEAT_WINDOWS
 static int	qf_win_pos_update __ARGS((qf_info_T *qi, int old_qf_index));
+static int	is_qf_win __ARGS((win_T *win, qf_info_T *qi));
 static win_T	*qf_find_win __ARGS((qf_info_T *qi));
 static buf_T	*qf_find_buf __ARGS((qf_info_T *qi));
 static void	qf_update_buffer __ARGS((qf_info_T *qi));
@@ -2199,6 +2200,7 @@
     int		height;
     win_T	*win;
     tabpage_T	*prevtab = curtab;
+    buf_T	*qf_buf;
 
     if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
     {
@@ -2231,6 +2233,8 @@
 	win_goto(win);
     else
     {
+	qf_buf = qf_find_buf(qi);
+
 	/* The current window becomes the previous window afterwards. */
 	win = curwin;
 
@@ -2256,13 +2260,21 @@
 	    win->w_llist->qf_refcount++;
 	}
 
-	(void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
-	/* switch off 'swapfile' */
-	set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
-	set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+	if (qf_buf != NULL)
+	    /* Use the existing quickfix buffer */
+	    (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
+						     ECMD_HIDE + ECMD_OLDBUF);
+	else
+	{
+	    /* Create a new quickfix buffer */
+	    (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
+	    /* switch off 'swapfile' */
+	    set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+	    set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
 								   OPT_LOCAL);
-	set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
-	set_option_value((char_u *)"diff", 0L, (char_u *)"", OPT_LOCAL);
+	    set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
+	    set_option_value((char_u *)"diff", 0L, (char_u *)"", OPT_LOCAL);
+	}
 
 	/* Only set the height when still in the same tab page and there is no
 	 * window to the side. */
@@ -2352,7 +2364,31 @@
 }
 
 /*
+ * Check whether the given window is displaying the specified quickfix/location
+ * list buffer
+ */
+    static int
+is_qf_win(win, qi)
+    win_T	*win;
+    qf_info_T	*qi;
+{
+    /*
+     * A window displaying the quickfix buffer will have the w_llist_ref field
+     * set to NULL.
+     * A window displaying a location list buffer will have the w_llist_ref
+     * pointing to the location list.
+     */
+    if (bt_quickfix(win->w_buffer))
+	if ((qi == &ql_info && win->w_llist_ref == NULL)
+		|| (qi != &ql_info && win->w_llist_ref == qi))
+	    return TRUE;
+
+    return FALSE;
+}
+
+/*
  * Find a window displaying the quickfix/location list 'qi'
+ * Searches in only the windows opened in the current tab.
  */
     static win_T *
 qf_find_win(qi)
@@ -2360,33 +2396,29 @@
 {
     win_T	*win;
 
-    /*
-     * When searching for the quickfix buffer, find a window
-     * with w_llist_ref set to NULL.
-     * When searching for the location list buffer, find a window
-     * with w_llist_ref pointing to the supplied location list.
-     */
     FOR_ALL_WINDOWS(win)
-	if (bt_quickfix(win->w_buffer))
-	    if ((qi == &ql_info && win->w_llist_ref == NULL)
-		|| (qi != &ql_info && win->w_llist_ref == qi))
-		break;
+	if (is_qf_win(win, qi))
+	    break;
 
     return win;
 }
 
 /*
- * Find quickfix buffer.
+ * Find a quickfix buffer.
+ * Searches in windows opened in all the tabs.
  */
     static buf_T *
 qf_find_buf(qi)
     qf_info_T	*qi;
 {
+    tabpage_T	*tp;
     win_T	*win;
 
-    win = qf_find_win(qi);
+    FOR_ALL_TAB_WINDOWS(tp, win)
+	if (is_qf_win(win, qi))
+	    return win->w_buffer;
 
-    return (win != NULL) ? win->w_buffer: NULL;
+    return NULL;
 }
 
 /*
diff --git a/src/spell.c b/src/spell.c
index 5e37500..757efc6 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -7031,7 +7031,7 @@
 	    continue;	/* empty or blank line */
 	rline[l] = NUL;
 
-	/* Convert from "=encoding={encoding}" to 'encoding' when needed. */
+	/* Convert from "/encoding={encoding}" to 'encoding' when needed. */
 	vim_free(pc);
 #ifdef FEAT_MBYTE
 	if (spin->si_conv.vc_type != CONV_NONE)
@@ -7069,7 +7069,7 @@
 		    char_u	*enc;
 
 		    /* Setup for conversion to 'encoding'. */
-		    line += 10;
+		    line += 9;
 		    enc = enc_canonize(line);
 		    if (enc != NULL && !spin->si_ascii
 			    && convert_setup(&spin->si_conv, enc,
diff --git a/src/term.c b/src/term.c
index 99dc1b0..7597c93 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4945,12 +4945,13 @@
  * nothing).  When 'cpoptions' does not contain 'B', a backslash can be used
  * instead of a CTRL-V.
  */
-    char_u  *
-replace_termcodes(from, bufp, from_part, do_lt)
+    char_u *
+replace_termcodes(from, bufp, from_part, do_lt, special)
     char_u	*from;
     char_u	**bufp;
     int		from_part;
     int		do_lt;		/* also translate <lt> */
+    int		special;	/* always accept <key> notation */
 {
     int		i;
     int		slen;
@@ -4963,7 +4964,7 @@
     char_u	*result;	/* buffer for resulting string */
 
     do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
-    do_special = (vim_strchr(p_cpo, CPO_SPECI) == NULL);
+    do_special = (vim_strchr(p_cpo, CPO_SPECI) == NULL) || special;
     do_key_code = (vim_strchr(p_cpo, CPO_KEYCODE) == NULL);
 
     /*
diff --git a/src/version.h b/src/version.h
index d37c326..f1c2dc5 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70g"
 #define VIM_VERSION_SHORT	"7.0g"
-#define VIM_VERSION_MEDIUM	"7.0g-01 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g01 BETA (2006 May 2)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g01 BETA (2006 May 2, compiled "
+#define VIM_VERSION_MEDIUM	"7.0g02 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g02 BETA (2006 May 3)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g02 BETA (2006 May 3, compiled "
diff --git a/src/window.c b/src/window.c
index 09c638e..cbcdd4e 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5195,6 +5195,7 @@
     int		sline, line_size;
     int		space;
     int		did_below = FALSE;
+    int		old_height = wp->w_height;
 #define FRACTION_MULT	16384L
 
     /* Don't want a negative height.  Happens when splitting a tiny window.
@@ -5238,9 +5239,15 @@
 	}
 	else
 	{
-	    space = height;
+	    space = height - 1;
+
 	    while (lnum > 1)
 	    {
+		/* When using "~" lines stop when at the old topline, don't
+		 * scroll down. */
+		if (did_below && height < old_height && lnum <= wp->w_topline)
+		    sline = 0;
+
 		space -= line_size;
 		if (space > 0 && sline <= 0 && !did_below)
 		{
