diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim
index 2d5e0ee..5296038 100644
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 24
+" Last Change:	2006 May 03
 
 
 " This function is used for the 'omnifunc' option.
@@ -379,7 +379,9 @@
     endif
 
     " Recognize "struct foobar" and "union foobar".
-    if (tokens[tidx] == 'struct' || tokens[tidx] == 'union') && tidx + 1 < len(tokens)
+    " Also do "class foobar" when it's C++ after all (doesn't work very well
+    " though).
+    if (tokens[tidx] == 'struct' || tokens[tidx] == 'union' || tokens[tidx] == 'class') && tidx + 1 < len(tokens)
       let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all)
       break
     endif
@@ -421,7 +423,7 @@
       if ei > 1
 	let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<')
 	if len(cmdtokens) > 1
-	  if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union'
+	  if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union' || cmdtokens[0] == 'class'
 	    let name = ''
 	    " Use the first identifier after the "struct" or "union"
 	    for ti in range(len(cmdtokens) - 1)
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index b628e6e..7488920 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0g.  Last change: 2006 May 02
+*todo.txt*      For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,24 +30,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Session file can contain:
-    args version.c main.c
-    edit version.c
-Can that be avoided?
-
-With 'mousefocus' set and using text tabline don't select first window.
-
-The Hungarian spell file uses different FOL/UPP/LOW items than other spell
-files with the same encoding, that causes problem when changing 'spelllang'.
-Clear character table when switching it?  Adjust Hungarian?
-
-Quickfix windows in different tabs should use same buffer, there is only one
-quickfix list.
-
-let exists() not ignore trailing text?
-
-Include new Python syntax file? (dharana)
-
 indent/html.vim doesn't restore 'ignorecase' and 'cpo'.
 
 
@@ -1116,6 +1098,9 @@
 
 
 Spell checking:
+-   The Hungarian spell file uses four extra characters in the FOL/UPP/LOW
+    items than other spell files with the ISO-8859-2 encoding, that causes
+    problem when changing 'spelllang'.  There is no obvious way to fix this.
 -   Considering Hunspell 1.1.4:
     What does MAXNGRAMSUGS do?
     Is COMPLEXPREFIXES necessary when we have flags for affixes?
@@ -1226,6 +1211,11 @@
     smoother?
 -   When creating a session, also store folds for buffers in the buffer list,
     using the wininfo in wi_folds.
+-   When currently editing the first file in the argument list the session
+    file can contain:
+	args version.c main.c
+	edit version.c
+    Can editing version.c twice be avoided?
 -   'foldmethod' "textobject": fold on sections and paragraph text objects.
 -   Add 'hidecomment' option: don't display comments in /* */ and after //.
     Or is the conceal patch from Vince Negri a more generic solution?
@@ -2108,6 +2098,8 @@
 
 Insert mode completion/expansion:
 -   GUI implementation of the popup menu.
+7   When searching in other files the name flash by, too fast to read.  Only
+    display a name every second or so, like with ":vimgrep".
 8   When there is no word before the cursor but something like "sys." complete
     with "sys.".  Works well for C and similar languages.
 9   ^X^L completion doesn't repeat correctly.  It uses the first match with
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 1f6acee..9b1f138 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0g.  Last change: 2006 May 02
+*version7.txt*  For Vim version 7.0g.  Last change: 2006 May 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2865,5 +2865,28 @@
 When setting the Vim window height with -geometry the 'window' option could be
 at a value that makes CTRL-F behave differently.
 
+When opening a quickfix window in two tabs they used different buffers,
+causing redrawing problems later.  Now use the same buffer for all quickfix
+windows. (Yegappan Lakshmanan)
+
+When 'mousefocus' is set moving the mouse to the text tab pages line would
+move focus to the first window.  Also, the mouse pointer would jump to the
+active window.
+
+In a session file, when an empty buffer is wiped out, do this silently.
+
+When one window has the cursor on the last line and another window is resized
+to make that window smaller, the cursor line could go below the displayed
+lines.  In win_new_height() subtract one from the available space.
+Also avoid that using "~" lines makes the window scroll down.
+
+Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the
+'cpo' option isn't set properly, because it was already set and restored.
+Added the <special> argument to ":map", so that 'cpo' doesn't need to be
+changed to be able to use <> notation.  Also do this for ":menu" for
+consistency.
+
+When using "/encoding=abc" in a spell word list, only "bc" was used.
+
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/main.c b/src/main.c
index 276547b..2a90cc3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3606,11 +3606,11 @@
      *    B set - backslashes are *not* treated specially
      *    k set - keycodes are *not* reverse-engineered
      *    < unset - <Key> sequences *are* interpreted
-     *  The last parameter of replace_termcodes() is TRUE so that the <lt>
-     *  sequence is recognised - needed for a real backslash.
+     *  The last but one parameter of replace_termcodes() is TRUE so that the
+     *  <lt> sequence is recognised - needed for a real backslash.
      */
     p_cpo = (char_u *)"Bk";
-    str = replace_termcodes((char_u *)str, &ptr, FALSE, TRUE);
+    str = replace_termcodes((char_u *)str, &ptr, FALSE, TRUE, FALSE);
     p_cpo = cpo_save;
 
     if (*ptr != NUL)	/* trailing CTRL-V results in nothing */
diff --git a/src/menu.c b/src/menu.c
index dac4754..96a535f 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -91,6 +91,7 @@
     char_u	*map_to;
     int		noremap;
     int		silent = FALSE;
+    int		special = FALSE;
     int		unmenu;
     char_u	*map_buf;
     char_u	*arg;
@@ -131,6 +132,12 @@
 	    arg = skipwhite(arg + 8);
 	    continue;
 	}
+	if (STRNCMP(arg, "<special>", 9) == 0)
+	{
+	    special = TRUE;
+	    arg = skipwhite(arg + 9);
+	    continue;
+	}
 	break;
     }
 
@@ -390,7 +397,7 @@
 	else if (modes & MENU_TIP_MODE)
 	    map_buf = NULL;	/* Menu tips are plain text. */
 	else
-	    map_to = replace_termcodes(map_to, &map_buf, FALSE, TRUE);
+	    map_to = replace_termcodes(map_to, &map_buf, FALSE, TRUE, special);
 	menuarg.modes = modes;
 #ifdef FEAT_TOOLBAR
 	menuarg.iconfile = icon;
