diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 2e56ccb..63461ee 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0aa.  Last change: 2004 May 08
+*change.txt*    For Vim version 7.0aa.  Last change: 2004 Jun 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -963,8 +963,9 @@
 1. Unnamed register ""				*quote_quote* *quotequote*
 Vim fills this register with text deleted with the "d", "c", "s", "x" commands
 or copied with the yank "y" command, regardless of whether or not a specific
-register was used (e.g.  "xdd).  An exception is the '_' register: "_dd does
-not store the deleted text in any register.  Vim uses the contents of this
+register was used (e.g.  "xdd).  This is like the unnamed register is pointing
+to the last used register.  An exception is the '_' register: "_dd does not
+store the deleted text in any register.  Vim uses the contents of this
 register for any put command (p or P) which does not specify a register.
 Additionally you can access it with the name '"'.  This means you have to type
 two double quotes.  Writing to the "" register writes to register "0.
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index e25c34a..827f780 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 7.0aa.  Last change: 2004 Apr 28
+*editing.txt*   For Vim version 7.0aa.  Last change: 2004 Jun 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -338,6 +338,7 @@
 backticks must be around the whole item.  It is not possible to have text
 directly before the first or just after the last backtick.
 
+							*`=*
 You can have the backticks expanded as a Vim expression, instead of
 an external command, by using the syntax `={expr}` e.g. >
 	:let foo='bar'
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index cbe1237..00f5474 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt*      For Vim version 7.0aa.  Last change: 2004 May 20
+*fold.txt*      For Vim version 7.0aa.  Last change: 2004 Jun 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -564,7 +564,7 @@
 deletes the whole closed fold under the cursor.
 
 For Ex commands the range is adjusted to always start at the first line of a
-fold and end at the last line of a fold.  Thus this command: >
+closed fold and end at the last line of a closed fold.  Thus this command: >
 	:s/foo/bar/g
 when used with the cursor on a closed fold, will replace "foo" with "bar" in
 all lines of the fold.
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index 430a3eb..2e59cc0 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.0aa.  Last change: 2004 Jun 02
+*gui.txt*       For Vim version 7.0aa.  Last change: 2004 Jun 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -932,6 +932,22 @@
 	else
 	   echo "Boring old console"
 	endif
+<							*setting-guifont*
+- When you use the same vimrc file on various systems, you can use something
+  like this to set options specifically for each type of GUI: >
+
+	if has("gui_running")
+	    if has("gui_gtk2")
+		:set guifont=Luxi\ Mono\ 12
+	    elseif has("gui_kde")
+		:set guifont=Luxi\ Mono/12/-1/5/50/0/0/0/1/0
+	    elseif has("x11")
+		" Also for GTK 1
+		:set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-*
+	    elseif has("gui_win32")
+		:set guifont=Luxi_Mono:h12:cANSI
+	    endif
+	endif
 
 ==============================================================================
 7. Shell Commands					*gui-shell*
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 5dfb582..0d48e98 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 08
+*options.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2795,31 +2795,42 @@
 	the font cannot be found you will get an error message.  To try other
 	font names a list can be specified, font names separated with commas.
 	The first valid font is used.
+
 	When 'guifontset' is not empty, 'guifont' is not used.
+
 	Spaces after a comma are ignored.  To include a comma in a font name
 	precede it with a backslash.  Setting an option requires an extra
 	backslash before a space and a backslash.  See also
 	|option-backslash|.  For example: >
 	    :set guifont=Screen15,\ 7x13,font\\,with\\,commas
-<	will make vim try to use the font "Screen15" first, and if it fails it
+<	will make Vim try to use the font "Screen15" first, and if it fails it
 	will try to use "7x13" and then "font,with,commas" instead.
+
+	If none of the fonts can be loaded, Vim will keep the current setting.
+	If an empty font list is given, Vim will try using other resource
+	settings (for X, it will use the Vim.font resource), and finally it
+	will try some builtin default which should always be there ("7x13" in
+	the case of X).  The font names given should be "normal" fonts.  Vim
+	will try to find the related bold and italic fonts.
+
+	For Win32, GTK and Photon only: >
+	    :set guifont=*
+<	will bring up a font requester, where you can pick the font you want.
+
+	The font name depends on the GUI used.  See |setting-guifont| for a
+	way to set 'guifont' for various systems.
+
 	For the GTK+ 2 GUI the font name looks like this: >
 	    :set guifont=Andale\ Mono\ 11
 <	That's all.  XLFDs are no longer accepted.
 								*E236*
 	Note that the fonts must be mono-spaced (all characters have the same
-	width).
+	width).  An exception is GTK 2: all fonts are accepted, but
+	mono-spaced fonts look best.
+
 	To preview a font on X11, you might be able to use the "xfontsel"
 	program.  The "xlsfonts" program gives a list of all available fonts.
-	For Win32, GTK and Photon only: >
-	    :set guifont=*
-<	will bring up a font requester, where you can pick the font you want.
-	If none of the fonts can be loaded, vim will keep the current setting.
-	If an empty font list is given, vim will try using other resource
-	settings (for X, it will use the Vim.font resource), and finally it
-	will try some builtin default which should always be there ("7x13" in
-	the case of X).  The font names given should be "normal" fonts.  Vim
-	will try to find the related bold and italic fonts.
+
 	For the Win32 GUI					*E244* *E245*
 	- takes these options in the font name:
 		hXX - height is XX (points, can be floating-point)
@@ -2913,7 +2924,7 @@
 			global
 			{not in Vi}
 			{only available when compiled with GUI enabled}
-	This option only has an effect in the GUI version of vim.  It is a
+	This option only has an effect in the GUI version of Vim.  It is a
 	sequence of letters which describes what components and options of the
 	GUI should be used.
 	To avoid problems with flags that are added in the future, use the
@@ -4484,10 +4495,11 @@
 	    system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice)
 		. ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error
 <
-	On MS-Windows machines the default is to copy the file to the
-	currently specified printdevice: >
+	On MS-Dos, MS-Windows and OS/2 machines the default is to copy the
+	file to the currently specified printdevice: >
 
-	    system('copy' . ' ' . v:fname_in . ' "' . &printdevice . '"')
+	    system('copy' . ' ' . v:fname_in . (&printdevice == ''
+			? ' LPT1:' : (' \"' . &printdevice . '\"')))
 			. delete(v:fname_in)
 <
 	On VMS machines the default is to send the file to either the default
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 160bcb9..f9e1301 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0aa.  Last change: 2004 May 28
+*starting.txt*  For Vim version 7.0aa.  Last change: 2004 Jun 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1019,6 +1019,11 @@
 To change it later, use a ":let" command like this: >
 	:let $VIMRUNTIME = "/home/piet/vim/vim54"
 
+In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that
+greps in the help files) you might be able to use this: >
+
+	VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' `
+
 ==============================================================================
 6. Suspending						*suspend*
 
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index db32235..5bd9723 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 09
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1348,7 +1348,7 @@
 original one and then adds the code to highlight functions.
 
 In java 1.1 the functions System.out.println() and System.err.println() should
-only be used for debugging. Therefor it is possible to highlight debugging
+only be used for debugging.  Therefore it is possible to highlight debugging
 statements differently. To do this you must add the following definition in
 your startup file: >
 	:let java_highlight_debug=1
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 9a77ade..25f0a20 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3844,6 +3844,7 @@
 `.	motion.txt	/*`.*
 `0	motion.txt	/*`0*
 `<	motion.txt	/*`<*
+`=	editing.txt	/*`=*
 `>	motion.txt	/*`>*
 `A	motion.txt	/*`A*
 `[	motion.txt	/*`[*
@@ -4018,6 +4019,7 @@
 bufwinnr()	eval.txt	/*bufwinnr()*
 bug-fixes-5	version5.txt	/*bug-fixes-5*
 bug-fixes-6	version6.txt	/*bug-fixes-6*
+bug-fixes-7	version7.txt	/*bug-fixes-7*
 bug-reports	intro.txt	/*bug-reports*
 bugreport.vim	intro.txt	/*bugreport.vim*
 bugs	intro.txt	/*bugs*
@@ -4166,6 +4168,7 @@
 compatible-default	starting.txt	/*compatible-default*
 compile-changes-5	version5.txt	/*compile-changes-5*
 compile-changes-6	version6.txt	/*compile-changes-6*
+compile-changes-7	version7.txt	/*compile-changes-7*
 compiler-manx	quickfix.txt	/*compiler-manx*
 compiler-pyunit	quickfix.txt	/*compiler-pyunit*
 compiler-select	quickfix.txt	/*compiler-select*
@@ -5056,12 +5059,14 @@
 improved-viminfo	version5.txt	/*improved-viminfo*
 improvements-5	version5.txt	/*improvements-5*
 improvements-6	version6.txt	/*improvements-6*
+improvements-7	version7.txt	/*improvements-7*
 inactive-buffer	windows.txt	/*inactive-buffer*
 include-search	tagsrch.txt	/*include-search*
 inclusive	motion.txt	/*inclusive*
 incomp-small-6	version6.txt	/*incomp-small-6*
 incompatible-5	version5.txt	/*incompatible-5*
 incompatible-6	version6.txt	/*incompatible-6*
+incompatible-7	version7.txt	/*incompatible-7*
 indent()	eval.txt	/*indent()*
 indent-expression	indent.txt	/*indent-expression*
 indent.txt	indent.txt	/*indent.txt*
@@ -5378,6 +5383,7 @@
 network	pi_netrw.txt	/*network*
 new-5	version5.txt	/*new-5*
 new-6	version6.txt	/*new-6*
+new-7	version7.txt	/*new-7*
 new-GTK-GUI	version5.txt	/*new-GTK-GUI*
 new-Select-mode	version5.txt	/*new-Select-mode*
 new-View	version6.txt	/*new-View*
@@ -5387,6 +5393,7 @@
 new-color-schemes	version6.txt	/*new-color-schemes*
 new-commands	version5.txt	/*new-commands*
 new-commands-5.4	version5.txt	/*new-commands-5.4*
+new-data-types	version7.txt	/*new-data-types*
 new-debug-itf	version6.txt	/*new-debug-itf*
 new-debug-mode	version6.txt	/*new-debug-mode*
 new-diff-mode	version6.txt	/*new-diff-mode*
@@ -5405,6 +5412,7 @@
 new-highlighting	version5.txt	/*new-highlighting*
 new-indent-flex	version6.txt	/*new-indent-flex*
 new-items-6	version6.txt	/*new-items-6*
+new-items-7	version7.txt	/*new-items-7*
 new-line-continuation	version5.txt	/*new-line-continuation*
 new-multi-byte	version5.txt	/*new-multi-byte*
 new-multi-lang	version6.txt	/*new-multi-lang*
@@ -5794,6 +5802,7 @@
 setcmdpos()	eval.txt	/*setcmdpos()*
 setline()	eval.txt	/*setline()*
 setreg()	eval.txt	/*setreg()*
+setting-guifont	gui.txt	/*setting-guifont*
 setwinvar()	eval.txt	/*setwinvar()*
 sftp	pi_netrw.txt	/*sftp*
 sgml-syntax	syntax.txt	/*sgml-syntax*
@@ -6387,6 +6396,7 @@
 version4.txt	version4.txt	/*version4.txt*
 version5.txt	version5.txt	/*version5.txt*
 version6.txt	version6.txt	/*version6.txt*
+version7.txt	version7.txt	/*version7.txt*
 vi-differences	vi_diff.txt	/*vi-differences*
 vi:	options.txt	/*vi:*
 vi_diff.txt	vi_diff.txt	/*vi_diff.txt*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index c8b9576..00d94c1 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jun 13
+*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jun 16
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,22 +30,241 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-GTK2: font dialog uses font size zero when 'guifont' is "Courier".  Patch from
-Yasuhiro Matsumoto, 2004 June 8.
+This example doesn't work:
+    :e `=foo . ".c" `
+Inside `` don't use " as the start of a comment.
+Also don't expand % or #.
 
-Python indent: # aser: still adds extra indent.
+Corrections for docs from A3.  Skip ones already done.
 
 
 For version 7.0:
 -   Include many PATCHES:
+    9   Win32 GuI: The print dialog uses a font which doesn't display multi-byte
+	messages.  Include patch from Vipin Aravind?  Update from Yasuhiro
+	Matsumoto.
+    8   ":winpos" doesn't work.  Patch from Vipin Aravind.
+    8   Add GTK 2.3 file dialog support.  Patch by Grahame Bowland, 2004 Mar 15,
+	but it doesn't use "initdir" or "dflt". (will update patch)
+    8   On Sinix SYS_NMLN isn't defined.  Include patch from Cristiano De
+	Michele.  He no longer has such a machine.
+    8   Add file locking.  Lock a file when starting to edit it with flock() or
+	fcntl().  This patch has advisory file locking while reading/writing
+	the file: ~/vim/patches/kahn_file_locking .
+	Do we still want this/
+    8   Add buffer-local autocommands?  Reduces overhead for autocommands that
+	trigger often (inserting a character, switching mode).
+	    :au Event <buffer> do-something
+	E.g.:
+	    :au BufEnter <buffer> menu enable ...
+	    :au BufLeave <buffer> menu disable ...
+	Patch from Yakov Lerner, including test (2004 Jan 7).
+        He'll send updated patch.
+    Autocommands:
+	VimResized	    - When the Vim window has been resized (SIGWINCH)
+	  patch from Yakov Lerner, 2003 July 24.
+	  He'll write documentation and send updated patch.
     -   Include the kvim patch. http://freenux.org/vim/ (Mickael Marchand)
 	Do not add Qtopia yet, it doesn't work very well.
+	Mickael will update the patch before 21st.
+    --- responses above
+    7   Make "5dd" on last-but-one-line not delete anything (Vi compatible).
+	Add flag in 'cpoptions' for this.  When not present, "2dd" in the last
+	line should delete the last line.  Patch from greenx 2002 Apr 11.
+    8   Accelerators don't work in a dialog.  Include patch from Martin Dalecki
+	(Jan 3, tested by David Harrison).  Should work with Alt-o then.
+    7   Use accelerators for the Motif file selection dialog.  Patch from
+	Martin Dalecki 2002 Jan 11.
+    8   Add a few more command names to the menus.  Patch from Jiri Brezina
+	(28 feb 2002).
+    8   Patch to add 'transparency' option.  Disadvantage: it's slow. (Eckehard
+	Berns, 2004 May 9) http://ecki.to/vim-icns/TransBack.diff
+    8   Patches from "Rain Dog" Cucka:
+	- guifont selector (2002 Dec 15)
+	- scrollbar (2002 Dec 8)
+	- Quartz fonts (2002 Dec 8)
+    7   ATTENTION dialog choices are more logical when "Delete it' appears
+	before "Quit".  Patch by Robert Webb, 2004 May 3.
+    8   Unix: When libcall() fails there is no clear error message.  Johannes
+	Zellner has a patch for this.
+    8   ":hardcopy":
+	- Patch to append CTRL-D to PostScript output (Mike Williams, 2004 Jun
+	  14)
+	- support printing multi-byte characters.  Patch from Motonobu
+	  Ichimura.  New (better) patch from Mike Williams (2004 Jan 20)
+    9   Merge in ideas from ~/vim/patches/tutor.txt (Gabriel Zachmann)
+    8   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
+    -   Include flipcase patch: ~/vim/patches/wall.flipcase2 ?  Make it work
+	for multi-byte characters.
+    7   Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ):
+	'flipcase' variable: upper/lowercase pairs.
+	Insert comma's between pairs and allow a range, make it look like
+	'isfname'.  E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153".  The colon to
+	separate the from and to part is optional.
+    -   Win32: add options to print dialog.  Patch from Vipin Aravind.
+    -   Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
+	use the patch that keeps using HLF_8 if HLF_WS has not
+	been given values.
+	Add section in help files for these highlight groups?
+    8   "fg" and "bg" don't work in an xterm.  Get default colors from xterm
+	with an ESC sequence.  Ideas in: ~/vim/patches/vikas.xtermcolors .
+    7   Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin
+	Dalecki has a patch for Motif)
+    -   Add possibility to highlight specific columns (for Fortran).  Or put a
+	line in between columns (e.g. for 'textwidth').
+	Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
+    9   Add cursor-column highlighting.  Enable it with 'cursorcolumn' option,
+	set highlighting with "CursorColumn" group.  Useful for aligning text.
+	Also cursor-row highlighting.  Patch from Yasuhiro Matsumoto for
+	underlining the cursor line, 2004 Mar 24.
+	Alternatie: when 'number' is set highlight the number of the current
+	line.
+    7   Be able to call a function while passing on a variable number of
+	arguments:
+	    :function Foo(abc, ...)
+	    :  call Bar(a:abc, a:*)
+	Charles Campbell has a patch for this
+    8   Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
+	Aric Blumer has a patch for this.
+    8   Add functions:
+	tr(expr, from, to)	translate chars (Patch from Ron Aaron, Apr 8
+				2004)
+	strrep()		Repeat a string (patch from Christophe Poucet,
+				2003 Sep 12, also contains XX)
+				Alt: repeat(expr, count) werkt ook voor lists.
+	mousex() mousey()	get position of mouse pointer (patch by Ross
+				Presser)
+				He will send a new patch.
+				Is this really useful?
+	---
+	multibyteidx(string, idx) Byte index in multi-byte character.
+				Patch by Ilya Sher, 2004 Feb 25
+	menuprop({name}, {idx}, {what})
+				Get menu property of menu {name} item {idx}.
+				menuprop("", 1, "name") returns "File".
+				menuprop("File", 1, "n") returns "nmenu
+				File.Open..." argument.
+				Patch by Ilya Sher, 2004 Apr 22
+	mapname({idx}, mode)	return the name of the idx'th mapping.
+				Patch by Ilya Sher, 2004 Mar 4.
+	match({pat}, {string} [,start] [,count]) get index of count'th match
+				Patch by Ilya Sher, 2004 Mar 31
+	find()			find file in 'path' (patch from Johannes
+				Zellner 2001 Dec 20)
+	realname()		Get user name (first, last, full)
+				user_fullname() patch by Nikolai Weibull, Nov
+				3 2002)
+	getfperm()		file permissions, in form "rwxrwxrwx"
+				(patch from Nikolai Weibull 2003 Jan 13)
+	getftype()		"file", "dir", "link", "other"?
+				(patch from Nikolai Weibull 2003 Jan 13)
+	setbufline()		set line in any buffer (patch from Yegappan
+				Lakshmanan, 2003 Jan 21)
+	winnr("$")		Get number of windows.  (patch from Nikolai
+				Weibull 2003 Jan 13) (another patch from
+				Yegappan Lakshmanan, 2003 Aug 31)
+	search()		Add optional offset argument.
+				Add 'n' flag.  (patch from Nikolai Weibull
+				2003 Jan 13)
+	confirm()		add "flags" argument, with 'v' for vertical
+				layout and 'c' for console dialog. (Haegg)
+				Flemming Madsen has a patch for the 'c' flag
+				(2003 May 13)
+	system({cmd}, {expr})	Filter {expr} through the shell command
+				{cmd} and return the result.
+				(Patch from Yegappan Lakshmanan)
+	raisewin()		raise gvim window (see HierAssist patch for
+				Tcl implementation ~/vim/HierAssist/ )
+	gettext()		Translate a message.  (Patch from Yasuhiro
+				Matsumoto) How to get the messages into the
+				.po files?
+    7   Add "nbsp" in 'listchars'?  Patch from David Blanchet, 2003 Jul 28.
+    7   Add patch from Benoit Cerrina to integrate Vim and Perl functions
+	better.  Now also works for Ruby (2001 Nov 10)
+    7   Add 'taglistfiles' option, show file name and type when listing matching
+	tags name with CTRL-D completion.  Patch from Yegappan Lakshmanan.
+    7   Motif: use the menu font consistently.  Patch from Martin Dalecki 2002
+	Jan 11.
+    -   Motif: add 3D shading for the menu entries?  Patch from Martin Dalecki.
+    8   Add expression-expansion, so that the user can define his own kind of
+	completion.  Patch from Taro Muraoka, 2003 Aug 26.
+    7   Completion of network shares, patch by Yasuhiro Matsumoto.
+    9   When 'autoindent' is set, hitting <CR> twice, while there is text after
+	the cursor, doesn't delete the autoindent in the resulting blank line.
+	(Rich Wales) This is Vi compatible, but it looks like a bug.  Rich has
+	a suggestion for a patch to fix this.
+	e-mail to Rich bounced.
+    7   Make ":startinsert" command work directly for functions and scripts?
+	Also make it possible to append (it's difficult at end of line).
+	And add ":startreplace" (patch by Charles Campbell, 2004 Jan 9,
+	http://www.erols.com/astronaut/vim/index.html#Patch)
+    8   Text objects: Add "a'" and 'a"': a single or double quoted string.
+	(Tim Chase) Patch from Taro Muraoka (2003 Dec 16).
+    7   For Visual mode: Command to do a search for the string in the marked
+	area.  Only when fewer than two lines. Use "g/" and "gb".  Patch from
+	Yegappan Lakshmanan.
+    7   When 'rightleft' is set, the search pattern should be displayed right
+	to left as well?  See patch of Dec 26. (Nadim Shaikli)
+    8   Add patch from Charles Campbell to have ":0file!" remove the name of
+	the current buffer. (2003 June 17)
+    8   Make it possible to delete marks.  Charles Campbell has a patch that
+	does this with the markclear() function (2004 Jan 9).  And the
+	":delmark" command (2004 Feb 9)
+    7   Win32: Add patch for 5-button mouse. (Michael Geddes 2001 Nov 26)
+    8   Lock all used memory so that it doesn't get swapped to disk (uncrypted).
+	Patch by Jason Holt, 2003 May 23.
+    7   Support a stronger encryption.  Jason Holt implemented AES (May 6 2003).
+    7   Add ! register, for shell commands. (patch from Grenie)
+    7   Add the MzScheme interface.  Patch on http://iamphet.nm.ru/scheme/
+	(Sergey Khorev)
+    8   Make 'statusline' local, so that each window can have a different
+	value.  But should it also be local to a buffer? (Yegappan Lakshmanan
+	has a patch, 2002 feb 15)
+    8   In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc.  Like it's
+	done for filetype detection.  Patch from Walter Briscoe, 2003 Jul 1.
+    7   Add a "-@ filelist" argument: read file names from a file. (David
+	Kotchan has a patch for it)
+    8   Add term entries for function keys on xterm with alt and ctrl (new in
+	pl 94).  E.g., Control adds ";5" in "<Esc>[20;5~".  Find a generic way
+	to prepend a modifier in console mode, to avoid having to specify each
+	individual modified key.
+	Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37,
+	with modifiers.
+    8   Include a connection to an external program through a pipe?  See
+	patches from Felbinger for a mathematica interface.
+	Or use emacs server kind of thing?
+    7   Add an option to set the width of the 'number' column.  Eight
+	positions is often more than needed.  Or adjust the width to the
+	length of the file?
+	Add patch that adds 'numberlen' option. (James Harvey)
+	Other patch with min and max from Emmanuel Renieris (2002 Jul 24)
+	Other patch without an option by Gilles Roy (2002 Jul 25)
+    7   Add ":justify" command.  Patch from Vit Stradal 2002 Nov 25.
+    -   findmatch() should be adjusted for Lisp.  See remark at
+	get_lisp_indent().  Esp. \( and \) should be skipped. (Dorai Sitaram,
+	incomplete patch Mar 18)
+    8   Sorting of filenames for completion is wrong on systems that ignore
+	case of filenames.  Add 'ignorefncase' option.  When set, case in
+	filenames is ignored for sorting them. Patch by Mike Williams:
+	~/vim/patches/ignorefncase.  Also change what matches?  Or use another
+	option name.
+-   Change ga_room into ga_maxlen, so that it doesn't need to be
+    incremented/decremented each time.
 -   new DATA TYPES: lists, dictionaries and function references.
+	Check old patch from Robert Webb for array support.
     Add type checking?  See ~/vim/ideas.txt.
 -   Add SPELLCHECKER, with easy to add support for many languages.
+    8   Add spell checking.  Use "ispell -a" somehow.
+	~/vim/patches/wm_vim-5_4d.zip  can be used as an example (includes
+	ispell inside Vim).  Gautam Iyer has an example with "aspell".
+	"engspchk" from Charles Campbell is a good way.  Support for
+	approximate-regexps will help (agrep http://www.tgries.de/agrep/).
 -   REFACTORING: The main() function is very long.  Move parts to separate
     functions, especially loops.  Ideas from Walter Briscoe (2003 Apr 3, 2004
     Feb 9).
+-   Improve the interface between the generic GUI code and the system-specific
+    code.  Generic code handles text window with scrollbars, system-specific
+    code menu, toolbar, etc.
 -   Store messages to allow SCROLLING BACK for all commands.  And other "less"
     like commands.
 -   "INTELLISENSE".  First cleanup the Insert-mode completion.
@@ -81,6 +300,7 @@
 -   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
     Especially when using the scrollbar.  Typing a cursor-movement command
     scrolls back to where the cursor is.
+8   Support four composing characters, needed for Hebrew. (Ron Aaron)
 
 
 Vi incompatibility:
@@ -135,9 +355,6 @@
     (Sayre).
 7   Add flag in 'cpoptions' that makes operator (yank, filter) not move the
     cursor, at least when cancelled. (default Vi compatible).
-7   Make "5dd" on last-but-one-line not delete anything (Vi compatible).
-    Add flag in 'cpoptions' for this.  When not present, "2dd" in the last
-    line should delete the last line.  Patch from greenx 2002 Apr 11.
 7   This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual".
     In Vi you can edit in visual mode, and when doing "Q" you jump to the next
     match.  Nvi can do it too.
@@ -210,8 +427,6 @@
     Put focus event in input buffer and let generic Vim code handle it?
 8   When activating the Vim window with mouse click, don't move cursor to
     mouse position.  Catch WM_MOUSEACTIVATE. (Luevelsmeyer)
-9   The print dialog uses a font which doesn't display multi-byte messages.
-    Include patch from Vipin Aravind?  Update from Yasuhiro Matsumoto.
 8   Win32: When mouse is hidden and in the toolbar, moving it won't make it
     appear. (Sami Salonen)
 8   Windows NT: writing to aux.* makes Vim hang. (Acevedo)
@@ -311,10 +526,6 @@
 
 Motif GUI:
 8   Popup menu ordering is wrong.
-8   Accelerators don't work in a dialog.  Include patch from Martin Dalecki
-    (Jan 3, tested by David Harrison).  Should work with Alt-o then.
-7   Use accelerators for the Motif file selection dialog.  Patch from Martin
-    Dalecki 2002 Jan 11.
 7   Use XmStringCreateLocalized() instead of XmStringCreateSimple()?
     David Harrison says it's OK (it exists in Motif 1.2).
 8   The texts in the find/replace dialog don't use the right font.
@@ -344,7 +555,6 @@
     doesn't work.
 8   Menu priority for sub-menus for: Amiga, BeOS.
 8   Add menu separators for Amiga, RISCOS.
-8   Add a few more command names.  Patch from Jiri Brezina (28 feb 2002).
 8   Add way to specify the file filter for the browse dialog.  At least for
     browse().
 8   Add dialog for search/replace to other GUIs?  Tk has something for this,
@@ -491,7 +701,6 @@
     a Netware network drive.  Use same function as for Win32 GUI?
 8   In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
     is not defined.  Shouldn't that be the other way around?
-8   ":winpos" doesn't work.  Patch from Vipin Aravind.
 7   Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'?
     Avoids that input and output work differently.  Need to be restored when
     exiting.
@@ -516,12 +725,6 @@
 8   Inputting Unicode characters does not work in the terminal.  They appear
     to arrive as upper and lower bytes. (David Brown, 2004 April 17)
 8   Typing Unicode characters doesn't work at all in the GUI.
-8   Patch to add 'transparency' option.  Disadvantage: it's slow. (Eckehard
-    Berns, 2004 May 9) http://ecki.to/vim-icns/TransBack.diff
-8   Patches from "Rain Dog" Cucka:
-    - guifont selector (2002 Dec 15)
-    - scrollbar (2002 Dec 8)
-    - Quartz fonts (2002 Dec 8)
 9   Problems in Carbon version for OS X: (Benji Fisher)
     - keyboard shortcuts in the menus get lost.
 8   The Vim/About menu doesn't work.
@@ -563,8 +766,6 @@
     when compiled with Python (threading).
 7   The messages for "vim --help" and "vim --version" don't use
     'termencoding'.
-7   ATTENTION dialog choices are more logical when "Delete it' appears before
-    "Quit".  Patch by Robert Webb, 2004 May 3.
 8   When 'scrollbind' is set, a window won't scroll horizontally if the cursor
     line is too short.  Add a word in 'scrollopt' to allow moving the cursor
     to longer line that is visible.  A similar thing is done for the GUI when
@@ -651,8 +852,6 @@
 9   The "Error detected while processing modelines" message should have an
     error number.
 7   The message in bt_dontwrite_msg() could be clearer.
-8   Unix: When libcall() fails there is no clear error message.  Johannes
-    Zellner has a patch for this.
 8   The script ID that is stored with an option and displayed with ":verbose
     set" isn't reset when the option is set internally.  For example when
     'foldlevel' is set from 'foldlevelstart'.
@@ -678,13 +877,10 @@
 8   When using CTRL-D after ":help", restrict the number of matches to a
     thousand, otherwise using CTRL-D without an argument takes too long.
 8   ":hardcopy":
-    - Patch to append CTRL-D to PostScript output (Mike Williams, 2004 Jun 11)
     - Using the cterm_color[] table is wrong when t_colors is > 16.
     - Need to handle unprintable characters.
     - Win32: On a B&W printer syntax highlighting isn't visible.  Perform
       dithering to make grey text?
-    - support printing multi-byte characters.  Patch from Motonobu Ichimura.
-      New (better) patch from Mike Williams (2004 Jan 20)
     - Add a flag in 'printoptions' to add an empty page to make the total
       number even.  "addempty"? (Mike Williams)
     - Should interpreted CTRL-L as a page break.
@@ -817,7 +1013,6 @@
     it. (Lohner)  Try out with "vt100" entry, cm replaced with cX.
 7   When an include file starts with "../", the check for already visiting
     this file doesn't work.  Need to simplify the file name.
-8   On Sinix SYS_NMLN isn't defined.  Include patch from Cristiano De Michele.
 7   The names and comments for the arguments of do_browse() are confusing.
     "dflt" isn't the default file name when "initdir" is not NULL and
     "initdir" is the default path to be used.
@@ -927,7 +1122,6 @@
 
 Documentation:
 8   Extend usr_27.txt a bit. (Adam Seyfarth)
-9   Merge in ideas from ~/vim/patches/tutor.txt (Gabriel Zachmann)
 7   Add a section on debugging scripts in the user manual.
 9   Make the Reference Manual more precise.  For each command mention:
     - change to cursor position and curswant
@@ -989,9 +1183,6 @@
     disabling it.  Be careful that tear-offs don't disappear (keep one empty
     item?).
     Alternative: use BufEnter and BufLeave autocommands.
-8   Add file locking.  Lock a file when starting to edit it with flock() or
-    fcntl().  This patch has advisory file locking while reading/writing the
-    file: ~/vim/patches/kahn_file_locking .
 8   make a vimtutor script for Amiga and other systems.
 7   Add the arguments for configure to the ":version" output?
 
@@ -1065,14 +1256,10 @@
     so that the user can fix the problem.
 8   Add configure option to be able to disable using the iconv library. (Udo
     Schweigert)
-8   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
 9   'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
 8   Should add test for using various commands with multi-byte characters.
--   Include flipcase patch: ~/vim/patches/wall.flipcase2 ?  Make it work for
-    multi-byte characters.
 8   'infercase' doesn't work with multi-byte characters.
 8   toupper() function doesn't handle byte count changes.
-8   Support four composing characters, needed for Hebrew. (Ron Aaron)
 8   "ga" should show all composing characters, also if there are more than 2.
 7   When searching, should order of composing characters be ignored?
 8   Should implement 'delcombine' for command line editing.
@@ -1122,7 +1309,6 @@
 -   Win32: when 'printfont' is empty use 'guifont'.
 -   Unix: Use some dialog box to do the obvious settings (paper size, printer
     name, portrait/landscape, etc).
--   Win32: add options to print dialog.  Patch from Vipin Aravind.
 -   PostScript: only works for 7-bit ASCII and EBCDIC.  Should support
     different 'encoding' values somehow.
 -   Allow specifying the paper size, instead of using a standard size.  Same
@@ -1133,10 +1319,6 @@
 
 
 Syntax highlighting:
--   Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
-    use the patch that keeps using HLF_8 if HLF_WS has not
-    been given values.
-    Add section in help files for these highlight groups?
 8   Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
     Should do the same for ":syn on" and ":syn manual".
 8   Support "containedin" argument for ":syn include", so that the defined
@@ -1184,8 +1366,6 @@
     re-insert the [] if possible.
 8   Make it possible to use color of text for Visual highlight group (like for
     the Cursor).
-8   "fg" and "bg" don't work in an xterm.  Get default colors from xterm with
-    an ESC sequence.  Ideas in: ~/vim/patches/vikas.xtermcolors .
 8   Make it possible to only highlight a sub-expression of a match.  Like
     using "\1" in a ":s" command.
 8   Support for deleting syntax items:
@@ -1204,8 +1384,6 @@
     character.  For Visual mode. (xterm-selection already does this).
 8   Highlight non-printable characters with "SpecialChar", linked to
     "Special".  Display them with the digraph characters, if possible.
-7   Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin
-    Dalecki has a patch for Motif)
 8   Highlight the clipboard-selection with a highlight group.
 8   Be able to reset highlighting to its original (default) values.
 7   Be able to write current highlighting to a file as commands, similar to
@@ -1236,11 +1414,6 @@
 7   CTRL-] checks the highlight group for finding out what the tag is.
 7   Add an explanation how a list of words can be used to highlight misspelled
     words.
-8   Add spell checking.  Use "ispell -a" somehow.
-    ~/vim/patches/wm_vim-5_4d.zip  can be used as an example (includes ispell
-    inside Vim).  Gautam Iyer has an example with "aspell".  "engspchk" from
-    Charles Campbell is a good way.  Support for approximate-regexps will help
-    (agrep http://www.tgries.de/agrep/).
 7   Command line completion for ":find" should search in 'path'.
 8   Add more command line completion for :syntax.
 8   Add more command line completion for :highlight.
@@ -1267,9 +1440,6 @@
 -   Make it possible to add "contains" items for all items in a group.	Useful
     when extending an already existing syntax file.
 -   Add line-continuation pattern for non-syncing items too?
--   Add possibility to highlight specific columns (for Fortran).  Or put a
-    line in between columns (e.g. for 'textwidth').
-    Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
 -   Add possibility to highlight the whole line, including the right margin
     (for comment blocks).
 -   Add 'hlmatch' option: List of flags:
@@ -1303,11 +1473,6 @@
 8   Allow range for ":exec".  Pass it on to the executed command. (Webb)
 8   exists("&&option") tests if 'option' is actually implemented.  Useful for
     'shellslash', for example.
-7   Be able to call a function while passing on a variable number of
-    arguments:
-	:function Foo(abc, ...)
-	:  call Bar(a:abc, a:*)
-    Charles Campbell has a patch for this
 8   Have a look at VSEL.  Would it be useful to include? (Bigham)
 8   Add ":fungroup" command, to group function definitions together.  When
     encountered, all functions in the group are removed.  Suggest using an
@@ -1329,26 +1494,10 @@
        file belongs to a sourced script?
 7   Add "n" flag to search() function, just like searchpair(). (Alexey
     Marinichev)
-8   Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
-    Aric Blumer has a patch for this.
 7   Add argument to winwidth() to subtract the space taken by 'foldcolumn',
     signs and/or 'number'.
 8   Add functions:
-	multibyteidx(string, idx) Byte index in multi-byte character.
-				Patch by Ilya Sher, 2004 Feb 25
-	menuprop({name}, {idx}, {what})
-				Get menu property of menu {name} item {idx}.
-				menuprop("", 1, "name") returns "File".
-				menuprop("File", 1, "n") returns "nmenu
-				File.Open..." argument.
-				Patch by Ilya Sher, 2004 Apr 22
-	mapname({idx}, mode)	return the name of the idx'th mapping.
-				Patch by Ilya Sher, 2004 Mar 4.
-	match({pat}, {string} [,start] [,count]) get index of count'th match
-				Patch by Ilya Sher, 2004 Mar 31
 	sprintf(format, arg, ..) How to prevent a crash???
-	mousex() mousey()	get position of mouse pointer (patch by Ross
-				Presser)
 	attributes()		return file protection flags "drwxrwxrwx"
 	mkdir(dir)		Create directory
 	copy(from, to)		Copy a file
@@ -1360,48 +1509,15 @@
 				Visual block mode.
 	tagtype(tag)		get type of tag (also checks if it exists)
 	getacp()		Win32: get codepage (Glenn Maynard)
-	tr(expr, from, to)	translate chars (Patch from Ron Aaron, Apr 8
-				2004)
-	find()			find file in 'path' (patch from Johannes
-				Zellner 2001 Dec 20)
-	realname()		Get user name (first, last, full)
-				user_fullname() patch by Nikolai Weibull, Nov
-				3 2002)
-	getfperm()		file permissions, in form "rwxrwxrwx"
-				(patch from Nikolai Weibull 2003 Jan 13)
-	getftype()		"file", "dir", "link", "other"?
-				(patch from Nikolai Weibull 2003 Jan 13)
-	setbufline()		set line in any buffer (patch from Yegappan
-				Lakshmanan, 2003 Jan 21)
 	getbufline()		get line from any buffer
 	deletebufline()		delete line in any buffer
 	appendbufline()		append line in any buffer
-	winnr("$")		Get number of windows.  (patch from Nikolai
-				Weibull 2003 Jan 13) (another patch from
-				Yegappan Lakshmanan, 2003 Aug 31)
-	search()		Add optional offset argument.
-				Add 'n' flag.  (patch from Nikolai Weibull
-				2003 Jan 13)
 	sort()			Sort a newline-separated string.  Also:
 				":sort".
 	libcall()		Allow more than one argument.
 	libcallext()		Like libcall(), but using a callback function
 				to allow the library to execute a command or
 				evaluate an expression.
-	confirm()		add "flags" argument, with 'v' for vertical
-				layout and 'c' for console dialog. (Haegg)
-				Flemming Madsen has a patch for the 'c' flag
-				(2003 May 13)
-	system({cmd}, {expr})	Filter {expr} through the shell command
-				{cmd} and return the result.
-				(Patch from Yegappan Lakshmanan)
-	raisewin()		raise gvim window (see HierAssist patch for
-				Tcl implementation ~/vim/HierAssist/ )
-	gettext()		Translate a message.  (Patch from Yasuhiro
-				Matsumoto) How to get the messages into the
-				.po files?
-	strrep()		Repeat a string (patch from Christophe Poucet,
-				2003 Sep 12, also contains XX)
 	char2hex()		convert char string to hex string.  XX
 	hex2char()		convert hex string to char string. XX
 7   Make bufname("'0") return the buffer name from mark '0.  How to get the
@@ -1440,12 +1556,6 @@
 7   Automatically load a function from a file when it is called.  Need an
     option for the search path. (Sekera)
 7   Persistent variables: "p:var"; stored in viminfo file and sessions files.
-7   Include support for arrays?  Patch from Robert Webb.
-    This is restricted to fixed-size arrays indexed by number.  Better: Use
-    associative arrays: a[5] = 3, a["some"] = 'x'. Implement by translating
-    into ordinary variables: a[5] is "-a-5", a["some"] is "a-some", a[5][6] is
-    "a-5-6".  But how to do array assignment and concatenation?
-    Alternative: use dictionaries, like Python.
 
 
 Robustness:
@@ -1617,7 +1727,6 @@
     an event handler where ":normal" can't be used.  Also useful when
     'lazyredraw' is set in a mapping.
 7   Make 'list' and 'linebreak' work together.
-7   Add "nbsp" in 'listchars'?  Patch from David Blanchet, 2003 Jul 28.
 
 
 Scrolling:
@@ -1655,8 +1764,6 @@
 
 Perl interface:
 8   Rename typemap file to something else?
-7   Add patch from Benoit Cerrina to integrate Vim and Perl functions better.
-    Now also works for Ruby (2001 Nov 10)
 7   Make buffers accessed as Perl arrays. (Clark)
 7   Make it possible to compile with non-ANSI C?
 6   Tcl/Tk has the "load" command: load a shared library (.so or .dll).
@@ -1710,8 +1817,6 @@
 7   Better support for jumping to where a function or variable is used.  Use
     the id-utils, with a connection to "gid" (Emacs can do it too).  Add
     ":idselect", which uses an "ID" database (made by "mkid") like "tselect".
-7   Add 'taglistfiles' option, show file name and type when listing matching
-    tags name with CTRL-D completion.  Patch from Yegappan Lakshmanan.
 
 
 Security:
@@ -1758,8 +1863,6 @@
 
 
 GUI:
-8   Add GTK 2.3 file dialog support.  Patch by Grahame Bowland, 2004 Mar 15,
-    but it doesn't use "initdir" or "dflt".
 8   Make inputdialog() work for Photon, Amiga, RiscOS.
 -   <C--> cannot be mapped.  Should be possible to recognize this as a
     normal "-" with the Ctrl modifier.
@@ -1781,8 +1884,6 @@
     explicit.  There are too many #ifdefs in gui.c.
     If possible, separate the Vim code completely from the GUI code, to allow
     running them in separate processes.
-8   Support a background bitmap.  Useful for marking a column.  Patch from
-    Heather Downs (GTK) and Vince Negri (Win32).
 7   X11: Support cursorColor resource and "-cr" argument.
 8   X11 (and others): CTRL-; is not different from ';'.  Set the modifier mask
     to include CTRL for keys where CTRL produces the same ASCII code.
@@ -1793,8 +1894,6 @@
 8   Selecting font names in X11 is difficult, make a script or something to
     select one.  Martin Dalecki has a font selector for Motif, but it needs a
     bit more work.
-7   Motif: use the menu font consistently.  Patch from Martin Dalecki 2002 Jan
-    11.
 8   Visual highlighting should keep the same font (bold, italic, etc.).
 8   Add flag to 'guioptions' to not put anything in the clipboard at all?
 8   Should support a way to use keys that we don't recognize yet.  Add a
@@ -1838,7 +1937,6 @@
     button selected, <Esc> should close the dialog.
 -   Motif steals <F10> from us, to pop up menus with the keyboard.  How do we
     get it back if we want it?
--   Motif: add 3D shading for the menu entries?  Patch from Martin Dalecki.
 -   Paste in Insert mode should not do autowrap etc.  Or maybe this should be
     changeable with an option?
 -   Put a nice picture in the icon (but how do we do that?).
@@ -1898,13 +1996,6 @@
 8   When editing "tt.gz", which is in DOS format, 'fileformat' stays at
     "unix", thus writing the file changes it.  Somehow detect that the read
     command used dos fileformat.  Same for 'fileencoding'.
-8   Add buffer-local autocommands?  Reduces overhead for autocommands that
-    trigger often (inserting a character, switching mode).
-	:au Event <buffer> do-something
-    E.g.:
-	:au BufEnter <buffer> menu enable ...
-	:au BufLeave <buffer> menu disable ...
-    Patch from Yakov Lerner, including test (2004 Jan 7).
 -   Add events to autocommands:
     Error	    - When an error happens
     NormalEnter	    - Entering Normal mode
@@ -1937,8 +2028,6 @@
 		      that marks can be updated.  HierAssist has patch to add
 		      BufChangePre, BufChangePost and RevertBuf. (Shah)
     WinResized	    - When a window has been resized
-    VimResized	    - When the Vim window has been resized (SIGWINCH)
-		      patch from Yakov Lerner, 2003 July 24.
 -   Add autocommand to be executed every so many seconds?  For writing the
     file now and then ('autosave').
 				  *'autosave'* *'as'* *'noautosave'* *'noas'*
@@ -1961,8 +2050,6 @@
 8   Add option to set different behavior for Insert mode completion:
     - ignore/match case
     - different characters than 'iskeyword'
-8   Add expression-expansion, so that the user can define his own kind of
-    completion.  Patch from Taro Muraoka, 2003 Aug 26.
 8   Add a command to undo the completion, go back to the original text.
 8   Use the class information in the tags file to do context-sensitive
     completion.  After "foo." complete all member functions/variables of
@@ -2045,7 +2132,6 @@
     file name, so it can be edited.  Also with modifiers, such as "%:h".
 8   When completing command names, either sort them on the long name, or list
     them with the optional part inside [].
-7   Completion of network shares, patch by Yasuhiro Matsumoto.
 7   Completion of ":map x ": fill in the current mapping, so that it can be
     edited. (Sven Guckes)
 7   Add completion for when entering an expression after CTRL-R= and "=.
@@ -2083,10 +2169,6 @@
 
 
 Insert mode:
-9   When 'autoindent' is set, hitting <CR> twice, while there is text after
-    the cursor, doesn't delete the autoindent in the resulting blank line.
-    (Rich Wales) This is Vi compatible, but it looks like a bug.  Rich has a
-    suggestion for a patch to fix this.
 8   When using CTRL-O in Insert mode, then executing an insert command
     "a" or "i", should we return to Insert mode after <Esc>? (Eggink)
     Perhaps it can be allowed a single time, to be able to do
@@ -2094,10 +2176,6 @@
     ":map <F2> 5aabc<Esc>" works only once from Insert mode.
 7   Use CTRL-G <count> to repeat what follows.  Useful for inserting a
     character multiple times or repeating CTRL-Y.
-7   Make ":startinsert" command work directly for functions and scripts?
-    Also make it possible to append (it's difficult at end of line).
-    And add ":startreplace" (patch by Charles Campbell, 2004 Jan 9,
-    http://www.erols.com/astronaut/vim/index.html#Patch)
 7   Use 'matchpairs' for 'showmatch': When inserting a character check if it
     appears in the rhs of 'matchpairs'.
 -   In Insert mode (and command line editing?): Allow undo of the last typed
@@ -2261,8 +2339,6 @@
     deletes the current and previous sentence. (Jens Paulus)
 7   Add "g{" and "g}" to move to the first/last character of a paragraph
     (instead of the line just before/after a paragraph as with "{" and "}").
-8   Add "a'" and 'a"': a single or double quoted string. (Tim Chase)
-    Patch from Taro Muraoka (2003 Dec 16).
 6   Ignore comment leaders for objects.  Make "das" work in reply-email.
 5   Make it possible to use syntax group matches as a text object.  For
     example, define a "ccItem" group, then do "da<ccItem>" to delete one.
@@ -2308,7 +2384,7 @@
 7   CTRL-V :s should substitute only in the block, not to whole lines. (David
     Young is working on this)
 7   Filtering a block should only apply to the block, not to the whole lines.
-    When the number of lines is increased, add lines. When decreased, padd with
+    When the number of lines is increased, add lines. When decreased, pad with
     spaces or delete? Use ":`<,`>" on the command line.
 8   After filtering the Visual area, make "gv" select the filtered text?
     Currently "gv" only selects a single line, not useful.
@@ -2323,9 +2399,6 @@
     the right column, and then use up/down movements to select the line,
     without changing the column.
 6   ":left" and ":right" should work in Visual block mode.
-7   For Visual mode: Command to do a search for the string in the marked area.
-    Only when fewer than two lines. Use "g/" and "gb".  Patch from Yegappan
-    Lakshmanan.
 7   CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
     current buffer.
 7   CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
@@ -2460,8 +2533,6 @@
     search(). (Brett)
 7   Add pattern item to use properties of Unicode characters.  In Perl it's
     "\p{L}" for a letter.  See Regular Expression Pocket Reference.
-7   When 'rightleft' is set, the search pattern should be displayed right to
-    left as well?  See patch of Dec 26. (Nadim Shaikli)
 8   Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
     lines 23 to 45?  Or does this conflict with Ex range syntax?
 8   Allow identical pairs in 'matchpairs'.  Restrict the search to the current
@@ -2590,8 +2661,6 @@
 
 
 Buffer list:
-8   Add patch from Charles Campbell to have ":0file!" remove the name of the
-    current buffer. (2003 June 17)
 7   Command to execute a command in another buffer: ":inbuf {bufname} {cmd}".
     Also for other windows: ":inwin {winnr} {cmd}".  How to make sure that
     this works properly for all commands, and still be able to return to the
@@ -2769,9 +2838,6 @@
     to jump to the mark (in current window or new window).  Start it with
     ":browse marks"?
 6   Add a menu that lists the Marks like ":marks". (Amerige)
-8   Make it possible to delete marks.  Charles Campbell has a patch that does
-    this with the markclear() function (2004 Jan 9).  And the ":delmark"
-    command (2004 Feb 9)
 7   For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the
     text at the mark.  Highlight the column with the mark.
 7   Highlight each mark in some way (With "Mark" highlight group).
@@ -2855,7 +2921,6 @@
 
 
 Mouse support:
-7   Win32: Add patch for 5-button mouse. (Michael Geddes 2001 Nov 26)
 8   Add 'o' flag to 'mouse'?
 7   Be able to set a 'mouseshape' for the popup menu.
 8   Add 'mouse' flag, which sets a behavior like Visual mode, but automatic
@@ -2872,9 +2937,6 @@
 Crypt and security:
 8   Also crypt the swapfile, each block separately.  Change mf_write() and
     mf_read().  How to get b_p_key to these functions?
-7   Support a stronger encryption.  Jason Holt implemented AES (May 6 2003).
-8   Lock all used memory so that it doesn't get swapped to disk (uncrypted).
-    Patch by Jason Holt, 2003 May 23.
 
 
 Argument list:
@@ -2904,7 +2966,7 @@
 	to position of previous deleted (to swap foo and bar in " + foo")
 8   Should be able to yank and delete into the "/ register.
     How to take care of the flags (offset, magic)?
-7   Add ! register, for shell commands. (patch from Grenie)
+
 
 Debug mode:
 7   Add something to enable debugging when a remote message is received.
@@ -2919,8 +2981,6 @@
 Various improvements:
 8   Add ":rename" command: rename the file of the current buffer and rename
     the buffer.  Buffer may be modified.
-7   Add the MzScheme interface.  Patch on http://iamphet.nm.ru/scheme/
-    (Sergey Khorev)
 6   In the quickfix window statusline add the command used to get the list of
     errors, e.g. ":make foo", ":grep something *.c".
 6   Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
@@ -2933,13 +2993,8 @@
     to manipulate text without changing the window layout.
 8   Add a command to revert to the saved version of file; undo or redo until
     all changes are gone.
-8   Make 'statusline' local, so that each window can have a different value.
-    But should it also be local to a buffer? (Yegappan Lakshmanan has a patch,
-    2002 feb 15)
 7   Add a ":cpfile", go in the other direction as ":cnfile".
 6   "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
-8   In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc.  Like it's
-    done for filetype detection.  Patch from Walter Briscoe, 2003 Jul 1.
 8   Add "--remote-fail": When contacting the server fails, exit Vim.
     Add "--remote-self": When contacting the server fails, do it in this Vim.
     Overrules the default of "--remote-send" to fail and "--remote" to do it
@@ -2953,16 +3008,8 @@
     CR characters.  For example, for "dos" files remove CR characters at the
     end of the line, so that a file with mixed line endings is cleaned up.
     To just not display the CR characters: Add a flag to 'display'?
-7   Add a "-@ filelist" argument: read file names from a file. (David Kotchan
-    has a patch for it)
 7   Some compilers give error messages in which the file name does not have a
     path.  Be able to specify that 'path' is used for these files.
-8   Add term entries for function keys on xterm with alt and ctrl (new in pl
-    94).  E.g., Control adds ";5" in "<Esc>[20;5~".  Find a generic way to
-    prepend a modifier in console mode, to avoid having to specify each
-    individual modified key.
-    Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37,
-    with modifiers.
 7   Xterm sends <Esc>O3F for <M-End>.  Similarly for other <M-Home>, <M-Left>,
     etc.  Combinations of Alt, Ctrl and Shift are also possible.  Recognize
     these to avoid inserting the raw byte sequence, handle like the key
@@ -2984,26 +3031,13 @@
 8   Support printing on Unix.  Can use "lpansi.c" as an example. (Bookout)
 8   Add put command that replaces the text under it.  Esp. for blockwise
     Visual mode.
-7   Enhance termreponse stuff: Add t_CV(?): pattern of term response, use
+7   Enhance termresponse stuff: Add t_CV(?): pattern of term response, use
     regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV.
 7   Add "g|" command: move to N'th column from the left margin (after wrapping
     and applying 'leftcol').  Works as "|" like what "g0" is to "0".
-7   Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ):
-    'flipcase' variable: upper/lowercase pairs.
-    Insert comma's between pairs and allow a range, make it look like
-    'isfname'.  E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153".  The colon to
-    separate the from and to part is optional.
 7   Support setting 'equalprg' to a user function name.
-9   Add cursor-column highlighting.  Enable it with 'cursorcolumn' option, set
-    highlighting with "CursorColumn" group.  Useful for aligning text.
-    Also cursor-row highlighting.
-    Patch from Yasuhiro Matsumoto for underlining the cursor line, 2004 Mar 24.
-    Alternatie: when 'number' is set highlight the number of the current line.
 7   Highlight the characters after the end-of-line differently.
 7   When 'whichwrap' contains "l", "$dl" should join lines?
-8   Include a connection to an external program through a pipe?  See patches
-    from Felbinger for a mathematica interface.
-    Or use emacs server kind of thing?
 8   Add an argument to configure to use $CFLAGS and not modify it? (Mooney)
 8   Enabling features is a mix of configure arguments and defines in
     feature.h.  How to make this consistent?  Feature.h is required for
@@ -3043,11 +3077,6 @@
 7   Add a history of recently accessed buffer.	Maybe make "2 CTRL-^" jump to
     the 2nd previously visited buffer, "3 CTRL-^" to the third, etc.  Or use
     "3 g CTRL-^" for this?
-7   Add an option to set the width of the 'number' column.  Eight positions is
-    often more than needed.  Or adjust the width to the length of the file?
-    Add patch that adds 'numberlen' option. (James Harvey)
-    Other patch with min and max from Emmanuel Renieris (2002 Jul 24)
-    Other patch without an option by Gilles Roy (2002 Jul 25)
 -   Add code to disable the CAPS key when going from Insert to Normal mode.
 -   Set date/protection/etc. of the patchfile the same as the original file.
 -   Use growarray for termcodes[] in term.c
@@ -3075,7 +3104,6 @@
 9   When using ":w <fname>" it's possible that this file is loaded in another
     buffer.  Give a warning right away, don't wait for a shell command.
 -   Make 'smartcase' work even though 'ic' isn't set (Webb).
-7   Add ":justify" command.  Patch from Vit Stradal 2002 Nov 25.
 7   When formatting text, allow to break the line at a number of characters.
     Use an option for this: 'breakchars'?  Useful for formatting Fortran code.
 -   Add flag to 'formatoptions' to be able to format book-style paragraphs
@@ -3101,8 +3129,6 @@
 -   Make "gq<CR>" work on the last line in the file.  Maybe for every operator?
 8   findmatchlimit() should be able to skip comments.  Solves problem of
     matching the '{' in /* if (foo) { */ (Fiveash)
--   findmatch() should be adjusted for Lisp.  See remark at get_lisp_indent().
-    Esp. \( and \) should be skipped. (Dorai Sitaram, incomplete patch Mar 18)
 -   Add more redirecting of Ex commands:
 	:redir @> register  (append)
 	:redir #  bufname
@@ -3335,11 +3361,6 @@
 -   Support mapping for replace mode and "r" command (Vi doesn't do this)?
 5   Add 'ignorefilecase' option: Ignore case when expanding file names.
     ":e ma<Tab>" would also find "Makefile" on Unix.
-8   Sorting of filenames for completion is wrong on systems that ignore case
-    of filenames.  Add 'ignorefncase' option.  When set, case in filenames is
-    ignored for sorting them. Patch by Mike Williams:
-    ~/vim/patches/ignorefncase.  Also change what matches?  Or use another
-    option name.
 8   Should be able to compile Vim in another directory, with $(srcdir) set to
     where the sources are. Add $(srcdir) in the Makefile in a lot of places.
     (Netherton)
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 252572d..8753bfa 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.0aa.  Last change: 2004 May 01
+*various.txt*   For Vim version 7.0aa.  Last change: 2004 Jun 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -431,7 +431,8 @@
 						*:verb* *:verbose*
 :[count]verb[ose] {command}
 			Execute {command} with 'verbose' set to [count].  If
-			[count] is omitted one is used.
+			[count] is omitted one is used. ":0verbose" can be
+			used to set 'verbose' to zero.
 			The additional use of ":silent" makes messages
 			generated but not displayed.
 			The combination of ":silent" and ":verbose" can be
