diff --git a/Contents b/Contents
index 2a5de88..97dc1b5 100644
--- a/Contents
+++ b/Contents
@@ -9,10 +9,10 @@
 		messages, shows current file name in window title, on-line
 		help, rectangular cut/paste, etc., etc., etc...
 
-		Version 7.1.  Also runs under UNIX, MSDOS and other systems.
-		vim71rt.tgz  contains the documentation and syntax files.
-		vim71bin.tgz contains the binaries.
-		vim71src.tgz contains the sources.
+		Version 7.2a.  Also runs under UNIX, MSDOS and other systems.
+		vim72art.tgz  contains the documentation and syntax files.
+		vim72abin.tgz contains the binaries.
+		vim72asrc.tgz contains the sources.
 		Author: Bram Moolenaar et al.
 
 
diff --git a/Filelist b/Filelist
index f2d437f..aa423d9 100644
--- a/Filelist
+++ b/Filelist
@@ -137,6 +137,7 @@
 		pixmaps/gen-inline-pixbufs.sh \
 		pixmaps/stock_icons.h \
 		src/INSTALL \
+		src/INSTALLx.txt \
 		src/Makefile \
 		src/auto/configure \
 		src/config.aap.in \
@@ -250,6 +251,7 @@
 		src/Make_w16.mak \
 		src/bigvim.bat \
 		src/msvcsetup.bat \
+		src/msvc2008.bat \
 		src/dimm.idl \
 		src/dlldata.c \
 		src/dosinst.c \
@@ -671,17 +673,9 @@
 		runtime/keymap/*.vim \
 		runtime/tutor/README.*.txt \
 		runtime/tutor/Makefile \
+		runtime/tutor/tutor.utf-8 \
 		runtime/tutor/tutor.?? \
-		runtime/tutor/tutor.cs.* \
-		runtime/tutor/tutor.gr.* \
-		runtime/tutor/tutor.hu.* \
-		runtime/tutor/tutor.ja.* \
-		runtime/tutor/tutor.ko.* \
-		runtime/tutor/tutor.pl.* \
-		runtime/tutor/tutor.ru.* \
-		runtime/tutor/tutor.sk.* \
-		runtime/tutor/tutor.tr.* \
-		runtime/tutor/tutor.zh.* \
+		runtime/tutor/tutor.??.* \
 		runtime/spell/README.txt \
 		runtime/spell/??/*.diff \
 		runtime/spell/??/main.aap \
diff --git a/Makefile b/Makefile
index f4090fa..45568a9 100644
--- a/Makefile
+++ b/Makefile
@@ -69,7 +69,7 @@
 #    Before creating an archive first delete all backup files, *.orig, etc.
 
 MAJOR = 7
-MINOR = 1
+MINOR = 2a
 
 # Uncomment this line if the Win32s version is to be included.
 DOSBIN_S =  dosbin_s
@@ -87,8 +87,8 @@
 #   ignore warnings for missing include files, fix problems for syntax errors).
 # - With these features: "make depend" (works best with gcc).
 # - "make lint" and check the output (ignore GTK warnings).
-# - Enable the efence library in "src/Makefile" and run "make test".  May
-#   require disabling Python and Ruby to avoid trouble with threads.
+# - Enable the efence library in "src/Makefile" and run "make test".  Disable
+#   Python and Ruby to avoid trouble with threads (efence is not threadsafe).
 # - Check for missing entries in runtime/makemenu.vim (with checkmenu script).
 # - Check for missing options in runtime/optwin.vim et al. (with check.vim).
 # - Do "make menu" to update the runtime/synmenu.vim file.
@@ -120,17 +120,20 @@
 # - "bmake -f Make_bc3.mak BOR=E:\borlandc" (compiling xxd might fail, in that
 #   case set environment for compiling with Borland C++ 4.0 and do
 #   "make -f make_bc3.mak BOR=E:\BC4 xxd/xxd.exe").
+#   NOTE: this currently fails because Vim is too big.
 # - "make test" and check the output.
 # - Rename the executables to "vimd16.exe", "xxdd16.exe", "installd16.exe" and
 #   "uninstald16.exe".
 # 32 bit DOS version:
 # - Set environment for compiling with DJGPP; "gmake -f Make_djg.mak".
-# - "rm testdir/*.out", "gmake -f Make_djg.mak test" and check the output.
+# - "rm testdir/*.out", "gmake -f Make_djg.mak test" and check the output for
+#   "ALL DONE".
 # - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
 #   "uninstald32.exe".
 # Win32 console version:
-# - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat" (adjust the
-#   paths when necessary).
+# - Set environment for Visual C++ 2008 Express Edition: "msvc2008.bat".  Or,
+#   when using the Visual C++ Toolkit 2003: "msvcsetup.bat" (adjust the paths
+#   when necessary).
 # - "nmake -f Make_mvc.mak"
 # - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
 # - Rename the executables to "vimw32.exe", "xxdw32.exe".
diff --git a/README.txt b/README.txt
index cdb97a3..6eece41 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-README.txt for version 7.1 of Vim: Vi IMproved.
+README.txt for version 7.2a of Vim: Vi IMproved.
 
 
 WHAT IS VIM
@@ -133,9 +133,6 @@
 Send any other comments, patches, pizza and suggestions to:
 
 	Bram Moolenaar		E-mail:	Bram@vim.org
-	Molenstraat 2
-	2161 HP  Lisse
-	The Netherlands
-
-This is the address of my parents, they will forward mail and eat the pizza.
-My actual address will change a couple of times in 2006.
+	Finsterruetihof 1
+	8134 Adliswil
+	Switzerland
diff --git a/README_ami.txt b/README_ami.txt
index ed085e0..13fa67d 100644
--- a/README_ami.txt
+++ b/README_ami.txt
@@ -1,4 +1,4 @@
-README_ami.txt for version 7.1 of Vim: Vi IMproved.
+README_ami.txt for version 7.2a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on Amiga systems.
 See README.txt for general information about Vim.
diff --git a/README_amibin.txt b/README_amibin.txt
index 8f2b2d4..24b9ef2 100644
--- a/README_amibin.txt
+++ b/README_amibin.txt
@@ -1,4 +1,4 @@
-README_amibin.txt for version 7.1 of Vim: Vi IMproved.
+README_amibin.txt for version 7.2a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_ami.txt" for installation instructions for the Amiga.
diff --git a/README_amisrc.txt b/README_amisrc.txt
index 0b6b7ff..8732efb 100644
--- a/README_amisrc.txt
+++ b/README_amisrc.txt
@@ -1,4 +1,4 @@
-README_amisrc.txt for version 7.1 of Vim: Vi IMproved.
+README_amisrc.txt for version 7.2a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_ami.txt" for installation instructions for the Amiga.
diff --git a/README_bindos.txt b/README_bindos.txt
index bd3c470..593a925 100644
--- a/README_bindos.txt
+++ b/README_bindos.txt
@@ -1,4 +1,4 @@
-README_bindos.txt for version 7.1 of Vim: Vi IMproved.
+README_bindos.txt for version 7.2a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
diff --git a/README_dos.txt b/README_dos.txt
index c985c7a..f4818b8 100644
--- a/README_dos.txt
+++ b/README_dos.txt
@@ -1,4 +1,4 @@
-README_dos.txt for version 7.1 of Vim: Vi IMproved.
+README_dos.txt for version 7.2a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on MS-DOS and MS-Windows systems.
 See "README.txt" for general information about Vim.
diff --git a/README_extra.txt b/README_extra.txt
index e6685f9..660b502 100644
--- a/README_extra.txt
+++ b/README_extra.txt
@@ -1,4 +1,4 @@
-README_extra.txt for version 7.1 of Vim: Vi IMproved.
+README_extra.txt for version 7.2a of Vim: Vi IMproved.
 
 The extra archive of Vim is to be used in combination with the source archive
 (vim-7.0-src.tar.gz).  The extra archive is useless without it.
diff --git a/README_lang.txt b/README_lang.txt
index 5e39100..9df9f76 100644
--- a/README_lang.txt
+++ b/README_lang.txt
@@ -1,4 +1,4 @@
-README_lang.txt for version 7.1 of Vim: Vi IMproved.
+README_lang.txt for version 7.2a of Vim: Vi IMproved.
 
 This file contains files for non-English languages:
 - Translated messages.
diff --git a/README_mac.txt b/README_mac.txt
index dddeb09..796ad01 100644
--- a/README_mac.txt
+++ b/README_mac.txt
@@ -1,4 +1,4 @@
-README_mac.txt for version 7.1 of Vim: Vi IMproved.
+README_mac.txt for version 7.2a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on Macintosh systems.
 See "README.txt" for general information about Vim.
diff --git a/README_ole.txt b/README_ole.txt
index 400396a..8112136 100644
--- a/README_ole.txt
+++ b/README_ole.txt
@@ -1,4 +1,4 @@
-README_ole.txt for version 7.1 of Vim: Vi IMproved.
+README_ole.txt for version 7.2a of Vim: Vi IMproved.
 
 This archive contains gvim.exe with OLE interface and VisVim.
 This version of gvim.exe can also load a number of interface dynamically (you
diff --git a/README_os2.txt b/README_os2.txt
index 6ddc708..a9e0a42 100644
--- a/README_os2.txt
+++ b/README_os2.txt
@@ -1,4 +1,4 @@
-README_os2.txt for version 7.1 of Vim: Vi IMproved.
+README_os2.txt for version 7.2a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on OS/2 systems.
 See "README.txt" for general information about Vim.
diff --git a/README_os390.txt b/README_os390.txt
index 635bedb..0ce9dd8 100644
--- a/README_os390.txt
+++ b/README_os390.txt
@@ -1,4 +1,4 @@
-README_os_390.txt for version 7.1 of Vim: Vi IMproved.
+README_os_390.txt for version 7.2a of Vim: Vi IMproved.
 
 Welcome to the OS/390 Unix port of VIM.
 
diff --git a/README_src.txt b/README_src.txt
index 4d53f6f..7079f3e 100644
--- a/README_src.txt
+++ b/README_src.txt
@@ -1,4 +1,4 @@
-README_src.txt for version 7.1 of Vim: Vi IMproved.
+README_src.txt for version 7.2a of Vim: Vi IMproved.
 
 The source archive contains the files needed to compile Vim on Unix systems.
 It is packed for Unix systems (NL line separator).  It is also used for other
diff --git a/README_srcdos.txt b/README_srcdos.txt
index 1ad432a..ef78029 100644
--- a/README_srcdos.txt
+++ b/README_srcdos.txt
@@ -1,4 +1,4 @@
-README_srcdos.txt for version 7.1 of Vim: Vi IMproved.
+README_srcdos.txt for version 7.2a of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
diff --git a/README_unix.txt b/README_unix.txt
index d4bfb59..5338cb1 100644
--- a/README_unix.txt
+++ b/README_unix.txt
@@ -1,4 +1,4 @@
-README_unix.txt for version 7.1 of Vim: Vi IMproved.
+README_unix.txt for version 7.2a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on Unix systems.
 See "README.txt" for general information about Vim.
diff --git a/README_vms.txt b/README_vms.txt
index 07a9c16..d51339e 100644
--- a/README_vms.txt
+++ b/README_vms.txt
@@ -1,4 +1,4 @@
-README_vms.txt for version 7.1 of Vim: Vi IMproved.
+README_vms.txt for version 7.2a of Vim: Vi IMproved.
 
 This file explains the installation of Vim on VMS systems.
 See "README.txt" in the runtime archive for information about Vim.
diff --git a/README_w32s.txt b/README_w32s.txt
index 393f8c0..1b9774d 100644
--- a/README_w32s.txt
+++ b/README_w32s.txt
@@ -1,4 +1,4 @@
-README_w32s.txt for version 7.1 of Vim: Vi IMproved.
+README_w32s.txt for version 7.2a of Vim: Vi IMproved.
 
 This archive contains the gvim.exe that was specifically compiled for use in
 the Win32s subsystem in MS-Windows 3.1 and 3.11.
diff --git a/runtime/doc/ada.txt b/runtime/doc/ada.txt
deleted file mode 100644
index 6054ac7..0000000
--- a/runtime/doc/ada.txt
+++ /dev/null
@@ -1,515 +0,0 @@
-*ada.txt*	For Vim version 7.1.  Last change: 2007 May 08
-
-
-		    ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
-
-ADA								      *ada.vim*
-
-1.  Syntax Highlighting			    |ft-ada-syntax|
-2.  Plug-in				    |ft-ada-plugin|
-3.  Omni Completion			    |ft-ada-omni|
-    3.1 Omni Completion with "gnat xref"	|gnat-xref|
-    3.2 Omni Completion with "ctags"		|ada-ctags|
-4.  Compiler Support			    |ada-compiler|
-    4.1 GNAT					|compiler-gnat|
-    4.1 Dec Ada					|compiler-decada|
-5.  References				    |ada-reference|
-    5.1 Options					|ft-ada-options|
-    5.2 Functions				|ft-ada-functions|
-    5.3 Commands				|ft-ada-commands|
-    5.4 Variables				|ft-ada-variables|
-    5.5 Constants				|ft-ada-constants|
-8.  Extra Plug-ins			    |ada-extra-plugins|
-
-==============================================================================
-1. Syntax Highlighting ~
-							       *ft-ada-syntax*
-
-This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes
-support for objected-programming, protected types, and so on.  It handles code
-written for the original Ada language ("Ada83", "Ada87", "Ada95") as well,
-though code which uses Ada 2005-only keywords will be wrongly colored (such
-code should be fixed anyway).  For more information about Ada, see
-http://www.adapower.com.
-
-The Ada mode handles a number of situations cleanly.
-
-For example, it knows that the "-" in "-5" is a number, but the same character
-in "A-5" is an operator.  Normally, a "with" or "use" clause referencing
-another compilation unit is coloured the same way as C's "#include" is coloured.
-If you have "Conditional" or "Repeat" groups coloured differently, then "end
-if" and "end loop" will be coloured as part of those respective groups.
-
-You can set these to different colours using vim's "highlight" command (e.g.,
-to change how loops are displayed, enter the command ":hi Repeat" followed by
-the colour specification; on simple terminals the colour specification
-ctermfg=White often shows well).
-
-There are several options you can select in this Ada mode. See|ft-ada-options|
-for a complete list.
-
-To enable them, assign a value to the option.  For example, to turn one on:
- >
-    > let g:ada_standard_types = 1
->
-To disable them use ":unlet".  Example:
->
-    > unlet g:ada_standard_types
-
-You can just use ":" and type these into the command line to set these
-temporarily before loading an Ada file.  You can make these option settings
-permanent by adding the "let" command(s), without a colon, to your "~/.vimrc"
-file.
-
-Even on a slow (90Mhz) PC this mode works quickly, but if you find the
-performance unacceptable, turn on |g:ada_withuse_ordinary|.
-
-Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is
-set.
-
-==============================================================================
-2. File type Plug-in ~
-					       *ft-ada-indent* *ft-ada-plugin*
-
-The Ada plug-in provides support for:
-
- - auto indenting	(|indent.txt|)
- - insert completion	(|i_CTRL-N|)
- - user completion	(|i_CTRL-X_CTRL-U|)
- - tag searches		(|tagsrch.txt|)
- - Quick Fix		(|quickfix.txt|)
- - backspace handling	(|'backspace'|)
- - comment handling	(|'comments'|, |'commentstring'|)
-
-The plug-in only activates the features of the Ada mode whenever an Ada
-files is opened and add adds Ada related entries to the main and pop-up menu.
-
-==============================================================================
-3. Omni Completion ~
-								 *ft-ada-omni*
-
-The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either
-by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net).  The
-complete function will automatically detect which tool was used to create the
-tags file.
-
-------------------------------------------------------------------------------
-3.1 Omni Completion with "gnat xref" ~
-								   *gnat-xref*
-
-GNAT XREF uses the compiler internal informations (ali-files) to produce the
-tags file. This has the advantage to be 100% correct and the option of deep
-nested analysis. However the code must compile, the generator is quite
-slow and the created tags file contains only the basic Ctags informations for
-each entry - not enough for some of the more advanced Vim code browser
-plug-ins.
-
-NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
-       output - If nothing is printed then usually the parameters are wrong.
-       Here some important tips:
-
-1)  You need to compile your code first and use the "-aO" option to point to
-    your .ali files.
-2)  "gnat xref -v ../Include/adacl.ads" won't work - use  the "gnat xref -v
-    -aI../Include adacl.ads" instead.
-3)  "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and
-    then "gnat xref -v *.ad?"
-4)  Project manager support is completely broken - don't even try "gnat xref
-    -Padacl.gpr".
-5)  VIM is faster when the tags file is sorted - use "sort --unique
-    --ignore-case --output=tags tags" .
-6)  Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
-    the file assorted.
-
-------------------------------------------------------------------------------
-3.2 Omni Completion with "ctags"~
-								   *ada-ctags*
-
-Exuberant Ctags uses its own multi-language code parser. The parser is quite
-fast, produces a lot of extra informations (hence the name "Exuberant Ctags")
-and can run on files which currently do not compile.
-
-There are also lots of other Vim-tools which use exuberant Ctags.
-
-You will need to install a version of the Exuberant Ctags which has Ada
-support patched in. Such a version is available from the GNU Ada Project
-(http://gnuada.sourceforge.net).
-
-The Ada parser for Exuberant Ctags is fairly new - don't expect complete
-support yet.
-
-==============================================================================
-4.  Compiler Support ~
-								*ada-compiler*
-
-The Ada mode supports more then one Ada compiler and will automatically load the
-compiler set in|g:ada_default_compiler|whenever an Ada source is opened. The
-provided compiler plug-ins are split into the actual compiler plug-in and a
-collection of support functions and variables. This allows the easy
-development of specialized compiler plug-ins fine tuned to your development
-environment.
-
-------------------------------------------------------------------------------
-4.1 GNAT ~
-							       *compiler-gnat*
-
-GNAT is the only free (beer and speech) Ada compiler available. There are
-several version available which differentiate in the licence terms used.
-
-The GNAT compiler plug-in will perform a compile on pressing <F7> and then
-immediately shows the result. You can set the project file to be used by
-setting:
- >
- > call g:gnat.Set_Project_File ('my_project.gpr')
-
-Setting a project file will also create a Vim session (|views-sessions|) so -
-like with the GPS - opened files, window positions etc. will remembered
-separately for all projects.
-
-								*gnat_members*
-GNAT OBJECT ~
-
-							       *g:gnat.Make()*
-g:gnat.Make()
-		Calls|g:gnat.Make_Command|and displays the result inside a
-               |quickfix| window.
-
-							     *g:gnat.Pretty()*
-g:gnat.Pretty()
-		Calls|g:gnat.Pretty_Command|
-
-							       *g:gnat.Find()*
-g:gnat.Find()
-		Calls|g:gnat.Find_Command|
-
-							       *g:gnat.Tags()*
-g:gnat.Tags()
-		Calls|g:gnat.Tags_Command|
-
-						   *g:gnat.Set_Project_File()*
-g:gnat.Set_Project_File([{file}])
-		Set gnat project file and load associated session.  An open
-		project will be closed and the session written.  If called
-		without file name the file selector opens for selection of a
-		project file. If called with an empty string then the project
-		and associated session are closed.
-
-							 *g:gnat.Project_File*
-g:gnat.Project_File	string
-		Current project file.
-
-							 *g:gnat.Make_Command*
-g:gnat.Make_Command	string
-		External command used for|g:gnat.Make()| (|'makeprg'|).
-
-						       *g:gnat.Pretty_Program*
-g:gnat.Pretty_Program	string
-		External command used for|g:gnat.Pretty()|
-
-							 *g:gnat.Find_Program*
-g:gnat.Find_Program	string
-		External command used for|g:gnat.Find()|
-
-							 *g:gnat.Tags_Command*
-g:gnat.Tags_Command	string
-		External command used for|g:gnat.Tags()|
-
-							 *g:gnat.Error_Format*
-g:gnat.Error_Format	string
-		Error format (|'errorformat'|)
-
-------------------------------------------------------------------------------
-4.2 Dec Ada ~
-					    *compiler-hpada* *compiler-decada*
-					*compiler-vaxada* *compiler-compaqada*
-
-Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada
-and HP Ada) is a fairly dated Ada 83 compiler. Support is basic: <F7> will
-compile the current unit.
-
-The Dec Ada compiler expects the package name and not the file name to be
-passed a parameter. The compiler plug-in supports the usual file name
-convention to convert the file into a unit name. For separates both '-' and
-'__' are allowed.
-
-							      *decada_members*
-DEC ADA OBJECT ~
-
-							     *g:decada.Make()*
-g:decada.Make()		function
-		Calls|g:decada.Make_Command|and displays the result inside a
-               |quickfix| window.
-
-							*g:decada.Unit_Name()*
-g:decada.Unit_Name()	function
-		Get the Unit name for the current file.
-
-						       *g:decada.Make_Command*
-g:decada.Make_Command	string
-		External command used for|g:decadat.Make()| (|'makeprg'|).
-
-						       *g:decada.Error_Format*
-g:decada.Error_Format|	string
-		Error format (|'errorformat'|).
-
-==============================================================================
-5. References ~
-							       *ada-reference*
-
-------------------------------------------------------------------------------
-5.1 Options ~
-							      *ft-ada-options*
-
-							*g:ada_standard_types*
-g:ada_standard_types	bool (true when exists)
-		Highlight types in package Standard (e.g., "Float")
-
-							  *g:ada_space_errors*
-						  *g:ada_no_trail_space_error*
-						    *g:ada_no_tab_space_error*
-							 *g:ada_all_tab_usage*
-g:ada_space_errors	 bool (true when exists)
-		Highlight extraneous errors in spaces ...
-		g:ada_no_trail_space_error
-		    - but ignore trailing spaces at the end of a line
-		g:ada_no_tab_space_error
-		    - but ignore tabs after spaces
-		g:ada_all_tab_usage
-		    - highlight all tab use
-
-							   *g:ada_line_errors*
-g:ada_line_errors	  bool (true when exists)
-		Highlight lines which are to long. Note: This highlighting
-		option is quite CPU intensive.
-
-							 *g:ada_rainbow_color*
-g:ada_rainbow_color	  bool (true when exists)
-		Use rainbow colours for '(' and ')'. You need the
-		rainbow_parenthesis for this to work
-
-							       *g:ada_folding*
-g:ada_folding		  set ('sigpft')
-		Use folding for Ada sources.
-		    's':    activate syntax folding on load
-			'p':    fold packages
-			'f':    fold functions and procedures
-			't':    fold types
-			'c':    fold conditionals
-		    'g':    activate gnat pretty print folding on load
-			'i':    lone 'is' folded with line above
-			'b':	lone 'begin' folded with line above
-			'p':	lone 'private' folded with line above
-			'x':	lone 'exception' folded with line above
-		    'i':    activate indent folding on load
-
-		Note: Syntax folding is in an early (unusable) stage and
-		      indent or gnat pretty folding is suggested.
-
-		For gnat pretty folding to work the following settings are
-		suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5
-
-		For indent folding to work the following settings are
-		suggested: shiftwidth=3 softtabstop=3
-
-								*g:ada_abbrev*
-g:ada_abbrev		  bool (true when exists)
-		Add some abbreviations. This feature more or less superseded
-		by the various completion methods.
-
-						      *g:ada_withuse_ordinary*
-g:ada_withuse_ordinary	  bool (true when exists)
-		Show "with" and "use" as ordinary keywords (when used to
-		reference other compilation units they're normally highlighted
-		specially).
-
-							 *g:ada_begin_preproc*
-g:ada_begin_preproc	  bool (true when exists)
-		Show all begin-like keywords using the colouring of C
-		preprocessor commands.
-
-						    *g:ada_omni_with_keywords*
-g:ada_omni_with_keywords
-		Add Keywords, Pragmas, Attributes to omni-completions
-		(|compl-omni|). Note: You can always complete then with user
-		completion (|i_CTRL-X_CTRL-U|).
-
-						      *g:ada_extended_tagging*
-g:ada_extended_tagging	  enum ('jump', 'list')
-		use extended tagging, two options are available
-		    'jump': use tjump to jump.
-		    'list': add tags quick fix list.
-		Normal tagging does not support function or operator
-		overloading as these features are not available in C and
-		tagging was originally developed for C.
-
-						   *g:ada_extended_completion*
-g:ada_extended_completion
-		Uses extended completion for <C-N> and <C-R> completions
-		(|i_CTRL-N|). In this mode the '.' is used as part of the
-		identifier so that 'Object.Method' or 'Package.Procedure' are
-		completed together.
-
-						       *g:ada_gnat_extensions*
-g:ada_gnat_extensions	  bool (true when exists)
-		 Support GNAT extensions.
-
-					       *g:ada_with_gnat_project_files*
-g:ada_with_gnat_project_files	 bool (true when exists)
-		 Add gnat project file keywords and Attributes.
-
-						      *g:ada_default_compiler*
-g:ada_default_compiler	  string
-		set default compiler. Currently supported is 'gnat' and
-		'decada'.
-
-An "exists" type is a boolean is considered true when the variable is defined
-and false when the variable is undefined. The value which the variable is
-set makes no difference.
-
-------------------------------------------------------------------------------
-5.3 Commands ~
-							     *ft-ada-commands*
-
-:AdaRainbow							 *:AdaRainbow*
-		Toggles rainbow colour (|g:ada_rainbow_color|) mode for
-		'(' and ')'
-
-:AdaLines							   *:AdaLines*
-		Toggles line error (|g:ada_line_errors|) display
-
-:AdaSpaces							  *:AdaSpaces*
-		Toggles space error (|g:ada_space_errors|) display.
-
-:AdaTagDir							  *:AdaTagDir*
-		Creates tags file for the directory of the current file.
-
-:AdaTagFile							 *:AdaTagFile*
-		Creates tags file for the current file.
-
-:AdaTypes							   *:AdaTypes*
-		Toggles standard types (|g:ada_standard_types|) colour.
-
-:GnatFind							   *:GnatFind*
-		Calls |g:gnat.Find()|
-
-:GnatPretty							 *:GnatPretty*
-		Calls |g:gnat.Pretty()|
-
-:GnatTags							   *:GnatTags*
-		Calls |g:gnat.Tags()|
-
-------------------------------------------------------------------------------
-5.3 Variables ~
-							    *ft-ada-variables*
-
-								      *g:gnat*
-g:gnat			    object
-		Control object which manages GNAT compiles.  The object
-		is created when the first Ada source code is loaded provided
-		that |g:ada_default_compiler|is set to 'gnat'. See|gnat_members|
-		for details.
-
-								    *g:decada*
-g:decada		      object
-		Control object which manages Dec Ada compiles.	The object
-		is created when the first Ada source code is loaded provided
-		that |g:ada_default_compiler|is set to 'decada'. See
-	       |decada_members|for details.
-
-------------------------------------------------------------------------------
-5.4 Constants ~
-							    *ft-ada-constants*
-
-All constants are locked. See |:lockvar| for details.
-
-							     *g:ada#WordRegex*
-g:ada#WordRegex		string
-		Regular expression to search for Ada words
-
-							  *g:ada#DotWordRegex*
-g:ada#DotWordRegex	string
-		Regular expression to search for Ada words separated by dots.
-
-							       *g:ada#Comment*
-g:ada#Comment		string
-		Regular expression to search for Ada comments
-
-							      *g:ada#Keywords*
-g:ada#Keywords		list of dictionaries
-		List of keywords, attributes etc. pp. in the format used by
-		omni completion. See |complete-items| for details.
-
-							   *g:ada#Ctags_Kinds*
-g:ada#Ctags_Kinds	dictionary of lists
-		Dictionary of the various kinds of items which the Ada support
-		for Ctags generates.
-
-------------------------------------------------------------------------------
-5.2 Functions ~
-							    *ft-ada-functions*
-
-ada#Word([{line}, {col}])					  *ada#Word()*
-		Return full name of Ada entity under the cursor (or at given
-		line/column), stripping white space/newlines as necessary.
-
-ada#List_Tag([{line}, {col}])				      *ada#Listtags()*
-		List all occurrences of the Ada entity under the cursor (or at
-		given line/column) inside the quick-fix window
-
-ada#Jump_Tag ({ident}, {mode})				      *ada#Jump_Tag()*
-		List all occurrences of the Ada entity under the cursor (or at
-		given line/column) in the tag jump list. Mode can either be
-		'tjump' or 'stjump'.
-
-ada#Create_Tags ({option})				   *ada#Create_Tags()*
-		Creates tag file using Ctags. The option can either be 'file'
-		for the current file, 'dir' for the directory of the current
-		file or a file name.
-
-gnat#Insert_Tags_Header()			   *gnat#Insert_Tags_Header()*
-		Adds the tag file header (!_TAG_) informations to the current
-		file which are missing from the GNAT XREF output.
-
-ada#Switch_Syntax_Option ({option})		  *ada#Switch_Syntax_Option()*
-		Toggles highlighting options on or off. Used for the Ada menu.
-
-								  *gnat#New()*
-gnat#New ()
-		Create a new gnat object. See |g:gnat| for details.
-
-
-==============================================================================
-8. Extra Plugins ~
-							   *ada-extra-plugins*
-
-You can optionally install the following extra plug-in. They work well with Ada
-and enhance the ability of the Ada mode.:
-
-backup.vim
-	http://www.vim.org/scripts/script.php?script_id=1537
-	Keeps as many backups as you like so you don't have to.
-
-rainbow_parenthsis.vim
-	http://www.vim.org/scripts/script.php?script_id=1561
-	Very helpful since Ada uses only '(' and ')'.
-
-nerd_comments.vim
-	http://www.vim.org/scripts/script.php?script_id=1218
-	Excellent commenting and uncommenting support for almost any
-	programming language.
-
-matchit.vim
-	http://www.vim.org/scripts/script.php?script_id=39
-	'%' jumping for any language. The normal '%' jump only works for '{}'
-	style languages. The Ada mode will set the needed search patters.
-
-taglist.vim
-	http://www.vim.org/scripts/script.php?script_id=273
-	Source code explorer sidebar. There is a patch for Ada available.
-
-The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim
-contains all of the above.
-
-==============================================================================
-vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab
-vim: filetype=help encoding=latin1
diff --git a/runtime/doc/sql.txt b/runtime/doc/sql.txt
deleted file mode 100644
index 303ebd5..0000000
--- a/runtime/doc/sql.txt
+++ /dev/null
@@ -1,763 +0,0 @@
-*sql.txt*	For Vim version 7.1.  Last change: Wed Apr 26 2006 3:05:33 PM
-
-by David Fishburn
-
-This is a filetype plugin to work with SQL files.
-
-The Structured Query Language (SQL) is a standard which specifies statements
-that allow a user to interact with a relational database.  Vim includes
-features for navigation, indentation and syntax highlighting.
-
-1. Navigation					|sql-navigation|
-    1.1 Matchit					|sql-matchit|
-    1.2 Text Object Motions			|sql-object-motions|
-    1.3 Predefined Object Motions		|sql-predefined-objects|
-    1.4 Macros					|sql-macros|
-2. SQL Dialects					|sql-dialects|
-    2.1 SQLSetType				|SQLSetType|
-    2.2 SQL Dialect Default			|sql-type-default|
-3. Adding new SQL Dialects			|sql-adding-dialects|
-4. OMNI SQL Completion				|sql-completion|
-    4.1 Static mode				|sql-completion-static|
-    4.2 Dynamic mode				|sql-completion-dynamic|
-    4.3 Tutorial				|sql-completion-tutorial|
-	4.3.1 Complete Tables			|sql-completion-tables|
-	4.3.2 Complete Columns			|sql-completion-columns|
-	4.3.3 Complete Procedures		|sql-completion-procedures|
-	4.3.4 Complete Views			|sql-completion-views|
-    4.4 Completion Customization		|sql-completion-customization|
-    4.5 SQL Maps				|sql-completion-maps|
-    4.6 Using with other filetypes		|sql-completion-filetypes|
-
-==============================================================================
-1. Navigation					*sql-navigation*
-
-The SQL ftplugin provides a number of options to assist with file
-navigation.
-
-
-1.1 Matchit					*sql-matchit*
------------
-The matchit plugin (http://www.vim.org/scripts/script.php?script_id=39)
-provides many additional features and can be customized for different
-languages.  The matchit plugin is configured by defining a local
-buffer variable, b:match_words.  Pressing the % key while on various
-keywords will move the cursor to its match.  For example, if the cursor
-is on an "if", pressing % will cycle between the "else", "elseif" and
-"end if" keywords.
-
-The following keywords are supported: >
-    if
-    elseif | elsif
-    else [if]
-    end if
-
-    [while condition] loop
-	leave
-	break
-	continue
-	exit
-    end loop
-
-    for
-	leave
-	break
-	continue
-	exit
-    end loop
-
-    do
-	statements
-    doend
-
-    case
-    when
-    when
-    default
-    end case
-
-    merge
-    when not matched
-    when matched
-
-    create[ or replace] procedure|function|event
-    returns
-
-
-1.2 Text Object Motions				*sql-object-motions*
------------------------
-Vim has a number of predefined keys for working with text |object-motions|.
-This filetype plugin attempts to translate these keys to maps which make sense
-for the SQL language.
-
-The following |Normal| mode and |Visual| mode maps exist (when you edit a SQL
-file): >
-    ]]		    move forward to the next 'begin'
-    [[		    move backwards to the previous 'begin'
-    ][		    move forward to the next 'end'
-    []		    move backwards to the previous 'end'
-
-
-1.3 Predefined Object Motions			*sql-predefined-objects*
------------------------------
-Most relational databases support various standard features, tables, indices,
-triggers and stored procedures.  Each vendor also has a variety of proprietary
-objects.  The next set of maps have been created to help move between these
-objects.  Depends on which database vendor you are using, the list of objects
-must be configurable.  The filetype plugin attempts to define many of the
-standard objects, plus many additional ones.  In order to make this as
-flexible as possible, you can override the list of objects from within your
-|vimrc| with the following: >
-    let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' .
-		\ ',schema,service,publication,database,datatype,domain' .
-		\ ',index,subscription,synchronization,view,variable'
-
-The following |Normal| mode and |Visual| mode maps have been created which use
-the above list: >
-    ]}		    move forward to the next 'create <object name>'
-    [{		    move backward to the previous 'create <object name>'
-
-Repeatedly pressing ]} will cycle through each of these create statements: >
-    create table t1 (
-	...
-    );
-
-    create procedure p1
-    begin
-	...
-    end;
-
-    create index i1 on t1 (c1);
-
-The default setting for g:ftplugin_sql_objects is: >
-    let g:ftplugin_sql_objects = 'function,procedure,event,' .
-		\ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
-		\ 'table,trigger' .
-		\ ',schema,service,publication,database,datatype,domain' .
-		\ ',index,subscription,synchronization,view,variable'
-
-The above will also handle these cases: >
-    create table t1 (
-	...
-    );
-    create existing table t2 (
-	...
-    );
-    create global temporary table t3 (
-	...
-    );
-
-By default, the ftplugin only searches for CREATE statements.  You can also
-override this via your |vimrc| with the following: >
-    let g:ftplugin_sql_statements = 'create,alter'
-
-The filetype plugin defines three types of comments: >
-    1.  --
-    2.  //
-    3.  /*
-	 *
-	 */
-
-The following |Normal| mode and |Visual| mode maps have been created to work
-with comments: >
-    ]"		    move forward to the beginning of a comment
-    ["		    move forward to the end of a comment
-
-
-
-1.4 Macros					   *sql-macros*
-----------
-Vim's feature to find macro definitions, |'define'|, is supported using this
-regular expression: >
-    \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
-
-This addresses the following code: >
-    CREATE VARIABLE myVar1 INTEGER;
-
-    CREATE PROCEDURE sp_test(
-	IN myVar2 INTEGER,
-	OUT myVar3 CHAR(30),
-	INOUT myVar4 NUMERIC(20,0)
-    )
-    BEGIN
-	DECLARE myVar5 INTEGER;
-
-	SELECT c1, c2, c3
-	  INTO myVar2, myVar3, myVar4
-	  FROM T1
-	 WHERE c4 = myVar1;
-    END;
-
-Place your cursor on "myVar1" on this line: >
-	 WHERE c4 = myVar1;
-		     ^
-
-Press any of the following keys: >
-    [d
-    [D
-    [CTRL-D
-
-
-==============================================================================
-2. SQL Dialects					*sql-dialects* *sql-types*
-						*sybase* *TSQL* *Transact-SQL*
-						*sqlanywhere*
-						*oracle* *plsql* *sqlj*
-						*sqlserver*
-						*mysql* *postgres* *psql*
-						*informix*
-
-All relational databases support SQL.  There is a portion of SQL that is
-portable across vendors (ex. CREATE TABLE, CREATE INDEX), but there is a
-great deal of vendor specific extensions to SQL.  Oracle supports the
-"CREATE OR REPLACE" syntax, column defaults specified in the CREATE TABLE
-statement and the procedural language (for stored procedures and triggers).
-
-The default Vim distribution ships with syntax highlighting based on Oracle's
-PL/SQL.  The default SQL indent script works for Oracle and SQL Anywhere.
-The default filetype plugin works for all vendors and should remain vendor
-neutral, but extendable.
-
-Vim currently has support for a variety of different vendors, currently this
-is via syntax scripts. Unfortunately, to flip between different syntax rules
-you must either create:
-    1.  New filetypes
-    2.  Custom autocmds
-    3.  Manual steps / commands
-
-The majority of people work with only one vendor's database product, it would
-be nice to specify a default in your |vimrc|.
-
-
-2.1 SQLSetType					*sqlsettype* *SQLSetType*
---------------
-For the people that work with many different databases, it would be nice to be
-able to flip between the various vendors rules (indent, syntax) on a per
-buffer basis, at any time.  The ftplugin/sql.vim file defines this function: >
-    SQLSetType
-
-Executing this function without any parameters will set the indent and syntax
-scripts back to their defaults, see |sql-type-default|.  If you have turned
-off Vi's compatibility mode, |'compatible'|, you can use the <Tab> key to
-complete the optional parameter.
-
-After typing the function name and a space, you can use the completion to
-supply a parameter.  The function takes the name of the Vim script you want to
-source.  Using the |cmdline-completion| feature, the SQLSetType function will
-search the |'runtimepath'| for all Vim scripts with a name containing 'sql'.
-This takes the guess work out of the spelling of the names.  The following are
-examples: >
-    :SQLSetType
-    :SQLSetType sqloracle
-    :SQLSetType sqlanywhere
-    :SQLSetType sqlinformix
-    :SQLSetType mysql
-
-The easiest approach is to the use <Tab> character which will first complete
-the command name (SQLSetType), after a space and another <Tab>, display a list
-of available Vim script names: >
-    :SQL<Tab><space><Tab>
-
-
-2.2 SQL Dialect Default				*sql-type-default*
------------------------
-As mentioned earlier, the default syntax rules for Vim is based on Oracle
-(PL/SQL).  You can override this default by placing one of the following in
-your |vimrc|: >
-    let g:sql_type_default = 'sqlanywhere'
-    let g:sql_type_default = 'sqlinformix'
-    let g:sql_type_default = 'mysql'
-
-If you added the following to your |vimrc|: >
-    let g:sql_type_default = 'sqlinformix'
-
-The next time edit a SQL file the following scripts will be automatically
-loaded by Vim: >
-    ftplugin/sql.vim
-    syntax/sqlinformix.vim
-    indent/sql.vim
->
-Notice indent/sqlinformix.sql was not loaded.  There is no indent file
-for Informix, Vim loads the default files if the specified files does not
-exist.
-
-
-==============================================================================
-3. Adding new SQL Dialects			*sql-adding-dialects*
-
-If you begin working with a SQL dialect which does not have any customizations
-available with the default Vim distribution you can check http://www.vim.org
-to see if any customization currently exist.  If not, you can begin by cloning
-an existing script.  Read |filetype-plugins| for more details.
-
-To help identify these scripts, try to create the files with a "sql" prefix.
-If you decide you wish to create customizations for the SQLite database, you
-can create any of the following: >
-    Unix
-	~/.vim/syntax/sqlite.vim
-	~/.vim/indent/sqlite.vim
-    Windows
-	$VIM/vimfiles/syntax/sqlite.vim
-	$VIM/vimfiles/indent/sqlite.vim
-
-No changes are necessary to the SQLSetType function.  It will automatically
-pickup the new SQL files and load them when you issue the SQLSetType command.
-
-
-==============================================================================
-4. OMNI SQL Completion				*sql-completion*
-						*omni-sql-completion*
-
-Vim 7 includes a code completion interface and functions which allows plugin
-developers to build in code completion for any language.  Vim 7 includes
-code completion for the SQL language.
-
-There are two modes to the SQL completion plugin, static and dynamic.  The
-static mode populates the popups with the data generated from current syntax
-highlight rules.  The dynamic mode populates the popups with data retrieved
-directly from a database.  This includes, table lists, column lists,
-procedures names and more.
-
-4.1 Static Mode					*sql-completion-static*
----------------
-The static popups created contain items defined by the active syntax rules
-while editing a file with a filetype of SQL.  The plugin defines (by default)
-various maps to help the user refine the list of items to be displayed.
-The defaults static maps are: >
-    imap <buffer> <C-C>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O>
-    imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
-    imap <buffer> <C-C>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O>
-    imap <buffer> <C-C>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
-    imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
-    imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
-
-The static maps (which are based on the syntax highlight groups) follow this
-format: >
-    imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
-
-This command breaks down as: >
-    imap		   - Create an insert map
-    <buffer>		   - Only for this buffer
-    <C-C>k		   - Your choice of key map
-    <C-\><C-O>		   - Execute one command, return to Insert mode
-    :call sqlcomplete#Map( - Allows the SQL completion plugin to perform some
-			     housekeeping functions to allow it to be used in
-			     conjunction with other completion plugins.
-			     Indicate which item you want the SQL completion
-			     plugin to complete.
-			     In this case we are asking the plugin to display
-			     items from the syntax highlight group
-			     'sqlKeyword'.
-			     You can view a list of highlight group names to
-			     choose from by executing the
-				 :syntax list
-			     command while editing a SQL file.
-    'sqlKeyword'	   - Display the items for the sqlKeyword highlight
-			     group
-    )<CR>		   - Execute the :let command
-    <C-X><C-O>		   - Trigger the standard omni completion key stroke.
-			     Passing in 'sqlKeyword' instructs the SQL
-			     completion plugin to populate the popup with
-			     items from the sqlKeyword highlight group.  The
-			     plugin will also cache this result until Vim is
-			     restarted.  The syntax list is retrieved using
-			     the syntaxcomplete plugin.
-
-Using the 'syntax' keyword is a special case.  This instructs the
-syntaxcomplete plugin to retrieve all syntax items.  So this will effectively
-work for any of Vim's SQL syntax files.  At the time of writing this includes
-10 different syntax files for the different dialects of SQL (see section 3
-above, |sql-dialects|).
-
-Here are some examples of the entries which are pulled from the syntax files: >
-     All
-	 - Contains the contents of all syntax highlight groups
-     Statements
-	 - Select, Insert, Update, Delete, Create, Alter, ...
-     Functions
-	 - Min, Max, Trim, Round, Date, ...
-     Keywords
-	 - Index, Database, Having, Group, With
-     Options
-	 - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
-     Types
-	 - Integer, Char, Varchar, Date, DateTime, Timestamp, ...
-
-
-4.2 Dynamic Mode				*sql-completion-dynamic*
-----------------
-Dynamic mode populates the popups with data directly from a database.  In
-order for the dynamic feature to be enabled you must have the dbext.vim
-plugin installed, (http://vim.sourceforge.net/script.php?script_id=356).
-
-Dynamic mode is used by several features of the SQL completion plugin.
-After installing the dbext plugin see the dbext-tutorial for additional
-configuration and usage.  The dbext plugin allows the SQL completion plugin
-to display a list of tables, procedures, views and columns. >
-     Table List
-	 - All tables for all schema owners
-     Procedure List
-	 - All stored procedures for all schema owners
-     View List
-	 - All stored procedures for all schema owners
-     Column List
-	 - For the selected table, the columns that are part of the table
-
-To enable the popup, while in INSERT mode, use the following key combinations
-for each group (where <C-C> means hold the CTRL key down while pressing
-the space bar):
-     Table List		    - <C-C>t
-			    - <C-X><C-O> (the default map assumes tables)
-     Stored Procedure List  - <C-C>p
-     View List		    - <C-C>v
-     Column List	    - <C-C>c
-
-     Windows platform only  - When viewing a popup window displaying the list
-			      of tables, you can press <C-Right>, this will
-			      replace the table currently highlighted with
-			      the column list for that table.
-			    - When viewing a popup window displaying the list
-			      of columns, you can press <C-Left>, this will
-			      replace the column list with the list of tables.
-			    - This allows you to quickly drill down into a
-			      table to view it's columns and back again.
-
-The SQL completion plugin caches various lists that are displayed in
-the popup window.  This makes the re-displaying of these lists very
-fast.  If new tables or columns are added to the database it may become
-necessary to clear the plugins cache.  The default map for this is: >
-    imap <buffer> <C-C>R <C-\><C-O>:call sqlcomplete#Map('ResetCache')<CR><C-X><C-O>
-
-
-4.3 SQL Tutorial				*sql-completion-tutorial*
-----------------
-
-This tutorial is designed to take you through the common features of the SQL
-completion plugin so that: >
-     a) You gain familiarity with the plugin
-     b) You are introduced to some of the more common features
-     c) Show how to customize it to your preferences
-     d) Demonstrate "Best of Use" of the plugin (easiest way to configure).
-
-First, create a new buffer: >
-     :e tutorial.sql
-
-
-Static features
----------------
-To take you through the various lists, simply enter insert mode, hit:
-    <C-C>s   (show SQL statements)
-At this point, you can page down through the list until you find "select".
-If you are familiar with the item you are looking for, for example you know
-the statement begins with the letter "s".  You can type ahead (without the
-quotes) "se" then press:
-    <C-Space>t
-Assuming "select" is highlighted in the popup list press <Enter> to choose
-the entry.  Now type:
-    * fr<C-C>a (show all syntax items)
-choose "from" from the popup list.
-
-When writing stored procedures using the "type" list is useful.  It contains
-a list of all the database supported types.  This may or may not be true
-depending on the syntax file you are using.  The SQL Anywhere syntax file
-(sqlanywhere.vim) has support for this: >
-     BEGIN
-	DECLARE customer_id <C-C>T <-- Choose a type from the list
-
-
-Dynamic features
-----------------
-To take advantage of the dynamic features you must first install the
-dbext.vim plugin (http://vim.sourceforge.net/script.php?script_id=356).  It
-also comes with a tutorial.  From the SQL completion plugin's perspective,
-the main feature dbext provides is a connection to a database.  dbext
-connection profiles are the most efficient mechanism to define connection
-information.  Once connections have been setup, the SQL completion plugin
-uses the features of dbext in the background to populate the popups.
-
-What follows assumes dbext.vim has been correctly configured, a simple test
-is to run the command, :DBListTable.  If a list of tables is shown, you know
-dbext.vim is working as expected.  If not, please consult the dbext.txt
-documentation.
-
-Assuming you have followed the dbext-tutorial you can press <C-C>t to
-display a list of tables.  There is a delay while dbext is creating the table
-list.  After the list is displayed press <C-W>.  This will remove both the
-popup window and the table name already chosen when the list became active. >
-
- 4.3.1 Table Completion:			*sql-completion-tables*
-
-Press <C-C>t to display a list of tables from within the database you
-have connected via the dbext plugin.
-NOTE: All of the SQL completion popups support typing a prefix before pressing
-the key map.  This will limit the contents of the popup window to just items
-beginning with those characters.  >
-
- 4.3.2 Column Completion:			*sql-completion-columns*
-
-The SQL completion plugin can also display a list of columns for particular
-tables.  The column completion is trigger via <C-C>c.
-
-NOTE: The following example uses <C-Right> to trigger a column list while
-the popup window is active.  This map is only available on the Windows
-platforms since *nix does not recognize CTRL and the right arrow held down
-together.  If you wish to enable this functionality on a *nix platform choose
-a key and create one of these mappings (see |sql-completion-maps| for further
-details on where to create this imap): >
-    imap <buffer> <your_keystroke> <C-R>=sqlcomplete#DrillIntoTable()<CR>
-    imap <buffer> <your_keystroke> <C-Y><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
-
-Example of using column completion:
-     - Press <C-C>t again to display the list of tables.
-     - When the list is displayed in the completion window, press <C-Right>,
-       this will replace the list of tables, with a list of columns for the
-       table highlighted (after the same short delay).
-     - If you press <C-Left>, this will again replace the column list with the
-       list of tables.  This allows you to drill into tables and column lists
-       very quickly.
-     - Press <C-Right> again while the same table is highlighted.  You will
-       notice there is no delay since the column list has been cached.  If you
-       change the schema of a cached table you can press <C-C>R, which
-       clears the SQL completion cache.
-     - NOTE: <C-Right> and <C-Left> have been designed to work while the
-       completion window is active.  If the completion popup window is
-       not active, a normal <C-Right> or <C-Left> will be executed.
-
-Lets look how we can build a SQL statement dynamically.  A select statement
-requires a list of columns.  There are two ways to build a column list using
-the SQL completion plugin. >
-    One column at a time:
-<       1. After typing SELECT press <C-C>t to display a list of tables.
-	2. Choose a table from the list.
-	3. Press <C-Right> to display a list of columns.
-	4. Choose the column from the list and press enter.
-	5. Enter a "," and press <C-C>c.  Generating a column list
-	   generally requires having the cursor on a table name.  The plugin
-	   uses this name to determine what table to retrieve the column list.
-	   In this step, since we are pressing <C-C>c without the cursor
-	   on a table name the column list displayed will be for the previous
-	   table.  Choose a different column and move on.
-	6. Repeat step 5 as often as necessary. >
-    All columns for a table:
-<	1. After typing SELECT press <C-C>t to display a list of tables.
-	2. Highlight the table you need the column list for.
-	3. Press <Enter> to choose the table from the list.
-	4. Press <C-C>l to request a comma separated list of all columns
-	   for this table.
-	5. Based on the table name chosen in step 3, the plugin attempts to
-	   decide on a reasonable table alias.	You are then prompted to
-	   either accept of change the alias.  Press OK.
-	6. The table name is replaced with the column list of the table is
-	   replaced with the comma separate list of columns with the alias
-	   prepended to each of the columns.
-	7. Step 3 and 4 can be replaced by pressing <C-C>L, which has
-	   a <C-Y> embedded in the map to choose the currently highlighted
-	   table in the list.
-
-There is a special provision when writing select statements.  Consider the
-following statement: >
-     select *
-       from customer c,
-	    contact cn,
-	    department as dp,
-	    employee e,
-	    site_options so
-      where c.
-
-In INSERT mode after typing the final "c." which is an alias for the
-"customer" table, you can press either <C-C>c or <C-X><C-O>.  This will
-popup a list of columns for the customer table.  It does this by looking back
-to the beginning of the select statement and finding a list of the tables
-specified in the FROM clause.  In this case it notes that in the string
-"customer c", "c" is an alias for the customer table.  The optional "AS"
-keyword is also supported, "customer AS c". >
-
-
- 4.3.3 Procedure Completion:			*sql-completion-procedures*
-
-Similar to the table list, <C-C>p, will display a list of stored
-procedures stored within the database. >
-
- 4.3.4 View Completion:				*sql-completion-views*
-
-Similar to the table list, <C-C>v, will display a list of views in the
-database.
-
-
-4.4 Completion Customization			*sql-completion-customization*
-----------------------------
-
-The SQL completion plugin can be customized through various options set in
-your |vimrc|: >
-    omni_sql_no_default_maps
-<       - Default: This variable is not defined
-	- If this variable is defined, no maps are created for OMNI
-	  completion.  See |sql-completion-maps| for further discussion.
->
-    omni_sql_use_tbl_alias
-<	- Default: a
-	- This setting is only used when generating a comma separated
-	  column list.	By default the map is <C-C>l.  When generating
-	  a column list, an alias can be prepended to the beginning of each
-	  column, for example:	e.emp_id, e.emp_name.  This option has three
-	  settings: >
-		n - do not use an alias
-		d - use the default (calculated) alias
-		a - ask to confirm the alias name
-<
-	  An alias is determined following a few rules:
-	       1.  If the table name has an '_', then use it as a separator: >
-		   MY_TABLE_NAME --> MTN
-		   my_table_name --> mtn
-		   My_table_NAME --> MtN
-<	       2.  If the table name does NOT contain an '_', but DOES use
-		   mixed case then the case is used as a separator: >
-		   MyTableName --> MTN
-<	       3.  If the table name does NOT contain an '_', and does NOT
-		   use mixed case then the first letter of the table is used: >
-		   mytablename --> m
-		   MYTABLENAME --> M
-
-    omni_sql_ignorecase
-<	- Default: Current setting for|ignorecase|
-	- Valid settings are 0 or 1.
-	- When entering a few letters before initiating completion, the list
-	  will be filtered to display only the entries which begin with the
-	  list of characters.  When this option is set to 0, the list will be
-	  filtered using case sensitivity. >
-
-    omni_sql_include_owner
-<	- Default: 0, unless dbext.vim 3.00 has been installed
-	- Valid settings are 0 or 1.
-	- When completing tables, procedure or views and using dbext.vim 3.00
-	  or higher the list of objects will also include the owner name.
-	  When completing these objects and omni_sql_include_owner is enabled
-	  the owner name will be replaced. >
-
-    omni_sql_precache_syntax_groups
-<	- Default:
-	  ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement']
-	- sqlcomplete can be used in conjunction with other completion
-	  plugins.  This is outlined at |sql-completion-filetypes|.  When the
-	  filetype is changed temporarily to SQL, the sqlcompletion plugin
-	  will cache the syntax groups listed in the List specified in this
-	  option.
->
-
-4.5 SQL Maps					*sql-completion-maps*
-------------
-
-The default SQL maps have been described in other sections of this document in
-greater detail.  Here is a list of the maps with a brief description of each.
-
-Static Maps
------------
-These are maps which use populate the completion list using Vim's syntax
-highlighting rules. >
-    <C-C>a
-<       - Displays all SQL syntax items. >
-    <C-C>k
-<       - Displays all SQL syntax items defined as 'sqlKeyword'. >
-    <C-C>f
-<       - Displays all SQL syntax items defined as 'sqlFunction. >
-    <C-C>o
-<       - Displays all SQL syntax items defined as 'sqlOption'. >
-    <C-C>T
-<       - Displays all SQL syntax items defined as 'sqlType'. >
-    <C-C>s
-<       - Displays all SQL syntax items defined as 'sqlStatement'. >
-
-Dynamic Maps
-------------
-These are maps which use populate the completion list using the dbext.vim
-plugin. >
-    <C-C>t
-<       - Displays a list of tables. >
-    <C-C>p
-<       - Displays a list of procedures. >
-    <C-C>v
-<       - Displays a list of views. >
-    <C-C>c
-<       - Displays a list of columns for a specific table. >
-    <C-C>l
-<       - Displays a comma separated list of columns for a specific table. >
-    <C-C>L
-<       - Displays a comma separated list of columns for a specific table.
-	  This should only be used when the completion window is active. >
-    <C-Right>
-<	- Displays a list of columns for the table currently highlighted in
-	  the completion window.  <C-Right> is not recognized on most Unix
-	  systems, so this maps is only created on the Windows platform.
-	  If you would like the same feature on Unix, choose a different key
-	  and make the same map in your vimrc. >
-    <C-Left>
-<	- Displays the list of tables.
-	  <C-Left> is not recognized on most Unix systems, so this maps is
-	  only created on the Windows platform.  If you would like the same
-	  feature on Unix, choose a different key and make the same map in
-	  your vimrc. >
-    <C-C>R
-<	- This maps removes all cached items and forces the SQL completion
-	  to regenerate the list of items.
-
-Customizing Maps
-----------------
-You can create as many additional key maps as you like.  Generally, the maps
-will be specifying different syntax highlight groups.
-
-If you do not wish the default maps created or the key choices do not work on
-your platform (often a case on *nix) you define the following variable in
-your |vimrc|: >
-    let g:omni_sql_no_default_maps = 1
-
-Do no edit ftplugin/sql.vim directly!  If you change this file your changes
-will be over written on future updates.  Vim has a special directory structure
-which allows you to make customizations without changing the files that are
-included with the Vim distribution.  If you wish to customize the maps
-create an after/ftplugin/sql.vim (see |after-directory|) and place the same
-maps from the ftplugin/sql.vim in it using your own key strokes.  <C-C> was
-chosen since it will work on both Windows and *nix platforms.  On the windows
-platform you can also use <C-Space> or ALT keys.
-
-
-4.6 Using with other filetypes			*sql-completion-filetypes*
-------------------------------
-
-Many times SQL can be used with different filetypes.  For example Perl, Java,
-PHP, Javascript can all interact with a database.  Often you need both the SQL
-completion as well as the completion capabilities for the current language you
-are editing.
-
-This can be enabled easily with the following steps (assuming a Perl file): >
-    1.  :e test.pl
-    2.  :set filetype=sql
-    3.  :set ft=perl
-
-Step 1
-------
-Begins by editing a Perl file.  Vim automatically sets the filetype to
-"perl".  By default, Vim runs the appropriate filetype file
-ftplugin/perl.vim.  If you are using the syntax completion plugin by following
-the directions at |ft-syntax-omni| then the |'omnifunc'| option has been set to
-"syntax#Complete".  Pressing <C-X><C-O> will display the omni popup containing
-the syntax items for Perl.
-
-Step 2
-------
-Manually setting the filetype to 'sql' will also fire the appropriate filetype
-files ftplugin/sql.vim.  This file will define a number of buffer specific
-maps for SQL completion, see |sql-completion-maps|.  Now these maps have
-been created and the SQL completion plugin has been initialized.  All SQL
-syntax items have been cached in preparation.  The SQL filetype script detects
-we are attempting to use two different completion plugins.  Since the SQL maps
-begin with <C-C>, the maps will toggle the |'omnifunc'| when in use.  So you
-can use <C-X><C-O> to continue using the completion for Perl (using the syntax
-completion plugin) and <C-C> to use the SQL completion features.
-
-Step 3
-------
-Setting the filetype back to Perl sets all the usual "perl" related items back
-as they were.
-
-
-vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index be0e1cc..89af04c 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2007 May 15
+" Last Change:	2008 Jun 20
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -320,6 +320,9 @@
 " Cdrdao TOC
 au BufNewFile,BufRead *.toc			setf cdrtoc
 
+" Cdrdao config
+au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao						setf cdrdaoconf
+
 " Cfengine
 au BufNewFile,BufRead cfengine.conf		setf cfengine
 
@@ -349,12 +352,22 @@
   au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
 endif
 
-" .h files can be C, Ch or C++, set c_syntax_for_h if you want C,
-" ch_syntax_for_h if you want Ch.
-au BufNewFile,BufRead *.h
-	\ if exists("c_syntax_for_h") | setf c |
-	\ elseif exists("ch_syntax_for_h") | setf ch |
-	\ else | setf cpp | endif
+" .h files can be C, Ch C++, ObjC or ObjC++.
+" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
+" detected automatically.
+au BufNewFile,BufRead *.h			call s:FTheader()
+
+func! s:FTheader()
+  if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
+    setf objc
+  elseif exists("c_syntax_for_h")
+    setf c
+  elseif exists("ch_syntax_for_h")
+    setf ch
+  else
+    setf cpp
+  endif
+endfunc
 
 " Ch (CHscript)
 au BufNewFile,BufRead *.chf			setf ch
@@ -476,12 +489,18 @@
 	\   setf cobol |
 	\ endif
 
+" Coco/R
+au BufNewFile,BufRead *.atg			setf coco
+
 " Cold Fusion
 au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
 
 " Configure scripts
 au BufNewFile,BufRead configure.in,configure.ac setf config
 
+" CUDA  Cumpute Unified Device Architecture
+au BufNewFile,BufRead *.cu			setf cuda
+
 " WildPackets EtherPeek Decoder
 au BufNewFile,BufRead *.dcd			setf dcd
 
@@ -513,15 +532,31 @@
 
 " Debian Control
 au BufNewFile,BufRead */debian/control		setf debcontrol
+au BufNewFile,BufRead control
+	\  if getline(1) =~ '^Source:'
+	\|   setf debcontrol
+	\| endif
 
 " Debian Sources.list
 au BufNewFile,BufRead /etc/apt/sources.list	setf debsources
 
+" Deny hosts
+au BufNewFile,BufRead denyhosts.conf		setf denyhosts
+
 " ROCKLinux package description
 au BufNewFile,BufRead *.desc			setf desc
 
-" the D language
-au BufNewFile,BufRead *.d			setf d
+" the D language or dtrace
+au BufNewFile,BufRead *.d			call s:DtraceCheck()
+
+func! s:DtraceCheck()
+  let lines = getline(1, min([line("$"), 100]))
+  if match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1
+    setf dtrace
+  else
+    setf d
+  endif
+endfunc
 
 " Desktop files
 au BufNewFile,BufRead *.desktop,.directory	setf desktop
@@ -597,8 +632,8 @@
   setf eiffel
 endfunc
 
-" ERicsson LANGuage
-au BufNewFile,BufRead *.erl			setf erlang
+" ERicsson LANGuage; Yaws is erlang too
+au BufNewFile,BufRead *.erl,*.yaws		setf erlang
 
 " Elm Filter Rules file
 au BufNewFile,BufRead filter-rules		setf elmfilt
@@ -643,11 +678,14 @@
 " Forth
 au BufNewFile,BufRead *.fs,*.ft			setf forth
 
+" Reva Forth
+au BufNewFile,BufRead *.frt			setf reva
+
 " Fortran
 if has("fname_case")
   au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95	 setf fortran
 endif
-au BufNewFile,BufRead   *.f,*.for,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
+au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
 
 " FStab
 au BufNewFile,BufRead fstab,mtab		setf fstab
@@ -661,6 +699,19 @@
 " Gedcom
 au BufNewFile,BufRead *.ged			setf gedcom
 
+" Git
+autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
+autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
+autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
+autocmd BufNewFile,BufRead .msg.[0-9]*
+      \ if getline(1) =~ '^From.*# This line is ignored.$' |
+      \   setf gitsendemail |
+      \ endif
+autocmd BufNewFile,BufRead *.git/**
+      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
+      \   setf git |
+      \ endif
+
 " Gkrellmrc
 au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
 
@@ -701,6 +752,9 @@
 au BufNewFile,BufRead *.lhs			setf lhaskell
 au BufNewFile,BufRead *.chs			setf chaskell
 
+" Haste
+au BufNewFile,BufRead *.ht			setf haste
+
 " Hercules
 au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum	setf hercules
 
@@ -739,6 +793,9 @@
 " HTML Cheetah template
 au BufNewFile,BufRead *.tmpl			setf htmlcheetah
 
+" Host config
+au BufNewFile,BufRead /etc/host.conf		setf hostconf
+
 " Hyper Builder
 au BufNewFile,BufRead *.hb			setf hb
 
@@ -922,6 +979,9 @@
 " Lua
 au BufNewFile,BufRead *.lua			setf lua
 
+" Linden Scripting Language (Second Life)
+au BufNewFile,BufRead *.lsl			setf lsl
+
 " Lynx style file (or LotusScript!)
 au BufNewFile,BufRead *.lss			setf lss
 
@@ -933,7 +993,7 @@
 au BufNewFile,BufRead *.mgp			setf mgp
 
 " Mail (for Elm, trn, mutt, muttng, rn, slrn)
-au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]._-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
+au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
 
 " Mail aliases
 au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases	setf mailaliases
@@ -987,6 +1047,9 @@
   endif
 endfunc
 
+" Mathematica notebook
+au BufNewFile,BufRead *.nb			setf mma
+
 " Maya Extension Language
 au BufNewFile,BufRead *.mel			setf mel
 
@@ -1005,6 +1068,9 @@
 " MMIX or VMS makefile
 au BufNewFile,BufRead *.mms			call s:FTmms()
 
+" Symbian meta-makefile definition (MMP)
+au BufNewFile,BufRead *.mmp			setf mmp
+
 func! s:FTmms()
   let n = 1
   while n < 10
@@ -1075,8 +1141,7 @@
 au BufNewFile,BufRead *.mush			setf mush
 
 " Mutt setup file (also for Muttng)
-au BufNewFile,BufRead Mutt{ng,}rc			setf muttrc
-au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
+au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
 
 " Nano
 au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
@@ -1169,6 +1234,9 @@
 " Delphi project file
 au BufNewFile,BufRead *.dpr			setf pascal
 
+" PDF
+au BufNewFile,BufRead *.pdf			setf pdf
+
 " Perl
 if has("fname_case")
   au BufNewFile,BufRead *.pl,*.PL		call s:FTpl()
@@ -1206,10 +1274,9 @@
 au BufNewFile,BufRead *.pod			setf pod
 
 " Php, php3, php4, etc.
-au BufNewFile,BufRead *.php,*.php\d		setf php
-
-" Phtml
-au BufNewFile,BufRead *.phtml			setf phtml
+" Also Phtml (was used for PHP 2 in the past)
+" Also .ctp for Cake template file
+au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
 
 " Pike
 au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike
@@ -1377,6 +1444,9 @@
 " Prolog
 au BufNewFile,BufRead *.pdb			setf prolog
 
+" Promela
+au BufNewFile,BufRead *.pml			setf promela
+
 " Protocols
 au BufNewFile,BufRead /etc/protocols		setf protocols
 
@@ -1406,7 +1476,7 @@
 au BufNewFile,BufRead *.rib			setf rib
 
 " Rexx
-au BufNewFile,BufRead *.rexx,*.rex		setf rexx
+au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx	setf rexx
 
 " R (Splus)
 if has("fname_case")
@@ -1437,7 +1507,7 @@
 
   for n in range(1, max)
     " Rebol is easy to recognize, check for that first
-    if getline(n) =~ '\<REBOL\>'
+    if getline(n) =~? '\<REBOL\>'
       setf rebol
       return
     endif
@@ -1523,8 +1593,24 @@
 " Sendmail
 au BufNewFile,BufRead sendmail.cf		setf sm
 
-" Sendmail .mc files are actually m4
-au BufNewFile,BufRead *.mc			setf m4
+" Sendmail .mc files are actually m4.  Could also be MS Message text file.
+au BufNewFile,BufRead *.mc			call s:McSetf()
+
+func! s:McSetf()
+  " Rely on the file to start with a comment.
+  " MS message text files use ';', Sendmail files use '#' or 'dnl'
+  for lnum in range(1, min([line("$"), 20]))
+    let line = getline(lnum)
+    if line =~ '^\s*\(#\|dnl\)'
+      setf m4  " Sendmail .mc file
+      return
+    elseif line =~ '^\s*;'
+      setf msmessages  " MS Message text file
+      return
+    endif
+  endfor
+  setf m4  " Default: Sendmail .mc file
+endfunc
 
 " Services
 au BufNewFile,BufRead /etc/services		setf services
@@ -1710,17 +1796,21 @@
 
 let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
 func! s:FTRules()
+  if expand('<amatch>:p') =~ '^/etc/udev/rules\.d/.*\.rules$'
+    setf udevrules
+    return
+  endif
   try
     let config_lines = readfile('/etc/udev/udev.conf')
   catch /^Vim\%((\a\+)\)\=:E484/
     setf hog
     return
   endtry
+  let dir = expand('<amatch>:p:h')
   for line in config_lines
     if line =~ s:ft_rules_udev_rules_pattern
       let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
-      let amatch_dirname = substitute(expand('<amatch>'), '^\(.*\)/[^/]\+$', '\1', "")
-      if amatch_dirname == udev_rules
+      if dir == udev_rules
         setf udevrules
       endif
       break
@@ -1786,6 +1876,9 @@
 " Standard ML
 au BufNewFile,BufRead *.sml			setf sml
 
+" Sratus VOS command macro
+au BufNewFile,BufRead *.cm			setf voscm
+
 " Sysctl
 au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
 
@@ -1892,8 +1985,8 @@
   return
 endfunc
 
-" Context
-au BufNewFile,BufRead tex/context/*/*.tex	setf context
+" ConTeXt
+au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv   setf context
 
 " Texinfo
 au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
@@ -1928,9 +2021,6 @@
 " Udev conf
 au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
 
-" Udev rules
-au BufNewFile,BufRead /etc/udev/rules.d/*.rules setf udevrules
-
 " Udev permissions
 au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
 "
@@ -2049,14 +2139,26 @@
 au BufNewFile,BufRead *.ms
 	\ if !s:FTnroff() | setf xmath | endif
 
-" XML
-au BufNewFile,BufRead *.xml
-	\ if getline(1) . getline(2) . getline(3) =~ '<!DOCTYPE.*DocBook' |
-	\   let b:docbk_type="xml" |
-	\   setf docbk |
-	\ else |
-	\   setf xml |
-	\ endif
+" XML  specific variants: docbk and xbl
+au BufNewFile,BufRead *.xml			call s:FTxml()
+
+func! s:FTxml()
+  let n = 1
+  while n < 100 && n < line("$")
+    let line = getline(n)
+    if line =~ '<!DOCTYPE.*DocBook'
+      let b:docbk_type = "xml"
+      setf docbk
+      return
+    endif
+    if line =~ 'xmlns:xbl="http://www.mozilla.org/xbl"'
+      setf xbl
+      return
+    endif
+    let n += 1
+  endwhile
+  setf xml
+endfunc
 
 " XMI (holding UML models) is also XML
 au BufNewFile,BufRead *.xmi			setf xml
@@ -2073,6 +2175,16 @@
 " Xdg menus
 au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
 
+" ATI graphics driver configuration
+au BufNewFile,BufRead fglrxrc			setf xml
+
+" XLIFF (XML Localisation Interchange File Format) is also XML
+au BufNewFile,BufRead *.xlf			setf xml
+au BufNewFile,BufRead *.xliff			setf xml
+
+" X11 xmodmap (also see below)
+au BufNewFile,BufRead *Xmodmap			setf xmodmap
+
 " Xquery
 au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
 
@@ -2201,13 +2313,17 @@
 " Makefile
 au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
 
-" Modconf
-au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
-
 " Ruby Makefile
 au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
 
+" Mail (also matches muttrc.vim, so this is below the other checks)
+au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail
+
+" Modconf
+au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
+
 " Mutt setup file
+au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
 au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
 
 " Nroff macros
diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim
index 1a2cda1..6fa34e5 100644
--- a/runtime/makemenu.vim
+++ b/runtime/makemenu.vim
@@ -1,6 +1,6 @@
 " Script to define the syntax menu in synmenu.vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2007 May 10
+" Last Change:	2008 Jun 24
 
 " This is used by "make menu" in the src directory.
 edit <sfile>:p:h/synmenu.vim
@@ -116,6 +116,7 @@
 SynMenu C.Cascading\ Style\ Sheets:css
 SynMenu C.CDL:cdl
 SynMenu C.Cdrdao\ TOC:cdrtoc
+SynMenu C.Cdrdao\ config:cdrdaoconf
 SynMenu C.Century\ Term:cterm
 SynMenu C.CH\ script:ch
 SynMenu C.ChangeLog:changelog
@@ -128,6 +129,7 @@
 SynMenu C.Cmake:cmake
 SynMenu C.Cmusrc:cmusrc
 SynMenu C.Cobol:cobol
+SynMenu C.Coco/R:coco
 SynMenu C.Cold\ Fusion:cf
 SynMenu C.Conary\ Recipe:conaryrecipe
 SynMenu C.Config.Cfg\ Config\ file:cfg
@@ -137,6 +139,7 @@
 SynMenu C.Crontab:crontab
 SynMenu C.CSP:csp
 SynMenu C.Ctrl-H:ctrlh
+SynMenu C.CUDA:cuda
 SynMenu C.CUPL.CUPL:cupl
 SynMenu C.CUPL.Simulation:cuplsim
 SynMenu C.CVS.commit\ file:cvs
@@ -148,6 +151,7 @@
 SynMenu DE.Debian.Debian\ ChangeLog:debchangelog
 SynMenu DE.Debian.Debian\ Control:debcontrol
 SynMenu DE.Debian.Debian\ Sources\.list:debsources
+SynMenu DE.Denyhosts:denyhosts
 SynMenu DE.Desktop:desktop
 SynMenu DE.Dict\ config:dictconf
 SynMenu DE.Dictd\ config:dictdconf
@@ -168,6 +172,7 @@
 SynMenu DE.DSSSL:dsl
 SynMenu DE.DTD:dtd
 SynMenu DE.DTML\ (Zope):dtml
+SynMenu DE.DTrace:dtrace
 SynMenu DE.Dylan.Dylan:dylan
 SynMenu DE.Dylan.Dylan\ interface:dylanintr
 SynMenu DE.Dylan.Dylan\ lid:dylanlid
@@ -205,6 +210,11 @@
 SynMenu FG.GDB\ command\ file:gdb
 SynMenu FG.GDMO:gdmo
 SynMenu FG.Gedcom:gedcom
+SynMenu FG.Git.Output:git
+SynMenu FG.Git.Commit:gitcommit
+SynMenu FG.Git.Config:gitconfig
+SynMenu FG.Git.Rebase:gitrebase
+SynMenu FG.Git.Send\ Email:gitsendemail
 SynMenu FG.Gkrellmrc:gkrellmrc
 SynMenu FG.GP:gp
 SynMenu FG.GPG:gpg
@@ -222,6 +232,7 @@
 SynMenu HIJK.Haskell.Haskell:haskell
 SynMenu HIJK.Haskell.Haskell-c2hs:chaskell
 SynMenu HIJK.Haskell.Haskell-literate:lhaskell
+SynMenu HIJK.HASTE:haste
 SynMenu HIJK.Hercules:hercules
 SynMenu HIJK.Hex\ dump.XXD:xxd
 SynMenu HIJK.Hex\ dump.Intel\ MCS51:hex
@@ -232,6 +243,7 @@
 SynMenu HIJK.HTML.Django\ HTML\ template:htmldjango
 SynMenu HIJK.HTML.HTML/OS:htmlos
 SynMenu HIJK.HTML.XHTML:xhtml
+SynMenu HIJK.Host\.conf:hostconf
 SynMenu HIJK.Hyper\ Builder:hb
 SynMenu HIJK.Icewm\ menu:icemenu
 SynMenu HIJK.Icon:icon
@@ -273,6 +285,7 @@
 SynMenu L-Ma.LifeLines\ script:lifelines
 SynMenu L-Ma.Lilo:lilo
 SynMenu L-Ma.Limits\ config:limits
+SynMenu L-Ma.Linden\ scripting:lsl
 SynMenu L-Ma.Lisp:lisp
 SynMenu L-Ma.Lite:lite
 SynMenu L-Ma.LiteStep\ RC:litestep
@@ -320,6 +333,7 @@
 SynMenu Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file:btm
 SynMenu Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file:dosbatch
 SynMenu Me-NO.MS-DOS/Windows.\.ini\ file:dosini
+SynMenu Me-NO.MS-DOS/Windows.Message\ text:msmessages
 SynMenu Me-NO.MS-DOS/Windows.Module\ Definition:def
 SynMenu Me-NO.MS-DOS/Windows.Registry:registry
 SynMenu Me-NO.MS-DOS/Windows.Resource\ file:rc
@@ -351,7 +365,7 @@
 SynMenu PQ.Pascal:pascal
 SynMenu PQ.Password\ file:passwd
 SynMenu PQ.PCCTS:pccts
-SynMenu PQ.PPWizard:ppwiz
+SynMenu PQ.PDF:pdf
 SynMenu PQ.Perl.Perl:perl
 SynMenu PQ.Perl.Perl\ POD:pod
 SynMenu PQ.Perl.Perl\ XS:xs
@@ -369,6 +383,7 @@
 SynMenu PQ.PostScript.PostScript\ Printer\ Description:ppd
 SynMenu PQ.Povray.Povray\ scene\ descr:pov
 SynMenu PQ.Povray.Povray\ configuration:povini
+SynMenu PQ.PPWizard:ppwiz
 SynMenu PQ.Prescribe\ (Kyocera):prescribe
 SynMenu PQ.Printcap:pcap
 SynMenu PQ.Privoxy:privoxy
@@ -376,6 +391,7 @@
 SynMenu PQ.Product\ Spec\ File:psf
 SynMenu PQ.Progress:progress
 SynMenu PQ.Prolog:prolog
+SynMenu PQ.ProMeLa:promela
 SynMenu PQ.Protocols:protocols
 SynMenu PQ.Purify\ log:purifylog
 SynMenu PQ.Pyrex:pyrex
@@ -398,6 +414,7 @@
 SynMenu R-Sg.Renderman.Renderman\ Shader\ Lang:sl
 SynMenu R-Sg.Renderman.Renderman\ Interface\ Bytestream:rib
 SynMenu R-Sg.Resolv\.conf:resolv
+SynMenu R-Sg.Reva\ Forth:reva
 SynMenu R-Sg.Rexx:rexx
 SynMenu R-Sg.Robots\.txt:robots
 SynMenu R-Sg.RockLinux\ package\ desc\.:desc
@@ -481,6 +498,7 @@
 SynMenu Sh-S.Streaming\ descriptor\ file:sd
 SynMenu Sh-S.Subversion\ commit:svn
 SynMenu Sh-S.Sudoers:sudoers
+SynMenu Sh-S.Symbian\ meta-makefile:mmp
 SynMenu Sh-S.Sysctl\.conf:sysctl
 
 SynMenu TUV.TADS:tads
@@ -524,6 +542,7 @@
 SynMenu TUV.Vim.Viminfo\ file:viminfo
 SynMenu TUV.Virata\ config:virata
 SynMenu TUV.Visual\ Basic:vb
+SynMenu TUV.VOS\ CM\ macro:voscm
 SynMenu TUV.VRML:vrml
 SynMenu TUV.VSE\ JCL:vsejcl
 
@@ -544,6 +563,7 @@
 SynMenu WXYZ.X\ Pixmap:xpm
 SynMenu WXYZ.X\ Pixmap\ (2):xpm2
 SynMenu WXYZ.X\ resources:xdefaults
+SynMenu WXYZ.XBL:xbl
 SynMenu WXYZ.Xinetd\.conf:xinetd
 SynMenu WXYZ.Xmodmap:xmodmap
 SynMenu WXYZ.Xmath:xmath
diff --git a/runtime/menu.vim b/runtime/menu.vim
index f0c0d69..d120ce2 100644
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2007 Nov 19
+" Last Change:	2008 Jun 16
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -135,6 +135,11 @@
   exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
 endfunc
 
+func! s:FnameEscape(fname)
+  if exists('*fnameescape')
+    return fnameescape(a:fname)
+  return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
+endfunc
 
 " Edit menu
 an 20.310 &Edit.&Undo<Tab>u			u
@@ -193,6 +198,7 @@
   else
     let fname = "$HOME/.vimrc"
   endif
+  let fname = s:FnameEscape(fname)
   if &mod
     exe "split " . fname
   else
@@ -806,7 +812,7 @@
       if @% == ""
 	20vsp .
       else
-	exe "20vsp " . expand("%:p:h")
+	exe "20vsp " . s:FnameEscape(expand("%:p:h"))
       endif
     endfun
   endif
@@ -1028,7 +1034,7 @@
 " Select a session to load; default to current session name if present
 fun! s:LoadVimSesn()
   if strlen(v:this_session) > 0
-    let name = escape(v:this_session, ' \t#%$|<>"*?[{`')
+    let name = s:FnameEscape(v:this_session)
   else
     let name = "Session.vim"
   endif
@@ -1040,7 +1046,7 @@
   if strlen(v:this_session) == 0
     let v:this_session = "Session.vim"
   endif
-  execute "browse mksession! " . escape(v:this_session, ' \t#%$|<>"*?[{`')
+  execute "browse mksession! " . s:FnameEscape(v:this_session)
 endfun
 
 endif
diff --git a/runtime/scripts.vim b/runtime/scripts.vim
index 9e0e7b8..936f508 100644
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2007 Apr 29
+" Last change:	2008 Apr 28
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
@@ -234,6 +234,10 @@
   elseif s:line1 =~ '\<DTD\s\+XHTML\s'
     set ft=xhtml
 
+    " PDF
+  elseif s:line1 =~ '^%PDF-'
+    set ft=pdf
+
     " XXD output
   elseif s:line1 =~ '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
     set ft=xxd
@@ -309,6 +313,10 @@
   elseif s:line1 =~ 'exec\s\+\S*scheme' || s:line2 =~ 'exec\s\+\S*scheme'
     set ft=scheme
 
+  " Git output
+  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}$\|^tag \S\+$'
+    set ft=git
+
   " CVS diff
   else
     let lnum = 1
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index 0a62b58..68a841e 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -101,75 +101,80 @@
 an 50.20.140 &Syntax.C.Cascading\ Style\ Sheets :cal SetSyn("css")<CR>
 an 50.20.150 &Syntax.C.CDL :cal SetSyn("cdl")<CR>
 an 50.20.160 &Syntax.C.Cdrdao\ TOC :cal SetSyn("cdrtoc")<CR>
-an 50.20.170 &Syntax.C.Century\ Term :cal SetSyn("cterm")<CR>
-an 50.20.180 &Syntax.C.CH\ script :cal SetSyn("ch")<CR>
-an 50.20.190 &Syntax.C.ChangeLog :cal SetSyn("changelog")<CR>
-an 50.20.200 &Syntax.C.Cheetah\ template :cal SetSyn("cheetah")<CR>
-an 50.20.210 &Syntax.C.CHILL :cal SetSyn("chill")<CR>
-an 50.20.220 &Syntax.C.ChordPro :cal SetSyn("chordpro")<CR>
-an 50.20.230 &Syntax.C.Clean :cal SetSyn("clean")<CR>
-an 50.20.240 &Syntax.C.Clever :cal SetSyn("cl")<CR>
-an 50.20.250 &Syntax.C.Clipper :cal SetSyn("clipper")<CR>
-an 50.20.260 &Syntax.C.Cmake :cal SetSyn("cmake")<CR>
-an 50.20.270 &Syntax.C.Cmusrc :cal SetSyn("cmusrc")<CR>
-an 50.20.280 &Syntax.C.Cobol :cal SetSyn("cobol")<CR>
-an 50.20.290 &Syntax.C.Cold\ Fusion :cal SetSyn("cf")<CR>
-an 50.20.300 &Syntax.C.Conary\ Recipe :cal SetSyn("conaryrecipe")<CR>
-an 50.20.310 &Syntax.C.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
-an 50.20.320 &Syntax.C.Config.Configure\.in :cal SetSyn("config")<CR>
-an 50.20.330 &Syntax.C.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
-an 50.20.340 &Syntax.C.CRM114 :cal SetSyn("crm")<CR>
-an 50.20.350 &Syntax.C.Crontab :cal SetSyn("crontab")<CR>
-an 50.20.360 &Syntax.C.CSP :cal SetSyn("csp")<CR>
-an 50.20.370 &Syntax.C.Ctrl-H :cal SetSyn("ctrlh")<CR>
-an 50.20.380 &Syntax.C.CUPL.CUPL :cal SetSyn("cupl")<CR>
-an 50.20.390 &Syntax.C.CUPL.Simulation :cal SetSyn("cuplsim")<CR>
-an 50.20.400 &Syntax.C.CVS.commit\ file :cal SetSyn("cvs")<CR>
-an 50.20.410 &Syntax.C.CVS.cvsrc :cal SetSyn("cvsrc")<CR>
-an 50.20.420 &Syntax.C.Cyn++ :cal SetSyn("cynpp")<CR>
-an 50.20.430 &Syntax.C.Cynlib :cal SetSyn("cynlib")<CR>
+an 50.20.170 &Syntax.C.Cdrdao\ config :cal SetSyn("cdrdaoconf")<CR>
+an 50.20.180 &Syntax.C.Century\ Term :cal SetSyn("cterm")<CR>
+an 50.20.190 &Syntax.C.CH\ script :cal SetSyn("ch")<CR>
+an 50.20.200 &Syntax.C.ChangeLog :cal SetSyn("changelog")<CR>
+an 50.20.210 &Syntax.C.Cheetah\ template :cal SetSyn("cheetah")<CR>
+an 50.20.220 &Syntax.C.CHILL :cal SetSyn("chill")<CR>
+an 50.20.230 &Syntax.C.ChordPro :cal SetSyn("chordpro")<CR>
+an 50.20.240 &Syntax.C.Clean :cal SetSyn("clean")<CR>
+an 50.20.250 &Syntax.C.Clever :cal SetSyn("cl")<CR>
+an 50.20.260 &Syntax.C.Clipper :cal SetSyn("clipper")<CR>
+an 50.20.270 &Syntax.C.Cmake :cal SetSyn("cmake")<CR>
+an 50.20.280 &Syntax.C.Cmusrc :cal SetSyn("cmusrc")<CR>
+an 50.20.290 &Syntax.C.Cobol :cal SetSyn("cobol")<CR>
+an 50.20.300 &Syntax.C.Coco/R :cal SetSyn("coco")<CR>
+an 50.20.310 &Syntax.C.Cold\ Fusion :cal SetSyn("cf")<CR>
+an 50.20.320 &Syntax.C.Conary\ Recipe :cal SetSyn("conaryrecipe")<CR>
+an 50.20.330 &Syntax.C.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
+an 50.20.340 &Syntax.C.Config.Configure\.in :cal SetSyn("config")<CR>
+an 50.20.350 &Syntax.C.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
+an 50.20.360 &Syntax.C.CRM114 :cal SetSyn("crm")<CR>
+an 50.20.370 &Syntax.C.Crontab :cal SetSyn("crontab")<CR>
+an 50.20.380 &Syntax.C.CSP :cal SetSyn("csp")<CR>
+an 50.20.390 &Syntax.C.Ctrl-H :cal SetSyn("ctrlh")<CR>
+an 50.20.400 &Syntax.C.CUDA :cal SetSyn("cuda")<CR>
+an 50.20.410 &Syntax.C.CUPL.CUPL :cal SetSyn("cupl")<CR>
+an 50.20.420 &Syntax.C.CUPL.Simulation :cal SetSyn("cuplsim")<CR>
+an 50.20.430 &Syntax.C.CVS.commit\ file :cal SetSyn("cvs")<CR>
+an 50.20.440 &Syntax.C.CVS.cvsrc :cal SetSyn("cvsrc")<CR>
+an 50.20.450 &Syntax.C.Cyn++ :cal SetSyn("cynpp")<CR>
+an 50.20.460 &Syntax.C.Cynlib :cal SetSyn("cynlib")<CR>
 an 50.30.100 &Syntax.DE.D :cal SetSyn("d")<CR>
 an 50.30.110 &Syntax.DE.Debian.Debian\ ChangeLog :cal SetSyn("debchangelog")<CR>
 an 50.30.120 &Syntax.DE.Debian.Debian\ Control :cal SetSyn("debcontrol")<CR>
 an 50.30.130 &Syntax.DE.Debian.Debian\ Sources\.list :cal SetSyn("debsources")<CR>
-an 50.30.140 &Syntax.DE.Desktop :cal SetSyn("desktop")<CR>
-an 50.30.150 &Syntax.DE.Dict\ config :cal SetSyn("dictconf")<CR>
-an 50.30.160 &Syntax.DE.Dictd\ config :cal SetSyn("dictdconf")<CR>
-an 50.30.170 &Syntax.DE.Diff :cal SetSyn("diff")<CR>
-an 50.30.180 &Syntax.DE.Digital\ Command\ Lang :cal SetSyn("dcl")<CR>
-an 50.30.190 &Syntax.DE.Dircolors :cal SetSyn("dircolors")<CR>
-an 50.30.200 &Syntax.DE.Django\ template :cal SetSyn("django")<CR>
-an 50.30.210 &Syntax.DE.DNS/BIND\ zone :cal SetSyn("bindzone")<CR>
-an 50.30.220 &Syntax.DE.DocBook.auto-detect :cal SetSyn("docbk")<CR>
-an 50.30.230 &Syntax.DE.DocBook.SGML :cal SetSyn("docbksgml")<CR>
-an 50.30.240 &Syntax.DE.DocBook.XML :cal SetSyn("docbkxml")<CR>
-an 50.30.250 &Syntax.DE.Dot :cal SetSyn("dot")<CR>
-an 50.30.260 &Syntax.DE.Doxygen.C\ with\ doxygen :cal SetSyn("c.doxygen")<CR>
-an 50.30.270 &Syntax.DE.Doxygen.C++\ with\ doxygen :cal SetSyn("cpp.doxygen")<CR>
-an 50.30.280 &Syntax.DE.Doxygen.IDL\ with\ doxygen :cal SetSyn("idl.doxygen")<CR>
-an 50.30.290 &Syntax.DE.Doxygen.Java\ with\ doxygen :cal SetSyn("java.doxygen")<CR>
-an 50.30.300 &Syntax.DE.Dracula :cal SetSyn("dracula")<CR>
-an 50.30.310 &Syntax.DE.DSSSL :cal SetSyn("dsl")<CR>
-an 50.30.320 &Syntax.DE.DTD :cal SetSyn("dtd")<CR>
-an 50.30.330 &Syntax.DE.DTML\ (Zope) :cal SetSyn("dtml")<CR>
-an 50.30.340 &Syntax.DE.Dylan.Dylan :cal SetSyn("dylan")<CR>
-an 50.30.350 &Syntax.DE.Dylan.Dylan\ interface :cal SetSyn("dylanintr")<CR>
-an 50.30.360 &Syntax.DE.Dylan.Dylan\ lid :cal SetSyn("dylanlid")<CR>
-an 50.30.380 &Syntax.DE.EDIF :cal SetSyn("edif")<CR>
-an 50.30.390 &Syntax.DE.Eiffel :cal SetSyn("eiffel")<CR>
-an 50.30.400 &Syntax.DE.Elinks\ config :cal SetSyn("elinks")<CR>
-an 50.30.410 &Syntax.DE.Elm\ filter\ rules :cal SetSyn("elmfilt")<CR>
-an 50.30.420 &Syntax.DE.Embedix\ Component\ Description :cal SetSyn("ecd")<CR>
-an 50.30.430 &Syntax.DE.ERicsson\ LANGuage :cal SetSyn("erlang")<CR>
-an 50.30.440 &Syntax.DE.ESMTP\ rc :cal SetSyn("esmtprc")<CR>
-an 50.30.450 &Syntax.DE.ESQL-C :cal SetSyn("esqlc")<CR>
-an 50.30.460 &Syntax.DE.Essbase\ script :cal SetSyn("csc")<CR>
-an 50.30.470 &Syntax.DE.Esterel :cal SetSyn("esterel")<CR>
-an 50.30.480 &Syntax.DE.Eterm\ config :cal SetSyn("eterm")<CR>
-an 50.30.490 &Syntax.DE.Eviews :cal SetSyn("eviews")<CR>
-an 50.30.500 &Syntax.DE.Exim\ conf :cal SetSyn("exim")<CR>
-an 50.30.510 &Syntax.DE.Expect :cal SetSyn("expect")<CR>
-an 50.30.520 &Syntax.DE.Exports :cal SetSyn("exports")<CR>
+an 50.30.140 &Syntax.DE.Denyhosts :cal SetSyn("denyhosts")<CR>
+an 50.30.150 &Syntax.DE.Desktop :cal SetSyn("desktop")<CR>
+an 50.30.160 &Syntax.DE.Dict\ config :cal SetSyn("dictconf")<CR>
+an 50.30.170 &Syntax.DE.Dictd\ config :cal SetSyn("dictdconf")<CR>
+an 50.30.180 &Syntax.DE.Diff :cal SetSyn("diff")<CR>
+an 50.30.190 &Syntax.DE.Digital\ Command\ Lang :cal SetSyn("dcl")<CR>
+an 50.30.200 &Syntax.DE.Dircolors :cal SetSyn("dircolors")<CR>
+an 50.30.210 &Syntax.DE.Django\ template :cal SetSyn("django")<CR>
+an 50.30.220 &Syntax.DE.DNS/BIND\ zone :cal SetSyn("bindzone")<CR>
+an 50.30.230 &Syntax.DE.DocBook.auto-detect :cal SetSyn("docbk")<CR>
+an 50.30.240 &Syntax.DE.DocBook.SGML :cal SetSyn("docbksgml")<CR>
+an 50.30.250 &Syntax.DE.DocBook.XML :cal SetSyn("docbkxml")<CR>
+an 50.30.260 &Syntax.DE.Dot :cal SetSyn("dot")<CR>
+an 50.30.270 &Syntax.DE.Doxygen.C\ with\ doxygen :cal SetSyn("c.doxygen")<CR>
+an 50.30.280 &Syntax.DE.Doxygen.C++\ with\ doxygen :cal SetSyn("cpp.doxygen")<CR>
+an 50.30.290 &Syntax.DE.Doxygen.IDL\ with\ doxygen :cal SetSyn("idl.doxygen")<CR>
+an 50.30.300 &Syntax.DE.Doxygen.Java\ with\ doxygen :cal SetSyn("java.doxygen")<CR>
+an 50.30.310 &Syntax.DE.Dracula :cal SetSyn("dracula")<CR>
+an 50.30.320 &Syntax.DE.DSSSL :cal SetSyn("dsl")<CR>
+an 50.30.330 &Syntax.DE.DTD :cal SetSyn("dtd")<CR>
+an 50.30.340 &Syntax.DE.DTML\ (Zope) :cal SetSyn("dtml")<CR>
+an 50.30.350 &Syntax.DE.DTrace :cal SetSyn("dtrace")<CR>
+an 50.30.360 &Syntax.DE.Dylan.Dylan :cal SetSyn("dylan")<CR>
+an 50.30.370 &Syntax.DE.Dylan.Dylan\ interface :cal SetSyn("dylanintr")<CR>
+an 50.30.380 &Syntax.DE.Dylan.Dylan\ lid :cal SetSyn("dylanlid")<CR>
+an 50.30.400 &Syntax.DE.EDIF :cal SetSyn("edif")<CR>
+an 50.30.410 &Syntax.DE.Eiffel :cal SetSyn("eiffel")<CR>
+an 50.30.420 &Syntax.DE.Elinks\ config :cal SetSyn("elinks")<CR>
+an 50.30.430 &Syntax.DE.Elm\ filter\ rules :cal SetSyn("elmfilt")<CR>
+an 50.30.440 &Syntax.DE.Embedix\ Component\ Description :cal SetSyn("ecd")<CR>
+an 50.30.450 &Syntax.DE.ERicsson\ LANGuage :cal SetSyn("erlang")<CR>
+an 50.30.460 &Syntax.DE.ESMTP\ rc :cal SetSyn("esmtprc")<CR>
+an 50.30.470 &Syntax.DE.ESQL-C :cal SetSyn("esqlc")<CR>
+an 50.30.480 &Syntax.DE.Essbase\ script :cal SetSyn("csc")<CR>
+an 50.30.490 &Syntax.DE.Esterel :cal SetSyn("esterel")<CR>
+an 50.30.500 &Syntax.DE.Eterm\ config :cal SetSyn("eterm")<CR>
+an 50.30.510 &Syntax.DE.Eviews :cal SetSyn("eviews")<CR>
+an 50.30.520 &Syntax.DE.Exim\ conf :cal SetSyn("exim")<CR>
+an 50.30.530 &Syntax.DE.Expect :cal SetSyn("expect")<CR>
+an 50.30.540 &Syntax.DE.Exports :cal SetSyn("exports")<CR>
 an 50.40.100 &Syntax.FG.Fetchmail :cal SetSyn("fetchmail")<CR>
 an 50.40.110 &Syntax.FG.FlexWiki :cal SetSyn("flexwiki")<CR>
 an 50.40.120 &Syntax.FG.Focus\ Executable :cal SetSyn("focexec")<CR>
@@ -186,60 +191,67 @@
 an 50.40.240 &Syntax.FG.GDB\ command\ file :cal SetSyn("gdb")<CR>
 an 50.40.250 &Syntax.FG.GDMO :cal SetSyn("gdmo")<CR>
 an 50.40.260 &Syntax.FG.Gedcom :cal SetSyn("gedcom")<CR>
-an 50.40.270 &Syntax.FG.Gkrellmrc :cal SetSyn("gkrellmrc")<CR>
-an 50.40.280 &Syntax.FG.GP :cal SetSyn("gp")<CR>
-an 50.40.290 &Syntax.FG.GPG :cal SetSyn("gpg")<CR>
-an 50.40.300 &Syntax.FG.Group\ file :cal SetSyn("group")<CR>
-an 50.40.310 &Syntax.FG.Grub :cal SetSyn("grub")<CR>
-an 50.40.320 &Syntax.FG.GNU\ Server\ Pages :cal SetSyn("gsp")<CR>
-an 50.40.330 &Syntax.FG.GNUplot :cal SetSyn("gnuplot")<CR>
-an 50.40.340 &Syntax.FG.GrADS\ scripts :cal SetSyn("grads")<CR>
-an 50.40.350 &Syntax.FG.Gretl :cal SetSyn("gretl")<CR>
-an 50.40.360 &Syntax.FG.Groff :cal SetSyn("groff")<CR>
-an 50.40.370 &Syntax.FG.Groovy :cal SetSyn("groovy")<CR>
-an 50.40.380 &Syntax.FG.GTKrc :cal SetSyn("gtkrc")<CR>
+an 50.40.270 &Syntax.FG.Git.Output :cal SetSyn("git")<CR>
+an 50.40.280 &Syntax.FG.Git.Commit :cal SetSyn("gitcommit")<CR>
+an 50.40.290 &Syntax.FG.Git.Config :cal SetSyn("gitconfig")<CR>
+an 50.40.300 &Syntax.FG.Git.Rebase :cal SetSyn("gitrebase")<CR>
+an 50.40.310 &Syntax.FG.Git.Send\ Email :cal SetSyn("gitsendemail")<CR>
+an 50.40.320 &Syntax.FG.Gkrellmrc :cal SetSyn("gkrellmrc")<CR>
+an 50.40.330 &Syntax.FG.GP :cal SetSyn("gp")<CR>
+an 50.40.340 &Syntax.FG.GPG :cal SetSyn("gpg")<CR>
+an 50.40.350 &Syntax.FG.Group\ file :cal SetSyn("group")<CR>
+an 50.40.360 &Syntax.FG.Grub :cal SetSyn("grub")<CR>
+an 50.40.370 &Syntax.FG.GNU\ Server\ Pages :cal SetSyn("gsp")<CR>
+an 50.40.380 &Syntax.FG.GNUplot :cal SetSyn("gnuplot")<CR>
+an 50.40.390 &Syntax.FG.GrADS\ scripts :cal SetSyn("grads")<CR>
+an 50.40.400 &Syntax.FG.Gretl :cal SetSyn("gretl")<CR>
+an 50.40.410 &Syntax.FG.Groff :cal SetSyn("groff")<CR>
+an 50.40.420 &Syntax.FG.Groovy :cal SetSyn("groovy")<CR>
+an 50.40.430 &Syntax.FG.GTKrc :cal SetSyn("gtkrc")<CR>
 an 50.50.100 &Syntax.HIJK.Hamster :cal SetSyn("hamster")<CR>
 an 50.50.110 &Syntax.HIJK.Haskell.Haskell :cal SetSyn("haskell")<CR>
 an 50.50.120 &Syntax.HIJK.Haskell.Haskell-c2hs :cal SetSyn("chaskell")<CR>
 an 50.50.130 &Syntax.HIJK.Haskell.Haskell-literate :cal SetSyn("lhaskell")<CR>
-an 50.50.140 &Syntax.HIJK.Hercules :cal SetSyn("hercules")<CR>
-an 50.50.150 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR>
-an 50.50.160 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR>
-an 50.50.170 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR>
-an 50.50.180 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR>
-an 50.50.190 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR>
-an 50.50.200 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR>
-an 50.50.210 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR>
-an 50.50.220 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR>
-an 50.50.230 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR>
-an 50.50.240 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR>
-an 50.50.260 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR>
-an 50.50.270 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR>
-an 50.50.280 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR>
-an 50.50.290 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR>
-an 50.50.300 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR>
-an 50.50.310 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR>
-an 50.50.320 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
-an 50.50.330 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR>
-an 50.50.340 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
-an 50.50.350 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
-an 50.50.360 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
-an 50.50.370 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
-an 50.50.380 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
-an 50.50.400 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR>
-an 50.50.410 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR>
-an 50.50.420 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR>
-an 50.50.430 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR>
-an 50.50.440 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR>
-an 50.50.450 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR>
-an 50.50.460 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
-an 50.50.470 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
-an 50.50.480 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
-an 50.50.490 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
-an 50.50.510 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
-an 50.50.520 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
-an 50.50.530 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
-an 50.50.540 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
+an 50.50.140 &Syntax.HIJK.HASTE :cal SetSyn("haste")<CR>
+an 50.50.150 &Syntax.HIJK.Hercules :cal SetSyn("hercules")<CR>
+an 50.50.160 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR>
+an 50.50.170 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR>
+an 50.50.180 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR>
+an 50.50.190 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR>
+an 50.50.200 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR>
+an 50.50.210 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR>
+an 50.50.220 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR>
+an 50.50.230 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR>
+an 50.50.240 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR>
+an 50.50.250 &Syntax.HIJK.Host\.conf :cal SetSyn("hostconf")<CR>
+an 50.50.260 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR>
+an 50.50.280 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR>
+an 50.50.290 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR>
+an 50.50.300 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR>
+an 50.50.310 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR>
+an 50.50.320 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR>
+an 50.50.330 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR>
+an 50.50.340 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
+an 50.50.350 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR>
+an 50.50.360 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
+an 50.50.370 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
+an 50.50.380 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
+an 50.50.390 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
+an 50.50.400 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
+an 50.50.420 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR>
+an 50.50.430 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR>
+an 50.50.440 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR>
+an 50.50.450 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR>
+an 50.50.460 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR>
+an 50.50.470 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR>
+an 50.50.480 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
+an 50.50.490 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
+an 50.50.500 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
+an 50.50.510 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
+an 50.50.530 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
+an 50.50.540 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
+an 50.50.550 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
+an 50.50.560 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
 an 50.60.100 &Syntax.L-Ma.Lace :cal SetSyn("lace")<CR>
 an 50.60.110 &Syntax.L-Ma.LamdaProlog :cal SetSyn("lprolog")<CR>
 an 50.60.120 &Syntax.L-Ma.Latte :cal SetSyn("latte")<CR>
@@ -252,34 +264,35 @@
 an 50.60.190 &Syntax.L-Ma.LifeLines\ script :cal SetSyn("lifelines")<CR>
 an 50.60.200 &Syntax.L-Ma.Lilo :cal SetSyn("lilo")<CR>
 an 50.60.210 &Syntax.L-Ma.Limits\ config :cal SetSyn("limits")<CR>
-an 50.60.220 &Syntax.L-Ma.Lisp :cal SetSyn("lisp")<CR>
-an 50.60.230 &Syntax.L-Ma.Lite :cal SetSyn("lite")<CR>
-an 50.60.240 &Syntax.L-Ma.LiteStep\ RC :cal SetSyn("litestep")<CR>
-an 50.60.250 &Syntax.L-Ma.Locale\ Input :cal SetSyn("fdcc")<CR>
-an 50.60.260 &Syntax.L-Ma.Login\.access :cal SetSyn("loginaccess")<CR>
-an 50.60.270 &Syntax.L-Ma.Login\.defs :cal SetSyn("logindefs")<CR>
-an 50.60.280 &Syntax.L-Ma.Logtalk :cal SetSyn("logtalk")<CR>
-an 50.60.290 &Syntax.L-Ma.LOTOS :cal SetSyn("lotos")<CR>
-an 50.60.300 &Syntax.L-Ma.LotusScript :cal SetSyn("lscript")<CR>
-an 50.60.310 &Syntax.L-Ma.Lout :cal SetSyn("lout")<CR>
-an 50.60.320 &Syntax.L-Ma.LPC :cal SetSyn("lpc")<CR>
-an 50.60.330 &Syntax.L-Ma.Lua :cal SetSyn("lua")<CR>
-an 50.60.340 &Syntax.L-Ma.Lynx\ Style :cal SetSyn("lss")<CR>
-an 50.60.350 &Syntax.L-Ma.Lynx\ config :cal SetSyn("lynx")<CR>
-an 50.60.370 &Syntax.L-Ma.M4 :cal SetSyn("m4")<CR>
-an 50.60.380 &Syntax.L-Ma.MaGic\ Point :cal SetSyn("mgp")<CR>
-an 50.60.390 &Syntax.L-Ma.Mail :cal SetSyn("mail")<CR>
-an 50.60.400 &Syntax.L-Ma.Mail\ aliases :cal SetSyn("mailaliases")<CR>
-an 50.60.410 &Syntax.L-Ma.Mailcap :cal SetSyn("mailcap")<CR>
-an 50.60.420 &Syntax.L-Ma.Makefile :cal SetSyn("make")<CR>
-an 50.60.430 &Syntax.L-Ma.MakeIndex :cal SetSyn("ist")<CR>
-an 50.60.440 &Syntax.L-Ma.Man\ page :cal SetSyn("man")<CR>
-an 50.60.450 &Syntax.L-Ma.Man\.conf :cal SetSyn("manconf")<CR>
-an 50.60.460 &Syntax.L-Ma.Maple\ V :cal SetSyn("maple")<CR>
-an 50.60.470 &Syntax.L-Ma.Mason :cal SetSyn("mason")<CR>
-an 50.60.480 &Syntax.L-Ma.Mathematica :cal SetSyn("mma")<CR>
-an 50.60.490 &Syntax.L-Ma.Matlab :cal SetSyn("matlab")<CR>
-an 50.60.500 &Syntax.L-Ma.Maxima :cal SetSyn("maxima")<CR>
+an 50.60.220 &Syntax.L-Ma.Linden\ scripting :cal SetSyn("lsl")<CR>
+an 50.60.230 &Syntax.L-Ma.Lisp :cal SetSyn("lisp")<CR>
+an 50.60.240 &Syntax.L-Ma.Lite :cal SetSyn("lite")<CR>
+an 50.60.250 &Syntax.L-Ma.LiteStep\ RC :cal SetSyn("litestep")<CR>
+an 50.60.260 &Syntax.L-Ma.Locale\ Input :cal SetSyn("fdcc")<CR>
+an 50.60.270 &Syntax.L-Ma.Login\.access :cal SetSyn("loginaccess")<CR>
+an 50.60.280 &Syntax.L-Ma.Login\.defs :cal SetSyn("logindefs")<CR>
+an 50.60.290 &Syntax.L-Ma.Logtalk :cal SetSyn("logtalk")<CR>
+an 50.60.300 &Syntax.L-Ma.LOTOS :cal SetSyn("lotos")<CR>
+an 50.60.310 &Syntax.L-Ma.LotusScript :cal SetSyn("lscript")<CR>
+an 50.60.320 &Syntax.L-Ma.Lout :cal SetSyn("lout")<CR>
+an 50.60.330 &Syntax.L-Ma.LPC :cal SetSyn("lpc")<CR>
+an 50.60.340 &Syntax.L-Ma.Lua :cal SetSyn("lua")<CR>
+an 50.60.350 &Syntax.L-Ma.Lynx\ Style :cal SetSyn("lss")<CR>
+an 50.60.360 &Syntax.L-Ma.Lynx\ config :cal SetSyn("lynx")<CR>
+an 50.60.380 &Syntax.L-Ma.M4 :cal SetSyn("m4")<CR>
+an 50.60.390 &Syntax.L-Ma.MaGic\ Point :cal SetSyn("mgp")<CR>
+an 50.60.400 &Syntax.L-Ma.Mail :cal SetSyn("mail")<CR>
+an 50.60.410 &Syntax.L-Ma.Mail\ aliases :cal SetSyn("mailaliases")<CR>
+an 50.60.420 &Syntax.L-Ma.Mailcap :cal SetSyn("mailcap")<CR>
+an 50.60.430 &Syntax.L-Ma.Makefile :cal SetSyn("make")<CR>
+an 50.60.440 &Syntax.L-Ma.MakeIndex :cal SetSyn("ist")<CR>
+an 50.60.450 &Syntax.L-Ma.Man\ page :cal SetSyn("man")<CR>
+an 50.60.460 &Syntax.L-Ma.Man\.conf :cal SetSyn("manconf")<CR>
+an 50.60.470 &Syntax.L-Ma.Maple\ V :cal SetSyn("maple")<CR>
+an 50.60.480 &Syntax.L-Ma.Mason :cal SetSyn("mason")<CR>
+an 50.60.490 &Syntax.L-Ma.Mathematica :cal SetSyn("mma")<CR>
+an 50.60.500 &Syntax.L-Ma.Matlab :cal SetSyn("matlab")<CR>
+an 50.60.510 &Syntax.L-Ma.Maxima :cal SetSyn("maxima")<CR>
 an 50.70.100 &Syntax.Me-NO.MEL\ (for\ Maya) :cal SetSyn("mel")<CR>
 an 50.70.110 &Syntax.Me-NO.Messages\ (/var/log) :cal SetSyn("messages")<CR>
 an 50.70.120 &Syntax.Me-NO.Metafont :cal SetSyn("mf")<CR>
@@ -298,29 +311,30 @@
 an 50.70.250 &Syntax.Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file :cal SetSyn("btm")<CR>
 an 50.70.260 &Syntax.Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file :cal SetSyn("dosbatch")<CR>
 an 50.70.270 &Syntax.Me-NO.MS-DOS/Windows.\.ini\ file :cal SetSyn("dosini")<CR>
-an 50.70.280 &Syntax.Me-NO.MS-DOS/Windows.Module\ Definition :cal SetSyn("def")<CR>
-an 50.70.290 &Syntax.Me-NO.MS-DOS/Windows.Registry :cal SetSyn("registry")<CR>
-an 50.70.300 &Syntax.Me-NO.MS-DOS/Windows.Resource\ file :cal SetSyn("rc")<CR>
-an 50.70.310 &Syntax.Me-NO.Msql :cal SetSyn("msql")<CR>
-an 50.70.320 &Syntax.Me-NO.MuPAD :cal SetSyn("mupad")<CR>
-an 50.70.330 &Syntax.Me-NO.MUSHcode :cal SetSyn("mush")<CR>
-an 50.70.340 &Syntax.Me-NO.Muttrc :cal SetSyn("muttrc")<CR>
-an 50.70.360 &Syntax.Me-NO.Nanorc :cal SetSyn("nanorc")<CR>
-an 50.70.370 &Syntax.Me-NO.Nastran\ input/DMAP :cal SetSyn("nastran")<CR>
-an 50.70.380 &Syntax.Me-NO.Natural :cal SetSyn("natural")<CR>
-an 50.70.390 &Syntax.Me-NO.Netrc :cal SetSyn("netrc")<CR>
-an 50.70.400 &Syntax.Me-NO.Novell\ NCF\ batch :cal SetSyn("ncf")<CR>
-an 50.70.410 &Syntax.Me-NO.Not\ Quite\ C\ (LEGO) :cal SetSyn("nqc")<CR>
-an 50.70.420 &Syntax.Me-NO.Nroff :cal SetSyn("nroff")<CR>
-an 50.70.430 &Syntax.Me-NO.NSIS\ script :cal SetSyn("nsis")<CR>
-an 50.70.450 &Syntax.Me-NO.Objective\ C :cal SetSyn("objc")<CR>
-an 50.70.460 &Syntax.Me-NO.Objective\ C++ :cal SetSyn("objcpp")<CR>
-an 50.70.470 &Syntax.Me-NO.OCAML :cal SetSyn("ocaml")<CR>
-an 50.70.480 &Syntax.Me-NO.Occam :cal SetSyn("occam")<CR>
-an 50.70.490 &Syntax.Me-NO.Omnimark :cal SetSyn("omnimark")<CR>
-an 50.70.500 &Syntax.Me-NO.OpenROAD :cal SetSyn("openroad")<CR>
-an 50.70.510 &Syntax.Me-NO.Open\ Psion\ Lang :cal SetSyn("opl")<CR>
-an 50.70.520 &Syntax.Me-NO.Oracle\ config :cal SetSyn("ora")<CR>
+an 50.70.280 &Syntax.Me-NO.MS-DOS/Windows.Message\ text :cal SetSyn("msmessages")<CR>
+an 50.70.290 &Syntax.Me-NO.MS-DOS/Windows.Module\ Definition :cal SetSyn("def")<CR>
+an 50.70.300 &Syntax.Me-NO.MS-DOS/Windows.Registry :cal SetSyn("registry")<CR>
+an 50.70.310 &Syntax.Me-NO.MS-DOS/Windows.Resource\ file :cal SetSyn("rc")<CR>
+an 50.70.320 &Syntax.Me-NO.Msql :cal SetSyn("msql")<CR>
+an 50.70.330 &Syntax.Me-NO.MuPAD :cal SetSyn("mupad")<CR>
+an 50.70.340 &Syntax.Me-NO.MUSHcode :cal SetSyn("mush")<CR>
+an 50.70.350 &Syntax.Me-NO.Muttrc :cal SetSyn("muttrc")<CR>
+an 50.70.370 &Syntax.Me-NO.Nanorc :cal SetSyn("nanorc")<CR>
+an 50.70.380 &Syntax.Me-NO.Nastran\ input/DMAP :cal SetSyn("nastran")<CR>
+an 50.70.390 &Syntax.Me-NO.Natural :cal SetSyn("natural")<CR>
+an 50.70.400 &Syntax.Me-NO.Netrc :cal SetSyn("netrc")<CR>
+an 50.70.410 &Syntax.Me-NO.Novell\ NCF\ batch :cal SetSyn("ncf")<CR>
+an 50.70.420 &Syntax.Me-NO.Not\ Quite\ C\ (LEGO) :cal SetSyn("nqc")<CR>
+an 50.70.430 &Syntax.Me-NO.Nroff :cal SetSyn("nroff")<CR>
+an 50.70.440 &Syntax.Me-NO.NSIS\ script :cal SetSyn("nsis")<CR>
+an 50.70.460 &Syntax.Me-NO.Objective\ C :cal SetSyn("objc")<CR>
+an 50.70.470 &Syntax.Me-NO.Objective\ C++ :cal SetSyn("objcpp")<CR>
+an 50.70.480 &Syntax.Me-NO.OCAML :cal SetSyn("ocaml")<CR>
+an 50.70.490 &Syntax.Me-NO.Occam :cal SetSyn("occam")<CR>
+an 50.70.500 &Syntax.Me-NO.Omnimark :cal SetSyn("omnimark")<CR>
+an 50.70.510 &Syntax.Me-NO.OpenROAD :cal SetSyn("openroad")<CR>
+an 50.70.520 &Syntax.Me-NO.Open\ Psion\ Lang :cal SetSyn("opl")<CR>
+an 50.70.530 &Syntax.Me-NO.Oracle\ config :cal SetSyn("ora")<CR>
 an 50.80.100 &Syntax.PQ.Packet\ filter\ conf :cal SetSyn("pf")<CR>
 an 50.80.110 &Syntax.PQ.Palm\ resource\ compiler :cal SetSyn("pilrc")<CR>
 an 50.80.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
@@ -328,7 +342,7 @@
 an 50.80.140 &Syntax.PQ.Pascal :cal SetSyn("pascal")<CR>
 an 50.80.150 &Syntax.PQ.Password\ file :cal SetSyn("passwd")<CR>
 an 50.80.160 &Syntax.PQ.PCCTS :cal SetSyn("pccts")<CR>
-an 50.80.170 &Syntax.PQ.PPWizard :cal SetSyn("ppwiz")<CR>
+an 50.80.170 &Syntax.PQ.PDF :cal SetSyn("pdf")<CR>
 an 50.80.180 &Syntax.PQ.Perl.Perl :cal SetSyn("perl")<CR>
 an 50.80.190 &Syntax.PQ.Perl.Perl\ POD :cal SetSyn("pod")<CR>
 an 50.80.200 &Syntax.PQ.Perl.Perl\ XS :cal SetSyn("xs")<CR>
@@ -346,19 +360,21 @@
 an 50.80.320 &Syntax.PQ.PostScript.PostScript\ Printer\ Description :cal SetSyn("ppd")<CR>
 an 50.80.330 &Syntax.PQ.Povray.Povray\ scene\ descr :cal SetSyn("pov")<CR>
 an 50.80.340 &Syntax.PQ.Povray.Povray\ configuration :cal SetSyn("povini")<CR>
-an 50.80.350 &Syntax.PQ.Prescribe\ (Kyocera) :cal SetSyn("prescribe")<CR>
-an 50.80.360 &Syntax.PQ.Printcap :cal SetSyn("pcap")<CR>
-an 50.80.370 &Syntax.PQ.Privoxy :cal SetSyn("privoxy")<CR>
-an 50.80.380 &Syntax.PQ.Procmail :cal SetSyn("procmail")<CR>
-an 50.80.390 &Syntax.PQ.Product\ Spec\ File :cal SetSyn("psf")<CR>
-an 50.80.400 &Syntax.PQ.Progress :cal SetSyn("progress")<CR>
-an 50.80.410 &Syntax.PQ.Prolog :cal SetSyn("prolog")<CR>
-an 50.80.420 &Syntax.PQ.Protocols :cal SetSyn("protocols")<CR>
-an 50.80.430 &Syntax.PQ.Purify\ log :cal SetSyn("purifylog")<CR>
-an 50.80.440 &Syntax.PQ.Pyrex :cal SetSyn("pyrex")<CR>
-an 50.80.450 &Syntax.PQ.Python :cal SetSyn("python")<CR>
-an 50.80.470 &Syntax.PQ.Quake :cal SetSyn("quake")<CR>
-an 50.80.480 &Syntax.PQ.Quickfix\ window :cal SetSyn("qf")<CR>
+an 50.80.350 &Syntax.PQ.PPWizard :cal SetSyn("ppwiz")<CR>
+an 50.80.360 &Syntax.PQ.Prescribe\ (Kyocera) :cal SetSyn("prescribe")<CR>
+an 50.80.370 &Syntax.PQ.Printcap :cal SetSyn("pcap")<CR>
+an 50.80.380 &Syntax.PQ.Privoxy :cal SetSyn("privoxy")<CR>
+an 50.80.390 &Syntax.PQ.Procmail :cal SetSyn("procmail")<CR>
+an 50.80.400 &Syntax.PQ.Product\ Spec\ File :cal SetSyn("psf")<CR>
+an 50.80.410 &Syntax.PQ.Progress :cal SetSyn("progress")<CR>
+an 50.80.420 &Syntax.PQ.Prolog :cal SetSyn("prolog")<CR>
+an 50.80.430 &Syntax.PQ.ProMeLa :cal SetSyn("promela")<CR>
+an 50.80.440 &Syntax.PQ.Protocols :cal SetSyn("protocols")<CR>
+an 50.80.450 &Syntax.PQ.Purify\ log :cal SetSyn("purifylog")<CR>
+an 50.80.460 &Syntax.PQ.Pyrex :cal SetSyn("pyrex")<CR>
+an 50.80.470 &Syntax.PQ.Python :cal SetSyn("python")<CR>
+an 50.80.490 &Syntax.PQ.Quake :cal SetSyn("quake")<CR>
+an 50.80.500 &Syntax.PQ.Quickfix\ window :cal SetSyn("qf")<CR>
 an 50.90.100 &Syntax.R-Sg.R.R :cal SetSyn("r")<CR>
 an 50.90.110 &Syntax.R-Sg.R.R\ help :cal SetSyn("rhelp")<CR>
 an 50.90.120 &Syntax.R-Sg.R.R\ noweb :cal SetSyn("rnoweb")<CR>
@@ -374,35 +390,36 @@
 an 50.90.220 &Syntax.R-Sg.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl")<CR>
 an 50.90.230 &Syntax.R-Sg.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib")<CR>
 an 50.90.240 &Syntax.R-Sg.Resolv\.conf :cal SetSyn("resolv")<CR>
-an 50.90.250 &Syntax.R-Sg.Rexx :cal SetSyn("rexx")<CR>
-an 50.90.260 &Syntax.R-Sg.Robots\.txt :cal SetSyn("robots")<CR>
-an 50.90.270 &Syntax.R-Sg.RockLinux\ package\ desc\. :cal SetSyn("desc")<CR>
-an 50.90.280 &Syntax.R-Sg.Rpcgen :cal SetSyn("rpcgen")<CR>
-an 50.90.290 &Syntax.R-Sg.RPL/2 :cal SetSyn("rpl")<CR>
-an 50.90.300 &Syntax.R-Sg.ReStructuredText :cal SetSyn("rst")<CR>
-an 50.90.310 &Syntax.R-Sg.RTF :cal SetSyn("rtf")<CR>
-an 50.90.320 &Syntax.R-Sg.Ruby :cal SetSyn("ruby")<CR>
-an 50.90.340 &Syntax.R-Sg.S-Lang :cal SetSyn("slang")<CR>
-an 50.90.350 &Syntax.R-Sg.Samba\ config :cal SetSyn("samba")<CR>
-an 50.90.360 &Syntax.R-Sg.SAS :cal SetSyn("sas")<CR>
-an 50.90.370 &Syntax.R-Sg.Sather :cal SetSyn("sather")<CR>
-an 50.90.380 &Syntax.R-Sg.Scheme :cal SetSyn("scheme")<CR>
-an 50.90.390 &Syntax.R-Sg.Scilab :cal SetSyn("scilab")<CR>
-an 50.90.400 &Syntax.R-Sg.Screen\ RC :cal SetSyn("screen")<CR>
-an 50.90.410 &Syntax.R-Sg.SDL :cal SetSyn("sdl")<CR>
-an 50.90.420 &Syntax.R-Sg.Sed :cal SetSyn("sed")<CR>
-an 50.90.430 &Syntax.R-Sg.Sendmail\.cf :cal SetSyn("sm")<CR>
-an 50.90.440 &Syntax.R-Sg.Send-pr :cal SetSyn("sendpr")<CR>
-an 50.90.450 &Syntax.R-Sg.Sensors\.conf :cal SetSyn("sensors")<CR>
-an 50.90.460 &Syntax.R-Sg.Service\ Location\ config :cal SetSyn("slpconf")<CR>
-an 50.90.470 &Syntax.R-Sg.Service\ Location\ registration :cal SetSyn("slpreg")<CR>
-an 50.90.480 &Syntax.R-Sg.Service\ Location\ SPI :cal SetSyn("slpspi")<CR>
-an 50.90.490 &Syntax.R-Sg.Services :cal SetSyn("services")<CR>
-an 50.90.500 &Syntax.R-Sg.Setserial\ config :cal SetSyn("setserial")<CR>
-an 50.90.510 &Syntax.R-Sg.SGML.SGML\ catalog :cal SetSyn("catalog")<CR>
-an 50.90.520 &Syntax.R-Sg.SGML.SGML\ DTD :cal SetSyn("sgml")<CR>
-an 50.90.530 &Syntax.R-Sg.SGML.SGML\ Declaration :cal SetSyn("sgmldecl")<CR>
-an 50.90.540 &Syntax.R-Sg.SGML.SGML-linuxdoc :cal SetSyn("sgmllnx")<CR>
+an 50.90.250 &Syntax.R-Sg.Reva\ Forth :cal SetSyn("reva")<CR>
+an 50.90.260 &Syntax.R-Sg.Rexx :cal SetSyn("rexx")<CR>
+an 50.90.270 &Syntax.R-Sg.Robots\.txt :cal SetSyn("robots")<CR>
+an 50.90.280 &Syntax.R-Sg.RockLinux\ package\ desc\. :cal SetSyn("desc")<CR>
+an 50.90.290 &Syntax.R-Sg.Rpcgen :cal SetSyn("rpcgen")<CR>
+an 50.90.300 &Syntax.R-Sg.RPL/2 :cal SetSyn("rpl")<CR>
+an 50.90.310 &Syntax.R-Sg.ReStructuredText :cal SetSyn("rst")<CR>
+an 50.90.320 &Syntax.R-Sg.RTF :cal SetSyn("rtf")<CR>
+an 50.90.330 &Syntax.R-Sg.Ruby :cal SetSyn("ruby")<CR>
+an 50.90.350 &Syntax.R-Sg.S-Lang :cal SetSyn("slang")<CR>
+an 50.90.360 &Syntax.R-Sg.Samba\ config :cal SetSyn("samba")<CR>
+an 50.90.370 &Syntax.R-Sg.SAS :cal SetSyn("sas")<CR>
+an 50.90.380 &Syntax.R-Sg.Sather :cal SetSyn("sather")<CR>
+an 50.90.390 &Syntax.R-Sg.Scheme :cal SetSyn("scheme")<CR>
+an 50.90.400 &Syntax.R-Sg.Scilab :cal SetSyn("scilab")<CR>
+an 50.90.410 &Syntax.R-Sg.Screen\ RC :cal SetSyn("screen")<CR>
+an 50.90.420 &Syntax.R-Sg.SDL :cal SetSyn("sdl")<CR>
+an 50.90.430 &Syntax.R-Sg.Sed :cal SetSyn("sed")<CR>
+an 50.90.440 &Syntax.R-Sg.Sendmail\.cf :cal SetSyn("sm")<CR>
+an 50.90.450 &Syntax.R-Sg.Send-pr :cal SetSyn("sendpr")<CR>
+an 50.90.460 &Syntax.R-Sg.Sensors\.conf :cal SetSyn("sensors")<CR>
+an 50.90.470 &Syntax.R-Sg.Service\ Location\ config :cal SetSyn("slpconf")<CR>
+an 50.90.480 &Syntax.R-Sg.Service\ Location\ registration :cal SetSyn("slpreg")<CR>
+an 50.90.490 &Syntax.R-Sg.Service\ Location\ SPI :cal SetSyn("slpspi")<CR>
+an 50.90.500 &Syntax.R-Sg.Services :cal SetSyn("services")<CR>
+an 50.90.510 &Syntax.R-Sg.Setserial\ config :cal SetSyn("setserial")<CR>
+an 50.90.520 &Syntax.R-Sg.SGML.SGML\ catalog :cal SetSyn("catalog")<CR>
+an 50.90.530 &Syntax.R-Sg.SGML.SGML\ DTD :cal SetSyn("sgml")<CR>
+an 50.90.540 &Syntax.R-Sg.SGML.SGML\ Declaration :cal SetSyn("sgmldecl")<CR>
+an 50.90.550 &Syntax.R-Sg.SGML.SGML-linuxdoc :cal SetSyn("sgmllnx")<CR>
 an 50.100.100 &Syntax.Sh-S.Shell\ script.sh\ and\ ksh :cal SetSyn("sh")<CR>
 an 50.100.110 &Syntax.Sh-S.Shell\ script.csh :cal SetSyn("csh")<CR>
 an 50.100.120 &Syntax.Sh-S.Shell\ script.tcsh :cal SetSyn("tcsh")<CR>
@@ -456,7 +473,8 @@
 an 50.100.600 &Syntax.Sh-S.Streaming\ descriptor\ file :cal SetSyn("sd")<CR>
 an 50.100.610 &Syntax.Sh-S.Subversion\ commit :cal SetSyn("svn")<CR>
 an 50.100.620 &Syntax.Sh-S.Sudoers :cal SetSyn("sudoers")<CR>
-an 50.100.630 &Syntax.Sh-S.Sysctl\.conf :cal SetSyn("sysctl")<CR>
+an 50.100.630 &Syntax.Sh-S.Symbian\ meta-makefile :cal SetSyn("mmp")<CR>
+an 50.100.640 &Syntax.Sh-S.Sysctl\.conf :cal SetSyn("sysctl")<CR>
 an 50.110.100 &Syntax.TUV.TADS :cal SetSyn("tads")<CR>
 an 50.110.110 &Syntax.TUV.Tags :cal SetSyn("tags")<CR>
 an 50.110.120 &Syntax.TUV.TAK.TAK\ compare :cal SetSyn("takcmp")<CR>
@@ -498,8 +516,9 @@
 an 50.110.500 &Syntax.TUV.Vim.Viminfo\ file :cal SetSyn("viminfo")<CR>
 an 50.110.510 &Syntax.TUV.Virata\ config :cal SetSyn("virata")<CR>
 an 50.110.520 &Syntax.TUV.Visual\ Basic :cal SetSyn("vb")<CR>
-an 50.110.530 &Syntax.TUV.VRML :cal SetSyn("vrml")<CR>
-an 50.110.540 &Syntax.TUV.VSE\ JCL :cal SetSyn("vsejcl")<CR>
+an 50.110.530 &Syntax.TUV.VOS\ CM\ macro :cal SetSyn("voscm")<CR>
+an 50.110.540 &Syntax.TUV.VRML :cal SetSyn("vrml")<CR>
+an 50.110.550 &Syntax.TUV.VSE\ JCL :cal SetSyn("vsejcl")<CR>
 an 50.120.100 &Syntax.WXYZ.WEB.CWEB :cal SetSyn("cweb")<CR>
 an 50.120.110 &Syntax.WXYZ.WEB.WEB :cal SetSyn("web")<CR>
 an 50.120.120 &Syntax.WXYZ.WEB.WEB\ Changes :cal SetSyn("change")<CR>
@@ -517,16 +536,17 @@
 an 50.120.270 &Syntax.WXYZ.X\ Pixmap :cal SetSyn("xpm")<CR>
 an 50.120.280 &Syntax.WXYZ.X\ Pixmap\ (2) :cal SetSyn("xpm2")<CR>
 an 50.120.290 &Syntax.WXYZ.X\ resources :cal SetSyn("xdefaults")<CR>
-an 50.120.300 &Syntax.WXYZ.Xinetd\.conf :cal SetSyn("xinetd")<CR>
-an 50.120.310 &Syntax.WXYZ.Xmodmap :cal SetSyn("xmodmap")<CR>
-an 50.120.320 &Syntax.WXYZ.Xmath :cal SetSyn("xmath")<CR>
-an 50.120.330 &Syntax.WXYZ.XML :cal SetSyn("xml")<CR>
-an 50.120.340 &Syntax.WXYZ.XML\ Schema\ (XSD) :cal SetSyn("xsd")<CR>
-an 50.120.350 &Syntax.WXYZ.XQuery :cal SetSyn("xquery")<CR>
-an 50.120.360 &Syntax.WXYZ.Xslt :cal SetSyn("xslt")<CR>
-an 50.120.370 &Syntax.WXYZ.XFree86\ Config :cal SetSyn("xf86conf")<CR>
-an 50.120.390 &Syntax.WXYZ.YAML :cal SetSyn("yaml")<CR>
-an 50.120.400 &Syntax.WXYZ.Yacc :cal SetSyn("yacc")<CR>
+an 50.120.300 &Syntax.WXYZ.XBL :cal SetSyn("xbl")<CR>
+an 50.120.310 &Syntax.WXYZ.Xinetd\.conf :cal SetSyn("xinetd")<CR>
+an 50.120.320 &Syntax.WXYZ.Xmodmap :cal SetSyn("xmodmap")<CR>
+an 50.120.330 &Syntax.WXYZ.Xmath :cal SetSyn("xmath")<CR>
+an 50.120.340 &Syntax.WXYZ.XML :cal SetSyn("xml")<CR>
+an 50.120.350 &Syntax.WXYZ.XML\ Schema\ (XSD) :cal SetSyn("xsd")<CR>
+an 50.120.360 &Syntax.WXYZ.XQuery :cal SetSyn("xquery")<CR>
+an 50.120.370 &Syntax.WXYZ.Xslt :cal SetSyn("xslt")<CR>
+an 50.120.380 &Syntax.WXYZ.XFree86\ Config :cal SetSyn("xf86conf")<CR>
+an 50.120.400 &Syntax.WXYZ.YAML :cal SetSyn("yaml")<CR>
+an 50.120.410 &Syntax.WXYZ.Yacc :cal SetSyn("yacc")<CR>
 
 " The End Of The Syntax Menu
 
diff --git a/runtime/tutor/Contents b/runtime/tutor/Contents
deleted file mode 100644
index 97dc1b5..0000000
--- a/runtime/tutor/Contents
+++ /dev/null
@@ -1,23 +0,0 @@
-Vim		Vi IMproved.  A clone of the UNIX text editor Vi.  Very useful
-		for editing programs and other plain ASCII text.  Full Vi
-		compatibility and includes all Ex commands.  Extra features
-		above Vi: Multilevel undo, multiple windows, syntax
-		highlighting, command line history, folding, improved command
-		line editing, command typeahead display, command to display
-		yank buffers, possibility to edit binary files, file name
-		stack, support for Manx QuickFix and other compiler's error
-		messages, shows current file name in window title, on-line
-		help, rectangular cut/paste, etc., etc., etc...
-
-		Version 7.2a.  Also runs under UNIX, MSDOS and other systems.
-		vim72art.tgz  contains the documentation and syntax files.
-		vim72abin.tgz contains the binaries.
-		vim72asrc.tgz contains the sources.
-		Author: Bram Moolenaar et al.
-
-
-Xxd		Hex dumper and reader.  Can be used to view files as hex, edit
-		them and write them back.  Can also be used to patch files.
-
-		Version 1.8 (1997 May 22)
-		Author: Juergen Weigert
diff --git a/runtime/tutor/Contents.info b/runtime/tutor/Contents.info
deleted file mode 100755
index 9e855c7..0000000
--- a/runtime/tutor/Contents.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/Filelist b/runtime/tutor/Filelist
deleted file mode 100644
index aa423d9..0000000
--- a/runtime/tutor/Filelist
+++ /dev/null
@@ -1,716 +0,0 @@
-# List of distributed Vim files.
-# Used by Makefile and upload.aap.
-
-# source files for all source archives
-SRC_ALL =	\
-		src/README.txt \
-		src/arabic.c \
-		src/arabic.h \
-		src/ascii.h \
-		src/buffer.c \
-		src/charset.c \
-		src/diff.c \
-		src/digraph.c \
-		src/edit.c \
-		src/eval.c \
-		src/ex_cmds.c \
-		src/ex_cmds.h \
-		src/ex_cmds2.c \
-		src/ex_docmd.c \
-		src/ex_eval.c \
-		src/ex_getln.c \
-		src/farsi.c \
-		src/farsi.h \
-		src/feature.h \
-		src/fileio.c \
-		src/fold.c \
-		src/getchar.c \
-		src/globals.h \
-		src/gui.c \
-		src/gui.h \
-		src/gui_beval.c \
-		src/gui_beval.h \
-		src/hardcopy.c \
-		src/hashtab.c \
-		src/keymap.h \
-		src/macros.h \
-		src/main.c \
-		src/mark.c \
-		src/mbyte.c \
-		src/memfile.c \
-		src/memline.c \
-		src/menu.c \
-		src/message.c \
-		src/misc1.c \
-		src/misc2.c \
-		src/move.c \
-		src/mysign \
-		src/nbdebug.c \
-		src/nbdebug.h \
-		src/netbeans.c \
-		src/normal.c \
-		src/ops.c \
-		src/option.c \
-		src/option.h \
-		src/popupmnu.c \
-		src/quickfix.c \
-		src/regexp.c \
-		src/regexp.h \
-		src/screen.c \
-		src/search.c \
-		src/structs.h \
-		src/spell.c \
-		src/syntax.c \
-		src/tag.c \
-		src/term.c \
-		src/term.h \
-		src/termlib.c \
-		src/ui.c \
-		src/undo.c \
-		src/version.c \
-		src/version.h \
-		src/vim.h \
-		src/window.c \
-		src/xxd/xxd.c \
-		src/main.aap \
-		src/testdir/main.aap \
-		src/testdir/*.in \
-		src/testdir/test[0-9]*.ok \
-		src/testdir/test49.vim \
-		src/testdir/test60.vim \
-		src/proto.h \
-		src/proto/buffer.pro \
-		src/proto/charset.pro \
-		src/proto/diff.pro \
-		src/proto/digraph.pro \
-		src/proto/edit.pro \
-		src/proto/eval.pro \
-		src/proto/ex_cmds.pro \
-		src/proto/ex_cmds2.pro \
-		src/proto/ex_docmd.pro \
-		src/proto/ex_eval.pro \
-		src/proto/ex_getln.pro \
-		src/proto/fileio.pro \
-		src/proto/fold.pro \
-		src/proto/getchar.pro \
-		src/proto/gui.pro \
-		src/proto/gui_beval.pro \
-		src/proto/hardcopy.pro \
-		src/proto/hashtab.pro \
-		src/proto/main.pro \
-		src/proto/mark.pro \
-		src/proto/mbyte.pro \
-		src/proto/memfile.pro \
-		src/proto/memline.pro \
-		src/proto/menu.pro \
-		src/proto/message.pro \
-		src/proto/misc1.pro \
-		src/proto/misc2.pro \
-		src/proto/move.pro \
-		src/proto/netbeans.pro \
-		src/proto/normal.pro \
-		src/proto/ops.pro \
-		src/proto/option.pro \
-		src/proto/popupmnu.pro \
-		src/proto/quickfix.pro \
-		src/proto/regexp.pro \
-		src/proto/screen.pro \
-		src/proto/search.pro \
-		src/proto/spell.pro \
-		src/proto/syntax.pro \
-		src/proto/tag.pro \
-		src/proto/term.pro \
-		src/proto/termlib.pro \
-		src/proto/ui.pro \
-		src/proto/undo.pro \
-		src/proto/version.pro \
-		src/proto/window.pro \
-
-
-# source files for Unix only
-SRC_UNIX =	\
-		Makefile \
-		Filelist \
-		README_src.txt \
-		configure \
-		pixmaps/*.xpm \
-		pixmaps/gen-inline-pixbufs.sh \
-		pixmaps/stock_icons.h \
-		src/INSTALL \
-		src/INSTALLx.txt \
-		src/Makefile \
-		src/auto/configure \
-		src/config.aap.in \
-		src/config.h.in \
-		src/config.mk.dist \
-		src/config.mk.in \
-		src/configure \
-		src/configure.in \
-		src/gui_at_fs.c \
-		src/gui_at_sb.c \
-		src/gui_at_sb.h \
-		src/gui_athena.c \
-		src/gui_gtk.c \
-		src/gui_gtk_f.c \
-		src/gui_gtk_f.h \
-		src/gui_gtk_x11.c \
-		src/gui_motif.c \
-		src/gui_xmdlg.c \
-		src/gui_xmebw.c \
-		src/gui_xmebw.h \
-		src/gui_xmebwp.h \
-		src/gui_x11.c \
-		src/gui_x11_pm.h \
-		src/hangulin.c \
-		src/if_xcmdsrv.c \
-		src/integration.c \
-		src/integration.h \
-		src/link.sh \
-		src/installman.sh \
-		src/installml.sh \
-		src/mkinstalldirs \
-		src/os_unix.c \
-		src/os_unix.h \
-		src/os_unixx.h \
-		src/osdef.sh \
-		src/osdef1.h.in \
-		src/osdef2.h.in \
-		src/pathdef.sh \
-		src/proto/gui_athena.pro \
-		src/proto/gui_gtk.pro \
-		src/proto/gui_gtk_x11.pro \
-		src/proto/gui_motif.pro \
-		src/proto/gui_xmdlg.pro \
-		src/proto/gui_x11.pro \
-		src/proto/hangulin.pro \
-		src/proto/if_xcmdsrv.pro \
-		src/proto/os_unix.pro \
-		src/proto/pty.pro \
-		src/proto/workshop.pro \
-		src/pty.c \
-		src/testdir/Makefile \
-		src/testdir/unix.vim \
-		src/toolcheck \
-		src/vim_icon.xbm \
-		src/vim_mask.xbm \
-		src/vimtutor \
-		src/gvimtutor \
-		src/which.sh \
-		src/workshop.c \
-		src/workshop.h \
-		src/wsdebug.c \
-		src/wsdebug.h \
-		src/xxd/Makefile \
-
-# source files for both DOS and Unix
-SRC_DOS_UNIX =	\
-		src/if_cscope.c \
-		src/if_cscope.h \
-		src/if_mzsch.c \
-		src/if_mzsch.h \
-		src/if_perl.xs \
-		src/if_perlsfio.c \
-		src/if_python.c \
-		src/if_ruby.c \
-		src/if_sniff.h \
-		src/if_tcl.c \
-		src/proto/if_cscope.pro \
-		src/proto/if_mzsch.pro \
-		src/proto/if_perl.pro \
-		src/proto/if_perlsfio.pro \
-		src/proto/if_python.pro \
-		src/proto/if_ruby.pro \
-		src/proto/if_tcl.pro \
-		src/typemap \
-
-# source files for DOS (also in the extra archive)
-SRC_DOS =	\
-		src/GvimExt/*.mak \
-		src/GvimExt/GvimExt.reg \
-		src/GvimExt/Makefile \
-		src/GvimExt/README.txt \
-		src/GvimExt/gvimext.cpp \
-		src/GvimExt/gvimext.def \
-		src/GvimExt/gvimext.h \
-		src/GvimExt/gvimext.inf \
-		src/GvimExt/gvimext.rc \
-		src/GvimExt/gvimext_ming.def \
-		src/GvimExt/gvimext_ming.rc \
-		src/GvimExt/resource.h \
-		src/GvimExt/uninst.bat \
-		README_srcdos.txt \
-		src/INSTALLpc.txt \
-		src/Make_bc3.mak \
-		src/Make_bc5.mak \
-		src/Make_cyg.mak \
-		src/Make_djg.mak \
-		src/Make_ivc.mak \
-		src/Make_dvc.mak \
-		src/Make_ming.mak \
-		src/Make_mvc.mak \
-		src/Make_w16.mak \
-		src/bigvim.bat \
-		src/msvcsetup.bat \
-		src/msvc2008.bat \
-		src/dimm.idl \
-		src/dlldata.c \
-		src/dosinst.c \
-		src/dosinst.h \
-		src/glbl_ime.cpp \
-		src/glbl_ime.h \
-		src/gui_w16.c \
-		src/gui_w32.c \
-		src/gui_w48.c \
-		src/guiw16rc.h \
-		src/gui_w32_rc.h \
-		src/if_ole.cpp \
-		src/if_ole.h \
-		src/if_ole.idl \
-		src/iid_ole.c \
-		src/os_dos.h \
-		src/os_msdos.c \
-		src/os_msdos.h \
-		src/os_w32dll.c \
-		src/os_w32exe.c \
-		src/os_win16.c \
-		src/os_win32.c \
-		src/os_mswin.c \
-		src/os_win16.h \
-		src/os_win32.h \
-		src/proto/gui_w16.pro \
-		src/proto/gui_w32.pro \
-		src/proto/if_ole.pro \
-		src/proto/os_msdos.pro \
-		src/proto/os_win16.pro \
-		src/proto/os_win32.pro \
-		src/proto/os_mswin.pro \
-		src/testdir/Make_dos.mak \
-		src/testdir/dos.vim \
-		src/uninstal.c \
-		src/vim.def \
-		src/vim.rc \
-		src/vimio.h \
-		src/gvim.exe.mnf \
-		src/vim16.def \
-		src/vim16.rc \
-		src/vimrun.c \
-		src/vimtbar.h \
-		src/xpm_w32.c \
-		src/xpm_w32.h \
-		src/xxd/Make_bc3.mak \
-		src/xxd/Make_bc5.mak \
-		src/xxd/Make_cyg.mak \
-		src/xxd/Make_djg.mak \
-		src/xxd/Make_mvc.mak \
-		nsis/gvim.nsi \
-		nsis/README.txt \
-		uninstal.txt \
-		src/VisVim/Commands.cpp \
-		src/VisVim/Commands.h \
-		src/VisVim/DSAddIn.cpp \
-		src/VisVim/DSAddIn.h \
-		src/VisVim/OleAut.cpp \
-		src/VisVim/OleAut.h \
-		src/VisVim/README_VisVim.txt \
-		src/VisVim/Reg.cpp \
-		src/VisVim/Register.bat \
-		src/VisVim/Resource.h \
-		src/VisVim/StdAfx.cpp \
-		src/VisVim/StdAfx.h \
-		src/VisVim/UnRegist.bat \
-		src/VisVim/VisVim.cpp \
-		src/VisVim/VisVim.def \
-		src/VisVim/VisVim.mak \
-		src/VisVim/VisVim.h \
-		src/VisVim/VisVim.odl \
-		src/VisVim/VisVim.rc \
-		src/VisVim/VsReadMe.txt \
-
-# source files for DOS without CR/LF translation (also in the extra archive)
-SRC_DOS_BIN =	\
-		src/VisVim/Res/*.bmp \
-		src/tearoff.bmp \
-		src/tools.bmp \
-		src/tools16.bmp \
-		src/vim*.ico \
-		src/vim.tlb \
-		src/vimtbar.lib \
-		src/vimtbar.dll \
-		nsis/icons/*.bmp \
-		nsis/icons/*.ico \
-
-# source files for Amiga, DOS, etc. (also in the extra archive)
-SRC_AMI_DOS =	\
-
-# source files for Amiga (also in the extra archive)
-SRC_AMI =	\
-		README_amisrc.txt \
-		README_amisrc.txt.info \
-		src.info \
-		src/INSTALLami.txt \
-		src/Make_dice.mak \
-		src/Make_manx.mak \
-		src/Make_morph.mak \
-		src/Make_sas.mak \
-		src/os_amiga.c \
-		src/os_amiga.h \
-		src/proto/os_amiga.pro \
-		src/testdir/Make_amiga.mak \
-		src/testdir/amiga.vim \
-		src/xxd/Make_amiga.mak \
-
-# source files for the Mac (also in the extra archive)
-SRC_MAC =	\
-		src/INSTALLmac.txt \
-		src/dehqx.py \
-		src/gui_mac.c \
-		src/os_mac_rsrc/*.icns \
-		src/os_mac.h \
-		src/os_mac.rsr.hqx \
-		src/os_mac_conv.c \
-		src/os_macosx.c \
-		src/proto/gui_mac.pro \
-		src/proto/os_mac_conv.pro \
-
-# source files for VMS (in the extra archive)
-SRC_VMS =	\
-		src/INSTALLvms.txt \
-		src/Make_vms.mms \
-		src/gui_gtk_vms.h \
-		src/os_vms.c \
-		src/os_vms_conf.h \
-		src/os_vms_mms.c \
-		src/proto/os_vms.pro \
-		src/testdir/Make_vms.mms \
-		src/testdir/vms.vim \
-		src/xxd/Make_vms.mms \
-		vimtutor.com \
-
-# source files for OS/2 (in the extra archive)
-SRC_OS2 =	\
-		src/Make_os2.mak \
-		src/os_os2_cfg.h \
-		src/testdir/Make_os2.mak \
-		src/testdir/todos.vim \
-		src/testdir/os2.vim \
-		src/xxd/Make_os2.mak \
-
-# source files for QNX (in the extra archive)
-SRC_QNX =	\
-		src/os_qnx.c \
-		src/os_qnx.h \
-		src/gui_photon.c \
-		src/proto/gui_photon.pro \
-		src/proto/os_qnx.pro \
-
-
-# source files for the extra archive (all sources that are not for Unix)
-SRC_EXTRA =	\
-		$(SRC_AMI) \
-		$(SRC_AMI_DOS) \
-		$(SRC_DOS) \
-		$(SRC_DOS_BIN) \
-		$(SRC_MAC) \
-		$(SRC_OS2) \
-		$(SRC_QNX) \
-		$(SRC_VMS) \
-		README_os390.txt \
-		src/Make_mint.mak \
-		src/Make_ro.mak \
-		src/gui_riscos.c \
-		src/gui_riscos.h \
-		src/if_sniff.c \
-		src/infplist.xml \
-		src/link.390 \
-		src/os_beos.c \
-		src/os_beos.h \
-		src/os_beos.rsrc \
-		src/os_mint.h \
-		src/os_riscos.c \
-		src/os_riscos.h \
-		src/proto/gui_riscos.pro \
-		src/proto/os_riscos.pro \
-		src/os_vms_fix.com \
-		src/toolbar.phi \
-
-# runtime files for all distributions
-RT_ALL =	\
-		README.txt \
-		runtime/bugreport.vim \
-		runtime/doc/*.awk \
-		runtime/doc/*.pl \
-		runtime/doc/*.txt \
-		runtime/doc/Makefile \
-		runtime/doc/doctags.c \
-		runtime/doc/vim.1 \
-		runtime/doc/evim.1 \
-		runtime/doc/vimdiff.1 \
-		runtime/doc/vimtutor.1 \
-		runtime/doc/xxd.1 \
-		runtime/ftoff.vim \
-		runtime/gvimrc_example.vim \
-		runtime/macros/README.txt \
-		runtime/macros/dvorak \
-		runtime/macros/editexisting.vim \
-		runtime/macros/hanoi/click.me \
-		runtime/macros/hanoi/hanoi.vim \
-		runtime/macros/hanoi/poster \
-		runtime/macros/justify.vim \
-		runtime/macros/less.sh \
-		runtime/macros/less.vim \
-		runtime/macros/life/click.me \
-		runtime/macros/life/life.vim \
-		runtime/macros/matchit.vim \
-		runtime/macros/matchit.txt \
-		runtime/macros/maze/README.txt \
-		runtime/macros/maze/[mM]akefile \
-		runtime/macros/maze/main.aap \
-		runtime/macros/maze/maze.c \
-		runtime/macros/maze/maze_5.78 \
-		runtime/macros/maze/maze_mac \
-		runtime/macros/maze/mazeansi.c \
-		runtime/macros/maze/mazeclean.c \
-		runtime/macros/maze/poster \
-		runtime/macros/shellmenu.vim \
-		runtime/macros/swapmous.vim \
-		runtime/macros/urm/README.txt \
-		runtime/macros/urm/examples \
-		runtime/macros/urm/urm \
-		runtime/macros/urm/urm.vim \
-		runtime/mswin.vim \
-		runtime/evim.vim \
-		runtime/optwin.vim \
-		runtime/ftplugin.vim \
-		runtime/ftplugof.vim \
-		runtime/indent.vim \
-		runtime/indoff.vim \
-		runtime/termcap \
-		runtime/tools/README.txt \
-		runtime/tools/[a-z]*[a-z0-9] \
-		runtime/tutor/README.txt \
-		runtime/tutor/tutor \
-		runtime/tutor/tutor.vim \
-		runtime/vimrc_example.vim \
-
-# runtime files for all distributions without CR-NL translation
-RT_ALL_BIN =	\
-		runtime/doc/tags \
-		runtime/print/*.ps \
-
-# runtime script files
-RT_SCRIPTS =	\
-		runtime/filetype.vim \
-		runtime/scripts.vim \
-		runtime/menu.vim \
-		runtime/macmap.vim \
-		runtime/delmenu.vim \
-		runtime/synmenu.vim \
-		runtime/makemenu.vim \
-		runtime/autoload/*.vim \
-		runtime/autoload/README.txt \
-		runtime/autoload/xml/*.vim \
-		runtime/colors/*.vim \
-		runtime/colors/README.txt \
-		runtime/compiler/*.vim \
-		runtime/compiler/README.txt \
-		runtime/indent/*.vim \
-		runtime/indent/README.txt \
-		runtime/ftplugin/*.vim \
-		runtime/ftplugin/README.txt \
-		runtime/plugin/*.vim \
-		runtime/plugin/README.txt \
-		runtime/syntax/*.vim \
-		runtime/syntax/README.txt \
-
-# Unix runtime
-RT_UNIX =	\
-		README_unix.txt \
-		runtime/hi16-action-make.png \
-		runtime/hi22-action-make.png \
-		runtime/vim16x16.png \
-		runtime/vim16x16.xpm \
-		runtime/vim32x32.png \
-		runtime/vim32x32.xpm \
-		runtime/vim48x48.png \
-		runtime/vim48x48.xpm \
-
-# Unix and DOS runtime without CR-LF translation
-RT_UNIX_DOS_BIN =	\
-		runtime/vim16x16.gif \
-		runtime/vim32x32.gif \
-		runtime/vim48x48.gif \
-
-# runtime not for unix or extra
-RT_NO_UNIX =	\
-
-# runtime for Amiga (also in the extra archive)
-RT_AMI_DOS =	\
-		runtime/doc/vim.man \
-		runtime/doc/vimdiff.man \
-		runtime/doc/vimtutor.man \
-		runtime/doc/xxd.man \
-
-# DOS runtime (also in the extra archive)
-RT_DOS =	\
-		README_dos.txt \
-		runtime/rgb.txt \
-		vimtutor.bat \
-
-# DOS runtime without CR-LF translation (also in the extra archive)
-RT_DOS_BIN =	\
-		runtime/vimlogo.cdr \
-		runtime/vimlogo.eps \
-		runtime/vimlogo.gif \
-		runtime/vimlogo.pdf \
-
-# Amiga runtime (also in the extra archive)
-RT_AMI =	\
-		README.txt.info \
-		README_ami.txt \
-		README_ami.txt.info \
-		libs/arp.library \
-		runtime/doc.info \
-		runtime/doc/*.info \
-		runtime/icons/README.txt \
-		runtime/icons/*.info \
-		runtime/icons.info \
-		runtime/macros.info \
-		runtime/macros/*.info \
-		runtime/macros/hanoi/*.info \
-		runtime/macros/life/*.info \
-		runtime/macros/maze/*.info \
-		runtime/macros/urm/*.info \
-		runtime/tools.info \
-		runtime/tutor.info \
-		runtime/tutor/*.info \
-
-# runtime files in extra archive
-RT_EXTRA =	\
-		$(RT_AMI) \
-		$(RT_AMI_DOS) \
-		$(RT_DOS) \
-		$(RT_DOS_BIN) \
-		README_mac.txt \
-
-# included in all Amiga archives
-ROOT_AMI =	\
-		Contents \
-		Contents.info \
-		runtime.info \
-		vimdir.info \
-
-# root files for the extra archive
-ROOT_EXTRA =	\
-		$(ROOT_AMI) \
-
-# files for Amiga small binary (also in extra archive)
-BIN_AMI =	\
-		README_amibin.txt \
-		README_amibin.txt.info \
-		Vim.info \
-		Xxd.info \
-
-# files for DOS binary (also in extra archive)
-BIN_DOS =	\
-		README_bindos.txt \
-		uninstal.txt \
-
-# files for Win32 OLE binary (also in extra archive)
-BIN_OLE =	\
-		README_ole.txt \
-
-# files for Win32s binary (also in extra archive)
-BIN_W32S =	\
-		README_w32s.txt \
-
-# files for VMS binary (also in extra archive)
-BIN_VMS =	\
-		README_vms.txt \
-
-# files for OS/2 binary (also in extra archive)
-BIN_OS2 =	\
-		README_os2.txt \
-
-# binary files for extra archive
-BIN_EXTRA =	\
-		$(BIN_AMI) \
-		$(BIN_DOS) \
-		$(BIN_OLE) \
-		$(BIN_W32S) \
-		$(BIN_VMS) \
-		$(BIN_OS2) \
-
-# all files for extra archive
-EXTRA =		\
-		$(BIN_EXTRA) \
-		$(ROOT_EXTRA) \
-		$(RT_EXTRA) \
-		$(SRC_EXTRA) \
-		README_extra.txt \
-		src/VisVim/VisVim.dll \
-		farsi/README.txt \
-		farsi/fonts/*/far-* \
-		runtime/vimlogo.xpm \
-		src/swis.s \
-		src/tee/Makefile* \
-		src/tee/tee.c \
-		csdpmi4b.zip \
-
-# generic language files
-LANG_GEN = \
-		README_lang.txt \
-		runtime/doc/*-fr.1 \
-		runtime/doc/*-fr.UTF-8.1 \
-		runtime/doc/*-it.1 \
-		runtime/doc/*-it.UTF-8.1 \
-		runtime/doc/*-pl.1 \
-		runtime/doc/*-pl.UTF-8.1 \
-		runtime/doc/*-ru.1 \
-		runtime/doc/*-ru.UTF-8.1 \
-		runtime/lang/README.txt \
-		runtime/lang/menu_*.vim \
-		runtime/keymap/README.txt \
-		runtime/keymap/*.vim \
-		runtime/tutor/README.*.txt \
-		runtime/tutor/Makefile \
-		runtime/tutor/tutor.utf-8 \
-		runtime/tutor/tutor.?? \
-		runtime/tutor/tutor.??.* \
-		runtime/spell/README.txt \
-		runtime/spell/??/*.diff \
-		runtime/spell/??/main.aap \
-		runtime/spell/yi/README.txt \
-		runtime/spell/main.aap \
-		runtime/spell/cleanadd.vim \
-		runtime/spell/*.vim \
-		runtime/spell/fixdup \
-
-# generic language files, binary
-LANG_GEN_BIN = \
-		runtime/spell/README_en.txt \
-		runtime/spell/en.ascii.spl \
-		runtime/spell/en.latin1.spl \
-		runtime/spell/en.utf-8.spl \
-		runtime/spell/en.ascii.sug \
-		runtime/spell/en.latin1.sug \
-		runtime/spell/en.utf-8.sug \
-
-# all files for lang archive
-LANG_SRC = \
-		src/po/README.txt \
-		src/po/README_mingw.txt \
-		src/po/README_mvc.txt \
-		src/po/check.vim \
-		src/po/cleanup.vim \
-		src/po/Makefile \
-		src/po/Make_cyg.mak \
-		src/po/Make_ming.mak \
-		src/po/Make_mvc.mak \
-		src/po/sjiscorr.c \
-		src/po/*.po \
-
-# the language files for the Win32 lang archive
-LANG_DOS = \
-		src/po/*.mo \
-
-# vim: set ft=make:
diff --git a/runtime/tutor/README_ami.txt b/runtime/tutor/README_ami.txt
deleted file mode 100644
index 13fa67d..0000000
--- a/runtime/tutor/README_ami.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-README_ami.txt for version 7.2a of Vim: Vi IMproved.
-
-This file explains the installation of Vim on Amiga systems.
-See README.txt for general information about Vim.
-
-
-Unpack the distributed files in the place where you want to keep them.  It is
-wise to have a "vim" directory to keep your vimrc file and any other files you
-change.  The distributed files go into a subdirectory.  This way you can
-easily upgrade to a new version.  For example:
-
-  dh0:editors/vim		contains your vimrc and modified files
-  dh0:editors/vim/vim54		contains the Vim version 5.4 distributed files
-  dh0:editors/vim/vim55		contains the Vim version 5.5 distributed files
-
-You would then unpack the archives like this:
-
-  cd dh0:editors
-  tar xf t:vim60bin.tar
-  tar xf t:vim60rt.tar
-
-Set the $VIM environment variable to point to the top directory of your Vim
-files.  For the above example:
-
-  set VIM=dh0:editors/vim
-
-Vim version 5.4 will look for your vimrc file in $VIM, and for the runtime
-files in $VIM/vim54.  See ":help $VIM" for more information.
-
-Make sure the Vim executable is in your search path.  Either copy the Vim
-executable to a directory that is in your search path, or (preferred) modify
-the search path to include the directory where the Vim executable is.
diff --git a/runtime/tutor/README_ami.txt.info b/runtime/tutor/README_ami.txt.info
deleted file mode 100755
index 912436d..0000000
--- a/runtime/tutor/README_ami.txt.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/README_amibin.txt b/runtime/tutor/README_amibin.txt
deleted file mode 100644
index 24b9ef2..0000000
--- a/runtime/tutor/README_amibin.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-README_amibin.txt for version 7.2a of Vim: Vi IMproved.
-
-See "README.txt" for general information about Vim.
-See "README_ami.txt" for installation instructions for the Amiga.
-These files are in the runtime archive (vim60rt.tgz).
-
-
-The Amiga "bin" archive contains the Vim executable for the Amiga.  It was
-compiled with "big" features.
-
-Postscript printing is not included to avoid requiring floating point
-computations.
diff --git a/runtime/tutor/README_amibin.txt.info b/runtime/tutor/README_amibin.txt.info
deleted file mode 100755
index bdc3f02..0000000
--- a/runtime/tutor/README_amibin.txt.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/README_amisrc.txt b/runtime/tutor/README_amisrc.txt
deleted file mode 100644
index 8732efb..0000000
--- a/runtime/tutor/README_amisrc.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-README_amisrc.txt for version 7.2a of Vim: Vi IMproved.
-
-See "README.txt" for general information about Vim.
-See "README_ami.txt" for installation instructions for the Amiga.
-These files are in the runtime archive (vim60rt.tgz).
-
-
-The Amiga source archive contains the files needed to compile Vim on the
-Amiga.
-
-See "src/INSTALLami.txt" for instructions on how to compile Vim on the Amiga.
diff --git a/runtime/tutor/README_amisrc.txt.info b/runtime/tutor/README_amisrc.txt.info
deleted file mode 100755
index 476af9a..0000000
--- a/runtime/tutor/README_amisrc.txt.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/README_bindos.txt b/runtime/tutor/README_bindos.txt
deleted file mode 100644
index 593a925..0000000
--- a/runtime/tutor/README_bindos.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-README_bindos.txt for version 7.2a of Vim: Vi IMproved.
-
-See "README.txt" for general information about Vim.
-See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
-These files are in the runtime archive (vim70rt.zip).
-
-
-There are several binary distributions of Vim for the PC.  You would normally
-pick only one of them, but it's also possible to install several.
-These ones are available (the version number may differ):
-	vim70d16.zip	16 bit DOS version
-	vim70d32.zip	32 bit DOS version
-	vim70w32.zip	Windows 95/98/NT/etc. console version
-	gvim70.zip	Windows 95/98/NT/etc. GUI version
-	gvim70ole.zip	Windows 95/98/NT/etc. GUI version with OLE
-	gvim70_s.zip	Windows 3.1 GUI version
-
-You MUST also get the runtime archive (vim70rt.zip).
-The sources are also available (vim70src.zip).
diff --git a/runtime/tutor/README_dos.txt b/runtime/tutor/README_dos.txt
deleted file mode 100644
index f4818b8..0000000
--- a/runtime/tutor/README_dos.txt
+++ /dev/null
@@ -1,154 +0,0 @@
-README_dos.txt for version 7.2a of Vim: Vi IMproved.
-
-This file explains the installation of Vim on MS-DOS and MS-Windows systems.
-See "README.txt" for general information about Vim.
-
-There are two ways to install Vim:
-A. Use the self-installing .exe file.
-B. Unpack .zip files and run the install.exe program.
-
-
-A. Using the self-installing .exe
----------------------------------
-
-This is mostly self-explaining.  Just follow the prompts and make the
-selections.  A few things to watch out for:
-
-- When an existing installation is detected, you are offered to first remove
-  this.  The uninstall program is then started while the install program waits
-  for it to complete.  Sometimes the windows overlap each other, which can be
-  confusing.  Be sure the complete the uninstalling before continuing the
-  installation.  Watch the taskbar for uninstall windows.
-
-- When selecting a directory to install Vim, use the same place where other
-  versions are located.  This makes it easier to find your _vimrc file.  For
-  example "C:\Program Files\vim" or "D:\vim".  A name ending in "vim" is
-  preferred.
-
-- After selecting the directory where to install Vim, clicking on "Next" will
-  start the installation.
-
-
-B. Using .zip files
--------------------
-
-These are the normal steps to install Vim from the .zip archives:
-
-1. Go to the directory where you want to put the Vim files.  Examples:
-	cd C:\
-	cd D:\editors
-   If you already have a "vim" directory, go to the directory in which it is
-   located.  Check the $VIM setting to see where it points to:
-	set VIM
-   For example, if you have
-	C:\vim\vim54
-   do
-	cd C:\
-   Binary and runtime Vim archives are normally unpacked in the same location,
-   on top of each other.
-
-2. Unpack the zip archives.  This will create a new directory "vim\vim70",
-   in which all the distributed Vim files are placed.  Since the directory
-   name includes the version number, it is unlikely that you overwrite
-   existing files.
-   Examples:
-	pkunzip -d gvim70.zip
-	unzip vim70w32.zip
-
-   You need to unpack the runtime archive and at least one of the binary
-   archives.  When using more than one binary version, be careful not to
-   overwrite one version with the other, the names of the executables
-   "vim.exe" and "gvim.exe" are the same.
-
-   After you unpacked the files, you can still move the whole directory tree
-   to another location.  That is where they will stay, the install program
-   won't move or copy the runtime files.
-
-   Only for the 32 bit DOS version on MS-DOS without DPMI support (trying to
-   run install.exe will produce an error message): Unpack the CSDPMI4B.ZIP
-   archive and follow the instructions in the documentation.
-
-3. Change to the new directory:
-	cd vim\vim70
-   Run the "install.exe" program.  It will ask you a number of questions about
-   how you would like to have your Vim setup.  Among these are:
-   - You can tell it to write a "_vimrc" file with your preferences in the
-     parent directory.
-   - It can also install an "Edit with Vim" entry in the Windows Explorer
-     popup menu.
-   - You can have it create batch files, so that you can run Vim from the
-     console or in a shell.  You can select one of the directories in your
-     $PATH.  If you skip this, you can add Vim to the search path manually:
-     The simplest is to add a line to your autoexec.bat.  Examples:
-	set path=%path%;C:\vim\vim70
-	set path=%path%;D:\editors\vim\vim70
-   - Create entries for Vim on the desktop and in the Start menu.
-
-That's it!
-
-
-Remarks:
-
-- If Vim can't find the runtime files, ":help" won't work and the GUI version
-  won't show a menubar.  Then you need to set the $VIM environment variable to
-  point to the top directory of your Vim files.  Example:
-    set VIM=C:\editors\vim
-  Vim version 6.0 will look for your vimrc file in $VIM, and for the runtime
-  files in $VIM/vim70.  See ":help $VIM" for more information.
-
-- To avoid confusion between distributed files of different versions and your
-  own modified vim scripts, it is recommended to use this directory layout:
-  ("C:\vim" is used here as the root, replace it with the path you use)
-  Your own files:
-	C:\vim\_vimrc			Your personal vimrc.
-	C:\vim\_viminfo			Dynamic info for 'viminfo'.
-	C:\vim\vimfiles\ftplugin\*.vim	Filetype plugins
-	C:\vim\...			Other files you made.
-  Distributed files:
-	C:\vim\vim70\vim.exe		The Vim version 6.0 executable.
-	C:\vim\vim70\doc\*.txt		The version 6.0 documentation files.
-	C:\vim\vim70\bugreport.vim	A Vim version 6.0 script.
-	C:\vim\vim70\...		Other version 6.0 distributed files.
-  In this case the $VIM environment variable would be set like this:
-	set VIM=C:\vim
-  Then $VIMRUNTIME will automatically be set to "$VIM\vim70".  Don't add
-  "vim70" to $VIM, that won't work.
-
-- You can put your Vim executable anywhere else.  If the executable is not
-  with the other Vim files, you should set $VIM. The simplest is to add a line
-  to your autoexec.bat.  Examples:
-	set VIM=c:\vim
-	set VIM=d:\editors\vim
-
-- If you have told the "install.exe" program to add the "Edit with Vim" menu
-  entry, you can remove it by running the "uninstal.exe".  See
-  ":help win32-popup-menu".
-
-- In Windows 95/98/NT you can create a shortcut to Vim.  This works for all
-  DOS and Win32 console versions.  For the console version this gives you the
-  opportunity to set defaults for the Console where Vim runs in.
-
-  1. On the desktop, click right to get a menu.  Select New/Shortcut.
-  2. In the dialog, enter Command line: "C:\command.com".  Click "Next".
-  3. Enter any name.  Click "Finish".
-     The new shortcut will appear on the desktop.
-  4. With the mouse pointer on the new shortcut, click right to get a menu.
-     Select Properties.
-  5. In the Program tab, change the "Cmdline" to add "/c" and the name of the
-     Vim executable.  Examples:
-	C:\command.com /c C:\vim\vim70\vim.exe
-	C:\command.com /c D:\editors\vim\vim70\vim.exe
-  6. Select the font, window size, etc. that you like.  If this isn't
-     possible, select "Advanced" in the Program tab, and deselect "MS-DOS
-     mode".
-  7. Click OK.
-
-  For gvim, you can use a normal shortcut on the desktop, and set the size of
-  the Window in your $VIM/_gvimrc:
-	set lines=30 columns=90
-
-
-For further information, type one of these inside Vim:
-	:help dos
-	:help msdos
-	:help win32
diff --git a/runtime/tutor/README_extra.txt b/runtime/tutor/README_extra.txt
deleted file mode 100644
index 660b502..0000000
--- a/runtime/tutor/README_extra.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-README_extra.txt for version 7.2a of Vim: Vi IMproved.
-
-The extra archive of Vim is to be used in combination with the source archive
-(vim-7.0-src.tar.gz).  The extra archive is useless without it.
-
-For more information, see the "README.txt" file that comes with the runtime
-archive (vim-7.0-rt.tar.gz).  To be able to run Vim you MUST get the runtime
-archive too!
-
-The extra archive plus the source and runtime achives make up the complete
-sources of Vim for all systems.
-
-
-Some of the things that the extra archive contains:
-
-Farsi		Files for the Farsi (persian) language.  If you don't know
-		what Farsi is, this is not for you.
-
-if_sniff	Interface to SNiFF.  If you don't know what SNiFF is, this is
-		not for you.
-
-os_amiga	Files for the Amiga port.
-
-gui_riscos
-os_riscos	Files for the RISC OS port.
-
-gui_beos
-os_beos		Files for the BeOS port.
-
-os_msdos
-os_dos		Files for the MS-DOS port.
-
-gui_mac
-os_mac		Files for the Mac port.
-
-os_mint		Files for the Atari Mint port.
-
-os_os2		Files for the OS/2 port.
-tee		Extra program for OS/2.
-
-os_vms		Files for the VMS port.
-
-os_w32
-os_win32	Files for the Win32 port.
-
-gui_w32		Files for the Win32 GUI.
-gui_w48		Files for the Win32 and Win16 GUI.
-Make_mvc.mak	MS Visual C++ makefile for the Win32 GUI.
-rgb.txt		File with color definitions for the Win32 GUI.
-
-if_ole		OLE automation interface, for MS Windows 95 and NT.
-
-VisVim		Integration of Win32 GUI with MS Visual Developer Studio.
-
-GvimExt		DLL for the "Edit with Vim" context menu entry
-
-nsis		NSIS script to build the self-installing MS-Windows exe
-
-*.man		Preprocessed manual pages.
-
-file_select.vim	Vim script to browse directories (Unix only).
diff --git a/runtime/tutor/README_lang.txt b/runtime/tutor/README_lang.txt
deleted file mode 100644
index 9df9f76..0000000
--- a/runtime/tutor/README_lang.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-README_lang.txt for version 7.2a of Vim: Vi IMproved.
-
-This file contains files for non-English languages:
-- Translated messages.
-- Translated menus.
diff --git a/runtime/tutor/README_mac.txt b/runtime/tutor/README_mac.txt
deleted file mode 100644
index 796ad01..0000000
--- a/runtime/tutor/README_mac.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-README_mac.txt for version 7.2a of Vim: Vi IMproved.
-
-This file explains the installation of Vim on Macintosh systems.
-See "README.txt" for general information about Vim.
-
-
-Sorry, this text still needs to be written!
-
diff --git a/runtime/tutor/README_ole.txt b/runtime/tutor/README_ole.txt
deleted file mode 100644
index 8112136..0000000
--- a/runtime/tutor/README_ole.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-README_ole.txt for version 7.2a of Vim: Vi IMproved.
-
-This archive contains gvim.exe with OLE interface and VisVim.
-This version of gvim.exe can also load a number of interface dynamically (you
-can optionally install the .dll files for each interface).
-It is only for MS-Windows 95/98/ME/NT/2000/XP.
-
-Also see the README_bindos.txt, README_dos.txt and README.txt files.
-
-Be careful not to overwrite the OLE gvim.exe with the non-OLE gvim.exe when
-unpacking another binary archive!  Check the output of ":version":
-	Win32s - "MS-Windows 16/32 bit GUI version"
-	 Win32 - "MS-Windows 32 bit GUI version"
-Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
-
-For further information, type this inside Vim:
-	:help if_ole
-
-Futhermore, this archive contains VISVIM.DLL.  It can be used to integrate
-the OLE gvim with Microsoft Visual Developer Studio.  See VisVim/README.txt.
diff --git a/runtime/tutor/README_os2.txt b/runtime/tutor/README_os2.txt
deleted file mode 100644
index a9e0a42..0000000
--- a/runtime/tutor/README_os2.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-README_os2.txt for version 7.2a of Vim: Vi IMproved.
-
-This file explains the installation of Vim on OS/2 systems.
-See "README.txt" for general information about Vim.
-
-
-NOTE: You will need two archives:
-  vim71rt.zip	contains the runtime files (same as for the PC version)
-  vim71os2.zip	contains the OS/2 executables
-
-1. Go to the directory where you want to put the Vim files.  Examples:
-	cd C:\
-	cd D:\editors
-
-2. Unpack the zip archives.  This will create a new directory "vim/vim71",
-   in which all the distributed Vim files are placed.  Since the directory
-   name includes the version number, it is unlikely that you overwrite
-   existing files.
-   Examples:
-	pkunzip -d vim71os2.zip
-	unzip vim71os2.zip
-
-   After you unpacked the files, you can still move the whole directory tree
-   to another location.
-
-3. Add the directory where vim.exe is to your path.  The simplest is to add a
-   line to your autoexec.bat.  Examples:
-	set path=%path%;C:\vim\vim71
-	set path=%path%;D:\editors\vim\vim71
-
-That's it!
-
-
-Extra remarks:
-
-- To avoid confusion between distributed files of different versions and your
-  own modified vim scripts, it is recommended to use this directory layout:
-  ("C:\vim" is used here as the root, replace with the path you use)
-  Your own files:
-	C:\vim\_vimrc			Your personal vimrc.
-	C:\vim\_viminfo			Dynamic info for 'viminfo'.
-	C:\vim\...			Other files you made.
-  Distributed files:
-	C:\vim\vim71\vim.exe		The Vim version 7.1 executable.
-	C:\vim\vim71\doc\*.txt		The version 7.1 documentation files.
-	C:\vim\vim71\bugreport.vim	A Vim version 7.1 script.
-	C:\vim\vim71\...		Other version 7.1 distributed files.
-  In this case the $VIM environment variable would be set like this:
-	set VIM=C:\vim
-
-- You can put your Vim executable anywhere else.  If the executable is not
-  with the other distributed Vim files, you should set $VIM.  The simplest is
-  to add a line to your autoexec.bat.  Examples:
-	set VIM=c:\vim
-	set VIM=d:\editors\vim
-
-For further information, type this inside Vim:
-	:help os2
diff --git a/runtime/tutor/README_os390.txt b/runtime/tutor/README_os390.txt
deleted file mode 100644
index 0ce9dd8..0000000
--- a/runtime/tutor/README_os390.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-README_os_390.txt for version 7.2a of Vim: Vi IMproved.
-
-Welcome to the OS/390 Unix port of VIM.
-
-ATTENTION: THIS IS AN _ALPHA_ VERSION!!!
-I expect you to know how to handle alpha software!
-
-This port was done by Ralf Schandl <schandl@de.ibm.com>.
-This port is not maintained or supported by IBM!!
-
-
-For the list of changes see runtime/doc/os_390.txt.
-
-
-Compiling:
-----------
-
-Note: After the file configure was created via autoconf, it had been
-      handedited, to make the test for ICEConnectionNumber work.
-      DO NOT run autoconf again!
-
-Without X11:
-
-If you build VIM without X11 support, compiling and building is nearly
-straightforward. The only restriction is, that you can't call make from the
-VIM toplevel directory. Change to the src directory first and call make from
-there. Here is a what to do:
-
-    # Don't use c89!
-    # Make additional symbols visible.
-    # Allow intermixing of compiler options and files.
-
-    $ export CC=cc
-    $ export CFLAGS=-D_ALL_SOURCE
-    $ export _CC_CCMODE=1
-    $./configure --enable-max-features --without-x --enable-gui=no
-    $ cd src
-    $ make
-    $ make test
-
-      Note: Test 28 will be reported as failed. This is because diff can't
-	    compare files containing '\0' characters. Test 11 will fail if you
-	    don't have gzip.
-
-    $ make install
-
-
-With X11:
-
-There are two ways for building VIM with X11 support. The first way is simple
-and results in a big executable (~13 Mb), the second needs a few additional
-steps and results in a much smaller executable (~4.5 Mb). This examples assume
-you want Motif.
-
-  The easy way:
-    $ export CC=cc
-    $ export CFLAGS="-D_ALL_SOURCE -W c,dll"
-    $ export LDFLAGS="-W l,dll"
-    $ export _CC_CCMODE=1
-    $ ./configure --enable-max-features --enable-gui=motif
-    $ cd src
-    $ make
-
-    With this VIM is linked statically with the X11 libraries.
-
-  The smarter way:
-    Make VIM as described above. Then create a file named 'link.sed' with the
-    following contense:
-
-	s/-lXext  *//g
-	s/-lXmu  *//g
-	s/-lXm	*/\/usr\/lib\/Xm.x /g
-	s/-lX11  */\/usr\/lib\/X11.x /g
-	s/-lXt	*//g
-	s/-lSM	*/\/usr\/lib\/SM.x /g
-	s/-lICE  */\/usr\/lib\/ICE.x /g
-
-    Then do:
-    $ rm vim
-    $ make
-
-    Now Vim is linked with the X11-DLLs.
-
-    See the Makefile and the file link.sh on how link.sed is used.
-
-
-Hint:
------
-Use the online help! (See weaknesses below.)
-
-Example:
-Enter ':help syntax' and then press <TAB> several times, you will switch
-through all help items containing 'syntax'. Press <ENTER> on the one you are
-interested at. Or press <Ctrl-D> and you will get a list of all items printed
-that contain 'syntax'.
-
-The helpfiles contains cross-references. Links are between '|'. Position the
-cursor on them and press <Ctrl-]> to follow this link. Use <Ctrl-T> to jump
-back.
-
-Known weaknesses:
------------------
-
-- You can't call make from the toplevel directory, you have to do a 'cd src'
-  first.  If you do it, make will call configure again. I don't know why and
-  didn't investigate it, there were more important things to do. If you can
-  make it work drop me a note.
-
-- The documentation was not updated for this alpha release. It contains lot of
-  ASCII dependencies, especially in examples.
-
-- Digraphs are dependent on code page 1047. Digraphs are used to enter
-  characters that normally cannot be entered by an ordinary keyboard.
-  See ":help digraphs".
-
-- Using 'ga' to show the code of the character under the cursor shows the
-  correct dec/hex/oct values, but the other informations might be missing or
-  wrong.
-
-- The sed syntax file doesn't work, it is ASCII dependent.
-
-Bugs:
------
-If you find a bug please inform me (schandl@de.ibm.com), don't disturb Bram
-Moolenaar. It's most likely a bug I introduced during porting or some ASCII
-dependency I didn't notice.
-
-Feedback:
----------
-Feedback welcome! Just drop me a note.
diff --git a/runtime/tutor/README_src.txt b/runtime/tutor/README_src.txt
deleted file mode 100644
index 7079f3e..0000000
--- a/runtime/tutor/README_src.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-README_src.txt for version 7.2a of Vim: Vi IMproved.
-
-The source archive contains the files needed to compile Vim on Unix systems.
-It is packed for Unix systems (NL line separator).  It is also used for other
-systems in combination with the extra archive (vim-7.0-extra.tar.gz, in the
-"extra" directory of ftp.vim.org).
-
-For more information, see the README.txt file that comes with the runtime
-archive (vim-7.0-rt.tar.gz).  To be able to run Vim you MUST get the runtime
-archive too!
diff --git a/runtime/tutor/README_srcdos.txt b/runtime/tutor/README_srcdos.txt
deleted file mode 100644
index ef78029..0000000
--- a/runtime/tutor/README_srcdos.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-README_srcdos.txt for version 7.2a of Vim: Vi IMproved.
-
-See "README.txt" for general information about Vim.
-See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
-These files are in the runtime archive (vim70rt.zip).
-
-
-The DOS source archive contains the files needed to compile Vim on MS-DOS or
-MS-Windows.  It is packed for DOS systems, with CR-LF.  It also includes the
-VisVim sources.
-
-See "src/INSTALLpc.txt" for instructions on how to compile Vim on the PC.
diff --git a/runtime/tutor/README_unix.txt b/runtime/tutor/README_unix.txt
deleted file mode 100644
index 5338cb1..0000000
--- a/runtime/tutor/README_unix.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-README_unix.txt for version 7.2a of Vim: Vi IMproved.
-
-This file explains the installation of Vim on Unix systems.
-See "README.txt" for general information about Vim.
-
-
-When you use the source distribution, "make install" is used to install Vim.
-See the "INSTALL" file in the "src" directory.
-
-If you use a compiled package, follow the instructions for the package.
diff --git a/runtime/tutor/README_vms.txt b/runtime/tutor/README_vms.txt
deleted file mode 100644
index d51339e..0000000
--- a/runtime/tutor/README_vms.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-README_vms.txt for version 7.2a of Vim: Vi IMproved.
-
-This file explains the installation of Vim on VMS systems.
-See "README.txt" in the runtime archive for information about Vim.
-
-
-Most information can be found in the on-line documentation.  Use ":help vms"
-inside Vim.  Or get the runtime files and read runtime/doc/os_vms.txt to find
-out how to install and configure Vim with runtime files etc.
-
-To compile Vim yourself you need three archives:
-  vim-X.X-rt.tar.gz	runtime files
-  vim-X.X-src.tar.gz	source files
-  vim-X.X-extra.tar.gz	extra source files
-
-Compilation is recommended, in order to make sure that the correct
-libraries are used for your specific system.  Read about compiling in
-src/INSTALLvms.txt.
-
-To use the binary version, you need one of these archives:
-
-  vim-XX-exe-ia64-gui.zip       IA64 GUI/Motif executables
-  vim-XX-exe-ia64-gtk.zip       IA64 GUI/GTK executables
-  vim-XX-exe-ia64-term.zip      IA64 console executables
-  vim-XX-exe-axp-gui.zip	Alpha GUI/Motif executables
-  vim-XX-exe-axp-gtk.zip	Alpha GUI/GTK executables
-  vim-XX-exe-axp-term.zip       Alpha console executables
-  vim-XX-exe-vax-gui.zip	VAX GUI executables
-  vim-XX-exe-vax-term.zip       VAX console executables
-
-and of course
-  vim-XX-runtime.zip		runtime files
-
-The binary archives contain: vim.exe, ctags.exe, xxd.exe files,
-but there are also prepared "deploy ready" archives:
-
-vim-XX-ia64.zip			GUI and console executables with runtime and
-				help files for IA64 systems
-vim-XX-axp.zip			GUI and console executables with runtime and
-				help files for Alpha systems
-vim-XX-vax.zip			GUI and console executables with runtime and
-				help files for VAX systems
-
-GTK builds need LIBGTK library installed.
-
-These executables and up to date patches for OpenVMS system are downloadable
-from http://www.polarhome.com/vim/ or ftp://ftp.polarhome.com/pub/vim/
-
diff --git a/runtime/tutor/README_w32s.txt b/runtime/tutor/README_w32s.txt
deleted file mode 100644
index 1b9774d..0000000
--- a/runtime/tutor/README_w32s.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-README_w32s.txt for version 7.2a of Vim: Vi IMproved.
-
-This archive contains the gvim.exe that was specifically compiled for use in
-the Win32s subsystem in MS-Windows 3.1 and 3.11.
-
-Also see the README_bindos.txt, README_dos.txt and README.txt files.
-
-Be careful not to overwrite the Win32s gvim.exe with the another gvim.exe when
-unpacking another binary archive!  Check the output of ":version":
-	Win32s - "MS-Windows 16/32 bit GUI version"
-	 Win32 - "MS-Windows 32 bit GUI version"
-Win32 with OLE - "MS-Windows 32 bit GUI version with OLE support"
-
-For further information, type this inside Vim:
-	:help win32s
diff --git a/runtime/tutor/Vim.info b/runtime/tutor/Vim.info
deleted file mode 100755
index 5c465ff..0000000
--- a/runtime/tutor/Vim.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/Xxd.info b/runtime/tutor/Xxd.info
deleted file mode 100755
index 7ae7643..0000000
--- a/runtime/tutor/Xxd.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/configure b/runtime/tutor/configure
deleted file mode 100755
index 1d0c5b2..0000000
--- a/runtime/tutor/configure
+++ /dev/null
@@ -1,6 +0,0 @@
-#! /bin/sh
-
-# This is just a stub for the Unix configure script, to provide support for
-# doing "./configure" in the top Vim directory.
-
-cd src && exec ./configure "$@"
diff --git a/runtime/tutor/csdpmi4b.zip b/runtime/tutor/csdpmi4b.zip
deleted file mode 100755
index 211396f..0000000
--- a/runtime/tutor/csdpmi4b.zip
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime.info b/runtime/tutor/runtime.info
deleted file mode 100755
index 6ff0468..0000000
--- a/runtime/tutor/runtime.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/bugreport.vim b/runtime/tutor/runtime/bugreport.vim
deleted file mode 100644
index f0c045e..0000000
--- a/runtime/tutor/runtime/bugreport.vim
+++ /dev/null
@@ -1,88 +0,0 @@
-:" Use this script to create the file "bugreport.txt", which contains
-:" information about the environment of a possible bug in Vim.
-:"
-:" Maintainer:	Bram Moolenaar <Bram@vim.org>
-:" Last change:	2005 Jun 12
-:"
-:" To use inside Vim:
-:"	:so $VIMRUNTIME/bugreport.vim
-:" Or, from the command line:
-:"	vim -s $VIMRUNTIME/bugreport.vim
-:"
-:" The "if 1" lines are to avoid error messages when expression evaluation is
-:" not compiled in.
-:"
-:if 1
-:  let more_save = &more
-:endif
-:set nomore
-:if has("unix")
-:  !echo "uname -a" >bugreport.txt
-:  !uname -a >>bugreport.txt
-:endif
-:redir >>bugreport.txt
-:version
-:if 1
-:  func <SID>CheckDir(n)
-:    if isdirectory(a:n)
-:      echo 'directory "' . a:n . '" exists'
-:    else
-:      echo 'directory "' . a:n . '" does NOT exist'
-:    endif
-:  endfun
-:  func <SID>CheckFile(n)
-:    if filereadable(a:n)
-:      echo '"' . a:n . '" is readable'
-:    else
-:      echo '"' . a:n . '" is NOT readable'
-:    endif
-:  endfun
-:  echo "--- Directories and Files ---"
-:  echo '$VIM = "' . $VIM . '"'
-:  call <SID>CheckDir($VIM)
-:  echo '$VIMRUNTIME = "' . $VIMRUNTIME . '"'
-:  call <SID>CheckDir($VIMRUNTIME)
-:  call <SID>CheckFile(&helpfile)
-:  call <SID>CheckFile(fnamemodify(&helpfile, ":h") . "/tags")
-:  call <SID>CheckFile($VIMRUNTIME . "/menu.vim")
-:  call <SID>CheckFile($VIMRUNTIME . "/filetype.vim")
-:  call <SID>CheckFile($VIMRUNTIME . "/syntax/synload.vim")
-:  delfun <SID>CheckDir
-:  delfun <SID>CheckFile
-:  echo "--- Scripts sourced ---"
-:  scriptnames
-:endif
-:set all
-:set termcap
-:if has("autocmd")
-:  au
-:endif
-:if 1
-:  echo "--- Normal/Visual mode mappings ---"
-:endif
-:map
-:if 1
-:  echo "--- Insert/Command-line mode mappings ---"
-:endif
-:map!
-:if 1
-:  echo "--- Abbreviations ---"
-:endif
-:ab
-:if 1
-:  echo "--- Highlighting ---"
-:endif
-:highlight
-:if 1
-:  echo "--- Variables ---"
-:endif
-:if 1
-:  let
-:endif
-:redir END
-:set more&
-:if 1
-:  let &more = more_save
-:  unlet more_save
-:endif
-:e bugreport.txt
diff --git a/runtime/tutor/runtime/delmenu.vim b/runtime/tutor/runtime/delmenu.vim
deleted file mode 100644
index 81df87d..0000000
--- a/runtime/tutor/runtime/delmenu.vim
+++ /dev/null
@@ -1,25 +0,0 @@
-" This Vim script deletes all the menus, so that they can be redefined.
-" Warning: This also deletes all menus defined by the user!
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 May 27
-
-aunmenu *
-
-silent! unlet did_install_default_menus
-silent! unlet did_install_syntax_menu
-if exists("did_menu_trans")
-  menutrans clear
-  unlet did_menu_trans
-endif
-
-silent! unlet find_help_dialog
-
-silent! unlet menutrans_help_dialog
-silent! unlet menutrans_path_dialog
-silent! unlet menutrans_tags_dialog
-silent! unlet menutrans_textwidth_dialog
-silent! unlet menutrans_fileformat_dialog
-silent! unlet menutrans_no_file
-
-" vim: set sw=2 :
diff --git a/runtime/tutor/runtime/doc.info b/runtime/tutor/runtime/doc.info
deleted file mode 100755
index a836031..0000000
--- a/runtime/tutor/runtime/doc.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/evim.vim b/runtime/tutor/runtime/evim.vim
deleted file mode 100644
index 7547290..0000000
--- a/runtime/tutor/runtime/evim.vim
+++ /dev/null
@@ -1,66 +0,0 @@
-" Vim script for Evim key bindings
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 29
-
-" Don't use Vi-compatible mode.
-set nocompatible
-
-" Use the mswin.vim script for most mappings
-source <sfile>:p:h/mswin.vim
-
-" Vim is in Insert mode by default
-set insertmode
-
-" Make a buffer hidden when editing another one
-set hidden
-
-" Make cursor keys ignore wrapping
-inoremap <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
-inoremap <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
-
-" CTRL-F does Find dialog instead of page forward
-noremap <C-F> :promptfind<CR>
-vnoremap <C-F> y:promptfind <C-R>"<CR>
-onoremap <C-F> <C-C>:promptfind<CR>
-inoremap <C-F> <C-O>:promptfind<CR>
-cnoremap <C-F> <C-C>:promptfind<CR>
-
-
-set backspace=2		" allow backspacing over everything in insert mode
-set autoindent		" always set autoindenting on
-if has("vms")
-  set nobackup		" do not keep a backup file, use versions instead
-else
-  set backup		" keep a backup file
-endif
-set history=50		" keep 50 lines of command line history
-set ruler		" show the cursor position all the time
-set incsearch		" do incremental searching
-set mouse=a		" always use the mouse
-
-" Don't use Ex mode, use Q for formatting
-map Q gq
-
-" Switch syntax highlighting on, when the terminal has colors
-" Highlight the last used search pattern on the next search command.
-if &t_Co > 2 || has("gui_running")
-  syntax on
-  set hlsearch
-  nohlsearch
-endif
-
-" Only do this part when compiled with support for autocommands.
-if has("autocmd")
-
-  " Enable file type detection.
-  " Use the default filetype settings, so that mail gets 'tw' set to 72,
-  " 'cindent' is on in C files, etc.
-  " Also load indent files, to automatically do language-dependent indenting.
-  filetype plugin indent on
-
-  " For all text files set 'textwidth' to 78 characters.
-  au FileType text setlocal tw=78
-
-endif " has("autocmd")
-
-" vim: set sw=2 :
diff --git a/runtime/tutor/runtime/filetype.vim b/runtime/tutor/runtime/filetype.vim
deleted file mode 100644
index 89af04c..0000000
--- a/runtime/tutor/runtime/filetype.vim
+++ /dev/null
@@ -1,2412 +0,0 @@
-" Vim support file to detect file types
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Jun 20
-
-" Listen very carefully, I will say this only once
-if exists("did_load_filetypes")
-  finish
-endif
-let did_load_filetypes = 1
-
-" Line continuation is used here, remove 'C' from 'cpoptions'
-let s:cpo_save = &cpo
-set cpo&vim
-
-augroup filetypedetect
-
-" Ignored extensions
-if exists("*fnameescape")
-au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.rpmsave,?\+.rpmnew
-	\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
-au BufNewFile,BufRead *~
-	\ let s:name = expand("<afile>") |
-	\ let s:short = substitute(s:name, '\~$', '', '') |
-	\ if s:name != s:short && s:short != "" |
-	\   exe "doau filetypedetect BufRead " . fnameescape(s:short) |
-	\ endif |
-	\ unlet s:name s:short
-au BufNewFile,BufRead ?\+.in
-	\ if expand("<afile>:t") != "configure.in" |
-	\   exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
-	\ endif
-elseif &verbose > 0
-  echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
-endif
-
-" Pattern used to match file names which should not be inspected.
-" Currently finds compressed files.
-if !exists("g:ft_ignore_pat")
-  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
-endif
-
-" Function used for patterns that end in a star: don't set the filetype if the
-" file name matches ft_ignore_pat.
-func! s:StarSetf(ft)
-  if expand("<amatch>") !~ g:ft_ignore_pat
-    exe 'setf ' . a:ft
-  endif
-endfunc
-
-" Abaqus or Trasys
-au BufNewFile,BufRead *.inp			call s:Check_inp()
-
-func! s:Check_inp()
-  if getline(1) =~ '^\*'
-    setf abaqus
-  else
-    let n = 1
-    if line("$") > 500
-      let nmax = 500
-    else
-      let nmax = line("$")
-    endif
-    while n <= nmax
-      if getline(n) =~? "^header surface data"
-	setf trasys
-	break
-      endif
-      let n = n + 1
-    endwhile
-  endif
-endfunc
-
-" A-A-P recipe
-au BufNewFile,BufRead *.aap			setf aap
-
-" A2ps printing utility
-au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
-
-" ABAB/4
-au BufNewFile,BufRead *.abap			setf abap
-
-" ABC music notation
-au BufNewFile,BufRead *.abc			setf abc
-
-" ABEL
-au BufNewFile,BufRead *.abl			setf abel
-
-" AceDB
-au BufNewFile,BufRead *.wrm			setf acedb
-
-" Ada (83, 9X, 95)
-au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
-if has("vms")
-  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc 	setf ada
-else
-  au BufNewFile,BufRead *.gpr 			setf ada
-endif
-
-" AHDL
-au BufNewFile,BufRead *.tdf			setf ahdl
-
-" AMPL
-au BufNewFile,BufRead *.run			setf ampl
-
-" Ant
-au BufNewFile,BufRead build.xml			setf ant
-
-" Apache style config file
-au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
-
-" Apache config file
-au BufNewFile,BufRead .htaccess			 setf apache
-au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache')
-
-" XA65 MOS6510 cross assembler
-au BufNewFile,BufRead *.a65			setf a65
-
-" Applix ELF
-au BufNewFile,BufRead *.am
-	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
-
-" ALSA configuration
-au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf	setf alsaconf
-
-" Arc Macro Language
-au BufNewFile,BufRead *.aml			setf aml
-
-" Arch Inventory file
-au BufNewFile,BufRead .arch-inventory,=tagging-method	setf arch
-
-" ART*Enterprise (formerly ART-IM)
-au BufNewFile,BufRead *.art			setf art
-
-" ASN.1
-au BufNewFile,BufRead *.asn,*.asn1		setf asn
-
-" Active Server Pages (with Visual Basic Script)
-au BufNewFile,BufRead *.asa
-	\ if exists("g:filetype_asa") |
-	\   exe "setf " . g:filetype_asa |
-	\ else |
-	\   setf aspvbs |
-	\ endif
-
-" Active Server Pages (with Perl or Visual Basic Script)
-au BufNewFile,BufRead *.asp
-	\ if exists("g:filetype_asp") |
-	\   exe "setf " . g:filetype_asp |
-	\ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" |
-	\   setf aspperl |
-	\ else |
-	\   setf aspvbs |
-	\ endif
-
-" Grub (must be before catch *.lst)
-au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf	setf grub
-
-" Assembly (all kinds)
-" *.lst is not pure assembly, it has two extra columns (address, byte codes)
-au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst	call s:FTasm()
-
-" This function checks for the kind of assembly that is wanted by the user, or
-" can be detected from the first five lines of the file.
-func! s:FTasm()
-  " make sure b:asmsyntax exists
-  if !exists("b:asmsyntax")
-    let b:asmsyntax = ""
-  endif
-
-  if b:asmsyntax == ""
-    call s:FTasmsyntax()
-  endif
-
-  " if b:asmsyntax still isn't set, default to asmsyntax or GNU
-  if b:asmsyntax == ""
-    if exists("g:asmsyntax")
-      let b:asmsyntax = g:asmsyntax
-    else
-      let b:asmsyntax = "asm"
-    endif
-  endif
-
-  exe "setf " . b:asmsyntax
-endfunc
-
-func! s:FTasmsyntax()
-  " see if file contains any asmsyntax=foo overrides. If so, change
-  " b:asmsyntax appropriately
-  let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
-	\" ".getline(5)." "
-  if head =~ '\sasmsyntax=\S\+\s'
-    let b:asmsyntax = substitute(head, '.*\sasmsyntax=\([a-zA-Z0-9]\+\)\s.*','\1', "")
-  elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
-    let b:asmsyntax = "vmasm"
-  endif
-endfunc
-
-" Macro (VAX)
-au BufNewFile,BufRead *.mar			setf vmasm
-
-" Atlas
-au BufNewFile,BufRead *.atl,*.as		setf atlas
-
-" Autoit v3
-au BufNewFile,BufRead *.au3			setf autoit
-
-" Autohotkey
-au BufNewFile,BufRead *.ahk			setf autohotkey
-
-" Automake
-au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am	setf automake
-
-" Autotest .at files are actually m4
-au BufNewFile,BufRead *.at			setf m4
-
-" Avenue
-au BufNewFile,BufRead *.ave			setf ave
-
-" Awk
-au BufNewFile,BufRead *.awk			setf awk
-
-" B
-au BufNewFile,BufRead *.mch,*.ref,*.imp		setf b
-
-" BASIC or Visual Basic
-au BufNewFile,BufRead *.bas			call s:FTVB("basic")
-
-" Check if one of the first five lines contains "VB_Name".  In that case it is
-" probably a Visual Basic file.  Otherwise it's assumed to be "alt" filetype.
-func! s:FTVB(alt)
-  if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
-    setf vb
-  else
-    exe "setf " . a:alt
-  endif
-endfunc
-
-" Visual Basic Script (close to Visual Basic)
-au BufNewFile,BufRead *.vbs,*.dsm,*.ctl		setf vb
-
-" IBasic file (similar to QBasic)
-au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
-
-" FreeBasic file (similar to QBasic)
-au BufNewFile,BufRead *.fb,*.bi			setf freebasic
-
-" Batch file for MSDOS.
-au BufNewFile,BufRead *.bat,*.sys		setf dosbatch
-" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd.
-au BufNewFile,BufRead *.cmd
-	\ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif
-
-" Batch file for 4DOS
-au BufNewFile,BufRead *.btm			call s:FTbtm()
-func! s:FTbtm()
-  if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm
-    setf dosbatch
-  else
-    setf btm
-  endif
-endfunc
-
-" BC calculator
-au BufNewFile,BufRead *.bc			setf bc
-
-" BDF font
-au BufNewFile,BufRead *.bdf			setf bdf
-
-" BibTeX bibliography database file
-au BufNewFile,BufRead *.bib			setf bib
-
-" BibTeX Bibliography Style
-au BufNewFile,BufRead *.bst			setf bst
-
-" BIND configuration
-au BufNewFile,BufRead named.conf,rndc.conf	setf named
-
-" BIND zone
-au BufNewFile,BufRead named.root		setf bindzone
-au BufNewFile,BufRead *.db			call s:BindzoneCheck('')
-
-func! s:BindzoneCheck(default)
-  if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA'
-    setf bindzone
-  elseif a:default != ''
-    exe 'setf ' . a:default
-  endif
-endfunc
-
-" Blank
-au BufNewFile,BufRead *.bl			setf blank
-
-" C or lpc
-au BufNewFile,BufRead *.c			call s:FTlpc()
-
-func! s:FTlpc()
-  if exists("g:lpc_syntax_for_c")
-    let lnum = 1
-    while lnum <= 12
-      if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)'
-	setf lpc
-	return
-      endif
-      let lnum = lnum + 1
-    endwhile
-  endif
-  setf c
-endfunc
-
-" Calendar
-au BufNewFile,BufRead calendar			setf calendar
-au BufNewFile,BufRead */.calendar/*,
-	\*/share/calendar/*/calendar.*,*/share/calendar/calendar.*
-	\					call s:StarSetf('calendar')
-
-" C#
-au BufNewFile,BufRead *.cs			setf cs
-
-" Cdrdao TOC
-au BufNewFile,BufRead *.toc			setf cdrtoc
-
-" Cdrdao config
-au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao						setf cdrdaoconf
-
-" Cfengine
-au BufNewFile,BufRead cfengine.conf		setf cfengine
-
-" Comshare Dimension Definition Language
-au BufNewFile,BufRead *.cdl			setf cdl
-
-" Conary Recipe
-au BufNewFile,BufRead *.recipe			setf conaryrecipe
-
-" Controllable Regex Mutilator
-au BufNewFile,BufRead *.crm			setf crm
-
-" Cyn++
-au BufNewFile,BufRead *.cyn			setf cynpp
-
-" Cynlib
-" .cc and .cpp files can be C++ or Cynlib.
-au BufNewFile,BufRead *.cc
-	\ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif
-au BufNewFile,BufRead *.cpp
-	\ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
-
-" C++
-if has("fname_case")
-  au BufNewFile,BufRead *.cxx,*.c++,*.C,*.H,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
-else
-  au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp
-endif
-
-" .h files can be C, Ch C++, ObjC or ObjC++.
-" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is
-" detected automatically.
-au BufNewFile,BufRead *.h			call s:FTheader()
-
-func! s:FTheader()
-  if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1
-    setf objc
-  elseif exists("c_syntax_for_h")
-    setf c
-  elseif exists("ch_syntax_for_h")
-    setf ch
-  else
-    setf cpp
-  endif
-endfunc
-
-" Ch (CHscript)
-au BufNewFile,BufRead *.chf			setf ch
-
-" TLH files are C++ headers generated by Visual C++'s #import from typelibs
-au BufNewFile,BufRead *.tlh			setf cpp
-
-" Cascading Style Sheets
-au BufNewFile,BufRead *.css			setf css
-
-" Century Term Command Scripts (*.cmd too)
-au BufNewFile,BufRead *.con			setf cterm
-
-" Changelog
-au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch
-					\	setf debchangelog
-
-au BufNewFile,BufRead [cC]hange[lL]og
-	\  if getline(1) =~ '; urgency='
-	\|   setf debchangelog
-	\| else
-	\|   setf changelog
-	\| endif
-
-au BufNewFile,BufRead NEWS
-	\  if getline(1) =~ '; urgency='
-	\|   setf debchangelog
-	\| endif
-
-" CHILL
-au BufNewFile,BufRead *..ch			setf chill
-
-" Changes for WEB and CWEB or CHILL
-au BufNewFile,BufRead *.ch			call s:FTchange()
-
-" This function checks if one of the first ten lines start with a '@'.  In
-" that case it is probably a change file.
-" If the first line starts with # or ! it's probably a ch file.
-" If a line has "main", "include", "//" ir "/*" it's probably ch.
-" Otherwise CHILL is assumed.
-func! s:FTchange()
-  let lnum = 1
-  while lnum <= 10
-    if getline(lnum)[0] == '@'
-      setf change
-      return
-    endif
-    if lnum == 1 && (getline(1)[0] == '#' || getline(1)[0] == '!')
-      setf ch
-      return
-    endif
-    if getline(lnum) =~ "MODULE"
-      setf chill
-      return
-    endif
-    if getline(lnum) =~ 'main\s*(\|#\s*include\|//'
-      setf ch
-      return
-    endif
-    let lnum = lnum + 1
-  endwhile
-  setf chill
-endfunc
-
-" ChordPro
-au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro	setf chordpro
-
-" Clean
-au BufNewFile,BufRead *.dcl,*.icl		setf clean
-
-" Clever
-au BufNewFile,BufRead *.eni			setf cl
-
-" Clever or dtd
-au BufNewFile,BufRead *.ent			call s:FTent()
-
-func! s:FTent()
-  " This function checks for valid cl syntax in the first five lines.
-  " Look for either an opening comment, '#', or a block start, '{".
-  " If not found, assume SGML.
-  let lnum = 1
-  while lnum < 6
-    let line = getline(lnum)
-    if line =~ '^\s*[#{]'
-      setf cl
-      return
-    elseif line !~ '^\s*$'
-      " Not a blank line, not a comment, and not a block start,
-      " so doesn't look like valid cl code.
-      break
-    endif
-    let lnum = lnum + 1
-  endw
-  setf dtd
-endfunc
-
-" Clipper (or FoxPro; could also be eviews)
-au BufNewFile,BufRead *.prg
-	\ if exists("g:filetype_prg") |
-	\   exe "setf " . g:filetype_prg |
-	\ else |
-	\   setf clipper |
-	\ endif
-
-" Cmake
-au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in		setf cmake
-
-" Cmusrc
-au BufNewFile,BufRead ~/.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
-au BufNewFile,BufRead */cmus/{rc,*.theme}			setf cmusrc
-
-" Cobol
-au BufNewFile,BufRead *.cbl,*.cob,*.lib	setf cobol
-"   cobol or zope form controller python script? (heuristic)
-au BufNewFile,BufRead *.cpy
-	\ if getline(1) =~ '^##' |
-	\   setf python |
-	\ else |
-	\   setf cobol |
-	\ endif
-
-" Coco/R
-au BufNewFile,BufRead *.atg			setf coco
-
-" Cold Fusion
-au BufNewFile,BufRead *.cfm,*.cfi,*.cfc		setf cf
-
-" Configure scripts
-au BufNewFile,BufRead configure.in,configure.ac setf config
-
-" CUDA  Cumpute Unified Device Architecture
-au BufNewFile,BufRead *.cu			setf cuda
-
-" WildPackets EtherPeek Decoder
-au BufNewFile,BufRead *.dcd			setf dcd
-
-" Enlightenment configuration files
-au BufNewFile,BufRead *enlightenment/*.cfg	setf c
-
-" Eterm
-au BufNewFile,BufRead *Eterm/*.cfg		setf eterm
-
-" Lynx config files
-au BufNewFile,BufRead lynx.cfg			setf lynx
-
-" Quake
-au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg	setf quake
-au BufNewFile,BufRead *quake[1-3]/*.cfg			setf quake
-
-" Quake C
-au BufNewFile,BufRead *.qc			setf c
-
-" Configure files
-au BufNewFile,BufRead *.cfg			setf cfg
-
-" Communicating Sequential Processes
-au BufNewFile,BufRead *.csp,*.fdr		setf csp
-
-" CUPL logic description and simulation
-au BufNewFile,BufRead *.pld			setf cupl
-au BufNewFile,BufRead *.si			setf cuplsim
-
-" Debian Control
-au BufNewFile,BufRead */debian/control		setf debcontrol
-au BufNewFile,BufRead control
-	\  if getline(1) =~ '^Source:'
-	\|   setf debcontrol
-	\| endif
-
-" Debian Sources.list
-au BufNewFile,BufRead /etc/apt/sources.list	setf debsources
-
-" Deny hosts
-au BufNewFile,BufRead denyhosts.conf		setf denyhosts
-
-" ROCKLinux package description
-au BufNewFile,BufRead *.desc			setf desc
-
-" the D language or dtrace
-au BufNewFile,BufRead *.d			call s:DtraceCheck()
-
-func! s:DtraceCheck()
-  let lines = getline(1, min([line("$"), 100]))
-  if match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1
-    setf dtrace
-  else
-    setf d
-  endif
-endfunc
-
-" Desktop files
-au BufNewFile,BufRead *.desktop,.directory	setf desktop
-
-" Dict config
-au BufNewFile,BufRead dict.conf,.dictrc		setf dictconf
-
-" Dictd config
-au BufNewFile,BufRead dictd.conf		setf dictdconf
-
-" Diff files
-au BufNewFile,BufRead *.diff,*.rej,*.patch	setf diff
-
-" Dircolors
-au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS	setf dircolors
-
-" Diva (with Skill) or InstallShield
-au BufNewFile,BufRead *.rul
-	\ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' |
-	\   setf ishd |
-	\ else |
-	\   setf diva |
-	\ endif
-
-" DCL (Digital Command Language - vms) or DNS zone file
-au BufNewFile,BufRead *.com			call s:BindzoneCheck('dcl')
-
-" DOT
-au BufNewFile,BufRead *.dot			setf dot
-
-" Dylan - lid files
-au BufNewFile,BufRead *.lid			setf dylanlid
-
-" Dylan - intr files (melange)
-au BufNewFile,BufRead *.intr			setf dylanintr
-
-" Dylan
-au BufNewFile,BufRead *.dylan			setf dylan
-
-" Microsoft Module Definition
-au BufNewFile,BufRead *.def			setf def
-
-" Dracula
-au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe	setf dracula
-
-" dsl
-au BufNewFile,BufRead *.dsl			setf dsl
-
-" DTD (Document Type Definition for XML)
-au BufNewFile,BufRead *.dtd			setf dtd
-
-" EDIF (*.edf,*.edif,*.edn,*.edo)
-au BufNewFile,BufRead *.ed\(f\|if\|n\|o\)	setf edif
-
-" Embedix Component Description
-au BufNewFile,BufRead *.ecd			setf ecd
-
-" Eiffel or Specman
-au BufNewFile,BufRead *.e,*.E			call s:FTe()
-
-" Elinks configuration
-au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf	setf elinks
-
-func! s:FTe()
-  let n = 1
-  while n < 100 && n < line("$")
-    if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$"
-      setf specman
-      return
-    endif
-    let n = n + 1
-  endwhile
-  setf eiffel
-endfunc
-
-" ERicsson LANGuage; Yaws is erlang too
-au BufNewFile,BufRead *.erl,*.yaws		setf erlang
-
-" Elm Filter Rules file
-au BufNewFile,BufRead filter-rules		setf elmfilt
-
-" ESMTP rc file
-au BufNewFile,BufRead *esmtprc			setf esmtprc
-
-" ESQL-C
-au BufNewFile,BufRead *.ec,*.EC			setf esqlc
-
-" Esterel
-au BufNewFile,BufRead *.strl			setf esterel
-
-" Essbase script
-au BufNewFile,BufRead *.csc			setf csc
-
-" Exim
-au BufNewFile,BufRead exim.conf			setf exim
-
-" Expect
-au BufNewFile,BufRead *.exp			setf expect
-
-" Exports
-au BufNewFile,BufRead exports			setf exports
-
-" Factor
-au BufNewFile,BufRead *.factor			setf factor
-
-" Fetchmail RC file
-au BufNewFile,BufRead .fetchmailrc		setf fetchmail
-
-" FlexWiki
-au BufNewFile,BufRead *.wiki			setf flexwiki
-
-" Focus Executable
-au BufNewFile,BufRead *.fex,*.focexec		setf focexec
-
-" Focus Master file (but not for auto.master)
-au BufNewFile,BufRead auto.master		setf conf
-au BufNewFile,BufRead *.mas,*.master		setf master
-
-" Forth
-au BufNewFile,BufRead *.fs,*.ft			setf forth
-
-" Reva Forth
-au BufNewFile,BufRead *.frt			setf reva
-
-" Fortran
-if has("fname_case")
-  au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95	 setf fortran
-endif
-au BufNewFile,BufRead   *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95  setf fortran
-
-" FStab
-au BufNewFile,BufRead fstab,mtab		setf fstab
-
-" GDB command files
-au BufNewFile,BufRead .gdbinit			setf gdb
-
-" GDMO
-au BufNewFile,BufRead *.mo,*.gdmo		setf gdmo
-
-" Gedcom
-au BufNewFile,BufRead *.ged			setf gedcom
-
-" Git
-autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG    setf gitcommit
-autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
-autocmd BufNewFile,BufRead git-rebase-todo         setf gitrebase
-autocmd BufNewFile,BufRead .msg.[0-9]*
-      \ if getline(1) =~ '^From.*# This line is ignored.$' |
-      \   setf gitsendemail |
-      \ endif
-autocmd BufNewFile,BufRead *.git/**
-      \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
-      \   setf git |
-      \ endif
-
-" Gkrellmrc
-au BufNewFile,BufRead gkrellmrc,gkrellmrc_?	setf gkrellmrc
-
-" GP scripts (2.0 and onward)
-au BufNewFile,BufRead *.gp,.gprc		setf gp
-
-" GPG
-au BufNewFile,BufRead */.gnupg/options		setf gpg
-au BufNewFile,BufRead */.gnupg/gpg.conf		setf gpg
-au BufNewFile,BufRead /usr/**/gnupg/options.skel setf gpg
-
-" Gnuplot scripts
-au BufNewFile,BufRead *.gpi			setf gnuplot
-
-" GrADS scripts
-au BufNewFile,BufRead *.gs			setf grads
-
-" Gretl
-au BufNewFile,BufRead *.gretl			setf gretl
-
-" Groovy
-au BufNewFile,BufRead *.groovy			setf groovy
-
-" GNU Server Pages
-au BufNewFile,BufRead *.gsp			setf gsp
-
-" Group file
-au BufNewFile,BufRead /etc/group		setf group
-
-" GTK RC
-au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
-
-" Hamster Classic | Playground files
-au BufNewFile,BufRead *.hsc,*.hsm		setf hamster
-
-" Haskell
-au BufNewFile,BufRead *.hs			setf haskell
-au BufNewFile,BufRead *.lhs			setf lhaskell
-au BufNewFile,BufRead *.chs			setf chaskell
-
-" Haste
-au BufNewFile,BufRead *.ht			setf haste
-
-" Hercules
-au BufNewFile,BufRead *.vc,*.ev,*.rs,*.sum,*.errsum	setf hercules
-
-" HEX (Intel)
-au BufNewFile,BufRead *.hex,*.h32		setf hex
-
-" Tilde (must be before HTML)
-au BufNewFile,BufRead *.t.html			setf tilde
-
-" HTML (.shtml and .stm for server side)
-au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call s:FThtml()
-
-" Distinguish between HTML, XHTML and Django
-func! s:FThtml()
-  let n = 1
-  while n < 10 && n < line("$")
-    if getline(n) =~ '\<DTD\s\+XHTML\s'
-      setf xhtml
-      return
-    endif
-    if getline(n) =~ '{%\s*\(extends\|block\)\>'
-      setf htmldjango
-      return
-    endif
-    let n = n + 1
-  endwhile
-  setf html
-endfunc
-
-" HTML with Ruby - eRuby
-au BufNewFile,BufRead *.erb,*.rhtml		setf eruby
-
-" HTML with M4
-au BufNewFile,BufRead *.html.m4			setf htmlm4
-
-" HTML Cheetah template
-au BufNewFile,BufRead *.tmpl			setf htmlcheetah
-
-" Host config
-au BufNewFile,BufRead /etc/host.conf		setf hostconf
-
-" Hyper Builder
-au BufNewFile,BufRead *.hb			setf hb
-
-" Icon
-au BufNewFile,BufRead *.icn			setf icon
-
-" IDL (Interface Description Language)
-au BufNewFile,BufRead *.idl			call s:FTidl()
-
-" Distinguish between standard IDL and MS-IDL
-func! s:FTidl()
-  let n = 1
-  while n < 50 && n < line("$")
-    if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"'
-      setf msidl
-      return
-    endif
-    let n = n + 1
-  endwhile
-  setf idl
-endfunc
-
-" Microsoft IDL (Interface Description Language)  Also *.idl
-" MOF = WMI (Windows Management Instrumentation) Managed Object Format
-au BufNewFile,BufRead *.odl,*.mof		setf msidl
-
-" Icewm menu
-au BufNewFile,BufRead */.icewm/menu		setf icemenu
-
-" Indent profile (must come before IDL *.pro!)
-au BufNewFile,BufRead .indent.pro		setf indent
-au BufNewFile,BufRead indent.pro		call s:ProtoCheck('indent')
-
-" IDL (Interactive Data Language)
-au BufNewFile,BufRead *.pro			call s:ProtoCheck('idlang')
-
-" Distinguish between "default" and Cproto prototype file. */
-func! s:ProtoCheck(default)
-  " Cproto files have a comment in the first line and a function prototype in
-  " the second line, it always ends in ";".  Indent files may also have
-  " comments, thus we can't match comments to see the difference.
-  if getline(2) =~ ';$'
-    setf cpp
-  else
-    exe 'setf ' . a:default
-  endif
-endfunc
-
-
-" Indent RC
-au BufNewFile,BufRead indentrc			setf indentrc
-
-" Inform
-au BufNewFile,BufRead *.inf,*.INF		setf inform
-
-" Initng
-au BufNewFile,BufRead /etc/initng/**/*.i,*.ii	setf initng
-
-" Ipfilter
-au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
-
-" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
-au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl	setf fgl
-
-" .INI file for MSDOS
-au BufNewFile,BufRead *.ini			setf dosini
-
-" SysV Inittab
-au BufNewFile,BufRead inittab			setf inittab
-
-" Inno Setup
-au BufNewFile,BufRead *.iss			setf iss
-
-" JAL
-au BufNewFile,BufRead *.jal,*.JAL		setf jal
-
-" Jam
-au BufNewFile,BufRead *.jpl,*.jpr		setf jam
-
-" Java
-au BufNewFile,BufRead *.java,*.jav		setf java
-
-" JavaCC
-au BufNewFile,BufRead *.jj,*.jjt		setf javacc
-
-" JavaScript, ECMAScript
-au BufNewFile,BufRead *.js,*.javascript,*.es	setf javascript
-
-" Java Server Pages
-au BufNewFile,BufRead *.jsp			setf jsp
-
-" Java Properties resource file (note: doesn't catch font.properties.pl)
-au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_??	setf jproperties
-au BufNewFile,BufRead *.properties_??_??_*	call s:StarSetf('jproperties')
-
-" Jess
-au BufNewFile,BufRead *.clp			setf jess
-
-" Jgraph
-au BufNewFile,BufRead *.jgr			setf jgraph
-
-" Kixtart
-au BufNewFile,BufRead *.kix			setf kix
-
-" Kimwitu[++]
-au BufNewFile,BufRead *.k			setf kwt
-
-" KDE script
-au BufNewFile,BufRead *.ks			setf kscript
-
-" Kconfig
-au BufNewFile,BufRead Kconfig,Kconfig.debug	setf kconfig
-
-" Lace (ISE)
-au BufNewFile,BufRead *.ace,*.ACE		setf lace
-
-" Latte
-au BufNewFile,BufRead *.latte,*.lte		setf latte
-
-" Limits
-au BufNewFile,BufRead /etc/limits		setf limits
-
-" LambdaProlog (*.mod too, see Modsim)
-au BufNewFile,BufRead *.sig			setf lprolog
-
-" LDAP LDIF
-au BufNewFile,BufRead *.ldif			setf ldif
-
-" Ld loader
-au BufNewFile,BufRead *.ld			setf ld
-
-" Lex
-au BufNewFile,BufRead *.lex,*.l			setf lex
-
-" Libao
-au BufNewFile,BufRead /etc/libao.conf,*/.libao	setf libao
-
-" Libsensors
-au BufNewFile,BufRead /etc/sensors.conf		setf sensors
-
-" LFTP
-au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
-
-" Lifelines (or Lex for C++!)
-au BufNewFile,BufRead *.ll			setf lifelines
-
-" Lilo: Linux loader
-au BufNewFile,BufRead lilo.conf*		call s:StarSetf('lilo')
-
-" Lisp (*.el = ELisp, *.cl = Common Lisp, *.jl = librep Lisp)
-if has("fname_case")
-  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp
-else
-  au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
-endif
-
-" SBCL implementation of Common Lisp
-au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
-
-" Lite
-au BufNewFile,BufRead *.lite,*.lt		setf lite
-
-" LiteStep RC files
-au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
-
-" Login access
-au BufNewFile,BufRead /etc/login.access		setf loginaccess
-
-" Login defs
-au BufNewFile,BufRead /etc/login.defs		setf logindefs
-
-" Logtalk
-au BufNewFile,BufRead *.lgt			setf logtalk
-
-" LOTOS
-au BufNewFile,BufRead *.lot,*.lotos		setf lotos
-
-" Lout (also: *.lt)
-au BufNewFile,BufRead *.lou,*.lout		setf lout
-
-" Lua
-au BufNewFile,BufRead *.lua			setf lua
-
-" Linden Scripting Language (Second Life)
-au BufNewFile,BufRead *.lsl			setf lsl
-
-" Lynx style file (or LotusScript!)
-au BufNewFile,BufRead *.lss			setf lss
-
-" M4
-au BufNewFile,BufRead *.m4
-	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif
-
-" MaGic Point
-au BufNewFile,BufRead *.mgp			setf mgp
-
-" Mail (for Elm, trn, mutt, muttng, rn, slrn)
-au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
-
-" Mail aliases
-au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases	setf mailaliases
-
-" Mailcap configuration file
-au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
-
-" Makefile
-au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make
-
-" MakeIndex
-au BufNewFile,BufRead *.ist,*.mst		setf ist
-
-" Manpage
-au BufNewFile,BufRead *.man			setf man
-
-" Man config
-au BufNewFile,BufRead /etc/man.conf,man.config	setf manconf
-
-" Maple V
-au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
-
-" Mason
-au BufNewFile,BufRead *.mason,*.mhtml		setf mason
-
-" Matlab or Objective C
-au BufNewFile,BufRead *.m			call s:FTm()
-
-func! s:FTm()
-  let n = 1
-  while n < 10
-    let line = getline(n)
-    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
-      setf objc
-      return
-    endif
-    if line =~ '^\s*%'
-      setf matlab
-      return
-    endif
-    if line =~ '^\s*(\*'
-      setf mma
-      return
-    endif
-    let n = n + 1
-  endwhile
-  if exists("g:filetype_m")
-    exe "setf " . g:filetype_m
-  else
-    setf matlab
-  endif
-endfunc
-
-" Mathematica notebook
-au BufNewFile,BufRead *.nb			setf mma
-
-" Maya Extension Language
-au BufNewFile,BufRead *.mel			setf mel
-
-" Messages
-au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9]  setf messages
-
-" Metafont
-au BufNewFile,BufRead *.mf			setf mf
-
-" MetaPost
-au BufNewFile,BufRead *.mp			setf mp
-
-" MGL
-au BufNewFile,BufRead *.mgl			setf mgl
-
-" MMIX or VMS makefile
-au BufNewFile,BufRead *.mms			call s:FTmms()
-
-" Symbian meta-makefile definition (MMP)
-au BufNewFile,BufRead *.mmp			setf mmp
-
-func! s:FTmms()
-  let n = 1
-  while n < 10
-    let line = getline(n)
-    if line =~ '^\s*\(%\|//\)' || line =~ '^\*'
-      setf mmix
-      return
-    endif
-    if line =~ '^\s*#'
-      setf make
-      return
-    endif
-    let n = n + 1
-  endwhile
-  setf mmix
-endfunc
-
-
-" Modsim III (or LambdaProlog)
-au BufNewFile,BufRead *.mod
-	\ if getline(1) =~ '\<module\>' |
-	\   setf lprolog |
-	\ else |
-	\   setf modsim3 |
-	\ endif
-
-" Modula 2
-au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
-
-" Modula 3 (.m3, .i3, .mg, .ig)
-au BufNewFile,BufRead *.[mi][3g]		setf modula3
-
-" Monk
-au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc	setf monk
-
-" MOO
-au BufNewFile,BufRead *.moo			setf moo
-
-" Modconf
-au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules	setf modconf
-au BufNewFile,BufRead /etc/modutils/*
-	\ if executable(expand("<afile>")) != 1
-	\|  call s:StarSetf('modconf')
-	\|endif
-
-" Mplayer config
-au BufNewFile,BufRead mplayer.conf,*/.mplayer/config	setf mplayerconf
-
-" Moterola S record
-au BufNewFile,BufRead *.s19,*.s28,*.s37		setf srec
-
-" Mrxvtrc
-au BufNewFile,BufRead mrxvtrc,.mrxvtrc		setf mrxvtrc
-
-" Msql
-au BufNewFile,BufRead *.msql			setf msql
-
-" Mysql
-au BufNewFile,BufRead *.mysql			setf mysql
-
-" M$ Resource files
-au BufNewFile,BufRead *.rc			setf rc
-
-" MuPAD source
-au BufRead,BufNewFile *.mu			setf mupad
-
-" Mush
-au BufNewFile,BufRead *.mush			setf mush
-
-" Mutt setup file (also for Muttng)
-au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
-
-" Nano
-au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
-
-" Nastran input/DMAP
-"au BufNewFile,BufRead *.dat			setf nastran
-
-" Natural
-au BufNewFile,BufRead *.NS[ACGLMNPS]		setf natural
-
-" Netrc
-au BufNewFile,BufRead .netrc			setf netrc
-
-" Novell netware batch files
-au BufNewFile,BufRead *.ncf			setf ncf
-
-" Nroff/Troff (*.ms and *.t are checked below)
-au BufNewFile,BufRead *.me
-	\ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" |
-	\   setf nroff |
-	\ endif
-au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom	setf nroff
-au BufNewFile,BufRead *.[1-9]			call s:FTnroff()
-
-" This function checks if one of the first five lines start with a dot.  In
-" that case it is probably an nroff file: 'filetype' is set and 1 is returned.
-func! s:FTnroff()
-  if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.'
-    setf nroff
-    return 1
-  endif
-  return 0
-endfunc
-
-" Nroff or Objective C++
-au BufNewFile,BufRead *.mm			call s:FTmm()
-
-func! s:FTmm()
-  let n = 1
-  while n < 10
-    let line = getline(n)
-    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
-      setf objcpp
-      return
-    endif
-    let n = n + 1
-  endwhile
-  setf nroff
-endfunc
-
-" Not Quite C
-au BufNewFile,BufRead *.nqc			setf nqc
-
-" NSIS
-au BufNewFile,BufRead *.nsi			setf nsis
-
-" OCAML
-au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly	setf ocaml
-
-" Occam
-au BufNewFile,BufRead *.occ			setf occam
-
-" Omnimark
-au BufNewFile,BufRead *.xom,*.xin		setf omnimark
-
-" OpenROAD
-au BufNewFile,BufRead *.or			setf openroad
-
-" OPL
-au BufNewFile,BufRead *.[Oo][Pp][Ll]		setf opl
-
-" Oracle config file
-au BufNewFile,BufRead *.ora			setf ora
-
-" Packet filter conf
-au BufNewFile,BufRead pf.conf			setf pf
-
-" Pam conf
-au BufNewFile,BufRead /etc/pam.conf		setf pamconf
-
-" PApp
-au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
-
-" Password file
-au BufNewFile,BufRead /etc/passwd,/etc/shadow,/etc/shadow- setf passwd
-
-" Pascal (also *.p)
-au BufNewFile,BufRead *.pas			setf pascal
-
-" Delphi project file
-au BufNewFile,BufRead *.dpr			setf pascal
-
-" PDF
-au BufNewFile,BufRead *.pdf			setf pdf
-
-" Perl
-if has("fname_case")
-  au BufNewFile,BufRead *.pl,*.PL		call s:FTpl()
-else
-  au BufNewFile,BufRead *.pl			call s:FTpl()
-endif
-au BufNewFile,BufRead *.plx			setf perl
-
-func! s:FTpl()
-  if exists("g:filetype_pl")
-    exe "setf " . g:filetype_pl
-  else
-    " recognize Prolog by specific text in the first non-empty line
-    " require a blank after the '%' because Perl uses "%list" and "%translate"
-    let l = getline(nextnonblank(1))
-    if l =~ '\<prolog\>' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-'
-      setf prolog
-    else
-      setf perl
-    endif
-  endif
-endfunc
-
-" Perl, XPM or XPM2
-au BufNewFile,BufRead *.pm
-	\ if getline(1) =~ "XPM2" |
-	\   setf xpm2 |
-	\ elseif getline(1) =~ "XPM" |
-	\   setf xpm |
-	\ else |
-	\   setf perl |
-	\ endif
-
-" Perl POD
-au BufNewFile,BufRead *.pod			setf pod
-
-" Php, php3, php4, etc.
-" Also Phtml (was used for PHP 2 in the past)
-" Also .ctp for Cake template file
-au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp	setf php
-
-" Pike
-au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike
-
-" Pinfo config
-au BufNewFile,BufRead */etc/pinforc,*/.pinforc	setf pinfo
-
-" Palm Resource compiler
-au BufNewFile,BufRead *.rcp			setf pilrc
-
-" Pine config
-au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
-
-" PL/M (also: *.inp)
-au BufNewFile,BufRead *.plm,*.p36,*.pac		setf plm
-
-" PL/SQL
-au BufNewFile,BufRead *.pls,*.plsql		setf plsql
-
-" PLP
-au BufNewFile,BufRead *.plp			setf plp
-
-" PO and PO template (GNU gettext)
-au BufNewFile,BufRead *.po,*.pot		setf po
-
-" Postfix main config
-au BufNewFile,BufRead main.cf			setf pfmain
-
-" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
-au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai	  setf postscr
-
-" PostScript Printer Description
-au BufNewFile,BufRead *.ppd			setf ppd
-
-" Povray
-au BufNewFile,BufRead *.pov			setf pov
-
-" Povray configuration
-au BufNewFile,BufRead .povrayrc			setf povini
-
-" Povray, PHP or assembly
-au BufNewFile,BufRead *.inc			call s:FTinc()
-
-func! s:FTinc()
-  if exists("g:filetype_inc")
-    exe "setf " . g:filetype_inc
-  else
-    let lines = getline(1).getline(2).getline(3)
-    if lines =~? "perlscript"
-      setf aspperl
-    elseif lines =~ "<%"
-      setf aspvbs
-    elseif lines =~ "<?"
-      setf php
-    else
-      call s:FTasmsyntax()
-      if exists("b:asmsyntax")
-	exe "setf " . b:asmsyntax
-      else
-	setf pov
-      endif
-    endif
-  endif
-endfunc
-
-" Printcap and Termcap
-au BufNewFile,BufRead *printcap
-	\ let b:ptcap_type = "print" | setf ptcap
-au BufNewFile,BufRead *termcap
-	\ let b:ptcap_type = "term" | setf ptcap
-
-" PCCTS / ANTRL
-"au BufNewFile,BufRead *.g			setf antrl
-au BufNewFile,BufRead *.g			setf pccts
-
-" PPWizard
-au BufNewFile,BufRead *.it,*.ih			setf ppwiz
-
-" Oracle Pro*C/C++
-au BufNewFile,BufRead *.pc			setf proc
-
-" Privoxy actions file
-au BufNewFile,BufRead *.action			setf privoxy
-
-" Procmail
-au BufNewFile,BufRead .procmail,.procmailrc	setf procmail
-
-" Progress or CWEB
-au BufNewFile,BufRead *.w			call s:FTprogress_cweb()
-
-func! s:FTprogress_cweb()
-  if exists("g:filetype_w")
-    exe "setf " . g:filetype_w
-    return
-  endif
-  if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE'
-    setf progress
-  else
-    setf cweb
-  endif
-endfunc
-
-" Progress or assembly
-au BufNewFile,BufRead *.i			call s:FTprogress_asm()
-
-func! s:FTprogress_asm()
-  if exists("g:filetype_i")
-    exe "setf " . g:filetype_i
-    return
-  endif
-  " This function checks for an assembly comment the first ten lines.
-  " If not found, assume Progress.
-  let lnum = 1
-  while lnum <= 10 && lnum < line('$')
-    let line = getline(lnum)
-    if line =~ '^\s*;' || line =~ '^\*'
-      call s:FTasm()
-      return
-    elseif line !~ '^\s*$' || line =~ '^/\*'
-      " Not an empty line: Doesn't look like valid assembly code.
-      " Or it looks like a Progress /* comment
-      break
-    endif
-    let lnum = lnum + 1
-  endw
-  setf progress
-endfunc
-
-" Progress or Pascal
-au BufNewFile,BufRead *.p			call s:FTprogress_pascal()
-
-func! s:FTprogress_pascal()
-  if exists("g:filetype_p")
-    exe "setf " . g:filetype_p
-    return
-  endif
-  " This function checks for valid Pascal syntax in the first ten lines.
-  " Look for either an opening comment or a program start.
-  " If not found, assume Progress.
-  let lnum = 1
-  while lnum <= 10 && lnum < line('$')
-    let line = getline(lnum)
-    if line =~ '^\s*\(program\|unit\|procedure\|function\|const\|type\|var\)\>'
-	\ || line =~ '^\s*{' || line =~ '^\s*(\*'
-      setf pascal
-      return
-    elseif line !~ '^\s*$' || line =~ '^/\*'
-      " Not an empty line: Doesn't look like valid Pascal code.
-      " Or it looks like a Progress /* comment
-      break
-    endif
-    let lnum = lnum + 1
-  endw
-  setf progress
-endfunc
-
-
-" Software Distributor Product Specification File (POSIX 1387.2-1995)
-au BufNewFile,BufRead *.psf			setf psf
-au BufNewFile,BufRead INDEX,INFO
-	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
-	\   setf psf |
-	\ endif
-
-" Prolog
-au BufNewFile,BufRead *.pdb			setf prolog
-
-" Promela
-au BufNewFile,BufRead *.pml			setf promela
-
-" Protocols
-au BufNewFile,BufRead /etc/protocols		setf protocols
-
-" Pyrex
-au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
-
-" Python
-au BufNewFile,BufRead *.py,*.pyw		setf python
-
-" Radiance
-au BufNewFile,BufRead *.rad,*.mat		setf radiance
-
-" Ratpoison config/command files
-au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc	setf ratpoison
-
-" RCS file
-au BufNewFile,BufRead *\,v			setf rcs
-
-" Readline
-au BufNewFile,BufRead .inputrc,inputrc		setf readline
-
-" Registry for MS-Windows
-au BufNewFile,BufRead *.reg
-	\ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif
-
-" Renderman Interface Bytestream
-au BufNewFile,BufRead *.rib			setf rib
-
-" Rexx
-au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx	setf rexx
-
-" R (Splus)
-if has("fname_case")
-  au BufNewFile,BufRead *.s,*.S			setf r
-else
-  au BufNewFile,BufRead *.s			setf r
-endif
-
-" R Help file
-if has("fname_case")
-  au BufNewFile,BufRead *.rd,*.Rd		setf rhelp
-else
-  au BufNewFile,BufRead *.rd			setf rhelp
-endif
-
-" R noweb file
-if has("fname_case")
-  au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw		setf rnoweb
-else
-  au BufNewFile,BufRead *.rnw,*.snw			setf rnoweb
-endif
-
-" Rexx, Rebol or R
-au BufNewFile,BufRead *.r,*.R			call s:FTr()
-
-func! s:FTr()
-  let max = line("$") > 50 ? 50 : line("$")
-
-  for n in range(1, max)
-    " Rebol is easy to recognize, check for that first
-    if getline(n) =~? '\<REBOL\>'
-      setf rebol
-      return
-    endif
-  endfor
-
-  for n in range(1, max)
-    " R has # comments
-    if getline(n) =~ '^\s*#'
-      setf r
-      return
-    endif
-    " Rexx has /* comments */
-    if getline(n) =~ '^\s*/\*'
-      setf rexx
-      return
-    endif
-  endfor
-
-  " Nothing recognized, assume Rexx
-  setf rexx
-endfunc
-
-" Remind
-au BufNewFile,BufRead .reminders*		call s:StarSetf('remind')
-
-" Resolv.conf
-au BufNewFile,BufRead resolv.conf		setf resolv
-
-" Relax NG Compact
-au BufNewFile,BufRead *.rnc			setf rnc
-
-" RPL/2
-au BufNewFile,BufRead *.rpl			setf rpl
-
-" Robots.txt
-au BufNewFile,BufRead robots.txt		setf robots
-
-" Rpcgen
-au BufNewFile,BufRead *.x			setf rpcgen
-
-" reStructuredText Documentation Format
-au BufNewFile,BufRead *.rst			setf rst
-
-" RTF
-au BufNewFile,BufRead *.rtf			setf rtf
-
-" Ruby
-au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec	setf ruby
-
-" Ruby on Rails
-au BufNewFile,BufRead *.builder,*.rxml,*.rjs	setf ruby
-
-" Rantfile and Rakefile is like Ruby
-au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake	setf ruby
-
-" S-lang (or shader language!)
-au BufNewFile,BufRead *.sl			setf slang
-
-" Samba config
-au BufNewFile,BufRead smb.conf			setf samba
-
-" SAS script
-au BufNewFile,BufRead *.sas			setf sas
-
-" Sather
-au BufNewFile,BufRead *.sa			setf sather
-
-" Scilab
-au BufNewFile,BufRead *.sci,*.sce		setf scilab
-
-" SD: Streaming Descriptors
-au BufNewFile,BufRead *.sd			setf sd
-
-" SDL
-au BufNewFile,BufRead *.sdl,*.pr		setf sdl
-
-" sed
-au BufNewFile,BufRead *.sed			setf sed
-
-" Sieve (RFC 3028)
-au BufNewFile,BufRead *.siv			setf sieve
-
-" Sendmail
-au BufNewFile,BufRead sendmail.cf		setf sm
-
-" Sendmail .mc files are actually m4.  Could also be MS Message text file.
-au BufNewFile,BufRead *.mc			call s:McSetf()
-
-func! s:McSetf()
-  " Rely on the file to start with a comment.
-  " MS message text files use ';', Sendmail files use '#' or 'dnl'
-  for lnum in range(1, min([line("$"), 20]))
-    let line = getline(lnum)
-    if line =~ '^\s*\(#\|dnl\)'
-      setf m4  " Sendmail .mc file
-      return
-    elseif line =~ '^\s*;'
-      setf msmessages  " MS Message text file
-      return
-    endif
-  endfor
-  setf m4  " Default: Sendmail .mc file
-endfunc
-
-" Services
-au BufNewFile,BufRead /etc/services		setf services
-
-" Service Location config
-au BufNewFile,BufRead /etc/slp.conf		setf slpconf
-
-" Service Location registration
-au BufNewFile,BufRead /etc/slp.reg		setf slpreg
-
-" Service Location SPI
-au BufNewFile,BufRead /etc/slp.spi		setf slpspi
-
-" Setserial config
-au BufNewFile,BufRead /etc/serial.conf		setf setserial
-
-" SGML
-au BufNewFile,BufRead *.sgm,*.sgml
-	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
-	\   setf sgmllnx |
-	\ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' |
-	\   let b:docbk_type="sgml" |
-	\   setf docbk |
-	\ else |
-	\   setf sgml |
-	\ endif
-
-" SGMLDECL
-au BufNewFile,BufRead *.decl,*.dcl,*.dec
-	\ if getline(1).getline(2).getline(3) =~? '^<!SGML' |
-	\    setf sgmldecl |
-	\ endif
-
-" SGML catalog file
-au BufNewFile,BufRead catalog			setf catalog
-au BufNewFile,BufRead sgml.catalog*		call s:StarSetf('catalog')
-
-" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
-" Gentoo ebuilds are actually bash scripts
-au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")
-au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
-au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
-
-" Also called from scripts.vim.
-func! SetFileTypeSH(name)
-  if expand("<amatch>") =~ g:ft_ignore_pat
-    return
-  endif
-  if a:name =~ '\<ksh\>'
-    let b:is_kornshell = 1
-    if exists("b:is_bash")
-      unlet b:is_bash
-    endif
-    if exists("b:is_sh")
-      unlet b:is_sh
-    endif
-  elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>'
-    let b:is_bash = 1
-    if exists("b:is_kornshell")
-      unlet b:is_kornshell
-    endif
-    if exists("b:is_sh")
-      unlet b:is_sh
-    endif
-  elseif a:name =~ '\<sh\>'
-    let b:is_sh = 1
-    if exists("b:is_kornshell")
-      unlet b:is_kornshell
-    endif
-    if exists("b:is_bash")
-      unlet b:is_bash
-    endif
-  endif
-  call SetFileTypeShell("sh")
-endfunc
-
-" For shell-like file types, check for an "exec" command hidden in a comment,
-" as used for Tcl.
-" Also called from scripts.vim, thus can't be local to this script.
-func! SetFileTypeShell(name)
-  if expand("<amatch>") =~ g:ft_ignore_pat
-    return
-  endif
-  let l = 2
-  while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
-    " Skip empty and comment lines.
-    let l = l + 1
-  endwhile
-  if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
-    " Found an "exec" line after a comment with continuation
-    let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
-    if n =~ '\<tclsh\|\<wish'
-      setf tcl
-      return
-    endif
-  endif
-  exe "setf " . a:name
-endfunc
-
-" tcsh scripts
-au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login	call SetFileTypeShell("tcsh")
-
-" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
-au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call s:CSH()
-
-func! s:CSH()
-  if exists("g:filetype_csh")
-    call SetFileTypeShell(g:filetype_csh)
-  elseif &shell =~ "tcsh"
-    call SetFileTypeShell("tcsh")
-  else
-    call SetFileTypeShell("csh")
-  endif
-endfunc
-
-" Z-Shell script
-au BufNewFile,BufRead .zprofile,/etc/zprofile,.zfbfmarks  setf zsh
-au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
-
-" Scheme
-au BufNewFile,BufRead *.scm,*.ss		setf scheme
-
-" Screen RC
-au BufNewFile,BufRead .screenrc,screenrc	setf screen
-
-" Simula
-au BufNewFile,BufRead *.sim			setf simula
-
-" SINDA
-au BufNewFile,BufRead *.sin,*.s85		setf sinda
-
-" SiSU
-au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu
-au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
-
-" SKILL
-au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
-
-" SLRN
-au BufNewFile,BufRead .slrnrc			setf slrnrc
-au BufNewFile,BufRead *.score			setf slrnsc
-
-" Smalltalk (and TeX)
-au BufNewFile,BufRead *.st			setf st
-au BufNewFile,BufRead *.cls
-	\ if getline(1) =~ '^%' |
-	\  setf tex |
-	\ else |
-	\  setf st |
-	\ endif
-
-" Smarty templates
-au BufNewFile,BufRead *.tpl			setf smarty
-
-" SMIL or XML
-au BufNewFile,BufRead *.smil
-	\ if getline(1) =~ '<?\s*xml.*?>' |
-	\   setf xml |
-	\ else |
-	\   setf smil |
-	\ endif
-
-" SMIL or SNMP MIB file
-au BufNewFile,BufRead *.smi
-	\ if getline(1) =~ '\<smil\>' |
-	\   setf smil |
-	\ else |
-	\   setf mib |
-	\ endif
-
-" SMITH
-au BufNewFile,BufRead *.smt,*.smith		setf smith
-
-" Snobol4 and spitbol
-au BufNewFile,BufRead *.sno,*.spt		setf snobol4
-
-" SNMP MIB files
-au BufNewFile,BufRead *.mib,*.my		setf mib
-
-" Snort Configuration
-au BufNewFile,BufRead *.hog,snort.conf,vision.conf	setf hog
-au BufNewFile,BufRead *.rules			call s:FTRules()
-
-let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
-func! s:FTRules()
-  if expand('<amatch>:p') =~ '^/etc/udev/rules\.d/.*\.rules$'
-    setf udevrules
-    return
-  endif
-  try
-    let config_lines = readfile('/etc/udev/udev.conf')
-  catch /^Vim\%((\a\+)\)\=:E484/
-    setf hog
-    return
-  endtry
-  let dir = expand('<amatch>:p:h')
-  for line in config_lines
-    if line =~ s:ft_rules_udev_rules_pattern
-      let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "")
-      if dir == udev_rules
-        setf udevrules
-      endif
-      break
-    endif
-  endfor
-  setf hog
-endfunc
-
-
-" Spec (Linux RPM)
-au BufNewFile,BufRead *.spec			setf spec
-
-" Speedup (AspenTech plant simulator)
-au BufNewFile,BufRead *.speedup,*.spdata,*.spd	setf spup
-
-" Slice
-au BufNewFile,BufRead *.ice			setf slice
-
-" Spice
-au BufNewFile,BufRead *.sp,*.spice		setf spice
-
-" Spyce
-au BufNewFile,BufRead *.spy,*.spi		setf spyce
-
-" Squid
-au BufNewFile,BufRead squid.conf		setf squid
-
-" SQL for Oracle Designer
-au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks	setf sql
-
-" SQL
-au BufNewFile,BufRead *.sql			call s:SQL()
-
-func! s:SQL()
-  if exists("g:filetype_sql")
-    exe "setf " . g:filetype_sql
-  else
-    setf sql
-  endif
-endfunc
-
-" SQLJ
-au BufNewFile,BufRead *.sqlj			setf sqlj
-
-" SQR
-au BufNewFile,BufRead *.sqr,*.sqi		setf sqr
-
-" OpenSSH configuration
-au BufNewFile,BufRead ssh_config,*/.ssh/config	setf sshconfig
-
-" OpenSSH server configuration
-au BufNewFile,BufRead sshd_config		setf sshdconfig
-
-" Stata
-au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata   setf stata
-
-" SMCL
-au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl	setf smcl
-
-" Stored Procedures
-au BufNewFile,BufRead *.stp			setf stp
-
-" Standard ML
-au BufNewFile,BufRead *.sml			setf sml
-
-" Sratus VOS command macro
-au BufNewFile,BufRead *.cm			setf voscm
-
-" Sysctl
-au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
-
-" Sudoers
-au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
-
-" If the file has an extension of 't' and is in a directory 't' then it is
-" almost certainly a Perl test file.
-" If the first line starts with '#' and contains 'perl' it's probably a Perl
-" file.
-" (Slow test) If a file contains a 'use' statement then it is almost certainly
-" a Perl file.
-func! s:FTperl()
-  if expand("%:e") == 't' && expand("%:p:h:t") == 't'
-    setf perl
-    return 1
-  endif
-  if getline(1)[0] == '#' && getline(1) =~ 'perl'
-    setf perl
-    return 1
-  endif
-  if search('^use\s\s*\k', 'nc', 30)
-    setf perl
-    return 1
-  endif
-  return 0
-endfunc
-
-" Tads (or Nroff or Perl test file)
-au BufNewFile,BufRead *.t
-	\ if !s:FTnroff() && !s:FTperl() | setf tads | endif
-
-" Tags
-au BufNewFile,BufRead tags			setf tags
-
-" TAK
-au BufNewFile,BufRead *.tak			setf tak
-
-" Tcl (JACL too)
-au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
-
-" TealInfo
-au BufNewFile,BufRead *.tli			setf tli
-
-" Telix Salt
-au BufNewFile,BufRead *.slt			setf tsalt
-
-" Terminfo
-au BufNewFile,BufRead *.ti			setf terminfo
-
-" TeX
-au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
-au BufNewFile,BufRead *.tex			call s:FTtex()
-
-" Choose context, plaintex, or tex (LaTeX) based on these rules:
-" 1. Check the first line of the file for "%&<format>".
-" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
-" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc.
-func! s:FTtex()
-  let firstline = getline(1)
-  if firstline =~ '^%&\s*\a\+'
-    let format = tolower(matchstr(firstline, '\a\+'))
-    let format = substitute(format, 'pdf', '', '')
-    if format == 'tex'
-      let format = 'plain'
-    endif
-  else
-    " Default value, may be changed later:
-    let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain'
-    " Save position, go to the top of the file, find first non-comment line.
-    let save_cursor = getpos('.')
-    call cursor(1,1)
-    let firstNC = search('^\s*[^[:space:]%]', 'c', 1000)
-    if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword.
-      let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>'
-      let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>'
-      let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)',
-			      \ 'cnp', firstNC + 1000)
-      if kwline == 1	" lpat matched
-	let format = 'latex'
-      elseif kwline == 2	" cpat matched
-	let format = 'context'
-      endif		" If neither matched, keep default set above.
-      " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000)
-      " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000)
-      " if cline > 0
-      "   let format = 'context'
-      " endif
-      " if lline > 0 && (cline == 0 || cline > lline)
-      "   let format = 'tex'
-      " endif
-    endif " firstNC
-    call setpos('.', save_cursor)
-  endif " firstline =~ '^%&\s*\a\+'
-
-  " Translation from formats to file types.  TODO:  add AMSTeX, RevTex, others?
-  if format == 'plain'
-    setf plaintex
-  elseif format == 'context'
-    setf context
-  else " probably LaTeX
-    setf tex
-  endif
-  return
-endfunc
-
-" ConTeXt
-au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv   setf context
-
-" Texinfo
-au BufNewFile,BufRead *.texinfo,*.texi,*.txi	setf texinfo
-
-" TeX configuration
-au BufNewFile,BufRead texmf.cnf			setf texmf
-
-" Tidy config
-au BufNewFile,BufRead .tidyrc,tidyrc		setf tidy
-
-" TF mud client
-au BufNewFile,BufRead *.tf,.tfrc,tfrc		setf tf
-
-" TPP - Text Presentation Program
-au BufNewFile,BufReadPost *.tpp			setf tpp
-
-" Trustees
-au BufNewFile,BufRead trustees.conf		setf trustees
-
-" TSS - Geometry
-au BufNewFile,BufReadPost *.tssgm		setf tssgm
-
-" TSS - Optics
-au BufNewFile,BufReadPost *.tssop		setf tssop
-
-" TSS - Command Line (temporary)
-au BufNewFile,BufReadPost *.tsscl		setf tsscl
-
-" Motif UIT/UIL files
-au BufNewFile,BufRead *.uit,*.uil		setf uil
-
-" Udev conf
-au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
-
-" Udev permissions
-au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
-"
-" Udev symlinks config
-au BufNewFile,BufRead /etc/udev/cdsymlinks.conf	setf sh
-
-" UnrealScript
-au BufNewFile,BufRead *.uc			setf uc
-
-" Updatedb
-au BufNewFile,BufRead /etc/updatedb.conf	setf updatedb
-
-" Vera
-au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
-
-" Verilog HDL
-au BufNewFile,BufRead *.v			setf verilog
-
-" Verilog-AMS HDL
-au BufNewFile,BufRead *.va,*.vams		setf verilogams
-
-" VHDL
-au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
-au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
-
-" Vim script
-au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
-
-" Viminfo file
-au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
-
-" Virata Config Script File
-au BufRead,BufNewFile *.hw,*.module,*.pkg	setf virata
-
-" Visual Basic (also uses *.bas) or FORM
-au BufNewFile,BufRead *.frm			call s:FTVB("form")
-
-" SaxBasic is close to Visual Basic
-au BufNewFile,BufRead *.sba			setf vb
-
-" Vgrindefs file
-au BufNewFile,BufRead vgrindefs			setf vgrindefs
-
-" VRML V1.0c
-au BufNewFile,BufRead *.wrl			setf vrml
-
-" Webmacro
-au BufNewFile,BufRead *.wm			setf webmacro
-
-" Wget config
-au BufNewFile,BufRead .wgetrc,wgetrc		setf wget
-
-" Website MetaLanguage
-au BufNewFile,BufRead *.wml			setf wml
-
-" Winbatch
-au BufNewFile,BufRead *.wbt			setf winbatch
-
-" WSML
-au BufNewFile,BufRead *.wsml			setf wsml
-
-" WvDial
-au BufNewFile,BufRead wvdial.conf,.wvdialrc	setf wvdial
-
-" CVS RC file
-au BufNewFile,BufRead .cvsrc			setf cvsrc
-
-" CVS commit file
-au BufNewFile,BufRead cvs\d\+			setf cvs
-
-" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment
-" lines in a WEB file).
-au BufNewFile,BufRead *.web
-	\ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" |
-	\   setf web |
-	\ else |
-	\   setf winbatch |
-	\ endif
-
-" Windows Scripting Host and Windows Script Component
-au BufNewFile,BufRead *.ws[fc]			setf wsh
-
-" XHTML
-au BufNewFile,BufRead *.xhtml,*.xht		setf xhtml
-
-" X Pixmap (dynamically sets colors, use BufEnter to make it work better)
-au BufEnter *.xpm
-	\ if getline(1) =~ "XPM2" |
-	\   setf xpm2 |
-	\ else |
-	\   setf xpm |
-	\ endif
-au BufEnter *.xpm2				setf xpm2
-
-" XFree86 config
-au BufNewFile,BufRead XF86Config
-	\ if getline(1) =~ '\<XConfigurator\>' |
-	\   let b:xf86c_xfree86_version = 3 |
-	\ endif |
-	\ setf xf86conf
-
-" Xorg config
-au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86c_xfree86_version = 4 | setf xf86conf
-
-" Xinetd conf
-au BufNewFile,BufRead /etc/xinetd.conf		setf xinetd
-
-" XS Perl extension interface language
-au BufNewFile,BufRead *.xs			setf xs
-
-" X resources file
-au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults
-
-" Xmath
-au BufNewFile,BufRead *.msc,*.msf		setf xmath
-au BufNewFile,BufRead *.ms
-	\ if !s:FTnroff() | setf xmath | endif
-
-" XML  specific variants: docbk and xbl
-au BufNewFile,BufRead *.xml			call s:FTxml()
-
-func! s:FTxml()
-  let n = 1
-  while n < 100 && n < line("$")
-    let line = getline(n)
-    if line =~ '<!DOCTYPE.*DocBook'
-      let b:docbk_type = "xml"
-      setf docbk
-      return
-    endif
-    if line =~ 'xmlns:xbl="http://www.mozilla.org/xbl"'
-      setf xbl
-      return
-    endif
-    let n += 1
-  endwhile
-  setf xml
-endfunc
-
-" XMI (holding UML models) is also XML
-au BufNewFile,BufRead *.xmi			setf xml
-
-" CSPROJ files are Visual Studio.NET's XML-based project config files
-au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
-
-" Qt Linguist translation source and Qt User Interface Files are XML
-au BufNewFile,BufRead *.ts,*.ui			setf xml
-
-" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
-au BufNewFile,BufRead *.tpm			setf xml
-
-" Xdg menus
-au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
-
-" ATI graphics driver configuration
-au BufNewFile,BufRead fglrxrc			setf xml
-
-" XLIFF (XML Localisation Interchange File Format) is also XML
-au BufNewFile,BufRead *.xlf			setf xml
-au BufNewFile,BufRead *.xliff			setf xml
-
-" X11 xmodmap (also see below)
-au BufNewFile,BufRead *Xmodmap			setf xmodmap
-
-" Xquery
-au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy	setf xquery
-
-" XSD
-au BufNewFile,BufRead *.xsd			setf xsd
-
-" Xslt
-au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
-
-" Yacc
-au BufNewFile,BufRead *.yy			setf yacc
-
-" Yacc or racc
-au BufNewFile,BufRead *.y			call s:FTy()
-
-func! s:FTy()
-  let n = 1
-  while n < 100 && n < line("$")
-    let line = getline(n)
-    if line =~ '^\s*%'
-      setf yacc
-      return
-    endif
-    if getline(n) =~ '^\s*\(#\|class\>\)' && getline(n) !~ '^\s*#\s*include'
-      setf racc
-      return
-    endif
-    let n = n + 1
-  endwhile
-  setf yacc
-endfunc
-
-
-" Yaml
-au BufNewFile,BufRead *.yaml,*.yml		setf yaml
-
-" Zope
-"   dtml (zope dynamic template markup language), pt (zope page template),
-"   cpt (zope form controller page template)
-au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call s:FThtml()
-"   zsql (zope sql method)
-au BufNewFile,BufRead *.zsql			call s:SQL()
-
-" Z80 assembler asz80
-au BufNewFile,BufRead *.z8a			setf z8a
-
-augroup END
-
-
-" Source the user-specified filetype file, for backwards compatibility with
-" Vim 5.x.
-if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
-  execute "source " . myfiletypefile
-endif
-
-
-" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
-" when there are no matching file name extensions.
-" Don't do this for compressed files.
-augroup filetypedetect
-au BufNewFile,BufRead *
-	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
-	\ | runtime! scripts.vim | endif
-au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif
-
-
-" Extra checks for when no filetype has been detected now.  Mostly used for
-" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
-" script file.
-" Most of these should call s:StarSetf() to avoid names ending in .gz and the
-" like are used.
-
-" Asterisk config file
-au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
-au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
-
-" Bazaar version control
-au BufNewFile,BufRead bzr_log.*			setf bzr
-
-" BIND zone
-au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')
-
-" Changelog
-au BufNewFile,BufRead [cC]hange[lL]og*
-	\ if getline(1) =~ '; urgency='
-	\|  call s:StarSetf('debchangelog')
-	\|else
-	\|  call s:StarSetf('changelog')
-	\|endif
-
-" Crontab
-au BufNewFile,BufRead crontab,crontab.*		call s:StarSetf('crontab')
-
-" Debian Sources.list
-au BufNewFile,BufRead /etc/apt/sources.list.d/*	call s:StarSetf('debsources')
-
-" Dracula
-au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
-
-" Fvwm
-au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
-au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
-	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
-au BufNewFile,BufRead *fvwm2rc*
-	\ if expand("<afile>:e") == "m4"
-	\|  call s:StarSetf('fvwm2m4')
-	\|else
-	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
-	\|endif
-
-" GTK RC
-au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')
-
-" Jam
-au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')
-
-" Jargon
-au! BufNewFile,BufRead *jarg*
-	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
-	\|  call s:StarSetf('jargon')
-	\|endif
-
-" Kconfig
-au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
-
-" Makefile
-au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
-
-" Ruby Makefile
-au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
-
-" Mail (also matches muttrc.vim, so this is below the other checks)
-au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail
-
-" Modconf
-au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
-
-" Mutt setup file
-au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
-au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')
-
-" Nroff macros
-au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
-
-" Pam conf
-au BufNewFile,BufRead /etc/pam.d/*		call s:StarSetf('pamconf')
-
-" Printcap and Termcap
-au BufNewFile,BufRead *printcap*
-	\ if !did_filetype()
-	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
-	\|endif
-au BufNewFile,BufRead *termcap*
-	\ if !did_filetype()
-	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
-	\|endif
-
-" Vim script
-au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')
-
-" Subversion commit file
-au BufNewFile,BufRead svn-commit*.tmp		setf svn
-
-" X resources file
-au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')
-
-" XFree86 config
-au BufNewFile,BufRead XF86Config-4*
-	\ let b:xf86c_xfree86_version = 4 | call s:StarSetf('xf86conf')
-au BufNewFile,BufRead XF86Config*
-	\ if getline(1) =~ '\<XConfigurator\>'
-	\|  let b:xf86c_xfree86_version = 3
-	\|endif
-	\|call s:StarSetf('xf86conf')
-
-" X11 xmodmap
-au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
-
-" Xinetd conf
-au BufNewFile,BufRead /etc/xinetd.d/*		call s:StarSetf('xinetd')
-
-" Z-Shell script
-au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
-
-
-" Generic configuration file (check this last, it's just guessing!)
-au BufNewFile,BufRead,StdinReadPost *
-	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
-	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
-	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
-	\   setf conf |
-	\ endif
-
-" Use the plugin-filetype checks last, they may overrule any of the previously
-" detected filetypes.
-runtime! ftdetect/*.vim
-
-augroup END
-
-
-" If the GUI is already running, may still need to install the Syntax menu.
-" Don't do it when the 'M' flag is included in 'guioptions'.
-if has("menu") && has("gui_running")
-      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
-  source <sfile>:p:h/menu.vim
-endif
-
-" Function called for testing all functions defined here.  These are
-" script-local, thus need to be executed here.
-" Returns a string with error messages (hopefully empty).
-func! TestFiletypeFuncs(testlist)
-  let output = ''
-  for f in a:testlist
-    try
-      exe f
-    catch
-      let output = output . "\n" . f . ": " . v:exception
-    endtry
-  endfor
-  return output
-endfunc
-
-" Restore 'cpoptions'
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/runtime/tutor/runtime/ftoff.vim b/runtime/tutor/runtime/ftoff.vim
deleted file mode 100644
index 377c6ef..0000000
--- a/runtime/tutor/runtime/ftoff.vim
+++ /dev/null
@@ -1,11 +0,0 @@
-" Vim support file to switch off detection of file types
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2001 Jun 11
-
-if exists("did_load_filetypes")
-  unlet did_load_filetypes
-endif
-
-" Remove all autocommands in the filetypedetect group
-silent! au! filetypedetect *
diff --git a/runtime/tutor/runtime/ftplugin.vim b/runtime/tutor/runtime/ftplugin.vim
deleted file mode 100644
index a434b93..0000000
--- a/runtime/tutor/runtime/ftplugin.vim
+++ /dev/null
@@ -1,35 +0,0 @@
-" Vim support file to switch on loading plugins for file types
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2006 Apr 30
-
-if exists("did_load_ftplugin")
-  finish
-endif
-let did_load_ftplugin = 1
-
-augroup filetypeplugin
-  au FileType * call s:LoadFTPlugin()
-
-  func! s:LoadFTPlugin()
-    if exists("b:undo_ftplugin")
-      exe b:undo_ftplugin
-      unlet! b:undo_ftplugin b:did_ftplugin
-    endif
-
-    let s = expand("<amatch>")
-    if s != ""
-      if &cpo =~# "S" && exists("b:did_ftplugin")
-	" In compatible mode options are reset to the global values, need to
-	" set the local values also when a plugin was already used.
-	unlet b:did_ftplugin
-      endif
-
-      " When there is a dot it is used to separate filetype names.  Thus for
-      " "aaa.bbb" load "aaa" and then "bbb".
-      for name in split(s, '\.')
-	exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim'
-      endfor
-    endif
-  endfunc
-augroup END
diff --git a/runtime/tutor/runtime/ftplugof.vim b/runtime/tutor/runtime/ftplugof.vim
deleted file mode 100644
index cd99ce0..0000000
--- a/runtime/tutor/runtime/ftplugof.vim
+++ /dev/null
@@ -1,11 +0,0 @@
-" Vim support file to switch off loading plugins for file types
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2002 Apr 04
-
-if exists("did_load_ftplugin")
-  unlet did_load_ftplugin
-endif
-
-" Remove all autocommands in the filetypeplugin group
-silent! au! filetypeplugin *
diff --git a/runtime/tutor/runtime/gvimrc_example.vim b/runtime/tutor/runtime/gvimrc_example.vim
deleted file mode 100644
index 5a5197e..0000000
--- a/runtime/tutor/runtime/gvimrc_example.vim
+++ /dev/null
@@ -1,59 +0,0 @@
-" An example for a gvimrc file.
-" The commands in this are executed when the GUI is started.
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2001 Sep 02
-"
-" To use it, copy it to
-"     for Unix and OS/2:  ~/.gvimrc
-"	      for Amiga:  s:.gvimrc
-"  for MS-DOS and Win32:  $VIM\_gvimrc
-"	    for OpenVMS:  sys$login:.gvimrc
-
-" Make external commands work through a pipe instead of a pseudo-tty
-"set noguipty
-
-" set the X11 font to use
-" set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1
-
-set ch=2		" Make command line two lines high
-
-set mousehide		" Hide the mouse when typing text
-
-" Make shift-insert work like in Xterm
-map <S-Insert> <MiddleMouse>
-map! <S-Insert> <MiddleMouse>
-
-" Only do this for Vim version 5.0 and later.
-if version >= 500
-
-  " I like highlighting strings inside C comments
-  let c_comment_strings=1
-
-  " Switch on syntax highlighting if it wasn't on yet.
-  if !exists("syntax_on")
-    syntax on
-  endif
-
-  " Switch on search pattern highlighting.
-  set hlsearch
-
-  " For Win32 version, have "K" lookup the keyword in a help file
-  "if has("win32")
-  "  let winhelpfile='windows.hlp'
-  "  map K :execute "!start winhlp32 -k <cword> " . winhelpfile <CR>
-  "endif
-
-  " Set nice colors
-  " background for normal text is light grey
-  " Text below the last line is darker grey
-  " Cursor is green, Cyan when ":lmap" mappings are active
-  " Constants are not underlined but have a slightly lighter background
-  highlight Normal guibg=grey90
-  highlight Cursor guibg=Green guifg=NONE
-  highlight lCursor guibg=Cyan guifg=NONE
-  highlight NonText guibg=grey80
-  highlight Constant gui=NONE guibg=grey95
-  highlight Special gui=NONE guibg=grey95
-
-endif
diff --git a/runtime/tutor/runtime/hi16-action-make.png b/runtime/tutor/runtime/hi16-action-make.png
deleted file mode 100644
index 824c758..0000000
--- a/runtime/tutor/runtime/hi16-action-make.png
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/hi22-action-make.png b/runtime/tutor/runtime/hi22-action-make.png
deleted file mode 100644
index f9abb77..0000000
--- a/runtime/tutor/runtime/hi22-action-make.png
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/icons.info b/runtime/tutor/runtime/icons.info
deleted file mode 100644
index 566bc56..0000000
--- a/runtime/tutor/runtime/icons.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/indent.vim b/runtime/tutor/runtime/indent.vim
deleted file mode 100644
index 12f0364..0000000
--- a/runtime/tutor/runtime/indent.vim
+++ /dev/null
@@ -1,31 +0,0 @@
-" Vim support file to switch on loading indent files for file types
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Feb 22
-
-if exists("did_indent_on")
-  finish
-endif
-let did_indent_on = 1
-
-augroup filetypeindent
-  au FileType * call s:LoadIndent()
-  func! s:LoadIndent()
-    if exists("b:undo_indent")
-      exe b:undo_indent
-      unlet! b:undo_indent b:did_indent
-    endif
-    let s = expand("<amatch>")
-    if s != ""
-      if exists("b:did_indent")
-	unlet b:did_indent
-      endif
-
-      " When there is a dot it is used to separate filetype names.  Thus for
-      " "aaa.bbb" load "indent/aaa.vim" and then "indent/bbb.vim".
-      for name in split(s, '\.')
-	exe 'runtime! indent/' . name . '.vim'
-      endfor
-    endif
-  endfunc
-augroup END
diff --git a/runtime/tutor/runtime/indoff.vim b/runtime/tutor/runtime/indoff.vim
deleted file mode 100644
index 0d93035..0000000
--- a/runtime/tutor/runtime/indoff.vim
+++ /dev/null
@@ -1,11 +0,0 @@
-" Vim support file to switch off loading indent files for file types
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 Jun 11
-
-if exists("did_indent_on")
-  unlet did_indent_on
-endif
-
-" Remove all autocommands in the filetypeindent group
-silent! au! filetypeindent *
diff --git a/runtime/tutor/runtime/macmap.vim b/runtime/tutor/runtime/macmap.vim
deleted file mode 100644
index dc76f15..0000000
--- a/runtime/tutor/runtime/macmap.vim
+++ /dev/null
@@ -1,75 +0,0 @@
-" System gvimrc file for Mac OS X
-" Author:	Benji Fisher <benji@member.AMS.org>
-" Last Change: Thu Mar 09 09:00 AM 2006 EST
-"
-" Define Mac-standard keyboard shortcuts.
-
-" 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 <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 <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> <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> <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 <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 <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 <special> <D-x> "+x
-
-vnoremap <special> <D-c> "+y
-
-cnoremap <special> <D-c> <C-Y>
-
-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> <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 <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 <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/tutor/runtime/macros.info b/runtime/tutor/runtime/macros.info
deleted file mode 100755
index bbb0b4f..0000000
--- a/runtime/tutor/runtime/macros.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/makemenu.vim b/runtime/tutor/runtime/makemenu.vim
deleted file mode 100644
index 6fa34e5..0000000
--- a/runtime/tutor/runtime/makemenu.vim
+++ /dev/null
@@ -1,580 +0,0 @@
-" Script to define the syntax menu in synmenu.vim
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Jun 24
-
-" This is used by "make menu" in the src directory.
-edit <sfile>:p:h/synmenu.vim
-
-/The Start Of The Syntax Menu/+1,/The End Of The Syntax Menu/-1d
-let s:lnum = line(".") - 1
-call append(s:lnum, "")
-let s:lnum = s:lnum + 1
-
-" Use the SynMenu command and function to define all menu entries
-command! -nargs=* SynMenu call <SID>Syn(<q-args>)
-
-let s:cur_menu_name = ""
-let s:cur_menu_nr = 0
-let s:cur_menu_item = 0
-let s:cur_menu_char = ""
-
-fun! <SID>Syn(arg)
-  " isolate menu name: until the first dot
-  let i = match(a:arg, '\.')
-  let menu_name = strpart(a:arg, 0, i)
-  let r = strpart(a:arg, i + 1, 999)
-  " isolate submenu name: until the colon
-  let i = match(r, ":")
-  let submenu_name = strpart(r, 0, i)
-  " after the colon is the syntax name
-  let syntax_name = strpart(r, i + 1, 999)
-
-  if s:cur_menu_name != menu_name
-    let s:cur_menu_name = menu_name
-    let s:cur_menu_nr = s:cur_menu_nr + 10
-    let s:cur_menu_item = 100
-    let s:cur_menu_char = submenu_name[0]
-  else
-    " When starting a new letter, insert a menu separator.
-    let c = submenu_name[0]
-    if c != s:cur_menu_char
-      exe 'an 50.' . s:cur_menu_nr . '.' . s:cur_menu_item . ' &Syntax.' . menu_name . ".-" . c . '- <nul>'
-      let s:cur_menu_item = s:cur_menu_item + 10
-      let s:cur_menu_char = c
-    endif
-  endif
-  call append(s:lnum, 'an 50.' . s:cur_menu_nr . '.' . s:cur_menu_item . ' &Syntax.' . menu_name . "." . submenu_name . ' :cal SetSyn("' . syntax_name . '")<CR>')
-  let s:cur_menu_item = s:cur_menu_item + 10
-  let s:lnum = s:lnum + 1
-endfun
-
-SynMenu AB.A2ps\ config:a2ps
-SynMenu AB.Aap:aap
-SynMenu AB.ABAP/4:abap
-SynMenu AB.Abaqus:abaqus
-SynMenu AB.ABC\ music\ notation:abc
-SynMenu AB.ABEL:abel
-SynMenu AB.AceDB\ model:acedb
-SynMenu AB.Ada:ada
-SynMenu AB.AfLex:aflex
-SynMenu AB.ALSA\ config:alsaconf
-SynMenu AB.Altera\ AHDL:ahdl
-SynMenu AB.Amiga\ DOS:amiga
-SynMenu AB.AMPL:ampl
-SynMenu AB.Ant\ build\ file:ant
-SynMenu AB.ANTLR:antlr
-SynMenu AB.Apache\ config:apache
-SynMenu AB.Apache-style\ config:apachestyle
-SynMenu AB.Applix\ ELF:elf
-SynMenu AB.Arc\ Macro\ Language:aml
-SynMenu AB.Arch\ inventory:arch
-SynMenu AB.ART:art
-SynMenu AB.ASP\ with\ VBScript:aspvbs
-SynMenu AB.ASP\ with\ Perl:aspperl
-SynMenu AB.Assembly.680x0:asm68k
-SynMenu AB.Assembly.Flat:fasm
-SynMenu AB.Assembly.GNU:asm
-SynMenu AB.Assembly.GNU\ H-8300:asmh8300
-SynMenu AB.Assembly.Intel\ IA-64:ia64
-SynMenu AB.Assembly.Microsoft:masm
-SynMenu AB.Assembly.Netwide:nasm
-SynMenu AB.Assembly.PIC:pic
-SynMenu AB.Assembly.Turbo:tasm
-SynMenu AB.Assembly.VAX\ Macro\ Assembly:vmasm
-SynMenu AB.Assembly.Z-80:z8a
-SynMenu AB.Assembly.xa\ 6502\ cross\ assember:a65
-SynMenu AB.ASN\.1:asn
-SynMenu AB.Asterisk\ config:asterisk
-SynMenu AB.Asterisk\ voicemail\ config:asteriskvm
-SynMenu AB.Atlas:atlas
-SynMenu AB.AutoHotKey:autohotkey
-SynMenu AB.AutoIt:autoit
-SynMenu AB.Automake:automake
-SynMenu AB.Avenue:ave
-SynMenu AB.Awk:awk
-SynMenu AB.AYacc:ayacc
-
-SynMenu AB.B:b
-SynMenu AB.Baan:baan
-SynMenu AB.Basic.FreeBasic:freebasic
-SynMenu AB.Basic.IBasic:ibasic
-SynMenu AB.Basic.QBasic:basic
-SynMenu AB.Basic.Visual\ Basic:vb
-SynMenu AB.Bazaar\ commit\ file:bzr
-SynMenu AB.BC\ calculator:bc
-SynMenu AB.BDF\ font:bdf
-SynMenu AB.BibTeX.Bibliography\ database:bib
-SynMenu AB.BibTeX.Bibliography\ Style:bst
-SynMenu AB.BIND.BIND\ config:named
-SynMenu AB.BIND.BIND\ zone:bindzone
-SynMenu AB.Blank:blank
-
-SynMenu C.C:c
-SynMenu C.C++:cpp
-SynMenu C.C#:cs
-SynMenu C.Calendar:calendar
-SynMenu C.Cascading\ Style\ Sheets:css
-SynMenu C.CDL:cdl
-SynMenu C.Cdrdao\ TOC:cdrtoc
-SynMenu C.Cdrdao\ config:cdrdaoconf
-SynMenu C.Century\ Term:cterm
-SynMenu C.CH\ script:ch
-SynMenu C.ChangeLog:changelog
-SynMenu C.Cheetah\ template:cheetah
-SynMenu C.CHILL:chill
-SynMenu C.ChordPro:chordpro
-SynMenu C.Clean:clean
-SynMenu C.Clever:cl
-SynMenu C.Clipper:clipper
-SynMenu C.Cmake:cmake
-SynMenu C.Cmusrc:cmusrc
-SynMenu C.Cobol:cobol
-SynMenu C.Coco/R:coco
-SynMenu C.Cold\ Fusion:cf
-SynMenu C.Conary\ Recipe:conaryrecipe
-SynMenu C.Config.Cfg\ Config\ file:cfg
-SynMenu C.Config.Configure\.in:config
-SynMenu C.Config.Generic\ Config\ file:conf
-SynMenu C.CRM114:crm
-SynMenu C.Crontab:crontab
-SynMenu C.CSP:csp
-SynMenu C.Ctrl-H:ctrlh
-SynMenu C.CUDA:cuda
-SynMenu C.CUPL.CUPL:cupl
-SynMenu C.CUPL.Simulation:cuplsim
-SynMenu C.CVS.commit\ file:cvs
-SynMenu C.CVS.cvsrc:cvsrc
-SynMenu C.Cyn++:cynpp
-SynMenu C.Cynlib:cynlib
-
-SynMenu DE.D:d
-SynMenu DE.Debian.Debian\ ChangeLog:debchangelog
-SynMenu DE.Debian.Debian\ Control:debcontrol
-SynMenu DE.Debian.Debian\ Sources\.list:debsources
-SynMenu DE.Denyhosts:denyhosts
-SynMenu DE.Desktop:desktop
-SynMenu DE.Dict\ config:dictconf
-SynMenu DE.Dictd\ config:dictdconf
-SynMenu DE.Diff:diff
-SynMenu DE.Digital\ Command\ Lang:dcl
-SynMenu DE.Dircolors:dircolors
-SynMenu DE.Django\ template:django
-SynMenu DE.DNS/BIND\ zone:bindzone
-SynMenu DE.DocBook.auto-detect:docbk
-SynMenu DE.DocBook.SGML:docbksgml
-SynMenu DE.DocBook.XML:docbkxml
-SynMenu DE.Dot:dot
-SynMenu DE.Doxygen.C\ with\ doxygen:c.doxygen
-SynMenu DE.Doxygen.C++\ with\ doxygen:cpp.doxygen
-SynMenu DE.Doxygen.IDL\ with\ doxygen:idl.doxygen
-SynMenu DE.Doxygen.Java\ with\ doxygen:java.doxygen
-SynMenu DE.Dracula:dracula
-SynMenu DE.DSSSL:dsl
-SynMenu DE.DTD:dtd
-SynMenu DE.DTML\ (Zope):dtml
-SynMenu DE.DTrace:dtrace
-SynMenu DE.Dylan.Dylan:dylan
-SynMenu DE.Dylan.Dylan\ interface:dylanintr
-SynMenu DE.Dylan.Dylan\ lid:dylanlid
-
-SynMenu DE.EDIF:edif
-SynMenu DE.Eiffel:eiffel
-SynMenu DE.Elinks\ config:elinks
-SynMenu DE.Elm\ filter\ rules:elmfilt
-SynMenu DE.Embedix\ Component\ Description:ecd
-SynMenu DE.ERicsson\ LANGuage:erlang
-SynMenu DE.ESMTP\ rc:esmtprc
-SynMenu DE.ESQL-C:esqlc
-SynMenu DE.Essbase\ script:csc
-SynMenu DE.Esterel:esterel
-SynMenu DE.Eterm\ config:eterm
-SynMenu DE.Eviews:eviews
-SynMenu DE.Exim\ conf:exim
-SynMenu DE.Expect:expect
-SynMenu DE.Exports:exports
-
-SynMenu FG.Fetchmail:fetchmail
-SynMenu FG.FlexWiki:flexwiki
-SynMenu FG.Focus\ Executable:focexec
-SynMenu FG.Focus\ Master:master
-SynMenu FG.FORM:form
-SynMenu FG.Forth:forth
-SynMenu FG.Fortran:fortran
-SynMenu FG.FoxPro:foxpro
-SynMenu FG.FrameScript:framescript
-SynMenu FG.Fstab:fstab
-SynMenu FG.Fvwm.Fvwm\ configuration:fvwm1
-SynMenu FG.Fvwm.Fvwm2\ configuration:fvwm2
-SynMenu FG.Fvwm.Fvwm2\ configuration\ with\ M4:fvwm2m4
-
-SynMenu FG.GDB\ command\ file:gdb
-SynMenu FG.GDMO:gdmo
-SynMenu FG.Gedcom:gedcom
-SynMenu FG.Git.Output:git
-SynMenu FG.Git.Commit:gitcommit
-SynMenu FG.Git.Config:gitconfig
-SynMenu FG.Git.Rebase:gitrebase
-SynMenu FG.Git.Send\ Email:gitsendemail
-SynMenu FG.Gkrellmrc:gkrellmrc
-SynMenu FG.GP:gp
-SynMenu FG.GPG:gpg
-SynMenu FG.Group\ file:group
-SynMenu FG.Grub:grub
-SynMenu FG.GNU\ Server\ Pages:gsp
-SynMenu FG.GNUplot:gnuplot
-SynMenu FG.GrADS\ scripts:grads
-SynMenu FG.Gretl:gretl
-SynMenu FG.Groff:groff
-SynMenu FG.Groovy:groovy
-SynMenu FG.GTKrc:gtkrc
-
-SynMenu HIJK.Hamster:hamster
-SynMenu HIJK.Haskell.Haskell:haskell
-SynMenu HIJK.Haskell.Haskell-c2hs:chaskell
-SynMenu HIJK.Haskell.Haskell-literate:lhaskell
-SynMenu HIJK.HASTE:haste
-SynMenu HIJK.Hercules:hercules
-SynMenu HIJK.Hex\ dump.XXD:xxd
-SynMenu HIJK.Hex\ dump.Intel\ MCS51:hex
-SynMenu HIJK.HTML.HTML:html
-SynMenu HIJK.HTML.HTML\ with\ M4:htmlm4
-SynMenu HIJK.HTML.HTML\ with\ Ruby\ (eRuby):eruby
-SynMenu HIJK.HTML.Cheetah\ HTML\ template:htmlcheetah
-SynMenu HIJK.HTML.Django\ HTML\ template:htmldjango
-SynMenu HIJK.HTML.HTML/OS:htmlos
-SynMenu HIJK.HTML.XHTML:xhtml
-SynMenu HIJK.Host\.conf:hostconf
-SynMenu HIJK.Hyper\ Builder:hb
-SynMenu HIJK.Icewm\ menu:icemenu
-SynMenu HIJK.Icon:icon
-SynMenu HIJK.IDL\Generic\ IDL:idl
-SynMenu HIJK.IDL\Microsoft\ IDL:msidl
-SynMenu HIJK.Indent\ profile:indent
-SynMenu HIJK.Inform:inform
-SynMenu HIJK.Informix\ 4GL:fgl
-SynMenu HIJK.Initng:initng
-SynMenu HIJK.Inittab:inittab
-SynMenu HIJK.Inno\ setup:iss
-SynMenu HIJK.InstallShield\ script:ishd
-SynMenu HIJK.Interactive\ Data\ Lang:idlang
-SynMenu HIJK.IPfilter:ipfilter
-SynMenu HIJK.JAL:jal
-SynMenu HIJK.JAM:jam
-SynMenu HIJK.Jargon:jargon
-SynMenu HIJK.Java.Java:java
-SynMenu HIJK.Java.JavaCC:javacc
-SynMenu HIJK.Java.Java\ Server\ Pages:jsp
-SynMenu HIJK.Java.Java\ Properties:jproperties
-SynMenu HIJK.JavaScript:javascript
-SynMenu HIJK.Jess:jess
-SynMenu HIJK.Jgraph:jgraph
-SynMenu HIJK.Kconfig:kconfig
-SynMenu HIJK.KDE\ script:kscript
-SynMenu HIJK.Kimwitu++:kwt
-SynMenu HIJK.KixTart:kix
-
-SynMenu L-Ma.Lace:lace
-SynMenu L-Ma.LamdaProlog:lprolog
-SynMenu L-Ma.Latte:latte
-SynMenu L-Ma.Ld\ script:ld
-SynMenu L-Ma.LDAP.LDIF:ldif
-SynMenu L-Ma.LDAP.Configuration:ldapconf
-SynMenu L-Ma.Lex:lex
-SynMenu L-Ma.LFTP\ config:lftp
-SynMenu L-Ma.Libao:libao
-SynMenu L-Ma.LifeLines\ script:lifelines
-SynMenu L-Ma.Lilo:lilo
-SynMenu L-Ma.Limits\ config:limits
-SynMenu L-Ma.Linden\ scripting:lsl
-SynMenu L-Ma.Lisp:lisp
-SynMenu L-Ma.Lite:lite
-SynMenu L-Ma.LiteStep\ RC:litestep
-SynMenu L-Ma.Locale\ Input:fdcc
-SynMenu L-Ma.Login\.access:loginaccess
-SynMenu L-Ma.Login\.defs:logindefs
-SynMenu L-Ma.Logtalk:logtalk
-SynMenu L-Ma.LOTOS:lotos
-SynMenu L-Ma.LotusScript:lscript
-SynMenu L-Ma.Lout:lout
-SynMenu L-Ma.LPC:lpc
-SynMenu L-Ma.Lua:lua
-SynMenu L-Ma.Lynx\ Style:lss
-SynMenu L-Ma.Lynx\ config:lynx
-SynMenu L-Ma.M4:m4
-SynMenu L-Ma.MaGic\ Point:mgp
-SynMenu L-Ma.Mail:mail
-SynMenu L-Ma.Mail\ aliases:mailaliases
-SynMenu L-Ma.Mailcap:mailcap
-SynMenu L-Ma.Makefile:make
-SynMenu L-Ma.MakeIndex:ist
-SynMenu L-Ma.Man\ page:man
-SynMenu L-Ma.Man\.conf:manconf
-SynMenu L-Ma.Maple\ V:maple
-SynMenu L-Ma.Mason:mason
-SynMenu L-Ma.Mathematica:mma
-SynMenu L-Ma.Matlab:matlab
-SynMenu L-Ma.Maxima:maxima
-
-SynMenu Me-NO.MEL\ (for\ Maya):mel
-SynMenu Me-NO.Messages\ (/var/log):messages
-SynMenu Me-NO.Metafont:mf
-SynMenu Me-NO.MetaPost:mp
-SynMenu Me-NO.MGL:mgl
-SynMenu Me-NO.MMIX:mmix
-SynMenu Me-NO.Modconf:modconf
-SynMenu Me-NO.Model:model
-SynMenu Me-NO.Modsim\ III:modsim3
-SynMenu Me-NO.Modula\ 2:modula2
-SynMenu Me-NO.Modula\ 3:modula3
-SynMenu Me-NO.Monk:monk
-SynMenu Me-NO.Mplayer\ config:mplayerconf
-SynMenu Me-NO.MOO:moo
-SynMenu Me-NO.Mrxvtrc:mrxvtrc
-SynMenu Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file:btm
-SynMenu Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file:dosbatch
-SynMenu Me-NO.MS-DOS/Windows.\.ini\ file:dosini
-SynMenu Me-NO.MS-DOS/Windows.Message\ text:msmessages
-SynMenu Me-NO.MS-DOS/Windows.Module\ Definition:def
-SynMenu Me-NO.MS-DOS/Windows.Registry:registry
-SynMenu Me-NO.MS-DOS/Windows.Resource\ file:rc
-SynMenu Me-NO.Msql:msql
-SynMenu Me-NO.MuPAD:mupad
-SynMenu Me-NO.MUSHcode:mush
-SynMenu Me-NO.Muttrc:muttrc
-SynMenu Me-NO.Nanorc:nanorc
-SynMenu Me-NO.Nastran\ input/DMAP:nastran
-SynMenu Me-NO.Natural:natural
-SynMenu Me-NO.Netrc:netrc
-SynMenu Me-NO.Novell\ NCF\ batch:ncf
-SynMenu Me-NO.Not\ Quite\ C\ (LEGO):nqc
-SynMenu Me-NO.Nroff:nroff
-SynMenu Me-NO.NSIS\ script:nsis
-SynMenu Me-NO.Objective\ C:objc
-SynMenu Me-NO.Objective\ C++:objcpp
-SynMenu Me-NO.OCAML:ocaml
-SynMenu Me-NO.Occam:occam
-SynMenu Me-NO.Omnimark:omnimark
-SynMenu Me-NO.OpenROAD:openroad
-SynMenu Me-NO.Open\ Psion\ Lang:opl
-SynMenu Me-NO.Oracle\ config:ora
-
-SynMenu PQ.Packet\ filter\ conf:pf
-SynMenu PQ.Palm\ resource\ compiler:pilrc
-SynMenu PQ.Pam\ config:pamconf
-SynMenu PQ.PApp:papp
-SynMenu PQ.Pascal:pascal
-SynMenu PQ.Password\ file:passwd
-SynMenu PQ.PCCTS:pccts
-SynMenu PQ.PDF:pdf
-SynMenu PQ.Perl.Perl:perl
-SynMenu PQ.Perl.Perl\ POD:pod
-SynMenu PQ.Perl.Perl\ XS:xs
-SynMenu PQ.PHP.PHP\ 3-4:php
-SynMenu PQ.PHP.Phtml\ (PHP\ 2):phtml
-SynMenu PQ.Pike:pike
-SynMenu PQ.Pine\ RC:pine
-SynMenu PQ.Pinfo\ RC:pinfo
-SynMenu PQ.PL/M:plm
-SynMenu PQ.PL/SQL:plsql
-SynMenu PQ.PLP:plp
-SynMenu PQ.PO\ (GNU\ gettext):po
-SynMenu PQ.Postfix\ main\ config:pfmain
-SynMenu PQ.PostScript.PostScript:postscr
-SynMenu PQ.PostScript.PostScript\ Printer\ Description:ppd
-SynMenu PQ.Povray.Povray\ scene\ descr:pov
-SynMenu PQ.Povray.Povray\ configuration:povini
-SynMenu PQ.PPWizard:ppwiz
-SynMenu PQ.Prescribe\ (Kyocera):prescribe
-SynMenu PQ.Printcap:pcap
-SynMenu PQ.Privoxy:privoxy
-SynMenu PQ.Procmail:procmail
-SynMenu PQ.Product\ Spec\ File:psf
-SynMenu PQ.Progress:progress
-SynMenu PQ.Prolog:prolog
-SynMenu PQ.ProMeLa:promela
-SynMenu PQ.Protocols:protocols
-SynMenu PQ.Purify\ log:purifylog
-SynMenu PQ.Pyrex:pyrex
-SynMenu PQ.Python:python
-SynMenu PQ.Quake:quake
-SynMenu PQ.Quickfix\ window:qf
-
-SynMenu R-Sg.R.R:r
-SynMenu R-Sg.R.R\ help:rhelp
-SynMenu R-Sg.R.R\ noweb:rnoweb
-SynMenu R-Sg.Racc\ input:racc
-SynMenu R-Sg.Radiance:radiance
-SynMenu R-Sg.Ratpoison:ratpoison
-SynMenu R-Sg.RCS.RCS\ log\ output:rcslog
-SynMenu R-Sg.RCS.RCS\ file:rcs
-SynMenu R-Sg.Readline\ config:readline
-SynMenu R-Sg.Rebol:rebol
-SynMenu R-Sg.Remind:remind
-SynMenu R-Sg.Relax\ NG\ compact:rnc
-SynMenu R-Sg.Renderman.Renderman\ Shader\ Lang:sl
-SynMenu R-Sg.Renderman.Renderman\ Interface\ Bytestream:rib
-SynMenu R-Sg.Resolv\.conf:resolv
-SynMenu R-Sg.Reva\ Forth:reva
-SynMenu R-Sg.Rexx:rexx
-SynMenu R-Sg.Robots\.txt:robots
-SynMenu R-Sg.RockLinux\ package\ desc\.:desc
-SynMenu R-Sg.Rpcgen:rpcgen
-SynMenu R-Sg.RPL/2:rpl
-SynMenu R-Sg.ReStructuredText:rst
-SynMenu R-Sg.RTF:rtf
-SynMenu R-Sg.Ruby:ruby
-SynMenu R-Sg.S-Lang:slang
-SynMenu R-Sg.Samba\ config:samba
-SynMenu R-Sg.SAS:sas
-SynMenu R-Sg.Sather:sather
-SynMenu R-Sg.Scheme:scheme
-SynMenu R-Sg.Scilab:scilab
-SynMenu R-Sg.Screen\ RC:screen
-SynMenu R-Sg.SDL:sdl
-SynMenu R-Sg.Sed:sed
-SynMenu R-Sg.Sendmail\.cf:sm
-SynMenu R-Sg.Send-pr:sendpr
-SynMenu R-Sg.Sensors\.conf:sensors
-SynMenu R-Sg.Service\ Location\ config:slpconf
-SynMenu R-Sg.Service\ Location\ registration:slpreg
-SynMenu R-Sg.Service\ Location\ SPI:slpspi
-SynMenu R-Sg.Services:services
-SynMenu R-Sg.Setserial\ config:setserial
-SynMenu R-Sg.SGML.SGML\ catalog:catalog
-SynMenu R-Sg.SGML.SGML\ DTD:sgml
-SynMenu R-Sg.SGML.SGML\ Declaration:sgmldecl
-SynMenu R-Sg.SGML.SGML-linuxdoc:sgmllnx
-
-SynMenu Sh-S.Shell\ script.sh\ and\ ksh:sh
-SynMenu Sh-S.Shell\ script.csh:csh
-SynMenu Sh-S.Shell\ script.tcsh:tcsh
-SynMenu Sh-S.Shell\ script.zsh:zsh
-SynMenu Sh-S.SiCAD:sicad
-SynMenu Sh-S.Sieve:sieve
-SynMenu Sh-S.Simula:simula
-SynMenu Sh-S.Sinda.Sinda\ compare:sindacmp
-SynMenu Sh-S.Sinda.Sinda\ input:sinda
-SynMenu Sh-S.Sinda.Sinda\ output:sindaout
-SynMenu Sh-S.SiSU:sisu
-SynMenu Sh-S.SKILL.SKILL:skill
-SynMenu Sh-S.SKILL.SKILL\ for\ Diva:diva
-SynMenu Sh-S.Slice:slice
-SynMenu Sh-S.SLRN.Slrn\ rc:slrnrc
-SynMenu Sh-S.SLRN.Slrn\ score:slrnsc
-SynMenu Sh-S.SmallTalk:st
-SynMenu Sh-S.Smarty\ Templates:smarty
-SynMenu Sh-S.SMIL:smil
-SynMenu Sh-S.SMITH:smith
-SynMenu Sh-S.SNMP\ MIB:mib
-SynMenu Sh-S.SNNS.SNNS\ network:snnsnet
-SynMenu Sh-S.SNNS.SNNS\ pattern:snnspat
-SynMenu Sh-S.SNNS.SNNS\ result:snnsres
-SynMenu Sh-S.Snobol4:snobol4
-SynMenu Sh-S.Snort\ Configuration:hog
-SynMenu Sh-S.SPEC\ (Linux\ RPM):spec
-SynMenu Sh-S.Specman:specman
-SynMenu Sh-S.Spice:spice
-SynMenu Sh-S.Spyce:spyce
-SynMenu Sh-S.Speedup:spup
-SynMenu Sh-S.Splint:splint
-SynMenu Sh-S.Squid\ config:squid
-SynMenu Sh-S.SQL.ESQL-C:esqlc
-SynMenu Sh-S.SQL.MySQL:mysql
-SynMenu Sh-S.SQL.PL/SQL:plsql
-SynMenu Sh-S.SQL.SQL\ Anywhere:sqlanywhere
-SynMenu Sh-S.SQL.SQL\ (automatic):sql
-SynMenu Sh-S.SQL.SQL\ (Oracle):sqloracle
-SynMenu Sh-S.SQL.SQL\ Forms:sqlforms
-SynMenu Sh-S.SQL.SQLJ:sqlj
-SynMenu Sh-S.SQL.SQL-Informix:sqlinformix
-SynMenu Sh-S.SQR:sqr
-SynMenu Sh-S.Ssh.ssh_config:sshconfig
-SynMenu Sh-S.Ssh.sshd_config:sshdconfig
-SynMenu Sh-S.Standard\ ML:sml
-SynMenu Sh-S.Stata.SMCL:smcl
-SynMenu Sh-S.Stata.Stata:stata
-SynMenu Sh-S.Stored\ Procedures:stp
-SynMenu Sh-S.Strace:strace
-SynMenu Sh-S.Streaming\ descriptor\ file:sd
-SynMenu Sh-S.Subversion\ commit:svn
-SynMenu Sh-S.Sudoers:sudoers
-SynMenu Sh-S.Symbian\ meta-makefile:mmp
-SynMenu Sh-S.Sysctl\.conf:sysctl
-
-SynMenu TUV.TADS:tads
-SynMenu TUV.Tags:tags
-SynMenu TUV.TAK.TAK\ compare:takcmp
-SynMenu TUV.TAK.TAK\ input:tak
-SynMenu TUV.TAK.TAK\ output:takout
-SynMenu TUV.Tcl/Tk:tcl
-SynMenu TUV.TealInfo:tli
-SynMenu TUV.Telix\ Salt:tsalt
-SynMenu TUV.Termcap/Printcap:ptcap
-SynMenu TUV.Terminfo:terminfo
-SynMenu TUV.TeX.TeX/LaTeX:tex
-SynMenu TUV.TeX.plain\ TeX:plaintex
-SynMenu TUV.TeX.ConTeXt:context
-SynMenu TUV.TeX.TeX\ configuration:texmf
-SynMenu TUV.TeX.Texinfo:texinfo
-SynMenu TUV.TF\ mud\ client:tf
-SynMenu TUV.Tidy\ configuration:tidy
-SynMenu TUV.Tilde:tilde
-SynMenu TUV.TPP:tpp
-SynMenu TUV.Trasys\ input:trasys
-SynMenu TUV.Trustees:trustees
-SynMenu TUV.TSS.Command\ Line:tsscl
-SynMenu TUV.TSS.Geometry:tssgm
-SynMenu TUV.TSS.Optics:tssop
-SynMenu TUV.Udev\ config:udevconf
-SynMenu TUV.Udev\ permissions:udevperm
-SynMenu TUV.Udev\ rules:udevrules
-SynMenu TUV.UIT/UIL:uil
-SynMenu TUV.UnrealScript:uc
-SynMenu TUV.Updatedb\.conf:updatedb
-SynMenu TUV.Valgrind:valgrind
-SynMenu TUV.Vera:vera
-SynMenu TUV.Verilog-AMS\ HDL:verilogams
-SynMenu TUV.Verilog\ HDL:verilog
-SynMenu TUV.Vgrindefs:vgrindefs
-SynMenu TUV.VHDL:vhdl
-SynMenu TUV.Vim.Vim\ help\ file:help
-SynMenu TUV.Vim.Vim\ script:vim
-SynMenu TUV.Vim.Viminfo\ file:viminfo
-SynMenu TUV.Virata\ config:virata
-SynMenu TUV.Visual\ Basic:vb
-SynMenu TUV.VOS\ CM\ macro:voscm
-SynMenu TUV.VRML:vrml
-SynMenu TUV.VSE\ JCL:vsejcl
-
-SynMenu WXYZ.WEB.CWEB:cweb
-SynMenu WXYZ.WEB.WEB:web
-SynMenu WXYZ.WEB.WEB\ Changes:change
-SynMenu WXYZ.Webmacro:webmacro
-SynMenu WXYZ.Website\ MetaLanguage:wml
-SynMenu WXYZ.wDiff:wdiff
-SynMenu WXYZ.Wget\ config:wget
-SynMenu WXYZ.Whitespace\ (add):whitespace
-SynMenu WXYZ.WildPackets\ EtherPeek\ Decoder:dcd
-SynMenu WXYZ.WinBatch/Webbatch:winbatch
-SynMenu WXYZ.Windows\ Scripting\ Host:wsh
-SynMenu WXYZ.WSML:wsml
-SynMenu WXYZ.WvDial:wvdial
-SynMenu WXYZ.X\ Keyboard\ Extension:xkb
-SynMenu WXYZ.X\ Pixmap:xpm
-SynMenu WXYZ.X\ Pixmap\ (2):xpm2
-SynMenu WXYZ.X\ resources:xdefaults
-SynMenu WXYZ.XBL:xbl
-SynMenu WXYZ.Xinetd\.conf:xinetd
-SynMenu WXYZ.Xmodmap:xmodmap
-SynMenu WXYZ.Xmath:xmath
-SynMenu WXYZ.XML:xml
-SynMenu WXYZ.XML\ Schema\ (XSD):xsd
-SynMenu WXYZ.XQuery:xquery
-SynMenu WXYZ.Xslt:xslt
-SynMenu WXYZ.XFree86\ Config:xf86conf
-SynMenu WXYZ.YAML:yaml
-SynMenu WXYZ.Yacc:yacc
-
-call append(s:lnum, "")
-
-wq
diff --git a/runtime/tutor/runtime/menu.vim b/runtime/tutor/runtime/menu.vim
deleted file mode 100644
index d120ce2..0000000
--- a/runtime/tutor/runtime/menu.vim
+++ /dev/null
@@ -1,1105 +0,0 @@
-" Vim support file to define the default menus
-" You can also use this as a start for your own set of menus.
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 Jun 16
-
-" Note that ":an" (short for ":anoremenu") is often used to make a menu work
-" in all modes and avoid side effects from mappings defined by the user.
-
-" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
-" <CR> would not be recognized.  See ":help 'cpoptions'".
-let s:cpo_save = &cpo
-set cpo&vim
-
-" Avoid installing the menus twice
-if !exists("did_install_default_menus")
-let did_install_default_menus = 1
-
-
-if exists("v:lang") || &langmenu != ""
-  " Try to find a menu translation file for the current language.
-  if &langmenu != ""
-    if &langmenu =~ "none"
-      let s:lang = ""
-    else
-      let s:lang = &langmenu
-    endif
-  else
-    let s:lang = v:lang
-  endif
-  " A language name must be at least two characters, don't accept "C"
-  if strlen(s:lang) > 1
-    " When the language does not include the charset add 'encoding'
-    if s:lang =~ '^\a\a$\|^\a\a_\a\a$'
-      let s:lang = s:lang . '.' . &enc
-    endif
-
-    " We always use a lowercase name.
-    " Change "iso-8859" to "iso_8859" and "iso8859" to "iso_8859", some
-    " systems appear to use this.
-    " Change spaces to underscores.
-    let s:lang = substitute(tolower(s:lang), '\.iso-', ".iso_", "")
-    let s:lang = substitute(s:lang, '\.iso8859', ".iso_8859", "")
-    let s:lang = substitute(s:lang, " ", "_", "g")
-    " Remove "@euro", otherwise "LC_ALL=de_DE@euro gvim" will show English menus
-    let s:lang = substitute(s:lang, "@euro", "", "")
-    " Change "iso_8859-1" and "iso_8859-15" to "latin1", we always use the
-    " same menu file for them.
-    let s:lang = substitute(s:lang, 'iso_8859-15\=$', "latin1", "")
-    menutrans clear
-    exe "runtime! lang/menu_" . s:lang . ".vim"
-
-    if !exists("did_menu_trans")
-      " There is no exact match, try matching with a wildcard added
-      " (e.g. find menu_de_de.iso_8859-1.vim if s:lang == de_DE).
-      let s:lang = substitute(s:lang, '\.[^.]*', "", "")
-      exe "runtime! lang/menu_" . s:lang . "[^a-z]*vim"
-
-      if !exists("did_menu_trans") && strlen($LANG) > 1 && s:lang !~ '^en_us'
-	" On windows locale names are complicated, try using $LANG, it might
-	" have been set by set_init_1().  But don't do this for "en" or "en_us".
-	" But don't match "slovak" when $LANG is "sl".
-	exe "runtime! lang/menu_" . tolower($LANG) . "[^a-z]*vim"
-      endif
-    endif
-  endif
-endif
-
-
-" Help menu
-an 9999.10 &Help.&Overview<Tab><F1>	:help<CR>
-an 9999.20 &Help.&User\ Manual		:help usr_toc<CR>
-an 9999.30 &Help.&How-to\ links		:help how-to<CR>
-an <silent> 9999.40 &Help.&Find\.\.\.	:call <SID>Helpfind()<CR>
-an 9999.45 &Help.-sep1-			<Nop>
-an 9999.50 &Help.&Credits		:help credits<CR>
-an 9999.60 &Help.Co&pying		:help copying<CR>
-an 9999.70 &Help.&Sponsor/Register	:help sponsor<CR>
-an 9999.70 &Help.O&rphans		:help kcc<CR>
-an 9999.75 &Help.-sep2-			<Nop>
-an 9999.80 &Help.&Version		:version<CR>
-an 9999.90 &Help.&About			:intro<CR>
-
-fun! s:Helpfind()
-  if !exists("g:menutrans_help_dialog")
-    let g:menutrans_help_dialog = "Enter a command or word to find help on:\n\nPrepend i_ for Input mode commands (e.g.: i_CTRL-X)\nPrepend c_ for command-line editing commands (e.g.: c_<Del>)\nPrepend ' for an option name (e.g.: 'shiftwidth')"
-  endif
-  let h = inputdialog(g:menutrans_help_dialog)
-  if h != ""
-    let v:errmsg = ""
-    silent! exe "help " . h
-    if v:errmsg != ""
-      echo v:errmsg
-    endif
-  endif
-endfun
-
-" File menu
-an 10.310 &File.&Open\.\.\.<Tab>:e		:browse confirm e<CR>
-an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp	:browse sp<CR>
-an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew	:browse tabnew<CR>
-an 10.325 &File.&New<Tab>:enew			:confirm enew<CR>
-an <silent> 10.330 &File.&Close<Tab>:close
-	\ :if winheight(2) < 0 <Bar>
-	\   confirm enew <Bar>
-	\ else <Bar>
-	\   confirm close <Bar>
-	\ endif<CR>
-an 10.335 &File.-SEP1-				<Nop>
-an <silent> 10.340 &File.&Save<Tab>:w		:if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
-an 10.350 &File.Save\ &As\.\.\.<Tab>:sav	:browse confirm saveas<CR>
-
-if has("diff")
-  an 10.400 &File.-SEP2-			<Nop>
-  an 10.410 &File.Split\ &Diff\ with\.\.\.	:browse vert diffsplit<CR>
-  an 10.420 &File.Split\ Patched\ &By\.\.\.	:browse vert diffpatch<CR>
-endif
-
-if has("printer")
-  an 10.500 &File.-SEP3-			<Nop>
-  an 10.510 &File.&Print			:hardcopy<CR>
-  vunmenu   &File.&Print
-  vnoremenu &File.&Print			:hardcopy<CR>
-elseif has("unix")
-  an 10.500 &File.-SEP3-			<Nop>
-  an 10.510 &File.&Print			:w !lpr<CR>
-  vunmenu   &File.&Print
-  vnoremenu &File.&Print			:w !lpr<CR>
-endif
-an 10.600 &File.-SEP4-				<Nop>
-an 10.610 &File.Sa&ve-Exit<Tab>:wqa		:confirm wqa<CR>
-an 10.620 &File.E&xit<Tab>:qa			:confirm qa<CR>
-
-func! <SID>SelectAll()
-  exe "norm gg" . (&slm == "" ? "VG" : "gH\<C-O>G")
-endfunc
-
-func! s:FnameEscape(fname)
-  if exists('*fnameescape')
-    return fnameescape(a:fname)
-  return escape(a:fname, " \t\n*?[{`$\\%#'\"|!<")
-endfunc
-
-" Edit menu
-an 20.310 &Edit.&Undo<Tab>u			u
-an 20.320 &Edit.&Redo<Tab>^R			<C-R>
-an 20.330 &Edit.Rep&eat<Tab>\.			.
-
-an 20.335 &Edit.-SEP1-				<Nop>
-vnoremenu 20.340 &Edit.Cu&t<Tab>"+x		"+x
-vnoremenu 20.350 &Edit.&Copy<Tab>"+y		"+y
-cnoremenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
-nnoremenu 20.360 &Edit.&Paste<Tab>"+gP		"+gP
-cnoremenu	 &Edit.&Paste<Tab>"+gP		<C-R>+
-exe 'vnoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['v']
-exe 'inoremenu <script> &Edit.&Paste<Tab>"+gP	' . paste#paste_cmd['i']
-nnoremenu 20.370 &Edit.Put\ &Before<Tab>[p	[p
-inoremenu	 &Edit.Put\ &Before<Tab>[p	<C-O>[p
-nnoremenu 20.380 &Edit.Put\ &After<Tab>]p	]p
-inoremenu	 &Edit.Put\ &After<Tab>]p	<C-O>]p
-if has("win32") || has("win16")
-  vnoremenu 20.390 &Edit.&Delete<Tab>x		x
-endif
-noremenu  <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	:<C-U>call <SID>SelectAll()<CR>
-inoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	<C-O>:call <SID>SelectAll()<CR>
-cnoremenu <script> <silent> 20.400 &Edit.&Select\ All<Tab>ggVG	<C-U>call <SID>SelectAll()<CR>
-
-an 20.405	 &Edit.-SEP2-				<Nop>
-if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
-  an 20.410	 &Edit.&Find\.\.\.			:promptfind<CR>
-  vunmenu	 &Edit.&Find\.\.\.
-  vnoremenu <silent>	 &Edit.&Find\.\.\.		y:promptfind <C-R>=<SID>FixFText()<CR><CR>
-  an 20.420	 &Edit.Find\ and\ Rep&lace\.\.\.	:promptrepl<CR>
-  vunmenu	 &Edit.Find\ and\ Rep&lace\.\.\.
-  vnoremenu <silent>	 &Edit.Find\ and\ Rep&lace\.\.\. y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
-else
-  an 20.410	 &Edit.&Find<Tab>/			/
-  an 20.420	 &Edit.Find\ and\ Rep&lace<Tab>:%s	:%s/
-  vunmenu	 &Edit.Find\ and\ Rep&lace<Tab>:%s
-  vnoremenu	 &Edit.Find\ and\ Rep&lace<Tab>:s	:s/
-endif
-
-an 20.425	 &Edit.-SEP3-				<Nop>
-an 20.430	 &Edit.Settings\ &Window		:options<CR>
-an 20.435	 &Edit.Startup\ &Settings		:call <SID>EditVimrc()<CR>
-
-fun! s:EditVimrc()
-  if $MYVIMRC != ''
-    let fname = "$MYVIMRC"
-  elseif has("win32") || has("dos32") || has("dos16") || has("os2")
-    if $HOME != ''
-      let fname = "$HOME/_vimrc"
-    else
-      let fname = "$VIM/_vimrc"
-    endif
-  elseif has("amiga")
-    let fname = "s:.vimrc"
-  else
-    let fname = "$HOME/.vimrc"
-  endif
-  let fname = s:FnameEscape(fname)
-  if &mod
-    exe "split " . fname
-  else
-    exe "edit " . fname
-  endif
-endfun
-
-fun! s:FixFText()
-  " Fix text in nameless register to be used with :promptfind.
-  return substitute(@", "[\r\n]", '\\n', 'g')
-endfun
-
-" Edit/Global Settings
-an 20.440.100 &Edit.&Global\ Settings.Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	:set hls! hls?<CR>
-an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Ignore-case<Tab>:set\ ic!	:set ic! ic?<CR>
-an 20.440.110 &Edit.&Global\ Settings.Toggle\ &Showmatch<Tab>:set\ sm!	:set sm! sm?<CR>
-
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 1\  :set so=1<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 2\  :set so=2<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 3\  :set so=3<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 4\  :set so=4<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 5\  :set so=5<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 7\  :set so=7<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 10\  :set so=10<CR>
-an 20.440.120 &Edit.&Global\ Settings.&Context\ lines.\ 100\  :set so=100<CR>
-
-an 20.440.130.40 &Edit.&Global\ Settings.&Virtual\ Edit.Never :set ve=<CR>
-an 20.440.130.50 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ Selection :set ve=block<CR>
-an 20.440.130.60 &Edit.&Global\ Settings.&Virtual\ Edit.Insert\ mode :set ve=insert<CR>
-an 20.440.130.70 &Edit.&Global\ Settings.&Virtual\ Edit.Block\ and\ Insert :set ve=block,insert<CR>
-an 20.440.130.80 &Edit.&Global\ Settings.&Virtual\ Edit.Always :set ve=all<CR>
-an 20.440.140 &Edit.&Global\ Settings.Toggle\ Insert\ &Mode<Tab>:set\ im!	:set im!<CR>
-an 20.440.145 &Edit.&Global\ Settings.Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	:set cp!<CR>
-an <silent> 20.440.150 &Edit.&Global\ Settings.Search\ &Path\.\.\.  :call <SID>SearchP()<CR>
-an <silent> 20.440.160 &Edit.&Global\ Settings.Ta&g\ Files\.\.\.  :call <SID>TagFiles()<CR>
-"
-" GUI options
-an 20.440.300 &Edit.&Global\ Settings.-SEP1-				<Nop>
-an <silent> 20.440.310 &Edit.&Global\ Settings.Toggle\ &Toolbar		:call <SID>ToggleGuiOption("T")<CR>
-an <silent> 20.440.320 &Edit.&Global\ Settings.Toggle\ &Bottom\ Scrollbar :call <SID>ToggleGuiOption("b")<CR>
-an <silent> 20.440.330 &Edit.&Global\ Settings.Toggle\ &Left\ Scrollbar	:call <SID>ToggleGuiOption("l")<CR>
-an <silent> 20.440.340 &Edit.&Global\ Settings.Toggle\ &Right\ Scrollbar :call <SID>ToggleGuiOption("r")<CR>
-
-fun! s:SearchP()
-  if !exists("g:menutrans_path_dialog")
-    let g:menutrans_path_dialog = "Enter search path for files.\nSeparate directory names with a comma."
-  endif
-  let n = inputdialog(g:menutrans_path_dialog, substitute(&path, '\\ ', ' ', 'g'))
-  if n != ""
-    let &path = substitute(n, ' ', '\\ ', 'g')
-  endif
-endfun
-
-fun! s:TagFiles()
-  if !exists("g:menutrans_tags_dialog")
-    let g:menutrans_tags_dialog = "Enter names of tag files.\nSeparate the names with a comma."
-  endif
-  let n = inputdialog(g:menutrans_tags_dialog, substitute(&tags, '\\ ', ' ', 'g'))
-  if n != ""
-    let &tags = substitute(n, ' ', '\\ ', 'g')
-  endif
-endfun
-
-fun! s:ToggleGuiOption(option)
-    " If a:option is already set in guioptions, then we want to remove it
-    if match(&guioptions, "\\C" . a:option) > -1
-	exec "set go-=" . a:option
-    else
-	exec "set go+=" . a:option
-    endif
-endfun
-
-" Edit/File Settings
-
-" Boolean options
-an 20.440.100 &Edit.F&ile\ Settings.Toggle\ Line\ &Numbering<Tab>:set\ nu!	:set nu! nu?<CR>
-an 20.440.110 &Edit.F&ile\ Settings.Toggle\ &List\ Mode<Tab>:set\ list!	:set list! list?<CR>
-an 20.440.120 &Edit.F&ile\ Settings.Toggle\ Line\ &Wrap<Tab>:set\ wrap!	:set wrap! wrap?<CR>
-an 20.440.130 &Edit.F&ile\ Settings.Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	:set lbr! lbr?<CR>
-an 20.440.160 &Edit.F&ile\ Settings.Toggle\ &expand-tab<Tab>:set\ et!	:set et! et?<CR>
-an 20.440.170 &Edit.F&ile\ Settings.Toggle\ &auto-indent<Tab>:set\ ai!	:set ai! ai?<CR>
-an 20.440.180 &Edit.F&ile\ Settings.Toggle\ &C-indenting<Tab>:set\ cin!	:set cin! cin?<CR>
-
-" other options
-an 20.440.600 &Edit.F&ile\ Settings.-SEP2-		<Nop>
-an 20.440.610.20 &Edit.F&ile\ Settings.&Shiftwidth.2	:set sw=2 sw?<CR>
-an 20.440.610.30 &Edit.F&ile\ Settings.&Shiftwidth.3	:set sw=3 sw?<CR>
-an 20.440.610.40 &Edit.F&ile\ Settings.&Shiftwidth.4	:set sw=4 sw?<CR>
-an 20.440.610.50 &Edit.F&ile\ Settings.&Shiftwidth.5	:set sw=5 sw?<CR>
-an 20.440.610.60 &Edit.F&ile\ Settings.&Shiftwidth.6	:set sw=6 sw?<CR>
-an 20.440.610.80 &Edit.F&ile\ Settings.&Shiftwidth.8	:set sw=8 sw?<CR>
-
-an 20.440.620.20 &Edit.F&ile\ Settings.Soft\ &Tabstop.2	:set sts=2 sts?<CR>
-an 20.440.620.30 &Edit.F&ile\ Settings.Soft\ &Tabstop.3	:set sts=3 sts?<CR>
-an 20.440.620.40 &Edit.F&ile\ Settings.Soft\ &Tabstop.4	:set sts=4 sts?<CR>
-an 20.440.620.50 &Edit.F&ile\ Settings.Soft\ &Tabstop.5	:set sts=5 sts?<CR>
-an 20.440.620.60 &Edit.F&ile\ Settings.Soft\ &Tabstop.6	:set sts=6 sts?<CR>
-an 20.440.620.80 &Edit.F&ile\ Settings.Soft\ &Tabstop.8	:set sts=8 sts?<CR>
-
-an <silent> 20.440.630 &Edit.F&ile\ Settings.Te&xt\ Width\.\.\.  :call <SID>TextWidth()<CR>
-an <silent> 20.440.640 &Edit.F&ile\ Settings.&File\ Format\.\.\.  :call <SID>FileFormat()<CR>
-fun! s:TextWidth()
-  if !exists("g:menutrans_textwidth_dialog")
-    let g:menutrans_textwidth_dialog = "Enter new text width (0 to disable formatting): "
-  endif
-  let n = inputdialog(g:menutrans_textwidth_dialog, &tw)
-  if n != ""
-    " remove leading zeros to avoid it being used as an octal number
-    let &tw = substitute(n, "^0*", "", "")
-  endif
-endfun
-
-fun! s:FileFormat()
-  if !exists("g:menutrans_fileformat_dialog")
-    let g:menutrans_fileformat_dialog = "Select format for writing the file"
-  endif
-  if !exists("g:menutrans_fileformat_choices")
-    let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Cancel"
-  endif
-  if &ff == "dos"
-    let def = 2
-  elseif &ff == "mac"
-    let def = 3
-  else
-    let def = 1
-  endif
-  let n = confirm(g:menutrans_fileformat_dialog, g:menutrans_fileformat_choices, def, "Question")
-  if n == 1
-    set ff=unix
-  elseif n == 2
-    set ff=dos
-  elseif n == 3
-    set ff=mac
-  endif
-endfun
-
-" Setup the Edit.Color Scheme submenu
-let s:n = globpath(&runtimepath, "colors/*.vim")
-let s:idx = 100
-while strlen(s:n) > 0
-  let s:i = stridx(s:n, "\n")
-  if s:i < 0
-    let s:name = s:n
-    let s:n = ""
-  else
-    let s:name = strpart(s:n, 0, s:i)
-    let s:n = strpart(s:n, s:i + 1, 19999)
-  endif
-  " Ignore case for VMS and windows
-  let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
-  exe "an 20.450." . s:idx . ' &Edit.C&olor\ Scheme.' . s:name . " :colors " . s:name . "<CR>"
-  unlet s:name
-  unlet s:i
-  let s:idx = s:idx + 10
-endwhile
-unlet s:n
-unlet s:idx
-
-" Setup the Edit.Keymap submenu
-if has("keymap")
-  let s:n = globpath(&runtimepath, "keymap/*.vim")
-  if s:n != ""
-    let s:idx = 100
-    an 20.460.90 &Edit.&Keymap.None :set keymap=<CR>
-    while strlen(s:n) > 0
-      let s:i = stridx(s:n, "\n")
-      if s:i < 0
-	let s:name = s:n
-	let s:n = ""
-      else
-	let s:name = strpart(s:n, 0, s:i)
-	let s:n = strpart(s:n, s:i + 1, 19999)
-      endif
-      " Ignore case for VMS and windows
-      let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:_]*\)\(_[0-9a-zA-Z-]*\)\=\.vim', '\1', '')
-      exe "an 20.460." . s:idx . ' &Edit.&Keymap.' . s:name . " :set keymap=" . s:name . "<CR>"
-      unlet s:name
-      unlet s:i
-      let s:idx = s:idx + 10
-    endwhile
-    unlet s:idx
-  endif
-  unlet s:n
-endif
-if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
-  an 20.470 &Edit.Select\ Fo&nt\.\.\.	:set guifont=*<CR>
-endif
-
-" Programming menu
-if !exists("g:ctags_command")
-  if has("vms")
-    let g:ctags_command = "mc vim:ctags *.*"
-  else
-    let g:ctags_command = "ctags -R ."
-  endif
-endif
-
-an 40.300 &Tools.&Jump\ to\ this\ tag<Tab>g^]	g<C-]>
-vunmenu &Tools.&Jump\ to\ this\ tag<Tab>g^]
-vnoremenu &Tools.&Jump\ to\ this\ tag<Tab>g^]	g<C-]>
-an 40.310 &Tools.Jump\ &back<Tab>^T		<C-T>
-an 40.320 &Tools.Build\ &Tags\ File		:exe "!" . g:ctags_command<CR>
-
-if has("folding") || has("spell")
-  an 40.330 &Tools.-SEP1-						<Nop>
-endif
-
-" Tools.Spelling Menu
-if has("spell")
-  an 40.335.110 &Tools.&Spelling.&Spell\ Check\ On		:set spell<CR>
-  an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off		:set nospell<CR>
-  an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s	]s
-  an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s	[s
-  an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z=	z=
-  an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall	:spellrepall<CR>
-  an 40.335.200 &Tools.&Spelling.-SEP1-				<Nop>
-  an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en"	:set spl=en spell<CR>
-  an 40.335.220 &Tools.&Spelling.Set\ language\ to\ "en_au"	:set spl=en_au spell<CR>
-  an 40.335.230 &Tools.&Spelling.Set\ language\ to\ "en_ca"	:set spl=en_ca spell<CR>
-  an 40.335.240 &Tools.&Spelling.Set\ language\ to\ "en_gb"	:set spl=en_gb spell<CR>
-  an 40.335.250 &Tools.&Spelling.Set\ language\ to\ "en_nz"	:set spl=en_nz spell<CR>
-  an 40.335.260 &Tools.&Spelling.Set\ language\ to\ "en_us"	:set spl=en_us spell<CR>
-  an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages	:call <SID>SpellLang()<CR>
-
-  let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
-  func! s:SpellLang()
-    for cmd in s:undo_spellang
-      exe "silent! " . cmd
-    endfor
-    let s:undo_spellang = []
-
-    if &enc == "iso-8859-15"
-      let enc = "latin1"
-    else
-      let enc = &enc
-    endif
-
-    let found = 0
-    let s = globpath(&rtp, "spell/*." . enc . ".spl")
-    if s != ""
-      let n = 300
-      for f in split(s, "\n")
-	let nm = substitute(f, '.*spell[/\\]\(..\)\.[^/\\]*\.spl', '\1', "")
-	if nm != "en" && nm !~ '/'
-	  let found += 1
-	  let menuname = '&Tools.&Spelling.Set\ language\ to\ "' . nm . '"'
-	  exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
-	  let s:undo_spellang += ['aun ' . menuname]
-	endif
-	let n += 10
-      endfor
-    endif
-    if found == 0
-      echomsg "Could not find other spell files"
-    elseif found == 1
-      echomsg "Found spell file " . nm
-    else
-      echomsg "Found " . found . " more spell files"
-    endif
-    " Need to redo this when 'encoding' is changed.
-    augroup spellmenu
-    au! EncodingChanged * call <SID>SpellLang()
-    augroup END
-  endfun
-
-endif
-
-" Tools.Fold Menu
-if has("folding")
-  " open close folds
-  an 40.340.110 &Tools.&Folding.&Enable/Disable\ folds<Tab>zi		zi
-  an 40.340.120 &Tools.&Folding.&View\ Cursor\ Line<Tab>zv		zv
-  an 40.340.120 &Tools.&Folding.Vie&w\ Cursor\ Line\ only<Tab>zMzx	zMzx
-  an 40.340.130 &Tools.&Folding.C&lose\ more\ folds<Tab>zm		zm
-  an 40.340.140 &Tools.&Folding.&Close\ all\ folds<Tab>zM		zM
-  an 40.340.150 &Tools.&Folding.O&pen\ more\ folds<Tab>zr		zr
-  an 40.340.160 &Tools.&Folding.&Open\ all\ folds<Tab>zR		zR
-  " fold method
-  an 40.340.200 &Tools.&Folding.-SEP1-			<Nop>
-  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.M&anual	:set fdm=manual<CR>
-  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.I&ndent	:set fdm=indent<CR>
-  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.E&xpression :set fdm=expr<CR>
-  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.S&yntax	:set fdm=syntax<CR>
-  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.&Diff	:set fdm=diff<CR>
-  an 40.340.210 &Tools.&Folding.Fold\ Met&hod.Ma&rker	:set fdm=marker<CR>
-  " create and delete folds
-  vnoremenu 40.340.220 &Tools.&Folding.Create\ &Fold<Tab>zf	zf
-  an 40.340.230 &Tools.&Folding.&Delete\ Fold<Tab>zd		zd
-  an 40.340.240 &Tools.&Folding.Delete\ &All\ Folds<Tab>zD	zD
-  " moving around in folds
-  an 40.340.300 &Tools.&Folding.-SEP2-				<Nop>
-  an 40.340.310.10 &Tools.&Folding.Fold\ col&umn\ width.\ &0\ 	:set fdc=0<CR>
-  an 40.340.310.20 &Tools.&Folding.Fold\ col&umn\ width.\ &2\ 	:set fdc=2<CR>
-  an 40.340.310.30 &Tools.&Folding.Fold\ col&umn\ width.\ &3\ 	:set fdc=3<CR>
-  an 40.340.310.40 &Tools.&Folding.Fold\ col&umn\ width.\ &4\ 	:set fdc=4<CR>
-  an 40.340.310.50 &Tools.&Folding.Fold\ col&umn\ width.\ &5\ 	:set fdc=5<CR>
-  an 40.340.310.60 &Tools.&Folding.Fold\ col&umn\ width.\ &6\ 	:set fdc=6<CR>
-  an 40.340.310.70 &Tools.&Folding.Fold\ col&umn\ width.\ &7\ 	:set fdc=7<CR>
-  an 40.340.310.80 &Tools.&Folding.Fold\ col&umn\ width.\ &8\ 	:set fdc=8<CR>
-endif  " has folding
-
-if has("diff")
-  an 40.350.100 &Tools.&Diff.&Update		:diffupdate<CR>
-  an 40.350.110 &Tools.&Diff.&Get\ Block	:diffget<CR>
-  vunmenu &Tools.&Diff.&Get\ Block
-  vnoremenu &Tools.&Diff.&Get\ Block		:diffget<CR>
-  an 40.350.120 &Tools.&Diff.&Put\ Block	:diffput<CR>
-  vunmenu &Tools.&Diff.&Put\ Block
-  vnoremenu &Tools.&Diff.&Put\ Block		:diffput<CR>
-endif
-
-an 40.358 &Tools.-SEP2-					<Nop>
-an 40.360 &Tools.&Make<Tab>:make			:make<CR>
-an 40.370 &Tools.&List\ Errors<Tab>:cl			:cl<CR>
-an 40.380 &Tools.L&ist\ Messages<Tab>:cl!		:cl!<CR>
-an 40.390 &Tools.&Next\ Error<Tab>:cn			:cn<CR>
-an 40.400 &Tools.&Previous\ Error<Tab>:cp		:cp<CR>
-an 40.410 &Tools.&Older\ List<Tab>:cold			:colder<CR>
-an 40.420 &Tools.N&ewer\ List<Tab>:cnew			:cnewer<CR>
-an 40.430.50 &Tools.Error\ &Window.&Update<Tab>:cwin	:cwin<CR>
-an 40.430.60 &Tools.Error\ &Window.&Open<Tab>:copen	:copen<CR>
-an 40.430.70 &Tools.Error\ &Window.&Close<Tab>:cclose	:cclose<CR>
-
-an 40.520 &Tools.-SEP3-					<Nop>
-an <silent> 40.530 &Tools.&Convert\ to\ HEX<Tab>:%!xxd
-	\ :call <SID>XxdConv()<CR>
-an <silent> 40.540 &Tools.Conve&rt\ back<Tab>:%!xxd\ -r
-	\ :call <SID>XxdBack()<CR>
-
-" Use a function to do the conversion, so that it also works with 'insertmode'
-" set.
-func! s:XxdConv()
-  let mod = &mod
-  if has("vms")
-    %!mc vim:xxd
-  else
-    call s:XxdFind()
-    exe '%!"' . g:xxdprogram . '"'
-  endif
-  if getline(1) =~ "^0000000:"		" only if it worked
-    set ft=xxd
-  endif
-  let &mod = mod
-endfun
-
-func! s:XxdBack()
-  let mod = &mod
-  if has("vms")
-    %!mc vim:xxd -r
-  else
-    call s:XxdFind()
-    exe '%!"' . g:xxdprogram . '" -r'
-  endif
-  set ft=
-  doautocmd filetypedetect BufReadPost
-  let &mod = mod
-endfun
-
-func! s:XxdFind()
-  if !exists("g:xxdprogram")
-    " On the PC xxd may not be in the path but in the install directory
-    if (has("win32") || has("dos32")) && !executable("xxd")
-      let g:xxdprogram = $VIMRUNTIME . (&shellslash ? '/' : '\') . "xxd.exe"
-    else
-      let g:xxdprogram = "xxd"
-    endif
-  endif
-endfun
-
-" Setup the Tools.Compiler submenu
-let s:n = globpath(&runtimepath, "compiler/*.vim")
-let s:idx = 100
-while strlen(s:n) > 0
-  let s:i = stridx(s:n, "\n")
-  if s:i < 0
-    let s:name = s:n
-    let s:n = ""
-  else
-    let s:name = strpart(s:n, 0, s:i)
-    let s:n = strpart(s:n, s:i + 1, 19999)
-  endif
-  " Ignore case for VMS and windows
-  let s:name = substitute(s:name, '\c.*[/\\:\]]\([^/\\:]*\)\.vim', '\1', '')
-  exe "an 30.440." . s:idx . ' &Tools.Se&T\ Compiler.' . s:name . " :compiler " . s:name . "<CR>"
-  unlet s:name
-  unlet s:i
-  let s:idx = s:idx + 10
-endwhile
-unlet s:n
-unlet s:idx
-
-if !exists("no_buffers_menu")
-
-" Buffer list menu -- Setup functions & actions
-
-" wait with building the menu until after loading 'session' files. Makes
-" startup faster.
-let s:bmenu_wait = 1
-
-if !exists("bmenu_priority")
-  let bmenu_priority = 60
-endif
-
-func! s:BMAdd()
-  if s:bmenu_wait == 0
-    " when adding too many buffers, redraw in short format
-    if s:bmenu_count == &menuitems && s:bmenu_short == 0
-      call s:BMShow()
-    else
-      call <SID>BMFilename(expand("<afile>"), expand("<abuf>"))
-      let s:bmenu_count = s:bmenu_count + 1
-    endif
-  endif
-endfunc
-
-func! s:BMRemove()
-  if s:bmenu_wait == 0
-    let name = expand("<afile>")
-    if isdirectory(name)
-      return
-    endif
-    let munge = <SID>BMMunge(name, expand("<abuf>"))
-
-    if s:bmenu_short == 0
-      exe 'silent! aun &Buffers.' . munge
-    else
-      exe 'silent! aun &Buffers.' . <SID>BMHash2(munge) . munge
-    endif
-    let s:bmenu_count = s:bmenu_count - 1
-  endif
-endfunc
-
-" Create the buffer menu (delete an existing one first).
-func! s:BMShow(...)
-  let s:bmenu_wait = 1
-  let s:bmenu_short = 1
-  let s:bmenu_count = 0
-  "
-  " get new priority, if exists
-  if a:0 == 1
-    let g:bmenu_priority = a:1
-  endif
-
-  " remove old menu, if exists; keep one entry to avoid a torn off menu to
-  " disappear.
-  silent! unmenu &Buffers
-  exe 'noremenu ' . g:bmenu_priority . ".1 &Buffers.Dummy l"
-  silent! unmenu! &Buffers
-
-  " create new menu; set 'cpo' to include the <CR>
-  let cpo_save = &cpo
-  set cpo&vim
-  exe 'an <silent> ' . g:bmenu_priority . ".2 &Buffers.&Refresh\\ menu :call <SID>BMShow()<CR>"
-  exe 'an ' . g:bmenu_priority . ".4 &Buffers.&Delete :confirm bd<CR>"
-  exe 'an ' . g:bmenu_priority . ".6 &Buffers.&Alternate :confirm b #<CR>"
-  exe 'an ' . g:bmenu_priority . ".7 &Buffers.&Next :confirm bnext<CR>"
-  exe 'an ' . g:bmenu_priority . ".8 &Buffers.&Previous :confirm bprev<CR>"
-  exe 'an ' . g:bmenu_priority . ".9 &Buffers.-SEP- :"
-  let &cpo = cpo_save
-  unmenu &Buffers.Dummy
-
-  " figure out how many buffers there are
-  let buf = 1
-  while buf <= bufnr('$')
-    if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
-      let s:bmenu_count = s:bmenu_count + 1
-    endif
-    let buf = buf + 1
-  endwhile
-  if s:bmenu_count <= &menuitems
-    let s:bmenu_short = 0
-  endif
-
-  " iterate through buffer list, adding each buffer to the menu:
-  let buf = 1
-  while buf <= bufnr('$')
-    if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
-      call <SID>BMFilename(bufname(buf), buf)
-    endif
-    let buf = buf + 1
-  endwhile
-  let s:bmenu_wait = 0
-  aug buffer_list
-  au!
-  au BufCreate,BufFilePost * call <SID>BMAdd()
-  au BufDelete,BufFilePre * call <SID>BMRemove()
-  aug END
-endfunc
-
-func! s:BMHash(name)
-  " Make name all upper case, so that chars are between 32 and 96
-  let nm = substitute(a:name, ".*", '\U\0', "")
-  if has("ebcdic")
-    " HACK: Replace all non alphabetics with 'Z'
-    "       Just to make it work for now.
-    let nm = substitute(nm, "[^A-Z]", 'Z', "g")
-    let sp = char2nr('A') - 1
-  else
-    let sp = char2nr(' ')
-  endif
-  " convert first six chars into a number for sorting:
-  return (char2nr(nm[0]) - sp) * 0x800000 + (char2nr(nm[1]) - sp) * 0x20000 + (char2nr(nm[2]) - sp) * 0x1000 + (char2nr(nm[3]) - sp) * 0x80 + (char2nr(nm[4]) - sp) * 0x20 + (char2nr(nm[5]) - sp)
-endfunc
-
-func! s:BMHash2(name)
-  let nm = substitute(a:name, ".", '\L\0', "")
-  " Not exactly right for EBCDIC...
-  if nm[0] < 'a' || nm[0] > 'z'
-    return '&others.'
-  elseif nm[0] <= 'd'
-    return '&abcd.'
-  elseif nm[0] <= 'h'
-    return '&efgh.'
-  elseif nm[0] <= 'l'
-    return '&ijkl.'
-  elseif nm[0] <= 'p'
-    return '&mnop.'
-  elseif nm[0] <= 't'
-    return '&qrst.'
-  else
-    return '&u-z.'
-  endif
-endfunc
-
-" insert a buffer name into the buffer menu:
-func! s:BMFilename(name, num)
-  if isdirectory(a:name)
-    return
-  endif
-  let munge = <SID>BMMunge(a:name, a:num)
-  let hash = <SID>BMHash(munge)
-  if s:bmenu_short == 0
-    let name = 'an ' . g:bmenu_priority . '.' . hash . ' &Buffers.' . munge
-  else
-    let name = 'an ' . g:bmenu_priority . '.' . hash . '.' . hash . ' &Buffers.' . <SID>BMHash2(munge) . munge
-  endif
-  " set 'cpo' to include the <CR>
-  let cpo_save = &cpo
-  set cpo&vim
-  exe name . ' :confirm b' . a:num . '<CR>'
-  let &cpo = cpo_save
-endfunc
-
-" Truncate a long path to fit it in a menu item.
-if !exists("g:bmenu_max_pathlen")
-  let g:bmenu_max_pathlen = 35
-endif
-func! s:BMTruncName(fname)
-  let name = a:fname
-  if g:bmenu_max_pathlen < 5
-    let name = ""
-  else
-    let len = strlen(name)
-    if len > g:bmenu_max_pathlen
-      let amountl = (g:bmenu_max_pathlen / 2) - 2
-      let amountr = g:bmenu_max_pathlen - amountl - 3
-      let pattern = '^\(.\{,' . amountl . '}\).\{-}\(.\{,' . amountr . '}\)$'
-      let left = substitute(name, pattern, '\1', '')
-      let right = substitute(name, pattern, '\2', '')
-      if strlen(left) + strlen(right) < len
-	let name = left . '...' . right
-      endif
-    endif
-  endif
-  return name
-endfunc
-
-func! s:BMMunge(fname, bnum)
-  let name = a:fname
-  if name == ''
-    if !exists("g:menutrans_no_file")
-      let g:menutrans_no_file = "[No file]"
-    endif
-    let name = g:menutrans_no_file
-  else
-    let name = fnamemodify(name, ':p:~')
-  endif
-  " detach file name and separate it out:
-  let name2 = fnamemodify(name, ':t')
-  if a:bnum >= 0
-    let name2 = name2 . ' (' . a:bnum . ')'
-  endif
-  let name = name2 . "\t" . <SID>BMTruncName(fnamemodify(name,':h'))
-  let name = escape(name, "\\. \t|")
-  let name = substitute(name, "&", "&&", "g")
-  let name = substitute(name, "\n", "^@", "g")
-  return name
-endfunc
-
-" When just starting Vim, load the buffer menu later
-if has("vim_starting")
-  augroup LoadBufferMenu
-    au! VimEnter * if !exists("no_buffers_menu") | call <SID>BMShow() | endif
-    au  VimEnter * au! LoadBufferMenu
-  augroup END
-else
-  call <SID>BMShow()
-endif
-
-endif " !exists("no_buffers_menu")
-
-" Window menu
-an 70.300 &Window.&New<Tab>^Wn			<C-W>n
-an 70.310 &Window.S&plit<Tab>^Ws		<C-W>s
-an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^	<C-W><C-^>
-an 70.330 &Window.Split\ &Vertically<Tab>^Wv	<C-W>v
-if has("vertsplit")
-  an <silent> 70.332 &Window.Split\ File\ E&xplorer	:call MenuExplOpen()<CR>
-  if !exists("*MenuExplOpen")
-    fun MenuExplOpen()
-      if @% == ""
-	20vsp .
-      else
-	exe "20vsp " . s:FnameEscape(expand("%:p:h"))
-      endif
-    endfun
-  endif
-endif
-an 70.335 &Window.-SEP1-				<Nop>
-an 70.340 &Window.&Close<Tab>^Wc			:confirm close<CR>
-an 70.345 &Window.Close\ &Other(s)<Tab>^Wo		:confirm only<CR>
-an 70.350 &Window.-SEP2-				<Nop>
-an 70.355 &Window.Move\ &To.&Top<Tab>^WK		<C-W>K
-an 70.355 &Window.Move\ &To.&Bottom<Tab>^WJ		<C-W>J
-an 70.355 &Window.Move\ &To.&Left\ side<Tab>^WH		<C-W>H
-an 70.355 &Window.Move\ &To.&Right\ side<Tab>^WL	<C-W>L
-an 70.360 &Window.Rotate\ &Up<Tab>^WR			<C-W>R
-an 70.362 &Window.Rotate\ &Down<Tab>^Wr			<C-W>r
-an 70.365 &Window.-SEP3-				<Nop>
-an 70.370 &Window.&Equal\ Size<Tab>^W=			<C-W>=
-an 70.380 &Window.&Max\ Height<Tab>^W_			<C-W>_
-an 70.390 &Window.M&in\ Height<Tab>^W1_			<C-W>1_
-an 70.400 &Window.Max\ &Width<Tab>^W\|			<C-W>\|
-an 70.410 &Window.Min\ Widt&h<Tab>^W1\|			<C-W>1\|
-
-" The popup menu
-an 1.10 PopUp.&Undo			u
-an 1.15 PopUp.-SEP1-			<Nop>
-vnoremenu 1.20 PopUp.Cu&t		"+x
-vnoremenu 1.30 PopUp.&Copy		"+y
-cnoremenu 1.30 PopUp.&Copy		<C-Y>
-nnoremenu 1.40 PopUp.&Paste		"+gP
-cnoremenu 1.40 PopUp.&Paste		<C-R>+
-exe 'vnoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['v']
-exe 'inoremenu <script> 1.40 PopUp.&Paste	' . paste#paste_cmd['i']
-vnoremenu 1.50 PopUp.&Delete		x
-an 1.55 PopUp.-SEP2-			<Nop>
-vnoremenu 1.60 PopUp.Select\ Blockwise	<C-V>
-
-nnoremenu 1.70 PopUp.Select\ &Word	vaw
-onoremenu 1.70 PopUp.Select\ &Word	aw
-vnoremenu 1.70 PopUp.Select\ &Word	<C-C>vaw
-inoremenu 1.70 PopUp.Select\ &Word	<C-O>vaw
-cnoremenu 1.70 PopUp.Select\ &Word	<C-C>vaw
-
-nnoremenu 1.73 PopUp.Select\ &Sentence	vas
-onoremenu 1.73 PopUp.Select\ &Sentence	as
-vnoremenu 1.73 PopUp.Select\ &Sentence	<C-C>vas
-inoremenu 1.73 PopUp.Select\ &Sentence	<C-O>vas
-cnoremenu 1.73 PopUp.Select\ &Sentence	<C-C>vas
-
-nnoremenu 1.77 PopUp.Select\ Pa&ragraph	vap
-onoremenu 1.77 PopUp.Select\ Pa&ragraph	ap
-vnoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-C>vap
-inoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-O>vap
-cnoremenu 1.77 PopUp.Select\ Pa&ragraph	<C-C>vap
-
-nnoremenu 1.80 PopUp.Select\ &Line	V
-onoremenu 1.80 PopUp.Select\ &Line	<C-C>V
-vnoremenu 1.80 PopUp.Select\ &Line	<C-C>V
-inoremenu 1.80 PopUp.Select\ &Line	<C-O>V
-cnoremenu 1.80 PopUp.Select\ &Line	<C-C>V
-
-nnoremenu 1.90 PopUp.Select\ &Block	<C-V>
-onoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
-vnoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
-inoremenu 1.90 PopUp.Select\ &Block	<C-O><C-V>
-cnoremenu 1.90 PopUp.Select\ &Block	<C-C><C-V>
-
-noremenu  <script> <silent> 1.100 PopUp.Select\ &All	:<C-U>call <SID>SelectAll()<CR>
-inoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-O>:call <SID>SelectAll()<CR>
-cnoremenu <script> <silent> 1.100 PopUp.Select\ &All	<C-U>call <SID>SelectAll()<CR>
-
-if has("spell")
-  " Spell suggestions in the popup menu.  Note that this will slow down the
-  " appearance of the menu!
-  func! <SID>SpellPopup()
-    if exists("s:changeitem") && s:changeitem != ''
-      call <SID>SpellDel()
-    endif
-
-    " Return quickly if spell checking is not enabled.
-    if !&spell || &spelllang == ''
-      return
-    endif
-
-    let curcol = col('.')
-    let [w, a] = spellbadword()
-    if col('.') > curcol		" don't use word after the cursor
-      let w = ''
-      call cursor(0, curcol)	" put the cursor back where it was
-    endif
-    if w != ''
-      if a == 'caps'
-	let s:suglist = [substitute(w, '.*', '\u&', '')]
-      else
-	let s:suglist = spellsuggest(w, 10)
-      endif
-      if len(s:suglist) <= 0
-	call cursor(0, curcol)	" put the cursor back where it was
-      else
-	let s:changeitem = 'change\ "' . escape(w, ' .'). '"\ to'
-	let s:fromword = w
-	let pri = 1
-	for sug in s:suglist
-	  exe 'anoremenu 1.5.' . pri . ' PopUp.' . s:changeitem . '.' . escape(sug, ' .')
-		\ . ' :call <SID>SpellReplace(' . pri . ')<CR>'
-	  let pri += 1
-	endfor
-
-	let s:additem = 'add\ "' . escape(w, ' .') . '"\ to\ word\ list'
-	exe 'anoremenu 1.6 PopUp.' . s:additem . ' :spellgood ' . w . '<CR>'
-
-	let s:ignoreitem = 'ignore\ "' . escape(w, ' .') . '"'
-	exe 'anoremenu 1.7 PopUp.' . s:ignoreitem . ' :spellgood! ' . w . '<CR>'
-
-	anoremenu 1.8 PopUp.-SpellSep- :
-      endif
-    endif
-  endfunc
-
-  func! <SID>SpellReplace(n)
-    let l = getline('.')
-    call setline('.', strpart(l, 0, col('.') - 1) . s:suglist[a:n - 1]
-	  \ . strpart(l, col('.') + len(s:fromword) - 1))
-  endfunc
-
-  func! <SID>SpellDel()
-    exe "aunmenu PopUp." . s:changeitem
-    exe "aunmenu PopUp." . s:additem
-    exe "aunmenu PopUp." . s:ignoreitem
-    aunmenu PopUp.-SpellSep-
-    let s:changeitem = ''
-  endfun
-
-  augroup SpellPopupMenu
-    au! MenuPopup * call <SID>SpellPopup()
-  augroup END
-endif
-
-" The GUI toolbar (for MS-Windows and GTK)
-if has("toolbar")
-  an 1.10 ToolBar.Open			:browse confirm e<CR>
-  an <silent> 1.20 ToolBar.Save		:if expand("%") == ""<Bar>browse confirm w<Bar>else<Bar>confirm w<Bar>endif<CR>
-  an 1.30 ToolBar.SaveAll		:browse confirm wa<CR>
-
-  if has("printer")
-    an 1.40   ToolBar.Print		:hardcopy<CR>
-    vunmenu   ToolBar.Print
-    vnoremenu ToolBar.Print		:hardcopy<CR>
-  elseif has("unix")
-    an 1.40   ToolBar.Print		:w !lpr<CR>
-    vunmenu   ToolBar.Print
-    vnoremenu ToolBar.Print		:w !lpr<CR>
-  endif
-
-  an 1.45 ToolBar.-sep1-		<Nop>
-  an 1.50 ToolBar.Undo			u
-  an 1.60 ToolBar.Redo			<C-R>
-
-  an 1.65 ToolBar.-sep2-		<Nop>
-  vnoremenu 1.70 ToolBar.Cut		"+x
-  vnoremenu 1.80 ToolBar.Copy		"+y
-  cnoremenu 1.80 ToolBar.Copy		<C-Y>
-  nnoremenu 1.90 ToolBar.Paste		"+gP
-  cnoremenu	 ToolBar.Paste		<C-R>+
-  exe 'vnoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['v']
-  exe 'inoremenu <script>	 ToolBar.Paste	' . paste#paste_cmd['i']
-
-  if !has("gui_athena")
-    an 1.95   ToolBar.-sep3-		<Nop>
-    an 1.100  ToolBar.Replace		:promptrepl<CR>
-    vunmenu   ToolBar.Replace
-    vnoremenu ToolBar.Replace		y:promptrepl <C-R>=<SID>FixFText()<CR><CR>
-    an 1.110  ToolBar.FindNext		n
-    an 1.120  ToolBar.FindPrev		N
-  endif
-
-  an 1.215 ToolBar.-sep5-		<Nop>
-  an <silent> 1.220 ToolBar.LoadSesn	:call <SID>LoadVimSesn()<CR>
-  an <silent> 1.230 ToolBar.SaveSesn	:call <SID>SaveVimSesn()<CR>
-  an 1.240 ToolBar.RunScript		:browse so<CR>
-
-  an 1.245 ToolBar.-sep6-		<Nop>
-  an 1.250 ToolBar.Make			:make<CR>
-  an 1.270 ToolBar.RunCtags		:exe "!" . g:ctags_command<CR>
-  an 1.280 ToolBar.TagJump		g<C-]>
-
-  an 1.295 ToolBar.-sep7-		<Nop>
-  an 1.300 ToolBar.Help			:help<CR>
-  an <silent> 1.310 ToolBar.FindHelp	:call <SID>Helpfind()<CR>
-
-" Only set the tooltips here if not done in a language menu file
-if exists("*Do_toolbar_tmenu")
-  call Do_toolbar_tmenu()
-else
-  let did_toolbar_tmenu = 1
-  tmenu ToolBar.Open		Open file
-  tmenu ToolBar.Save		Save current file
-  tmenu ToolBar.SaveAll		Save all files
-  tmenu ToolBar.Print		Print
-  tmenu ToolBar.Undo		Undo
-  tmenu ToolBar.Redo		Redo
-  tmenu ToolBar.Cut		Cut to clipboard
-  tmenu ToolBar.Copy		Copy to clipboard
-  tmenu ToolBar.Paste		Paste from Clipboard
-  if !has("gui_athena")
-    tmenu ToolBar.Find		Find...
-    tmenu ToolBar.FindNext	Find Next
-    tmenu ToolBar.FindPrev	Find Previous
-    tmenu ToolBar.Replace		Find / Replace...
-  endif
-  tmenu ToolBar.LoadSesn	Choose a session to load
-  tmenu ToolBar.SaveSesn	Save current session
-  tmenu ToolBar.RunScript	Choose a Vim Script to run
-  tmenu ToolBar.Make		Make current project (:make)
-  tmenu ToolBar.RunCtags	Build tags in current directory tree (!ctags -R .)
-  tmenu ToolBar.TagJump		Jump to tag under cursor
-  tmenu ToolBar.Help		Vim Help
-  tmenu ToolBar.FindHelp	Search Vim Help
-endif
-
-" Select a session to load; default to current session name if present
-fun! s:LoadVimSesn()
-  if strlen(v:this_session) > 0
-    let name = s:FnameEscape(v:this_session)
-  else
-    let name = "Session.vim"
-  endif
-  execute "browse so " . name
-endfun
-
-" Select a session to save; default to current session name if present
-fun! s:SaveVimSesn()
-  if strlen(v:this_session) == 0
-    let v:this_session = "Session.vim"
-  endif
-  execute "browse mksession! " . s:FnameEscape(v:this_session)
-endfun
-
-endif
-
-endif " !exists("did_install_default_menus")
-
-" Define these items always, so that syntax can be switched on when it wasn't.
-" But skip them when the Syntax menu was disabled by the user.
-if !exists("did_install_syntax_menu")
-  an 50.212 &Syntax.&Manual		:syn manual<CR>
-  an 50.214 &Syntax.A&utomatic		:syn on<CR>
-  an <silent> 50.216 &Syntax.on/off\ for\ &This\ file :call <SID>SynOnOff()<CR>
-  if !exists("*s:SynOnOff")
-    fun s:SynOnOff()
-      if has("syntax_items")
-	syn clear
-      else
-	if !exists("g:syntax_on")
-	  syn manual
-	endif
-	set syn=ON
-      endif
-    endfun
-  endif
-endif
-
-
-" Install the Syntax menu only when filetype.vim has been loaded or when
-" manual syntax highlighting is enabled.
-" Avoid installing the Syntax menu twice.
-if (exists("did_load_filetypes") || exists("syntax_on"))
-	\ && !exists("did_install_syntax_menu")
-  let did_install_syntax_menu = 1
-
-" Skip setting up the individual syntax selection menus unless
-" do_syntax_sel_menu is defined (it takes quite a bit of time).
-if exists("do_syntax_sel_menu")
-  runtime! synmenu.vim
-else
-  an 50.10 &Syntax.&Show\ filetypes\ in\ menu	:let do_syntax_sel_menu = 1<Bar>runtime! synmenu.vim<Bar>aunmenu &Syntax.&Show\ filetypes\ in\ menu<CR>
-  an 50.195 &Syntax.-SEP1-		<Nop>
-endif
-
-an 50.210 &Syntax.&Off			:syn off<CR>
-an 50.700 &Syntax.-SEP3-		<Nop>
-an 50.710 &Syntax.Co&lor\ test		:sp $VIMRUNTIME/syntax/colortest.vim<Bar>so %<CR>
-an 50.720 &Syntax.&Highlight\ test	:runtime syntax/hitest.vim<CR>
-an 50.730 &Syntax.&Convert\ to\ HTML	:runtime syntax/2html.vim<CR>
-
-endif " !exists("did_install_syntax_menu")
-
-" Restore the previous value of 'cpoptions'.
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim: set sw=2 :
diff --git a/runtime/tutor/runtime/mswin.vim b/runtime/tutor/runtime/mswin.vim
deleted file mode 100644
index 1ceef84..0000000
--- a/runtime/tutor/runtime/mswin.vim
+++ /dev/null
@@ -1,106 +0,0 @@
-" Set options and add mapping such that Vim behaves a lot like MS-Windows
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2006 Apr 02
-
-" bail out if this isn't wanted (mrsvim.vim uses this).
-if exists("g:skip_loading_mswin") && g:skip_loading_mswin
-  finish
-endif
-
-" set the 'cpoptions' to its Vim default
-if 1	" only do this when compiled with expression evaluation
-  let s:save_cpo = &cpoptions
-endif
-set cpo&vim
-
-" set 'selection', 'selectmode', 'mousemodel' and 'keymodel' for MS-Windows
-behave mswin
-
-" backspace and cursor keys wrap to previous/next line
-set backspace=indent,eol,start whichwrap+=<,>,[,]
-
-" backspace in Visual mode deletes selection
-vnoremap <BS> d
-
-" CTRL-X and SHIFT-Del are Cut
-vnoremap <C-X> "+x
-vnoremap <S-Del> "+x
-
-" CTRL-C and CTRL-Insert are Copy
-vnoremap <C-C> "+y
-vnoremap <C-Insert> "+y
-
-" CTRL-V and SHIFT-Insert are Paste
-map <C-V>		"+gP
-map <S-Insert>		"+gP
-
-cmap <C-V>		<C-R>+
-cmap <S-Insert>		<C-R>+
-
-" Pasting blockwise and linewise selections is not possible in Insert and
-" Visual mode without the +virtualedit feature.  They are pasted as if they
-" were characterwise instead.
-" Uses the paste.vim autoload script.
-
-exe 'inoremap <script> <C-V>' paste#paste_cmd['i']
-exe 'vnoremap <script> <C-V>' paste#paste_cmd['v']
-
-imap <S-Insert>		<C-V>
-vmap <S-Insert>		<C-V>
-
-" Use CTRL-Q to do what CTRL-V used to do
-noremap <C-Q>		<C-V>
-
-" Use CTRL-S for saving, also in Insert mode
-noremap <C-S>		:update<CR>
-vnoremap <C-S>		<C-C>:update<CR>
-inoremap <C-S>		<C-O>:update<CR>
-
-" For CTRL-V to work autoselect must be off.
-" On Unix we have two selections, autoselect can be used.
-if !has("unix")
-  set guioptions-=a
-endif
-
-" CTRL-Z is Undo; not in cmdline though
-noremap <C-Z> u
-inoremap <C-Z> <C-O>u
-
-" CTRL-Y is Redo (although not repeat); not in cmdline though
-noremap <C-Y> <C-R>
-inoremap <C-Y> <C-O><C-R>
-
-" Alt-Space is System menu
-if has("gui")
-  noremap <M-Space> :simalt ~<CR>
-  inoremap <M-Space> <C-O>:simalt ~<CR>
-  cnoremap <M-Space> <C-C>:simalt ~<CR>
-endif
-
-" CTRL-A is Select all
-noremap <C-A> gggH<C-O>G
-inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
-cnoremap <C-A> <C-C>gggH<C-O>G
-onoremap <C-A> <C-C>gggH<C-O>G
-snoremap <C-A> <C-C>gggH<C-O>G
-xnoremap <C-A> <C-C>ggVG
-
-" CTRL-Tab is Next window
-noremap <C-Tab> <C-W>w
-inoremap <C-Tab> <C-O><C-W>w
-cnoremap <C-Tab> <C-C><C-W>w
-onoremap <C-Tab> <C-C><C-W>w
-
-" CTRL-F4 is Close window
-noremap <C-F4> <C-W>c
-inoremap <C-F4> <C-O><C-W>c
-cnoremap <C-F4> <C-C><C-W>c
-onoremap <C-F4> <C-C><C-W>c
-
-" restore 'cpoptions'
-set cpo&
-if 1
-  let &cpoptions = s:save_cpo
-  unlet s:save_cpo
-endif
diff --git a/runtime/tutor/runtime/optwin.vim b/runtime/tutor/runtime/optwin.vim
deleted file mode 100644
index 7392b53..0000000
--- a/runtime/tutor/runtime/optwin.vim
+++ /dev/null
@@ -1,1312 +0,0 @@
-" These commands create the option window.
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2008 May 12
-
-" If there already is an option window, jump to that one.
-if bufwinnr("option-window") > 0
-  let s:thiswin = winnr()
-  while 1
-    if @% == "option-window"
-      finish
-    endif
-    exe "norm! \<C-W>w"
-    if s:thiswin == winnr()
-      break
-    endif
-  endwhile
-endif
-
-" Make sure the '<' flag is not included in 'cpoptions', otherwise <CR> would
-" not be recognized.  See ":help 'cpoptions'".
-let s:cpo_save = &cpo
-set cpo&vim
-
-" function to be called when <CR> is hit in the option-window
-fun! <SID>CR()
-
-  " If on a continued comment line, go back to the first comment line
-  let lnum = line(".")
-  let line = getline(lnum)
-  while line[0] == "\t"
-    let lnum = lnum - 1
-    let line = getline(lnum)
-  endwhile
-
-  " <CR> on a "set" line executes the option line
-  if match(line, "^ \tset ") >= 0
-
-    " For a local option: go to the previous window
-    " If this is a help window, go to the window below it
-    let thiswin = winnr()
-    let local = <SID>Find(lnum)
-    if local >= 0
-      exe line
-      call <SID>Update(lnum, line, local, thiswin)
-    endif
-
-  " <CR> on a "option" line shows help for that option
-  elseif match(line, "^[a-z]") >= 0
-    let name = substitute(line, '\([^\t]*\).*', '\1', "")
-    exe "help '" . name . "'"
-
-  " <CR> on an index line jumps to the group
-  elseif match(line, '^ \=[0-9]') >= 0
-    exe "norm! /" . line . "\<CR>zt"
-  endif
-endfun
-
-" function to be called when <Space> is hit in the option-window
-fun! <SID>Space()
-
-  let lnum = line(".")
-  let line = getline(lnum)
-
-  " <Space> on a "set" line refreshes the option line
-  if match(line, "^ \tset ") >= 0
-
-    " For a local option: go to the previous window
-    " If this is a help window, go to the window below it
-    let thiswin = winnr()
-    let local = <SID>Find(lnum)
-    if local >= 0
-      call <SID>Update(lnum, line, local, thiswin)
-    endif
-
-  endif
-endfun
-
-" find the window in which the option applies
-" returns 0 for global option, 1 for local option, -1 for error
-fun! <SID>Find(lnum)
-    if getline(a:lnum - 1) =~ "(local to"
-      let local = 1
-      let thiswin = winnr()
-      exe "norm! \<C-W>p"
-      if exists("b:current_syntax") && b:current_syntax == "help"
-	exe "norm! \<C-W>j"
-	if winnr() == thiswin
-	  exe "norm! \<C-W>j"
-	endif
-      endif
-    else
-      let local = 0
-    endif
-    if local && (winnr() == thiswin || (exists("b:current_syntax")
-	\ && b:current_syntax == "help"))
-      echo "Don't know in which window"
-      let local = -1
-    endif
-    return local
-endfun
-
-" Update a "set" line in the option window
-fun! <SID>Update(lnum, line, local, thiswin)
-  " get the new value of the option and update the option window line
-  if match(a:line, "=") >= 0
-    let name = substitute(a:line, '^ \tset \([^=]*\)=.*', '\1', "")
-  else
-    let name = substitute(a:line, '^ \tset \(no\)\=\([a-z]*\).*', '\2', "")
-  endif
-  if name == "pt" && &pt =~ "\x80"
-    let val = <SID>PTvalue()
-  else
-    exe "let val = substitute(&" . name . ', "[ \\t\\\\\"|]", "\\\\\\0", "g")'
-  endif
-  if a:local
-    exe "norm! " . a:thiswin . "\<C-W>w"
-  endif
-  if match(a:line, "=") >= 0 || (val != "0" && val != "1")
-    call setline(a:lnum, " \tset " . name . "=" . val)
-  else
-    if val
-      call setline(a:lnum, " \tset " . name . "\tno" . name)
-    else
-      call setline(a:lnum, " \tset no" . name . "\t" . name)
-    endif
-  endif
-  set nomodified
-endfun
-
-" Reset 'title' and 'icon' to make it work faster.
-let s:old_title = &title
-let s:old_icon = &icon
-let s:old_sc = &sc
-let s:old_ru = &ru
-set notitle noicon nosc noru
-
-" If the current window is a help window, try finding a non-help window.
-" Relies on syntax highlighting to be switched on.
-let s:thiswin = winnr()
-while exists("b:current_syntax") && b:current_syntax == "help"
-  exe "norm! \<C-W>w"
-  if s:thiswin == winnr()
-    break
-  endif
-endwhile
-
-" Open the window
-new option-window
-setlocal ts=15 tw=0 noro
-
-" Insert help and a "set" command for each option.
-call append(0, '" Each "set" line shows the current value of an option (on the left).')
-call append(1, '" Hit <CR> on a "set" line to execute it.')
-call append(2, '"            A boolean option will be toggled.')
-call append(3, '"            For other options you can edit the value.')
-call append(4, '" Hit <CR> on a help line to open a help window on this option.')
-call append(5, '" Hit <CR> on an index line to jump there.')
-call append(6, '" Hit <Space> on a "set" line to refresh it.')
-
-" These functions are called often below.  Keep them fast!
-
-" Init a local binary option
-fun! <SID>BinOptionL(name)
-  exe "norm! \<C-W>p"
-  exe "let val = &" . a:name
-  exe "norm! \<C-W>p"
-  call append("$", substitute(substitute(" \tset " . val . a:name . "\t" .
-	\!val . a:name, "0", "no", ""), "1", "", ""))
-endfun
-
-" Init a global binary option
-fun! <SID>BinOptionG(name, val)
-  call append("$", substitute(substitute(" \tset " . a:val . a:name . "\t" .
-	\!a:val . a:name, "0", "no", ""), "1", "", ""))
-endfun
-
-" Init a local string option
-fun! <SID>OptionL(name)
-  exe "norm! \<C-W>p"
-  exe "let val = substitute(&" . a:name . ', "[ \\t\\\\\"|]", "\\\\\\0", "g")'
-  exe "norm! \<C-W>p"
-  call append("$", " \tset " . a:name . "=" . val)
-endfun
-
-" Init a global string option
-fun! <SID>OptionG(name, val)
-  call append("$", " \tset " . a:name . "=" . substitute(a:val, '[ \t\\"|]',
-	\ '\\\0', "g"))
-endfun
-
-let s:idx = 1
-let s:lnum = line("$")
-call append("$", "")
-
-fun! <SID>Header(text)
-  let line = s:idx . " " . a:text
-  if s:idx < 10
-    let line = " " . line
-  endif
-  call append("$", "")
-  call append("$", line)
-  call append("$", "")
-  call append(s:lnum, line)
-  let s:idx = s:idx + 1
-  let s:lnum = s:lnum + 1
-endfun
-
-" Get the value of 'pastetoggle'.  It could be a special key.
-fun! <SID>PTvalue()
-  redir @a
-  silent set pt
-  redir END
-  return substitute(@a, '[^=]*=\(.*\)', '\1', "")
-endfun
-
-" Restore the previous value of 'cpoptions' here, it's used below.
-let &cpo = s:cpo_save
-
-" List of all options, organized by function.
-" The text should be sufficient to know what the option is used for.
-
-call <SID>Header("important")
-call append("$", "compatible\tbehave very Vi compatible (not advisable)")
-call <SID>BinOptionG("cp", &cp)
-call append("$", "cpoptions\tlist of flags to specify Vi compatibility")
-call <SID>OptionG("cpo", &cpo)
-call append("$", "insertmode\tuse Insert mode as the default mode")
-call <SID>BinOptionG("im", &im)
-call append("$", "paste\tpaste mode, insert typed text literally")
-call <SID>BinOptionG("paste", &paste)
-call append("$", "pastetoggle\tkey sequence to toggle paste mode")
-if &pt =~ "\x80"
-  call append("$", " \tset pt=" . <SID>PTvalue())
-else
-  call <SID>OptionG("pt", &pt)
-endif
-call append("$", "runtimepath\tlist of directories used for runtime files and plugins")
-call <SID>OptionG("rtp", &rtp)
-call append("$", "helpfile\tname of the main help file")
-call <SID>OptionG("hf", &hf)
-
-
-call <SID>Header("moving around, searching and patterns")
-call append("$", "whichwrap\tlist of flags specifying which commands wrap to another line")
-call append("$", "\t(local to window)")
-call <SID>OptionL("ww")
-call append("$", "startofline\tmany jump commands move the cursor to the first non-blank")
-call append("$", "\tcharacter of a line")
-call <SID>BinOptionG("sol", &sol)
-call append("$", "paragraphs\tnroff macro names that separate paragraphs")
-call <SID>OptionG("para", &para)
-call append("$", "sections\tnroff macro names that separate sections")
-call <SID>OptionG("sect", &sect)
-call append("$", "path\tlist of directory names used for file searching")
-call append("$", "\t(global or local to buffer)")
-call <SID>OptionG("pa", &pa)
-call append("$", "cdpath\tlist of directory names used for :cd")
-call <SID>OptionG("cd", &cd)
-if has("netbeans_intg") || has("sun_workshop")
-  call append("$", "autochdir\tchange to directory of file in buffer")
-  call <SID>BinOptionG("acd", &acd)
-endif
-call append("$", "wrapscan\tsearch commands wrap around the end of the buffer")
-call <SID>BinOptionG("ws", &ws)
-call append("$", "incsearch\tshow match for partly typed search command")
-call <SID>BinOptionG("is", &is)
-call append("$", "magic\tchange the way backslashes are used in search patterns")
-call <SID>BinOptionG("magic", &magic)
-call append("$", "ignorecase\tignore case when using a search pattern")
-call <SID>BinOptionG("ic", &ic)
-call append("$", "smartcase\toverride 'ignorecase' when pattern has upper case characters")
-call <SID>BinOptionG("scs", &scs)
-call append("$", "casemap\tWhat method to use for changing case of letters")
-call <SID>OptionG("cmp", &cmp)
-call append("$", "maxmempattern\tmaximum amount of memory in Kbyte used for pattern matching")
-call append("$", " \tset mmp=" . &mmp)
-call append("$", "define\tpattern for a macro definition line")
-call append("$", "\t(global or local to buffer)")
-call <SID>OptionG("def", &def)
-if has("find_in_path")
-  call append("$", "include\tpattern for an include-file line")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("inc")
-  call append("$", "includeexpr\texpression used to transform an include line to a file name")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("inex")
-endif
-
-
-call <SID>Header("tags")
-call append("$", "tagbsearch\tuse binary searching in tags files")
-call <SID>BinOptionG("tbs", &tbs)
-call append("$", "taglength\tnumber of significant characters in a tag name or zero")
-call append("$", " \tset tl=" . &tl)
-call append("$", "tags\tlist of file names to search for tags")
-call append("$", "\t(global or local to buffer)")
-call <SID>OptionG("tag", &tag)
-call append("$", "tagrelative\tfile names in a tags file are relative to the tags file")
-call <SID>BinOptionG("tr", &tr)
-call append("$", "tagstack\ta :tag command will use the tagstack")
-call <SID>BinOptionG("tgst", &tgst)
-call append("$", "showfulltag\twhen completing tags in Insert mode show more info")
-call <SID>BinOptionG("sft", &sft)
-if has("cscope")
-  call append("$", "cscopeprg\tcommand for executing cscope")
-  call <SID>OptionG("csprg", &csprg)
-  call append("$", "cscopetag\tuse cscope for tag commands")
-  call <SID>BinOptionG("cst", &cst)
-  call append("$", "cscopetagorder\t0 or 1; the order in which \":cstag\" performs a search")
-  call append("$", " \tset csto=" . &csto)
-  call append("$", "cscopeverbose\tgive messages when adding a cscope database")
-  call <SID>BinOptionG("csverb", &csverb)
-  call append("$", "cscopepathcomp\thow many components of the path to show")
-  call append("$", " \tset cspc=" . &cspc)
-  call append("$", "cscopequickfix\tWhen to open a quickfix window for cscope")
-  call <SID>OptionG("csqf", &csqf)
-endif
-
-
-call <SID>Header("displaying text")
-call append("$", "scroll\tnumber of lines to scroll for CTRL-U and CTRL-D")
-call append("$", "\t(local to window)")
-call <SID>OptionL("scr")
-call append("$", "scrolloff\tnumber of screen lines to show around the cursor")
-call append("$", " \tset so=" . &so)
-call append("$", "wrap\tlong lines wrap")
-call <SID>BinOptionG("wrap", &wrap)
-call append("$", "linebreak\twrap long lines at a character in 'breakat'")
-call append("$", "\t(local to window)")
-call <SID>BinOptionL("lbr")
-call append("$", "breakat\twhich characters might cause a line break")
-call <SID>OptionG("brk", &brk)
-call append("$", "showbreak\tstring to put before wrapped screen lines")
-call <SID>OptionG("sbr", &sbr)
-call append("$", "sidescroll\tminimal number of columns to scroll horizontally")
-call append("$", " \tset ss=" . &ss)
-call append("$", "sidescrolloff\tminimal number of columns to keep left and right of the cursor")
-call append("$", " \tset siso=" . &siso)
-call append("$", "display\tinclude \"lastline\" to show the last line even if it doesn't fit")
-call append("$", "\tinclude \"uhex\" to show unprintable characters as a hex number")
-call <SID>OptionG("dy", &dy)
-call append("$", "fillchars\tcharacters to use for the status line, folds and filler lines")
-call <SID>OptionG("fcs", &fcs)
-call append("$", "cmdheight\tnumber of lines used for the command-line")
-call append("$", " \tset ch=" . &ch)
-call append("$", "columns\twidth of the display")
-call append("$", " \tset co=" . &co)
-call append("$", "lines\tnumber of lines in the display")
-call append("$", " \tset lines=" . &lines)
-call append("$", "lazyredraw\tdon't redraw while executing macros")
-call <SID>BinOptionG("lz", &lz)
-if has("reltime")
-  call append("$", "redrawtime\ttimeout for 'hlsearch' and :match highlighting in msec")
-  call append("$", " \tset rdt=" . &rdt)
-endif
-call append("$", "writedelay\tdelay in msec for each char written to the display")
-call append("$", "\t(for debugging)")
-call append("$", " \tset wd=" . &wd)
-call append("$", "list\tshow <Tab> as ^I and end-of-line as $")
-call append("$", "\t(local to window)")
-call <SID>BinOptionL("list")
-call append("$", "listchars\tlist of strings used for list mode")
-call <SID>OptionG("lcs", &lcs)
-call append("$", "number\tshow the line number for each line")
-call append("$", "\t(local to window)")
-call <SID>BinOptionL("nu")
-if has("linebreak")
-  call append("$", "numberwidth\tnumber of columns to use for the line number")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("nuw")
-endif
-
-
-call <SID>Header("syntax, highlighting and spelling")
-call append("$", "background\t\"dark\" or \"light\"; the background color brightness")
-call <SID>OptionG("bg", &bg)
-if has("autocmd")
-  call append("$", "filetype\ttype of file; triggers the FileType event when set")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("ft")
-endif
-if has("syntax")
-  call append("$", "syntax\tname of syntax highlighting used")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("syn")
-  call append("$", "synmaxcol\tmaximum column to look for syntax items")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("smc")
-endif
-call append("$", "highlight\twhich highlighting to use for various occasions")
-call <SID>OptionG("hl", &hl)
-call append("$", "hlsearch\thighlight all matches for the last used search pattern")
-call <SID>BinOptionG("hls", &hls)
-if has("syntax")
-  call append("$", "cursorcolumn\thighlight the screen column of the cursor")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("cuc")
-  call append("$", "cursorline\thighlight the screen line of the cursor")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("cul")
-  call append("$", "spell\thighlight spelling mistakes")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("spell")
-  call append("$", "spelllang\tlist of accepted languages")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("spl")
-  call append("$", "spellfile\tfile that \"zg\" adds good words to")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("spf")
-  call append("$", "spellcapcheck\tpattern to locate the end of a sentence")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("spc")
-  call append("$", "spellsuggest\tmethods used to suggest corrections")
-  call <SID>OptionG("sps", &sps)
-  call append("$", "mkspellmem\tamount of memory used by :mkspell before compressing")
-  call <SID>OptionG("msm", &msm)
-endif
-
-
-call <SID>Header("multiple windows")
-call append("$", "laststatus\t0, 1 or 2; when to use a status line for the last window")
-call append("$", " \tset ls=" . &ls)
-if has("statusline")
-  call append("$", "statusline\talternate format to be used for a status line")
-  call <SID>OptionG("stl", &stl)
-endif
-call append("$", "equalalways\tmake all windows the same size when adding/removing windows")
-call <SID>BinOptionG("ea", &ea)
-if has("vertsplit")
-  call append("$", "eadirection\tin which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"")
-  call <SID>OptionG("ead", &ead)
-endif
-call append("$", "winheight\tminimal number of lines used for the current window")
-call append("$", " \tset wh=" . &wh)
-call append("$", "winminheight\tminimal number of lines used for any window")
-call append("$", " \tset wmh=" . &wmh)
-call append("$", "winfixheight\tkeep the height of the window")
-call append("$", "\t(local to window)")
-call <SID>BinOptionL("wfh")
-if has("vertsplit")
-call append("$", "winfixwidth\tkeep the width of the window")
-call append("$", "\t(local to window)")
-call <SID>BinOptionL("wfw")
-  call append("$", "winwidth\tminimal number of columns used for the current window")
-  call append("$", " \tset wiw=" . &wiw)
-  call append("$", "winminwidth\tminimal number of columns used for any window")
-  call append("$", " \tset wmw=" . &wmw)
-endif
-call append("$", "helpheight\tinitial height of the help window")
-call append("$", " \tset hh=" . &hh)
-if has("quickfix")
-  call append("$", "previewheight\tdefault height for the preview window")
-  call append("$", " \tset pvh=" . &pvh)
-  call append("$", "previewwindow\tidentifies the preview window")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("pvw")
-endif
-call append("$", "hidden\tdon't unload a buffer when no longer shown in a window")
-call <SID>BinOptionG("hid", &hid)
-call append("$", "switchbuf\t\"useopen\" and/or \"split\"; which window to use when jumping")
-call append("$", "\tto a buffer")
-call <SID>OptionG("swb", &swb)
-call append("$", "splitbelow\ta new window is put below the current one")
-call <SID>BinOptionG("sb", &sb)
-if has("vertsplit")
-  call append("$", "splitright\ta new window is put right of the current one")
-  call <SID>BinOptionG("spr", &spr)
-endif
-if has("scrollbind")
-  call append("$", "scrollbind\tthis window scrolls together with other bound windows")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("scb")
-  call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'")
-  call <SID>OptionG("sbo", &sbo)
-endif
-
-
-call <SID>Header("multiple tab pages")
-call append("$", "showtabline\t0, 1 or 2; when to use a tab pages line")
-call append("$", " \tset stal=" . &stal)
-call append("$", "tabpagemax\tmaximum number of tab pages to open for -p and \"tab all\"")
-call append("$", " \tset tpm=" . &tpm)
-call append("$", "tabline\tcustom tab pages line")
-call <SID>OptionG("tal", &tal)
-if has("gui")
-  call append("$", "guitablabel\tcustom tab page label for the GUI")
-  call <SID>OptionG("gtl", &gtl)
-  call append("$", "guitabtooltip\tcustom tab page tooltip for the GUI")
-  call <SID>OptionG("gtt", &gtt)
-endif
-
-
-call <SID>Header("terminal")
-call append("$", "term\tname of the used terminal")
-call <SID>OptionG("term", &term)
-call append("$", "ttytype\talias for 'term'")
-call <SID>OptionG("tty", &tty)
-call append("$", "ttybuiltin\tcheck built-in termcaps first")
-call <SID>BinOptionG("tbi", &tbi)
-call append("$", "ttyfast\tterminal connection is fast")
-call <SID>BinOptionG("tf", &tf)
-call append("$", "weirdinvert\tterminal that requires extra redrawing")
-call <SID>BinOptionG("wiv", &wiv)
-call append("$", "esckeys\trecognize keys that start with <Esc> in Insert mode")
-call <SID>BinOptionG("ek", &ek)
-call append("$", "scrolljump\tminimal number of lines to scroll at a time")
-call append("$", " \tset sj=" . &sj)
-call append("$", "ttyscroll\tmaximum number of lines to use scrolling instead of redrawing")
-call append("$", " \tset tsl=" . &tsl)
-if has("gui") || has("msdos") || has("win32")
-  call append("$", "guicursor\tspecifies what the cursor looks like in different modes")
-  call <SID>OptionG("gcr", &gcr)
-endif
-if has("title")
-  let &title = s:old_title
-  call append("$", "title\tshow info in the window title")
-  call <SID>BinOptionG("title", &title)
-  set notitle
-  call append("$", "titlelen\tpercentage of 'columns' used for the window title")
-  call append("$", " \tset titlelen=" . &titlelen)
-  call append("$", "titlestring\twhen not empty, string to be used for the window title")
-  call <SID>OptionG("titlestring", &titlestring)
-  call append("$", "titleold\tstring to restore the title to when exiting Vim")
-  call <SID>OptionG("titleold", &titleold)
-  let &icon = s:old_icon
-  call append("$", "icon\tset the text of the icon for this window")
-  call <SID>BinOptionG("icon", &icon)
-  set noicon
-  call append("$", "iconstring\twhen not empty, text for the icon of this window")
-  call <SID>OptionG("iconstring", &iconstring)
-endif
-if has("win32")
-  call append("$", "restorescreen\trestore the screen contents when exiting Vim")
-  call <SID>BinOptionG("rs", &rs)
-endif
-
-
-call <SID>Header("using the mouse")
-call append("$", "mouse\tlist of flags for using the mouse")
-call <SID>OptionG("mouse", &mouse)
-if has("gui")
-  call append("$", "mousefocus\tthe window with the mouse pointer becomes the current one")
-  call <SID>BinOptionG("mousef", &mousef)
-  call append("$", "mousehide\thide the mouse pointer while typing")
-  call <SID>BinOptionG("mh", &mh)
-endif
-call append("$", "mousemodel\t\"extend\", \"popup\" or \"popup_setpos\"; what the right")
-call append("$", "\tmouse button is used for")
-call <SID>OptionG("mousem", &mousem)
-call append("$", "mousetime\tmaximum time in msec to recognize a double-click")
-call append("$", " \tset mouset=" . &mouset)
-call append("$", "ttymouse\t\"xterm\", \"xterm2\", \"dec\" or \"netterm\"; type of mouse")
-call <SID>OptionG("ttym", &ttym)
-if has("mouseshape")
-  call append("$", "mouseshape\twhat the mouse pointer looks like in different modes")
-  call <SID>OptionG("mouses", &mouses)
-endif
-
-
-if has("gui")
-  call <SID>Header("GUI")
-  call append("$", "guifont\tlist of font names to be used in the GUI")
-  call <SID>OptionG("gfn", &gfn)
-  if has("xfontset")
-    call append("$", "guifontset\tpair of fonts to be used, for multibyte editing")
-    call <SID>OptionG("gfs", &gfs)
-  endif
-  call append("$", "guifontwide\tlist of font names to be used for double-wide characters")
-  call <SID>OptionG("gfw", &gfw)
-  if has("mac")
-    call append("$", "antialias\tuse smooth, antialiased fonts")
-    call <SID>BinOptionG("anti", &anti)
-  endif
-  call append("$", "guioptions\tlist of flags that specify how the GUI works")
-  call <SID>OptionG("go", &go)
-  if has("gui_gtk")
-    call append("$", "toolbar\t\"icons\", \"text\" and/or \"tooltips\"; how to show the toolbar")
-    call <SID>OptionG("tb", &tb)
-    if has("gui_gtk2")
-      call append("$", "toolbariconsize\tSize of toolbar icons")
-      call <SID>OptionG("tbis", &tbis)
-    endif
-    call append("$", "guiheadroom\troom (in pixels) left above/below the window")
-    call append("$", " \tset ghr=" . &ghr)
-  endif
-  call append("$", "guipty\tuse a pseudo-tty for I/O to external commands")
-  call <SID>BinOptionG("guipty", &guipty)
-  if has("browse")
-    call append("$", "browsedir\t\"last\", \"buffer\" or \"current\": which directory used for the file browser")
-    call <SID>OptionG("bsdir", &bsdir)
-  endif
-  if has("multi_lang")
-    call append("$", "langmenu\tlanguage to be used for the menus")
-    call <SID>OptionG("langmenu", &lm)
-  endif
-  call append("$", "menuitems\tmaximum number of items in one menu")
-  call append("$", " \tset mis=" . &mis)
-  if has("winaltkeys")
-    call append("$", "winaltkeys\t\"no\", \"yes\" or \"menu\"; how to use the ALT key")
-    call <SID>OptionG("wak", &wak)
-  endif
-  call append("$", "linespace\tnumber of pixel lines to use between characters")
-  call append("$", " \tset lsp=" . &lsp)
-  if has("balloon_eval")
-    call append("$", "balloondelay\tdelay in milliseconds before a balloon may pop up")
-    call append("$", " \tset bdlay=" . &bdlay)
-    call append("$", "ballooneval\twhether the balloon evaluation is to be used")
-    call <SID>BinOptionG("beval", &beval)
-    if has("eval")
-      call append("$", "balloonexpr\texpression to show in balloon eval")
-      call append("$", " \tset bexpr=" . &bexpr)
-    endif
-  endif
-  if exists("+macatsui")
-    call append("$", "macatsui\tuse ATSUI text drawing; disable to avoid display problems")
-    call <SID>OptionG("macatsui", &macatsui)
-  endif
-endif
-
-if has("printer")
-  call <SID>Header("printing")
-  call append("$", "printoptions\tlist of items that control the format of :hardcopy output")
-  call <SID>OptionG("popt", &popt)
-  call append("$", "printdevice\tname of the printer to be used for :hardcopy")
-  call <SID>OptionG("pdev", &pdev)
-  if has("postscript")
-    call append("$", "printexpr\texpression used to print the PostScript file for :hardcopy")
-    call <SID>OptionG("pexpr", &pexpr)
-  endif
-  call append("$", "printfont\tname of the font to be used for :hardcopy")
-  call <SID>OptionG("pfn", &pfn)
-  call append("$", "printheader\tformat of the header used for :hardcopy")
-  call <SID>OptionG("pheader", &pheader)
-  if has("postscript")
-    call append("$", "printencoding\tencoding used to print the PostScript file for :hardcopy")
-    call <SID>OptionG("penc", &penc)
-  endif
-  if has("multi_byte")
-    call append("$", "printmbcharset\tthe CJK character set to be used for CJK output from :hardcopy")
-    call <SID>OptionG("pmbcs", &pmbcs)
-    call append("$", "printmbfont\tlist of font names to be used for CJK output from :hardcopy")
-    call <SID>OptionG("pmbfn", &pmbfn)
-  endif
-endif
-
-call <SID>Header("messages and info")
-call append("$", "terse\tadd 's' flag in 'shortmess' (don't show search message)")
-call <SID>BinOptionG("terse", &terse)
-call append("$", "shortmess\tlist of flags to make messages shorter")
-call <SID>OptionG("shm", &shm)
-call append("$", "showcmd\tshow (partial) command keys in the status line")
-let &sc = s:old_sc
-call <SID>BinOptionG("sc", &sc)
-set nosc
-call append("$", "showmode\tdisplay the current mode in the status line")
-call <SID>BinOptionG("smd", &smd)
-call append("$", "ruler\tshow cursor position below each window")
-let &ru = s:old_ru
-call <SID>BinOptionG("ru", &ru)
-set noru
-if has("statusline")
-  call append("$", "rulerformat\talternate format to be used for the ruler")
-  call <SID>OptionG("ruf", &ruf)
-endif
-call append("$", "report\tthreshold for reporting number of changed lines")
-call append("$", " \tset report=" . &report)
-call append("$", "verbose\tthe higher the more messages are given")
-call append("$", " \tset vbs=" . &vbs)
-call append("$", "verbosefile\tfile to write messages in")
-call <SID>OptionG("vfile", &vfile)
-call append("$", "more\tpause listings when the screen is full")
-call <SID>BinOptionG("more", &more)
-if has("dialog_con") || has("dialog_gui")
-  call append("$", "confirm\tstart a dialog when a command fails")
-  call <SID>BinOptionG("cf", &cf)
-endif
-call append("$", "errorbells\tring the bell for error messages")
-call <SID>BinOptionG("eb", &eb)
-call append("$", "visualbell\tuse a visual bell instead of beeping")
-call <SID>BinOptionG("vb", &vb)
-if has("multi_lang")
-  call append("$", "helplang\tlist of preferred languages for finding help")
-  call <SID>OptionG("hlg", &hlg)
-endif
-
-
-call <SID>Header("selecting text")
-call append("$", "selection\t\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves")
-call <SID>OptionG("sel", &sel)
-call append("$", "selectmode\t\"mouse\", \"key\" and/or \"cmd\"; when to start Select mode")
-call append("$", "\tinstead of Visual mode")
-call <SID>OptionG("slm", &slm)
-if has("clipboard")
-  call append("$", "clipboard\t\"unnamed\" to use the * register like unnamed register")
-  call append("$", "\t\"autoselect\" to always put selected text on the clipboard")
-  call <SID>OptionG("cb", &cb)
-endif
-call append("$", "keymodel\t\"startsel\" and/or \"stopsel\"; what special keys can do")
-call <SID>OptionG("km", &km)
-
-
-call <SID>Header("editing text")
-call append("$", "undolevels\tmaximum number of changes that can be undone")
-call append("$", " \tset ul=" . &ul)
-call append("$", "modified\tchanges have been made and not written to a file")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("mod")
-call append("$", "readonly\tbuffer is not to be written")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("ro")
-call append("$", "modifiable\tchanges to the text are not possible")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("ma")
-call append("$", "textwidth\tline length above which to break a line")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("tw")
-call append("$", "wrapmargin\tmargin from the right in which to break a line")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("wm")
-call append("$", "backspace\tspecifies what <BS>, CTRL-W, etc. can do in Insert mode")
-call append("$", " \tset bs=" . &bs)
-call append("$", "comments\tdefinition of what comment lines look like")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("com")
-call append("$", "formatoptions\tlist of flags that tell how automatic formatting works")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("fo")
-call append("$", "formatlistpat\tpattern to recognize a numbered list")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("flp")
-if has("eval")
-  call append("$", "formatexpr\texpression used for \"gq\" to format lines")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("fex")
-endif
-if has("insert_expand")
-  call append("$", "complete\tspecifies how Insert mode completion works for CTRL-N and CTRL-P")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("cpt")
-  call append("$", "completeopt\twhether to use a popup menu for Insert mode completion")
-  call <SID>OptionG("cot", &cot)
-  call append("$", "pumheight\tmaximum height of the popup menu")
-  call <SID>OptionG("ph", &ph)
-  call append("$", "completefunc\tuser defined function for Insert mode completion")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("cfu")
-  call append("$", "omnifunc\tfunction for filetype-specific Insert mode completion")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("ofu")
-  call append("$", "dictionary\tlist of dictionary files for keyword completion")
-  call append("$", "\t(global or local to buffer)")
-  call <SID>OptionG("dict", &dict)
-  call append("$", "thesaurus\tlist of thesaurus files for keyword completion")
-  call append("$", "\t(global or local to buffer)")
-  call <SID>OptionG("tsr", &tsr)
-endif
-call append("$", "infercase\tadjust case of a keyword completion match")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("inf")
-if has("digraphs")
-  call append("$", "digraph\tenable entering digraps with c1 <BS> c2")
-  call <SID>BinOptionG("dg", &dg)
-endif
-call append("$", "tildeop\tthe \"~\" command behaves like an operator")
-call <SID>BinOptionG("top", &top)
-call append("$", "operatorfunc\tfunction called for the\"g@\"  operator")
-call <SID>OptionG("opfunc", &opfunc)
-call append("$", "showmatch\tWhen inserting a bracket, briefly jump to its match")
-call <SID>BinOptionG("sm", &sm)
-call append("$", "matchtime\ttenth of a second to show a match for 'showmatch'")
-call append("$", " \tset mat=" . &mat)
-call append("$", "matchpairs\tlist of pairs that match for the \"%\" command")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("mps")
-call append("$", "joinspaces\tuse two spaces after '.' when joining a line")
-call <SID>BinOptionG("js", &js)
-call append("$", "nrformats\t\"alpha\", \"octal\" and/or \"hex\"; number formats recognized for")
-call append("$", "\tCTRL-A and CTRL-X commands")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("nf")
-
-
-call <SID>Header("tabs and indenting")
-call append("$", "tabstop\tnumber of spaces a <Tab> in the text stands for")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("ts")
-call append("$", "shiftwidth\tnumber of spaces used for each step of (auto)indent")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("sw")
-call append("$", "smarttab\ta <Tab> in an indent inserts 'shiftwidth' spaces")
-call <SID>BinOptionG("sta", &sta)
-call append("$", "softtabstop\tif non-zero, number of spaces to insert for a <Tab>")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("sts")
-call append("$", "shiftround\tround to 'shiftwidth' for \"<<\" and \">>\"")
-call <SID>BinOptionG("sr", &sr)
-call append("$", "expandtab\texpand <Tab> to spaces in Insert mode")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("et")
-call append("$", "autoindent\tautomatically set the indent of a new line")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("ai")
-if has("smartindent")
-  call append("$", "smartindent\tdo clever autoindenting")
-  call append("$", "\t(local to buffer)")
-  call <SID>BinOptionL("si")
-endif
-if has("cindent")
-  call append("$", "cindent\tenable specific indenting for C code")
-  call append("$", "\t(local to buffer)")
-  call <SID>BinOptionL("cin")
-  call append("$", "cinoptions\toptions for C-indenting")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("cino")
-  call append("$", "cinkeys\tkeys that trigger C-indenting in Insert mode")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("cink")
-  call append("$", "cinwords\tlist of words that cause more C-indent")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("cinw")
-  call append("$", "indentexpr\texpression used to obtain the indent of a line")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("inde")
-  call append("$", "indentkeys\tkeys that trigger indenting with 'indentexpr' in Insert mode")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("indk")
-endif
-call append("$", "copyindent\tCopy whitespace for indenting from previous line")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("ci")
-call append("$", "preserveindent\tPreserve kind of whitespace when changing indent")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("pi")
-if has("lispindent")
-  call append("$", "lisp\tenable lisp mode")
-  call append("$", "\t(local to buffer)")
-  call <SID>BinOptionL("lisp")
-  call append("$", "lispwords\twords that change how lisp indenting works")
-  call <SID>OptionG("lw", &lw)
-endif
-
-
-if has("folding")
-  call <SID>Header("folding")
-  call append("$", "foldenable\tset to display all folds open")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("fen")
-  call append("$", "foldlevel\tfolds with a level higher than this number will be closed")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fdl")
-  call append("$", "foldlevelstart\tvalue for 'foldlevel' when starting to edit a file")
-  call append("$", " \tset fdls=" . &fdls)
-  call append("$", "foldcolumn\twidth of the column used to indicate folds")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fdc")
-  call append("$", "foldtext\texpression used to display the text of a closed fold")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fdt")
-  call append("$", "foldclose\tset to \"all\" to close a fold when the cursor leaves it")
-  call <SID>OptionG("fcl", &fcl)
-  call append("$", "foldopen\tspecifies for which commands a fold will be opened")
-  call <SID>OptionG("fdo", &fdo)
-  call append("$", "foldminlines\tminimum number of screen lines for a fold to be closed")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fml")
-  call append("$", "commentstring\ttemplate for comments; used to put the marker in")
-  call <SID>OptionL("cms")
-  call append("$", "foldmethod\tfolding type: \"manual\", \"indent\", \"expr\", \"marker\" or \"syntax\"")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fdm")
-  call append("$", "foldexpr\texpression used when 'foldmethod' is \"expr\"")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fde")
-  call append("$", "foldignore\tused to ignore lines when 'foldmethod' is \"indent\"")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fdi")
-  call append("$", "foldmarker\tmarkers used when 'foldmethod' is \"marker\"")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fmr")
-  call append("$", "foldnestmax\tmaximum fold depth for when 'foldmethod is \"indent\" or \"syntax\"")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("fdn")
-endif
-
-
-if has("diff")
-  call <SID>Header("diff mode")
-  call append("$", "diff\tuse diff mode for the current window")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("diff")
-  call append("$", "diffopt\toptions for using diff mode")
-  call <SID>OptionG("dip", &dip)
-  call append("$", "diffexpr\texpression used to obtain a diff file")
-  call <SID>OptionG("dex", &dex)
-  call append("$", "patchexpr\texpression used to patch a file")
-  call <SID>OptionG("pex", &pex)
-endif
-
-
-call <SID>Header("mapping")
-call append("$", "maxmapdepth\tmaximum depth of mapping")
-call append("$", " \tset mmd=" . &mmd)
-call append("$", "remap\trecognize mappings in mapped keys")
-call <SID>BinOptionG("remap", &remap)
-call append("$", "timeout\tallow timing out halfway into a mapping")
-call <SID>BinOptionG("to", &to)
-call append("$", "ttimeout\tallow timing out halfway into a key code")
-call <SID>BinOptionG("ttimeout", &ttimeout)
-call append("$", "timeoutlen\ttime in msec for 'timeout'")
-call append("$", " \tset tm=" . &tm)
-call append("$", "ttimeoutlen\ttime in msec for 'ttimeout'")
-call append("$", " \tset ttm=" . &ttm)
-
-
-call <SID>Header("reading and writing files")
-call append("$", "modeline\tenable using settings from modelines when reading a file")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("ml")
-call append("$", "modelines\tnumber of lines to check for modelines")
-call append("$", " \tset mls=" . &mls)
-call append("$", "binary\tbinary file editing")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("bin")
-call append("$", "endofline\tlast line in the file has an end-of-line")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("eol")
-if has("multi_byte")
-  call append("$", "bomb\tPrepend a Byte Order Mark to the file")
-  call append("$", "\t(local to buffer)")
-  call <SID>BinOptionL("bomb")
-endif
-call append("$", "fileformat\tend-of-line format: \"dos\", \"unix\" or \"mac\"")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("ff")
-call append("$", "fileformats\tlist of file formats to look for when editing a file")
-call <SID>OptionG("ffs", &ffs)
-call append("$", "textmode\tobsolete, use 'fileformat'")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("tx")
-call append("$", "textauto\tobsolete, use 'fileformats'")
-call <SID>BinOptionG("ta", &ta)
-call append("$", "write\twriting files is allowed")
-call <SID>BinOptionG("write", &write)
-call append("$", "writebackup\twrite a backup file before overwriting a file")
-call <SID>BinOptionG("wb", &wb)
-call append("$", "backup\tkeep a backup after overwriting a file")
-call <SID>BinOptionG("bk", &bk)
-call append("$", "backupskip\tpatterns that specify for which files a backup is not made")
-call append("$", " \tset bsk=" . &bsk)
-call append("$", "backupcopy\twhether to make the backup as a copy or rename the existing file")
-call append("$", " \tset bkc=" . &bkc)
-call append("$", "backupdir\tlist of directories to put backup files in")
-call <SID>OptionG("bdir", &bdir)
-call append("$", "backupext\tfile name extension for the backup file")
-call <SID>OptionG("bex", &bex)
-call append("$", "autowrite\tautomatically write a file when leaving a modified buffer")
-call <SID>BinOptionG("aw", &aw)
-call append("$", "autowriteall\tas 'autowrite', but works with more commands")
-call <SID>BinOptionG("awa", &awa)
-call append("$", "writeany\talways write without asking for confirmation")
-call <SID>BinOptionG("wa", &wa)
-call append("$", "autoread\tautomatically read a file when it was modified outside of Vim")
-call append("$", "\t(global or local to buffer)")
-call <SID>BinOptionG("ar", &ar)
-call append("$", "patchmode\tkeep oldest version of a file; specifies file name extension")
-call <SID>OptionG("pm", &pm)
-call append("$", "fsync\tforcibly sync the file to disk after writing it")
-call <SID>BinOptionG("fs", &fs)
-if !has("msdos")
-  call append("$", "shortname\tuse 8.3 file names")
-  call append("$", "\t(local to buffer)")
-  call <SID>BinOptionL("sn")
-endif
-
-
-call <SID>Header("the swap file")
-call append("$", "directory\tlist of directories for the swap file")
-call <SID>OptionG("dir", &dir)
-call append("$", "swapfile\tuse a swap file for this buffer")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("swf")
-call append("$", "swapsync\t\"sync\", \"fsync\" or empty; how to flush a swap file to disk")
-call <SID>OptionG("sws", &sws)
-call append("$", "updatecount\tnumber of characters typed to cause a swap file update")
-call append("$", " \tset uc=" . &uc)
-call append("$", "updatetime\ttime in msec after which the swap file will be updated")
-call append("$", " \tset ut=" . &ut)
-call append("$", "maxmem\tmaximum amount of memory in Kbyte used for one buffer")
-call append("$", " \tset mm=" . &mm)
-call append("$", "maxmemtot\tmaximum amount of memory in Kbyte used for all buffers")
-call append("$", " \tset mmt=" . &mmt)
-
-
-call <SID>Header("command line editing")
-call append("$", "history\thow many command lines are remembered ")
-call append("$", " \tset hi=" . &hi)
-call append("$", "wildchar\tkey that triggers command-line expansion")
-call append("$", " \tset wc=" . &wc)
-call append("$", "wildcharm\tlike 'wildchar' but can also be used in a mapping")
-call append("$", " \tset wcm=" . &wcm)
-call append("$", "wildmode\tspecifies how command line completion works")
-call <SID>OptionG("wim", &wim)
-if has("wildoptions")
-  call append("$", "wildoptions\tempty or \"tagfile\" to list file name of matching tags")
-  call <SID>OptionG("wop", &wop)
-endif
-call append("$", "suffixes\tlist of file name extensions that have a lower priority")
-call <SID>OptionG("su", &su)
-if has("file_in_path")
-  call append("$", "suffixesadd\tlist of file name extensions added when searching for a file")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("sua")
-endif
-if has("wildignore")
-  call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
-  call <SID>OptionG("wig", &wig)
-endif
-if has("wildmenu")
-  call append("$", "wildmenu\tcommand-line completion shows a list of matches")
-  call <SID>BinOptionG("wmnu", &wmnu)
-endif
-if has("vertsplit")
-  call append("$", "cedit\tkey used to open the command-line window")
-  call <SID>OptionG("cedit", &cedit)
-  call append("$", "cmdwinheight\theight of the command-line window")
-  call <SID>OptionG("cwh", &cwh)
-endif
-
-
-call <SID>Header("executing external commands")
-call append("$", "shell\tname of the shell program used for external commands")
-call <SID>OptionG("sh", &sh)
-if has("amiga")
-  call append("$", "shelltype\twhen to use the shell or directly execute a command")
-  call append("$", " \tset st=" . &st)
-endif
-call append("$", "shellquote\tcharacter(s) to enclose a shell command in")
-call <SID>OptionG("shq", &shq)
-call append("$", "shellxquote\tlike 'shellquote' but include the redirection")
-call <SID>OptionG("sxq", &sxq)
-call append("$", "shellcmdflag\targument for 'shell' to execute a command")
-call <SID>OptionG("shcf", &shcf)
-call append("$", "shellredir\tused to redirect command output to a file")
-call <SID>OptionG("srr", &srr)
-call append("$", "shelltemp\tuse a temp file for shell commands instead of using a pipe")
-call <SID>BinOptionG("stmp", &stmp)
-call append("$", "equalprg\tprogram used for \"=\" command")
-call append("$", "\t(global or local to buffer)")
-call <SID>OptionG("ep", &ep)
-call append("$", "formatprg\tprogram used to format lines with \"gq\" command")
-call <SID>OptionG("fp", &fp)
-call append("$", "keywordprg\tprogram used for the \"K\" command")
-call <SID>OptionG("kp", &kp)
-call append("$", "warn\twarn when using a shell command and a buffer has changes")
-call <SID>BinOptionG("warn", &warn)
-
-
-if has("quickfix")
-  call <SID>Header("running make and jumping to errors")
-  call append("$", "errorfile\tname of the file that contains error messages")
-  call <SID>OptionG("ef", &ef)
-  call append("$", "errorformat\tlist of formats for error messages")
-  call append("$", "\t(global or local to buffer)")
-  call <SID>OptionG("efm", &efm)
-  call append("$", "makeprg\tprogram used for the \":make\" command")
-  call append("$", "\t(global or local to buffer)")
-  call <SID>OptionG("mp", &mp)
-  call append("$", "shellpipe\tstring used to put the output of \":make\" in the error file")
-  call <SID>OptionG("sp", &sp)
-  call append("$", "makeef\tname of the errorfile for the 'makeprg' command")
-  call <SID>OptionG("mef", &mef)
-  call append("$", "grepprg\tprogram used for the \":grep\" command")
-  call append("$", "\t(global or local to buffer)")
-  call <SID>OptionG("gp", &gp)
-  call append("$", "grepformat\tlist of formats for output of 'grepprg'")
-  call <SID>OptionG("gfm", &gfm)
-endif
-
-
-if has("msdos") || has("os2") || has("win16") || has("win32") || has("osfiletype")
-  call <SID>Header("system specific")
-  if has("msdos")
-    call append("$", "bioskey\tcall the BIOS to get a keyoard character")
-    call <SID>BinOptionG("biosk", &biosk)
-    call append("$", "conskey\tuse direct console I/O to get a keyboard character")
-    call <SID>BinOptionG("consk", &consk)
-  endif
-  if has("osfiletype")
-    call append("$", "osfiletype\tOS-specific information about the type of file")
-    call append("$", "\t(local to buffer)")
-    call <SID>OptionL("oft")
-  endif
-  if has("msdos") || has("os2") || has("win16") || has("win32")
-    call append("$", "shellslash\tuse forward slashes in file names; for Unix-like shells")
-    call <SID>BinOptionG("ssl", &ssl)
-  endif
-endif
-
-
-call <SID>Header("language specific")
-call append("$", "isfname\tspecifies the characters in a file name")
-call <SID>OptionG("isf", &isf)
-call append("$", "isident\tspecifies the characters in an identifier")
-call <SID>OptionG("isi", &isi)
-call append("$", "iskeyword\tspecifies the characters in a keyword")
-call append("$", "\t(local to buffer)")
-call <SID>OptionL("isk")
-call append("$", "isprint\tspecifies printable characters")
-call <SID>OptionG("isp", &isp)
-if has("textobjects")
-  call append("$", "quoteescape\tspecifies escape characters in a string")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("qe")
-endif
-if has("rightleft")
-  call append("$", "rightleft\tdisplay the buffer right-to-left")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("rl")
-  call append("$", "rightleftcmd\tWhen to edit the command-line right-to-left")
-  call append("$", "\t(local to window)")
-  call <SID>OptionL("rlc")
-  call append("$", "revins\tInsert characters backwards")
-  call <SID>BinOptionG("ri", &ri)
-  call append("$", "allowrevins\tAllow CTRL-_ in Insert and Command-line mode to toggle 'revins'")
-  call <SID>BinOptionG("ari", &ari)
-  call append("$", "aleph\tthe ASCII code for the first letter of the Hebrew alphabet")
-  call append("$", " \tset al=" . &al)
-  call append("$", "hkmap\tuse Hebrew keyboard mapping")
-  call <SID>BinOptionG("hk", &hk)
-  call append("$", "hkmapp\tuse phonetic Hebrew keyboard mapping")
-  call <SID>BinOptionG("hkp", &hkp)
-endif
-if has("farsi")
-  call append("$", "altkeymap\tuse Farsi as the second language when 'revins' is set")
-  call <SID>BinOptionG("akm", &akm)
-  call append("$", "fkmap\tuse Farsi keyboard mapping")
-  call <SID>BinOptionG("fk", &fk)
-endif
-if has("arabic")
-  call append("$", "arabic\tPrepare for editing Arabic text")
-  call append("$", "\t(local to window)")
-  call <SID>BinOptionL("arab")
-  call append("$", "arabicshape\tPerform shaping of Arabic characters")
-  call <SID>BinOptionG("arshape", &arshape)
-  call append("$", "termbidi\tTerminal will perform bidi handling")
-  call <SID>BinOptionG("tbidi", &tbidi)
-endif
-if has("keymap")
-  call append("$", "keymap\tname of a keyboard mappping")
-  call <SID>OptionL("kmp")
-endif
-if has("langmap")
-  call append("$", "langmap\ttranslate characters for Normal mode")
-  call <SID>OptionG("lmap", &lmap)
-endif
-if has("xim")
-  call append("$", "imdisable\twhen set never use IM; overrules following IM options")
-  call <SID>BinOptionG("imd", &imd)
-endif
-call append("$", "iminsert\tin Insert mode: 1: use :lmap; 2: use IM; 0: neither")
-call append("$", "\t(local to window)")
-call <SID>OptionL("imi")
-call append("$", "imsearch\tentering a search pattern: 1: use :lmap; 2: use IM; 0: neither")
-call append("$", "\t(local to window)")
-call <SID>OptionL("ims")
-if has("xim")
-  call append("$", "imcmdline\twhen set always use IM when starting to edit a command line")
-  call <SID>BinOptionG("imc", &imc)
-endif
-
-
-if has("multi_byte")
-  call <SID>Header("multi-byte characters")
-  call append("$", "encoding\tcharacter encoding used in Vim: \"latin1\", \"utf-8\"")
-  call append("$", "\t\"euc-jp\", \"big5\", etc.")
-  call <SID>OptionG("enc", &enc)
-  call append("$", "fileencoding\tcharacter encoding for the current file")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("fenc")
-  call append("$", "fileencodings\tautomatically detected character encodings")
-  call <SID>OptionG("fencs", &fencs)
-  call append("$", "termencoding\tcharacter encoding used by the terminal")
-  call <SID>OptionG("tenc", &tenc)
-  call append("$", "charconvert\texpression used for character encoding conversion")
-  call <SID>OptionG("ccv", &ccv)
-  call append("$", "delcombine\tDelete combining (composing) characters on their own")
-  call <SID>BinOptionG("deco", &deco)
-  call append("$", "maxcombine\tMaximum number of combining (composing) characters displayed")
-  call <SID>OptionG("mco", &mco)
-  if has("xim") && has("gui_gtk")
-    call append("$", "imactivatekey\tkey that activates the X input method")
-    call <SID>OptionG("imak", &imak)
-  endif
-  call append("$", "ambiwidth\tWidth of ambiguous width characters")
-  call <SID>OptionG("ambw", &ambw)
-endif
-
-
-call <SID>Header("various")
-if has("virtualedit")
-  call append("$", "virtualedit\twhen to use virtual editing: \"block\", \"insert\" and/or \"all\"")
-  call <SID>OptionG("ve", &ve)
-endif
-if has("autocmd")
-  call append("$", "eventignore\tlist of autocommand events which are to be ignored")
-  call <SID>OptionG("ei", &ei)
-endif
-call append("$", "loadplugins\tload plugin scripts when starting up")
-call <SID>BinOptionG("lpl", &lpl)
-call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current directory")
-call <SID>BinOptionG("ex", &ex)
-call append("$", "secure\tsafer working with script files in the current directory")
-call <SID>BinOptionG("secure", &secure)
-call append("$", "gdefault\tuse the 'g' flag for \":substitute\"")
-call <SID>BinOptionG("gd", &gd)
-call append("$", "edcompatible\t'g' and 'c' flags of \":substitute\" toggle")
-call <SID>BinOptionG("ed", &ed)
-if exists("+opendevice")
-  call append("$", "opendevice\tallow reading/writing devices")
-  call <SID>BinOptionG("odev", &odev)
-endif
-if exists("+maxfuncdepth")
-  call append("$", "maxfuncdepth\tmaximum depth of function calls")
-  call append("$", " \tset mfd=" . &mfd)
-endif
-if has("mksession")
-  call append("$", "sessionoptions\tlist of words that specifies what to put in a session file")
-  call <SID>OptionG("ssop", &ssop)
-  call append("$", "viewoptions\tlist of words that specifies what to save for :mkview")
-  call <SID>OptionG("vop", &vop)
-  call append("$", "viewdir\tdirectory where to store files with :mkview")
-  call <SID>OptionG("vdir", &vdir)
-endif
-if has("viminfo")
-  call append("$", "viminfo\tlist that specifies what to write in the viminfo file")
-  call <SID>OptionG("vi", &vi)
-endif
-if has("quickfix")
-  call append("$", "bufhidden\twhat happens with a buffer when it's no longer in a window")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("bh")
-  call append("$", "buftype\t\"\", \"nofile\", \"nowrite\" or \"quickfix\": type of buffer")
-  call append("$", "\t(local to buffer)")
-  call <SID>OptionL("bt")
-endif
-call append("$", "buflisted\twhether the buffer shows up in the buffer list")
-call append("$", "\t(local to buffer)")
-call <SID>BinOptionL("bl")
-call append("$", "debug\tset to \"msg\" to see all error messages")
-call append("$", " \tset debug=" . &debug)
-if has("mzscheme")
-  call append("$", "mzquantum\tinterval in milliseconds between polls for MzScheme threads")
-  call append("$", " \tset mzq=" . &mzq)
-endif
-
-set cpo&vim
-
-" go to first line
-1
-
-" reset 'modified', so that ":q" can be used to close the window
-setlocal nomodified
-
-if has("syntax")
-  " Use Vim highlighting, with some additional stuff
-  setlocal ft=vim
-  syn match optwinHeader "^ \=[0-9].*"
-  syn match optwinName "^[a-z]*\t" nextgroup=optwinComment
-  syn match optwinComment ".*" contained
-  syn match optwinComment "^\t.*"
-  if !exists("did_optwin_syntax_inits")
-    let did_optwin_syntax_inits = 1
-    hi link optwinHeader Title
-    hi link optwinName Identifier
-    hi link optwinComment Comment
-  endif
-endif
-
-" Install autocommands to enable mappings in option-window
-noremap <silent> <buffer> <CR> <C-\><C-N>:call <SID>CR()<CR>
-inoremap <silent> <buffer> <CR> <Esc>:call <SID>CR()<CR>
-noremap <silent> <buffer> <Space> :call <SID>Space()<CR>
-
-" Make the buffer be deleted when the window is closed.
-setlocal buftype=nofile bufhidden=delete noswapfile
-
-augroup optwin
-  au! BufUnload,BufHidden option-window nested
-	\ call <SID>unload() | delfun <SID>unload
-augroup END
-
-fun! <SID>unload()
-  delfun <SID>CR
-  delfun <SID>Space
-  delfun <SID>Find
-  delfun <SID>Update
-  delfun <SID>OptionL
-  delfun <SID>OptionG
-  delfun <SID>BinOptionL
-  delfun <SID>BinOptionG
-  delfun <SID>Header
-  au! optwin
-endfun
-
-" Restore the previous value of 'title' and 'icon'.
-let &title = s:old_title
-let &icon = s:old_icon
-let &ru = s:old_ru
-let &sc = s:old_sc
-let &cpo = s:cpo_save
-unlet s:old_title s:old_icon s:old_ru s:old_sc s:cpo_save s:idx s:lnum
diff --git a/runtime/tutor/runtime/rgb.txt b/runtime/tutor/runtime/rgb.txt
deleted file mode 100644
index 5bc2baa..0000000
--- a/runtime/tutor/runtime/rgb.txt
+++ /dev/null
@@ -1,753 +0,0 @@
-! $XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp $
-255 250 250		snow
-248 248 255		ghost white
-248 248 255		GhostWhite
-245 245 245		white smoke
-245 245 245		WhiteSmoke
-220 220 220		gainsboro
-255 250 240		floral white
-255 250 240		FloralWhite
-253 245 230		old lace
-253 245 230		OldLace
-250 240 230		linen
-250 235 215		antique white
-250 235 215		AntiqueWhite
-255 239 213		papaya whip
-255 239 213		PapayaWhip
-255 235 205		blanched almond
-255 235 205		BlanchedAlmond
-255 228 196		bisque
-255 218 185		peach puff
-255 218 185		PeachPuff
-255 222 173		navajo white
-255 222 173		NavajoWhite
-255 228 181		moccasin
-255 248 220		cornsilk
-255 255 240		ivory
-255 250 205		lemon chiffon
-255 250 205		LemonChiffon
-255 245 238		seashell
-240 255 240		honeydew
-245 255 250		mint cream
-245 255 250		MintCream
-240 255 255		azure
-240 248 255		alice blue
-240 248 255		AliceBlue
-230 230 250		lavender
-255 240 245		lavender blush
-255 240 245		LavenderBlush
-255 228 225		misty rose
-255 228 225		MistyRose
-255 255 255		white
-  0   0   0		black
- 47  79  79		dark slate gray
- 47  79  79		DarkSlateGray
- 47  79  79		dark slate grey
- 47  79  79		DarkSlateGrey
-105 105 105		dim gray
-105 105 105		DimGray
-105 105 105		dim grey
-105 105 105		DimGrey
-112 128 144		slate gray
-112 128 144		SlateGray
-112 128 144		slate grey
-112 128 144		SlateGrey
-119 136 153		light slate gray
-119 136 153		LightSlateGray
-119 136 153		light slate grey
-119 136 153		LightSlateGrey
-190 190 190		gray
-190 190 190		grey
-211 211 211		light grey
-211 211 211		LightGrey
-211 211 211		light gray
-211 211 211		LightGray
- 25  25 112		midnight blue
- 25  25 112		MidnightBlue
-  0   0 128		navy
-  0   0 128		navy blue
-  0   0 128		NavyBlue
-100 149 237		cornflower blue
-100 149 237		CornflowerBlue
- 72  61 139		dark slate blue
- 72  61 139		DarkSlateBlue
-106  90 205		slate blue
-106  90 205		SlateBlue
-123 104 238		medium slate blue
-123 104 238		MediumSlateBlue
-132 112 255		light slate blue
-132 112 255		LightSlateBlue
-  0   0 205		medium blue
-  0   0 205		MediumBlue
- 65 105 225		royal blue
- 65 105 225		RoyalBlue
-  0   0 255		blue
- 30 144 255		dodger blue
- 30 144 255		DodgerBlue
-  0 191 255		deep sky blue
-  0 191 255		DeepSkyBlue
-135 206 235		sky blue
-135 206 235		SkyBlue
-135 206 250		light sky blue
-135 206 250		LightSkyBlue
- 70 130 180		steel blue
- 70 130 180		SteelBlue
-176 196 222		light steel blue
-176 196 222		LightSteelBlue
-173 216 230		light blue
-173 216 230		LightBlue
-176 224 230		powder blue
-176 224 230		PowderBlue
-175 238 238		pale turquoise
-175 238 238		PaleTurquoise
-  0 206 209		dark turquoise
-  0 206 209		DarkTurquoise
- 72 209 204		medium turquoise
- 72 209 204		MediumTurquoise
- 64 224 208		turquoise
-  0 255 255		cyan
-224 255 255		light cyan
-224 255 255		LightCyan
- 95 158 160		cadet blue
- 95 158 160		CadetBlue
-102 205 170		medium aquamarine
-102 205 170		MediumAquamarine
-127 255 212		aquamarine
-  0 100   0		dark green
-  0 100   0		DarkGreen
- 85 107  47		dark olive green
- 85 107  47		DarkOliveGreen
-143 188 143		dark sea green
-143 188 143		DarkSeaGreen
- 46 139  87		sea green
- 46 139  87		SeaGreen
- 60 179 113		medium sea green
- 60 179 113		MediumSeaGreen
- 32 178 170		light sea green
- 32 178 170		LightSeaGreen
-152 251 152		pale green
-152 251 152		PaleGreen
-  0 255 127		spring green
-  0 255 127		SpringGreen
-124 252   0		lawn green
-124 252   0		LawnGreen
-  0 255   0		green
-127 255   0		chartreuse
-  0 250 154		medium spring green
-  0 250 154		MediumSpringGreen
-173 255  47		green yellow
-173 255  47		GreenYellow
- 50 205  50		lime green
- 50 205  50		LimeGreen
-154 205  50		yellow green
-154 205  50		YellowGreen
- 34 139  34		forest green
- 34 139  34		ForestGreen
-107 142  35		olive drab
-107 142  35		OliveDrab
-189 183 107		dark khaki
-189 183 107		DarkKhaki
-240 230 140		khaki
-238 232 170		pale goldenrod
-238 232 170		PaleGoldenrod
-250 250 210		light goldenrod yellow
-250 250 210		LightGoldenrodYellow
-255 255 224		light yellow
-255 255 224		LightYellow
-255 255   0		yellow
-255 215   0		gold
-238 221 130		light goldenrod
-238 221 130		LightGoldenrod
-218 165  32		goldenrod
-184 134  11		dark goldenrod
-184 134  11		DarkGoldenrod
-188 143 143		rosy brown
-188 143 143		RosyBrown
-205  92  92		indian red
-205  92  92		IndianRed
-139  69  19		saddle brown
-139  69  19		SaddleBrown
-160  82  45		sienna
-205 133  63		peru
-222 184 135		burlywood
-245 245 220		beige
-245 222 179		wheat
-244 164  96		sandy brown
-244 164  96		SandyBrown
-210 180 140		tan
-210 105  30		chocolate
-178  34  34		firebrick
-165  42  42		brown
-233 150 122		dark salmon
-233 150 122		DarkSalmon
-250 128 114		salmon
-255 160 122		light salmon
-255 160 122		LightSalmon
-255 165   0		orange
-255 140   0		dark orange
-255 140   0		DarkOrange
-255 127  80		coral
-240 128 128		light coral
-240 128 128		LightCoral
-255  99  71		tomato
-255  69   0		orange red
-255  69   0		OrangeRed
-255   0   0		red
-255 105 180		hot pink
-255 105 180		HotPink
-255  20 147		deep pink
-255  20 147		DeepPink
-255 192 203		pink
-255 182 193		light pink
-255 182 193		LightPink
-219 112 147		pale violet red
-219 112 147		PaleVioletRed
-176  48  96		maroon
-199  21 133		medium violet red
-199  21 133		MediumVioletRed
-208  32 144		violet red
-208  32 144		VioletRed
-255   0 255		magenta
-238 130 238		violet
-221 160 221		plum
-218 112 214		orchid
-186  85 211		medium orchid
-186  85 211		MediumOrchid
-153  50 204		dark orchid
-153  50 204		DarkOrchid
-148   0 211		dark violet
-148   0 211		DarkViolet
-138  43 226		blue violet
-138  43 226		BlueViolet
-160  32 240		purple
-147 112 219		medium purple
-147 112 219		MediumPurple
-216 191 216		thistle
-255 250 250		snow1
-238 233 233		snow2
-205 201 201		snow3
-139 137 137		snow4
-255 245 238		seashell1
-238 229 222		seashell2
-205 197 191		seashell3
-139 134 130		seashell4
-255 239 219		AntiqueWhite1
-238 223 204		AntiqueWhite2
-205 192 176		AntiqueWhite3
-139 131 120		AntiqueWhite4
-255 228 196		bisque1
-238 213 183		bisque2
-205 183 158		bisque3
-139 125 107		bisque4
-255 218 185		PeachPuff1
-238 203 173		PeachPuff2
-205 175 149		PeachPuff3
-139 119 101		PeachPuff4
-255 222 173		NavajoWhite1
-238 207 161		NavajoWhite2
-205 179 139		NavajoWhite3
-139 121	 94		NavajoWhite4
-255 250 205		LemonChiffon1
-238 233 191		LemonChiffon2
-205 201 165		LemonChiffon3
-139 137 112		LemonChiffon4
-255 248 220		cornsilk1
-238 232 205		cornsilk2
-205 200 177		cornsilk3
-139 136 120		cornsilk4
-255 255 240		ivory1
-238 238 224		ivory2
-205 205 193		ivory3
-139 139 131		ivory4
-240 255 240		honeydew1
-224 238 224		honeydew2
-193 205 193		honeydew3
-131 139 131		honeydew4
-255 240 245		LavenderBlush1
-238 224 229		LavenderBlush2
-205 193 197		LavenderBlush3
-139 131 134		LavenderBlush4
-255 228 225		MistyRose1
-238 213 210		MistyRose2
-205 183 181		MistyRose3
-139 125 123		MistyRose4
-240 255 255		azure1
-224 238 238		azure2
-193 205 205		azure3
-131 139 139		azure4
-131 111 255		SlateBlue1
-122 103 238		SlateBlue2
-105  89 205		SlateBlue3
- 71  60 139		SlateBlue4
- 72 118 255		RoyalBlue1
- 67 110 238		RoyalBlue2
- 58  95 205		RoyalBlue3
- 39  64 139		RoyalBlue4
-  0   0 255		blue1
-  0   0 238		blue2
-  0   0 205		blue3
-  0   0 139		blue4
- 30 144 255		DodgerBlue1
- 28 134 238		DodgerBlue2
- 24 116 205		DodgerBlue3
- 16  78 139		DodgerBlue4
- 99 184 255		SteelBlue1
- 92 172 238		SteelBlue2
- 79 148 205		SteelBlue3
- 54 100 139		SteelBlue4
-  0 191 255		DeepSkyBlue1
-  0 178 238		DeepSkyBlue2
-  0 154 205		DeepSkyBlue3
-  0 104 139		DeepSkyBlue4
-135 206 255		SkyBlue1
-126 192 238		SkyBlue2
-108 166 205		SkyBlue3
- 74 112 139		SkyBlue4
-176 226 255		LightSkyBlue1
-164 211 238		LightSkyBlue2
-141 182 205		LightSkyBlue3
- 96 123 139		LightSkyBlue4
-198 226 255		SlateGray1
-185 211 238		SlateGray2
-159 182 205		SlateGray3
-108 123 139		SlateGray4
-202 225 255		LightSteelBlue1
-188 210 238		LightSteelBlue2
-162 181 205		LightSteelBlue3
-110 123 139		LightSteelBlue4
-191 239 255		LightBlue1
-178 223 238		LightBlue2
-154 192 205		LightBlue3
-104 131 139		LightBlue4
-224 255 255		LightCyan1
-209 238 238		LightCyan2
-180 205 205		LightCyan3
-122 139 139		LightCyan4
-187 255 255		PaleTurquoise1
-174 238 238		PaleTurquoise2
-150 205 205		PaleTurquoise3
-102 139 139		PaleTurquoise4
-152 245 255		CadetBlue1
-142 229 238		CadetBlue2
-122 197 205		CadetBlue3
- 83 134 139		CadetBlue4
-  0 245 255		turquoise1
-  0 229 238		turquoise2
-  0 197 205		turquoise3
-  0 134 139		turquoise4
-  0 255 255		cyan1
-  0 238 238		cyan2
-  0 205 205		cyan3
-  0 139 139		cyan4
-151 255 255		DarkSlateGray1
-141 238 238		DarkSlateGray2
-121 205 205		DarkSlateGray3
- 82 139 139		DarkSlateGray4
-127 255 212		aquamarine1
-118 238 198		aquamarine2
-102 205 170		aquamarine3
- 69 139 116		aquamarine4
-193 255 193		DarkSeaGreen1
-180 238 180		DarkSeaGreen2
-155 205 155		DarkSeaGreen3
-105 139 105		DarkSeaGreen4
- 84 255 159		SeaGreen1
- 78 238 148		SeaGreen2
- 67 205 128		SeaGreen3
- 46 139	 87		SeaGreen4
-154 255 154		PaleGreen1
-144 238 144		PaleGreen2
-124 205 124		PaleGreen3
- 84 139	 84		PaleGreen4
-  0 255 127		SpringGreen1
-  0 238 118		SpringGreen2
-  0 205 102		SpringGreen3
-  0 139	 69		SpringGreen4
-  0 255	  0		green1
-  0 238	  0		green2
-  0 205	  0		green3
-  0 139	  0		green4
-127 255	  0		chartreuse1
-118 238	  0		chartreuse2
-102 205	  0		chartreuse3
- 69 139	  0		chartreuse4
-192 255	 62		OliveDrab1
-179 238	 58		OliveDrab2
-154 205	 50		OliveDrab3
-105 139	 34		OliveDrab4
-202 255 112		DarkOliveGreen1
-188 238 104		DarkOliveGreen2
-162 205	 90		DarkOliveGreen3
-110 139	 61		DarkOliveGreen4
-255 246 143		khaki1
-238 230 133		khaki2
-205 198 115		khaki3
-139 134	 78		khaki4
-255 236 139		LightGoldenrod1
-238 220 130		LightGoldenrod2
-205 190 112		LightGoldenrod3
-139 129	 76		LightGoldenrod4
-255 255 224		LightYellow1
-238 238 209		LightYellow2
-205 205 180		LightYellow3
-139 139 122		LightYellow4
-255 255	  0		yellow1
-238 238	  0		yellow2
-205 205	  0		yellow3
-139 139	  0		yellow4
-255 215	  0		gold1
-238 201	  0		gold2
-205 173	  0		gold3
-139 117	  0		gold4
-255 193	 37		goldenrod1
-238 180	 34		goldenrod2
-205 155	 29		goldenrod3
-139 105	 20		goldenrod4
-255 185	 15		DarkGoldenrod1
-238 173	 14		DarkGoldenrod2
-205 149	 12		DarkGoldenrod3
-139 101	  8		DarkGoldenrod4
-255 193 193		RosyBrown1
-238 180 180		RosyBrown2
-205 155 155		RosyBrown3
-139 105 105		RosyBrown4
-255 106 106		IndianRed1
-238  99	 99		IndianRed2
-205  85	 85		IndianRed3
-139  58	 58		IndianRed4
-255 130	 71		sienna1
-238 121	 66		sienna2
-205 104	 57		sienna3
-139  71	 38		sienna4
-255 211 155		burlywood1
-238 197 145		burlywood2
-205 170 125		burlywood3
-139 115	 85		burlywood4
-255 231 186		wheat1
-238 216 174		wheat2
-205 186 150		wheat3
-139 126 102		wheat4
-255 165	 79		tan1
-238 154	 73		tan2
-205 133	 63		tan3
-139  90	 43		tan4
-255 127	 36		chocolate1
-238 118	 33		chocolate2
-205 102	 29		chocolate3
-139  69	 19		chocolate4
-255  48	 48		firebrick1
-238  44	 44		firebrick2
-205  38	 38		firebrick3
-139  26	 26		firebrick4
-255  64	 64		brown1
-238  59	 59		brown2
-205  51	 51		brown3
-139  35	 35		brown4
-255 140 105		salmon1
-238 130	 98		salmon2
-205 112	 84		salmon3
-139  76	 57		salmon4
-255 160 122		LightSalmon1
-238 149 114		LightSalmon2
-205 129	 98		LightSalmon3
-139  87	 66		LightSalmon4
-255 165	  0		orange1
-238 154	  0		orange2
-205 133	  0		orange3
-139  90	  0		orange4
-255 127	  0		DarkOrange1
-238 118	  0		DarkOrange2
-205 102	  0		DarkOrange3
-139  69	  0		DarkOrange4
-255 114	 86		coral1
-238 106	 80		coral2
-205  91	 69		coral3
-139  62	 47		coral4
-255  99	 71		tomato1
-238  92	 66		tomato2
-205  79	 57		tomato3
-139  54	 38		tomato4
-255  69	  0		OrangeRed1
-238  64	  0		OrangeRed2
-205  55	  0		OrangeRed3
-139  37	  0		OrangeRed4
-255   0	  0		red1
-238   0	  0		red2
-205   0	  0		red3
-139   0	  0		red4
-255  20 147		DeepPink1
-238  18 137		DeepPink2
-205  16 118		DeepPink3
-139  10	 80		DeepPink4
-255 110 180		HotPink1
-238 106 167		HotPink2
-205  96 144		HotPink3
-139  58  98		HotPink4
-255 181 197		pink1
-238 169 184		pink2
-205 145 158		pink3
-139  99 108		pink4
-255 174 185		LightPink1
-238 162 173		LightPink2
-205 140 149		LightPink3
-139  95 101		LightPink4
-255 130 171		PaleVioletRed1
-238 121 159		PaleVioletRed2
-205 104 137		PaleVioletRed3
-139  71	 93		PaleVioletRed4
-255  52 179		maroon1
-238  48 167		maroon2
-205  41 144		maroon3
-139  28	 98		maroon4
-255  62 150		VioletRed1
-238  58 140		VioletRed2
-205  50 120		VioletRed3
-139  34	 82		VioletRed4
-255   0 255		magenta1
-238   0 238		magenta2
-205   0 205		magenta3
-139   0 139		magenta4
-255 131 250		orchid1
-238 122 233		orchid2
-205 105 201		orchid3
-139  71 137		orchid4
-255 187 255		plum1
-238 174 238		plum2
-205 150 205		plum3
-139 102 139		plum4
-224 102 255		MediumOrchid1
-209  95 238		MediumOrchid2
-180  82 205		MediumOrchid3
-122  55 139		MediumOrchid4
-191  62 255		DarkOrchid1
-178  58 238		DarkOrchid2
-154  50 205		DarkOrchid3
-104  34 139		DarkOrchid4
-155  48 255		purple1
-145  44 238		purple2
-125  38 205		purple3
- 85  26 139		purple4
-171 130 255		MediumPurple1
-159 121 238		MediumPurple2
-137 104 205		MediumPurple3
- 93  71 139		MediumPurple4
-255 225 255		thistle1
-238 210 238		thistle2
-205 181 205		thistle3
-139 123 139		thistle4
-  0   0   0		gray0
-  0   0   0		grey0
-  3   3   3		gray1
-  3   3   3		grey1
-  5   5   5		gray2
-  5   5   5		grey2
-  8   8   8		gray3
-  8   8   8		grey3
- 10  10  10		gray4
- 10  10  10		grey4
- 13  13  13		gray5
- 13  13  13		grey5
- 15  15  15		gray6
- 15  15  15		grey6
- 18  18  18		gray7
- 18  18  18		grey7
- 20  20  20		gray8
- 20  20  20		grey8
- 23  23  23		gray9
- 23  23  23		grey9
- 26  26  26		gray10
- 26  26  26		grey10
- 28  28  28		gray11
- 28  28  28		grey11
- 31  31  31		gray12
- 31  31  31		grey12
- 33  33  33		gray13
- 33  33  33		grey13
- 36  36  36		gray14
- 36  36  36		grey14
- 38  38  38		gray15
- 38  38  38		grey15
- 41  41  41		gray16
- 41  41  41		grey16
- 43  43  43		gray17
- 43  43  43		grey17
- 46  46  46		gray18
- 46  46  46		grey18
- 48  48  48		gray19
- 48  48  48		grey19
- 51  51  51		gray20
- 51  51  51		grey20
- 54  54  54		gray21
- 54  54  54		grey21
- 56  56  56		gray22
- 56  56  56		grey22
- 59  59  59		gray23
- 59  59  59		grey23
- 61  61  61		gray24
- 61  61  61		grey24
- 64  64  64		gray25
- 64  64  64		grey25
- 66  66  66		gray26
- 66  66  66		grey26
- 69  69  69		gray27
- 69  69  69		grey27
- 71  71  71		gray28
- 71  71  71		grey28
- 74  74  74		gray29
- 74  74  74		grey29
- 77  77  77		gray30
- 77  77  77		grey30
- 79  79  79		gray31
- 79  79  79		grey31
- 82  82  82		gray32
- 82  82  82		grey32
- 84  84  84		gray33
- 84  84  84		grey33
- 87  87  87		gray34
- 87  87  87		grey34
- 89  89  89		gray35
- 89  89  89		grey35
- 92  92  92		gray36
- 92  92  92		grey36
- 94  94  94		gray37
- 94  94  94		grey37
- 97  97  97		gray38
- 97  97  97		grey38
- 99  99  99		gray39
- 99  99  99		grey39
-102 102 102		gray40
-102 102 102		grey40
-105 105 105		gray41
-105 105 105		grey41
-107 107 107		gray42
-107 107 107		grey42
-110 110 110		gray43
-110 110 110		grey43
-112 112 112		gray44
-112 112 112		grey44
-115 115 115		gray45
-115 115 115		grey45
-117 117 117		gray46
-117 117 117		grey46
-120 120 120		gray47
-120 120 120		grey47
-122 122 122		gray48
-122 122 122		grey48
-125 125 125		gray49
-125 125 125		grey49
-127 127 127		gray50
-127 127 127		grey50
-130 130 130		gray51
-130 130 130		grey51
-133 133 133		gray52
-133 133 133		grey52
-135 135 135		gray53
-135 135 135		grey53
-138 138 138		gray54
-138 138 138		grey54
-140 140 140		gray55
-140 140 140		grey55
-143 143 143		gray56
-143 143 143		grey56
-145 145 145		gray57
-145 145 145		grey57
-148 148 148		gray58
-148 148 148		grey58
-150 150 150		gray59
-150 150 150		grey59
-153 153 153		gray60
-153 153 153		grey60
-156 156 156		gray61
-156 156 156		grey61
-158 158 158		gray62
-158 158 158		grey62
-161 161 161		gray63
-161 161 161		grey63
-163 163 163		gray64
-163 163 163		grey64
-166 166 166		gray65
-166 166 166		grey65
-168 168 168		gray66
-168 168 168		grey66
-171 171 171		gray67
-171 171 171		grey67
-173 173 173		gray68
-173 173 173		grey68
-176 176 176		gray69
-176 176 176		grey69
-179 179 179		gray70
-179 179 179		grey70
-181 181 181		gray71
-181 181 181		grey71
-184 184 184		gray72
-184 184 184		grey72
-186 186 186		gray73
-186 186 186		grey73
-189 189 189		gray74
-189 189 189		grey74
-191 191 191		gray75
-191 191 191		grey75
-194 194 194		gray76
-194 194 194		grey76
-196 196 196		gray77
-196 196 196		grey77
-199 199 199		gray78
-199 199 199		grey78
-201 201 201		gray79
-201 201 201		grey79
-204 204 204		gray80
-204 204 204		grey80
-207 207 207		gray81
-207 207 207		grey81
-209 209 209		gray82
-209 209 209		grey82
-212 212 212		gray83
-212 212 212		grey83
-214 214 214		gray84
-214 214 214		grey84
-217 217 217		gray85
-217 217 217		grey85
-219 219 219		gray86
-219 219 219		grey86
-222 222 222		gray87
-222 222 222		grey87
-224 224 224		gray88
-224 224 224		grey88
-227 227 227		gray89
-227 227 227		grey89
-229 229 229		gray90
-229 229 229		grey90
-232 232 232		gray91
-232 232 232		grey91
-235 235 235		gray92
-235 235 235		grey92
-237 237 237		gray93
-237 237 237		grey93
-240 240 240		gray94
-240 240 240		grey94
-242 242 242		gray95
-242 242 242		grey95
-245 245 245		gray96
-245 245 245		grey96
-247 247 247		gray97
-247 247 247		grey97
-250 250 250		gray98
-250 250 250		grey98
-252 252 252		gray99
-252 252 252		grey99
-255 255 255		gray100
-255 255 255		grey100
-169 169 169		dark grey
-169 169 169		DarkGrey
-169 169 169		dark gray
-169 169 169		DarkGray
-0     0 139		dark blue
-0     0 139		DarkBlue
-0   139 139		dark cyan
-0   139 139		DarkCyan
-139   0 139		dark magenta
-139   0 139		DarkMagenta
-139   0   0		dark red
-139   0   0		DarkRed
-144 238 144		light green
-144 238 144		LightGreen
diff --git a/runtime/tutor/runtime/scripts.vim b/runtime/tutor/runtime/scripts.vim
deleted file mode 100644
index 936f508..0000000
--- a/runtime/tutor/runtime/scripts.vim
+++ /dev/null
@@ -1,351 +0,0 @@
-" Vim support file to detect file types in scripts
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2008 Apr 28
-
-" This file is called by an autocommand for every file that has just been
-" loaded into a buffer.  It checks if the type of file can be recognized by
-" the file contents.  The autocommand is in $VIMRUNTIME/filetype.vim.
-
-
-" Only do the rest when the FileType autocommand has not been triggered yet.
-if did_filetype()
-  finish
-endif
-
-" Load the user defined scripts file first
-" Only do this when the FileType autocommand has not been triggered yet
-if exists("myscriptsfile") && filereadable(expand(myscriptsfile))
-  execute "source " . myscriptsfile
-  if did_filetype()
-    finish
-  endif
-endif
-
-" Line continuation is used here, remove 'C' from 'cpoptions'
-let s:cpo_save = &cpo
-set cpo&vim
-
-let s:line1 = getline(1)
-
-if s:line1 =~ "^#!"
-  " A script that starts with "#!".
-
-  " Check for a line like "#!/usr/bin/env VAR=val bash".  Turn it into
-  " "#!/usr/bin/bash" to make matching easier.
-  if s:line1 =~ '^#!\s*\S*\<env\s'
-    let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g')
-    let s:line1 = substitute(s:line1, '\<env\s\+', '', '')
-  endif
-
-  " Get the program name.
-  " Only accept spaces in PC style paths: "#!c:/program files/perl [args]".
-  " If the word env is used, use the first word after the space:
-  " "#!/usr/bin/env perl [path/args]"
-  " If there is no path use the first word: "#!perl [path/args]".
-  " Otherwise get the last word after a slash: "#!/usr/bin/perl [path/args]".
-  if s:line1 =~ '^#!\s*\a:[/\\]'
-    let s:name = substitute(s:line1, '^#!.*[/\\]\(\i\+\).*', '\1', '')
-  elseif s:line1 =~ '^#!.*\<env\>'
-    let s:name = substitute(s:line1, '^#!.*\<env\>\s\+\(\i\+\).*', '\1', '')
-  elseif s:line1 =~ '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)'
-    let s:name = substitute(s:line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '')
-  else
-    let s:name = substitute(s:line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '')
-  endif
-
-  " tcl scripts may have #!/bin/sh in the first line and "exec wish" in the
-  " third line.  Suggested by Steven Atkinson.
-  if getline(3) =~ '^exec wish'
-    let s:name = 'wish'
-  endif
-
-  " Bourne-like shell scripts: bash bash2 ksh ksh93 sh
-  if s:name =~ '^\(bash\d*\|\|ksh\d*\|sh\)\>'
-    call SetFileTypeSH(s:line1)	" defined in filetype.vim
-
-    " csh scripts
-  elseif s:name =~ '^csh\>'
-    if exists("g:filetype_csh")
-      call SetFileTypeShell(g:filetype_csh)
-    else
-      call SetFileTypeShell("csh")
-    endif
-
-    " tcsh scripts
-  elseif s:name =~ '^tcsh\>'
-    call SetFileTypeShell("tcsh")
-
-    " Z shell scripts
-  elseif s:name =~ '^zsh\>'
-    set ft=zsh
-
-    " TCL scripts
-  elseif s:name =~ '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>'
-    set ft=tcl
-
-    " Expect scripts
-  elseif s:name =~ '^expect\>'
-    set ft=expect
-
-    " Gnuplot scripts
-  elseif s:name =~ '^gnuplot\>'
-    set ft=gnuplot
-
-    " Makefiles
-  elseif s:name =~ 'make\>'
-    set ft=make
-
-    " Lua
-  elseif s:name =~ 'lua'
-    set ft=lua
-
-    " Perl
-  elseif s:name =~ 'perl'
-    set ft=perl
-
-    " PHP
-  elseif s:name =~ 'php'
-    set ft=php
-
-    " Python
-  elseif s:name =~ 'python'
-    set ft=python
-
-    " Groovy
-  elseif s:name =~ '^groovy\>'
-    set ft=groovy
-
-    " Ruby
-  elseif s:name =~ 'ruby'
-    set ft=ruby
-
-    " BC calculator
-  elseif s:name =~ '^bc\>'
-    set ft=bc
-
-    " sed
-  elseif s:name =~ 'sed\>'
-    set ft=sed
-
-    " OCaml-scripts
-  elseif s:name =~ 'ocaml'
-    set ft=ocaml
-
-    " Awk scripts
-  elseif s:name =~ 'awk\>'
-    set ft=awk
-
-    " Website MetaLanguage
-  elseif s:name =~ 'wml'
-    set ft=wml
-
-    " Scheme scripts
-  elseif s:name =~ 'scheme'
-    set ft=scheme
-
-    " CFEngine scripts
-  elseif s:name =~ 'cfengine'
-    set ft=cfengine
-
-  endif
-  unlet s:name
-
-else
-  " File does not start with "#!".
-
-  let s:line2 = getline(2)
-  let s:line3 = getline(3)
-  let s:line4 = getline(4)
-  let s:line5 = getline(5)
-
-  " Bourne-like shell scripts: sh ksh bash bash2
-  if s:line1 =~ '^:$'
-    call SetFileTypeSH(s:line1)	" defined in filetype.vim
-
-    " Z shell scripts
-  elseif s:line1 =~ '^#compdef\>' || s:line1 =~ '^#autoload\>'
-    set ft=zsh
-
-  " ELM Mail files
-  elseif s:line1 =~ '^From [a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\= .*[12][09]\d\d$'
-    set ft=mail
-
-    " Mason
-  elseif s:line1 =~ '^<[%&].*>'
-    set ft=mason
-
-    " Vim scripts (must have '" vim' as the first line to trigger this)
-  elseif s:line1 =~ '^" *[vV]im$'
-    set ft=vim
-
-    " MOO
-  elseif s:line1 =~ '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$'
-    set ft=moo
-
-    " Diff file:
-    " - "diff" in first line (context diff)
-    " - "Only in " in first line
-    " - "--- " in first line and "+++ " in second line (unified diff).
-    " - "*** " in first line and "--- " in second line (context diff).
-    " - "# It was generated by makepatch " in the second line (makepatch diff).
-    " - "Index: <filename>" in the first line (CVS file)
-    " - "=== ", line of "=", "---", "+++ " (SVK diff)
-    " - "=== ", "--- ", "+++ " (bzr diff, common case)
-    " - "=== (removed|added|renamed|modified)" (bzr diff, alternative)
-  elseif s:line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\)'
-	\ || (s:line1 =~ '^--- ' && s:line2 =~ '^+++ ')
-	\ || (s:line1 =~ '^\* looking for ' && s:line2 =~ '^\* comparing to ')
-	\ || (s:line1 =~ '^\*\*\* ' && s:line2 =~ '^--- ')
-	\ || (s:line1 =~ '^=== ' && ((s:line2 =~ '^=\{66\}' && s:line3 =~ '^--- ' && s:line4 =~ '^+++') || (s:line2 =~ '^--- ' && s:line3 =~ '^+++ ')))
-	\ || (s:line1 =~ '^=== \(removed\|added\|renamed\|modified\)')
-    set ft=diff
-
-    " PostScript Files (must have %!PS as the first line, like a2ps output)
-  elseif s:line1 =~ '^%![ \t]*PS'
-    set ft=postscr
-
-    " M4 scripts: Guess there is a line that starts with "dnl".
-  elseif s:line1 =~ '^\s*dnl\>'
-	\ || s:line2 =~ '^\s*dnl\>'
-	\ || s:line3 =~ '^\s*dnl\>'
-	\ || s:line4 =~ '^\s*dnl\>'
-	\ || s:line5 =~ '^\s*dnl\>'
-    set ft=m4
-
-    " AmigaDos scripts
-  elseif $TERM == "amiga"
-	\ && (s:line1 =~ "^;" || s:line1 =~ '^\.[bB][rR][aA]')
-    set ft=amiga
-
-    " SiCAD scripts (must have procn or procd as the first line to trigger this)
-  elseif s:line1 =~? '^ *proc[nd] *$'
-    set ft=sicad
-
-    " Purify log files start with "****  Purify"
-  elseif s:line1 =~ '^\*\*\*\*  Purify'
-    set ft=purifylog
-
-    " XML
-  elseif s:line1 =~ '<?\s*xml.*?>'
-    set ft=xml
-
-    " XHTML (e.g.: PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN")
-  elseif s:line1 =~ '\<DTD\s\+XHTML\s'
-    set ft=xhtml
-
-    " PDF
-  elseif s:line1 =~ '^%PDF-'
-    set ft=pdf
-
-    " XXD output
-  elseif s:line1 =~ '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} '
-    set ft=xxd
-
-    " RCS/CVS log output
-  elseif s:line1 =~ '^RCS file:' || s:line2 =~ '^RCS file:'
-    set ft=rcslog
-
-    " CVS commit
-  elseif s:line2 =~ '^CVS:' || getline("$") =~ '^CVS: '
-    set ft=cvs
-
-    " Prescribe
-  elseif s:line1 =~ '^!R!'
-    set ft=prescribe
-
-    " Send-pr
-  elseif s:line1 =~ '^SEND-PR:'
-    set ft=sendpr
-
-    " SNNS files
-  elseif s:line1 =~ '^SNNS network definition file'
-    set ft=snnsnet
-  elseif s:line1 =~ '^SNNS pattern definition file'
-    set ft=snnspat
-  elseif s:line1 =~ '^SNNS result file'
-    set ft=snnsres
-
-    " Virata
-  elseif s:line1 =~ '^%.\{-}[Vv]irata'
-	\ || s:line2 =~ '^%.\{-}[Vv]irata'
-	\ || s:line3 =~ '^%.\{-}[Vv]irata'
-	\ || s:line4 =~ '^%.\{-}[Vv]irata'
-	\ || s:line5 =~ '^%.\{-}[Vv]irata'
-    set ft=virata
-
-    " Strace
-  elseif s:line1 =~ '^[0-9]* *execve('
-    set ft=strace
-
-    " VSE JCL
-  elseif s:line1 =~ '^\* $$ JOB\>' || s:line1 =~ '^// *JOB\>'
-    set ft=vsejcl
-
-    " TAK and SINDA
-  elseif s:line4 =~ 'K & K  Associates' || s:line2 =~ 'TAK 2000'
-    set ft=takout
-  elseif s:line3 =~ 'S Y S T E M S   I M P R O V E D '
-    set ft=sindaout
-  elseif getline(6) =~ 'Run Date: '
-    set ft=takcmp
-  elseif getline(9) =~ 'Node    File  1'
-    set ft=sindacmp
-
-    " DNS zone files
-  elseif s:line1.s:line2.s:line3.s:line4 =~ '^; <<>> DiG [0-9.]\+ <<>>\|BIND.*named\|$ORIGIN\|$TTL\|IN\s\+SOA'
-    set ft=bindzone
-
-    " BAAN
-  elseif s:line1 =~ '|\*\{1,80}' && s:line2 =~ 'VRC '
-	\ || s:line2 =~ '|\*\{1,80}' && s:line3 =~ 'VRC '
-    set ft=baan
-
-  " Valgrind
-  elseif s:line1 =~ '^==\d\+== valgrind' || s:line3 =~ '^==\d\+== Using valgrind'
-    set ft=valgrind
-
-  " Renderman Interface Bytestream
-  elseif s:line1 =~ '^##RenderMan'
-    set ft=rib
-
-  " Scheme scripts
-  elseif s:line1 =~ 'exec\s\+\S*scheme' || s:line2 =~ 'exec\s\+\S*scheme'
-    set ft=scheme
-
-  " Git output
-  elseif s:line1 =~ '^\(commit\|tree\|object\) \x\{40\}$\|^tag \S\+$'
-    set ft=git
-
-  " CVS diff
-  else
-    let lnum = 1
-    while getline(lnum) =~ "^? " && lnum < line("$")
-      let lnum = lnum + 1
-    endwhile
-    if getline(lnum) =~ '^Index:\s\+\f\+$'
-      set ft=diff
-
-      " locale input files: Formal Definitions of Cultural Conventions
-      " filename must be like en_US, fr_FR@euro or en_US.UTF-8
-    elseif expand("%") =~ '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_'
-      let lnum = 1
-      while lnum < 100 && lnum < line("$")
-	if getline(lnum) =~ '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$'
-	  setf fdcc
-	  break
-	endif
-	let lnum = lnum + 1
-      endwhile
-    endif
-
-  endif
-
-  unlet s:line2 s:line3 s:line4 s:line5
-
-endif
-
-" Restore 'cpoptions'
-let &cpo = s:cpo_save
-
-unlet s:cpo_save s:line1
diff --git a/runtime/tutor/runtime/synmenu.vim b/runtime/tutor/runtime/synmenu.vim
deleted file mode 100644
index 68a841e..0000000
--- a/runtime/tutor/runtime/synmenu.vim
+++ /dev/null
@@ -1,569 +0,0 @@
-" Vim support file to define the syntax selection menu
-" This file is normally sourced from menu.vim.
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Apr 27
-
-" Define the SetSyn function, used for the Syntax menu entries.
-" Set 'filetype' and also 'syntax' if it is manually selected.
-fun! SetSyn(name)
-  if a:name == "fvwm1"
-    let use_fvwm_1 = 1
-    let use_fvwm_2 = 0
-    let name = "fvwm"
-  elseif a:name == "fvwm2"
-    let use_fvwm_2 = 1
-    let use_fvwm_1 = 0
-    let name = "fvwm"
-  else
-    let name = a:name
-  endif
-  if !exists("s:syntax_menu_synonly")
-    exe "set ft=" . name
-    if exists("g:syntax_manual")
-      exe "set syn=" . name
-    endif
-  else
-    exe "set syn=" . name
-  endif
-endfun
-
-" <> notation is used here, remove '<' from 'cpoptions'
-let s:cpo_save = &cpo
-set cpo&vim
-
-" The following menu items are generated by makemenu.vim.
-" The Start Of The Syntax Menu
-
-an 50.10.100 &Syntax.AB.A2ps\ config :cal SetSyn("a2ps")<CR>
-an 50.10.110 &Syntax.AB.Aap :cal SetSyn("aap")<CR>
-an 50.10.120 &Syntax.AB.ABAP/4 :cal SetSyn("abap")<CR>
-an 50.10.130 &Syntax.AB.Abaqus :cal SetSyn("abaqus")<CR>
-an 50.10.140 &Syntax.AB.ABC\ music\ notation :cal SetSyn("abc")<CR>
-an 50.10.150 &Syntax.AB.ABEL :cal SetSyn("abel")<CR>
-an 50.10.160 &Syntax.AB.AceDB\ model :cal SetSyn("acedb")<CR>
-an 50.10.170 &Syntax.AB.Ada :cal SetSyn("ada")<CR>
-an 50.10.180 &Syntax.AB.AfLex :cal SetSyn("aflex")<CR>
-an 50.10.190 &Syntax.AB.ALSA\ config :cal SetSyn("alsaconf")<CR>
-an 50.10.200 &Syntax.AB.Altera\ AHDL :cal SetSyn("ahdl")<CR>
-an 50.10.210 &Syntax.AB.Amiga\ DOS :cal SetSyn("amiga")<CR>
-an 50.10.220 &Syntax.AB.AMPL :cal SetSyn("ampl")<CR>
-an 50.10.230 &Syntax.AB.Ant\ build\ file :cal SetSyn("ant")<CR>
-an 50.10.240 &Syntax.AB.ANTLR :cal SetSyn("antlr")<CR>
-an 50.10.250 &Syntax.AB.Apache\ config :cal SetSyn("apache")<CR>
-an 50.10.260 &Syntax.AB.Apache-style\ config :cal SetSyn("apachestyle")<CR>
-an 50.10.270 &Syntax.AB.Applix\ ELF :cal SetSyn("elf")<CR>
-an 50.10.280 &Syntax.AB.Arc\ Macro\ Language :cal SetSyn("aml")<CR>
-an 50.10.290 &Syntax.AB.Arch\ inventory :cal SetSyn("arch")<CR>
-an 50.10.300 &Syntax.AB.ART :cal SetSyn("art")<CR>
-an 50.10.310 &Syntax.AB.ASP\ with\ VBScript :cal SetSyn("aspvbs")<CR>
-an 50.10.320 &Syntax.AB.ASP\ with\ Perl :cal SetSyn("aspperl")<CR>
-an 50.10.330 &Syntax.AB.Assembly.680x0 :cal SetSyn("asm68k")<CR>
-an 50.10.340 &Syntax.AB.Assembly.Flat :cal SetSyn("fasm")<CR>
-an 50.10.350 &Syntax.AB.Assembly.GNU :cal SetSyn("asm")<CR>
-an 50.10.360 &Syntax.AB.Assembly.GNU\ H-8300 :cal SetSyn("asmh8300")<CR>
-an 50.10.370 &Syntax.AB.Assembly.Intel\ IA-64 :cal SetSyn("ia64")<CR>
-an 50.10.380 &Syntax.AB.Assembly.Microsoft :cal SetSyn("masm")<CR>
-an 50.10.390 &Syntax.AB.Assembly.Netwide :cal SetSyn("nasm")<CR>
-an 50.10.400 &Syntax.AB.Assembly.PIC :cal SetSyn("pic")<CR>
-an 50.10.410 &Syntax.AB.Assembly.Turbo :cal SetSyn("tasm")<CR>
-an 50.10.420 &Syntax.AB.Assembly.VAX\ Macro\ Assembly :cal SetSyn("vmasm")<CR>
-an 50.10.430 &Syntax.AB.Assembly.Z-80 :cal SetSyn("z8a")<CR>
-an 50.10.440 &Syntax.AB.Assembly.xa\ 6502\ cross\ assember :cal SetSyn("a65")<CR>
-an 50.10.450 &Syntax.AB.ASN\.1 :cal SetSyn("asn")<CR>
-an 50.10.460 &Syntax.AB.Asterisk\ config :cal SetSyn("asterisk")<CR>
-an 50.10.470 &Syntax.AB.Asterisk\ voicemail\ config :cal SetSyn("asteriskvm")<CR>
-an 50.10.480 &Syntax.AB.Atlas :cal SetSyn("atlas")<CR>
-an 50.10.490 &Syntax.AB.AutoHotKey :cal SetSyn("autohotkey")<CR>
-an 50.10.500 &Syntax.AB.AutoIt :cal SetSyn("autoit")<CR>
-an 50.10.510 &Syntax.AB.Automake :cal SetSyn("automake")<CR>
-an 50.10.520 &Syntax.AB.Avenue :cal SetSyn("ave")<CR>
-an 50.10.530 &Syntax.AB.Awk :cal SetSyn("awk")<CR>
-an 50.10.540 &Syntax.AB.AYacc :cal SetSyn("ayacc")<CR>
-an 50.10.560 &Syntax.AB.B :cal SetSyn("b")<CR>
-an 50.10.570 &Syntax.AB.Baan :cal SetSyn("baan")<CR>
-an 50.10.580 &Syntax.AB.Basic.FreeBasic :cal SetSyn("freebasic")<CR>
-an 50.10.590 &Syntax.AB.Basic.IBasic :cal SetSyn("ibasic")<CR>
-an 50.10.600 &Syntax.AB.Basic.QBasic :cal SetSyn("basic")<CR>
-an 50.10.610 &Syntax.AB.Basic.Visual\ Basic :cal SetSyn("vb")<CR>
-an 50.10.620 &Syntax.AB.Bazaar\ commit\ file :cal SetSyn("bzr")<CR>
-an 50.10.630 &Syntax.AB.BC\ calculator :cal SetSyn("bc")<CR>
-an 50.10.640 &Syntax.AB.BDF\ font :cal SetSyn("bdf")<CR>
-an 50.10.650 &Syntax.AB.BibTeX.Bibliography\ database :cal SetSyn("bib")<CR>
-an 50.10.660 &Syntax.AB.BibTeX.Bibliography\ Style :cal SetSyn("bst")<CR>
-an 50.10.670 &Syntax.AB.BIND.BIND\ config :cal SetSyn("named")<CR>
-an 50.10.680 &Syntax.AB.BIND.BIND\ zone :cal SetSyn("bindzone")<CR>
-an 50.10.690 &Syntax.AB.Blank :cal SetSyn("blank")<CR>
-an 50.20.100 &Syntax.C.C :cal SetSyn("c")<CR>
-an 50.20.110 &Syntax.C.C++ :cal SetSyn("cpp")<CR>
-an 50.20.120 &Syntax.C.C# :cal SetSyn("cs")<CR>
-an 50.20.130 &Syntax.C.Calendar :cal SetSyn("calendar")<CR>
-an 50.20.140 &Syntax.C.Cascading\ Style\ Sheets :cal SetSyn("css")<CR>
-an 50.20.150 &Syntax.C.CDL :cal SetSyn("cdl")<CR>
-an 50.20.160 &Syntax.C.Cdrdao\ TOC :cal SetSyn("cdrtoc")<CR>
-an 50.20.170 &Syntax.C.Cdrdao\ config :cal SetSyn("cdrdaoconf")<CR>
-an 50.20.180 &Syntax.C.Century\ Term :cal SetSyn("cterm")<CR>
-an 50.20.190 &Syntax.C.CH\ script :cal SetSyn("ch")<CR>
-an 50.20.200 &Syntax.C.ChangeLog :cal SetSyn("changelog")<CR>
-an 50.20.210 &Syntax.C.Cheetah\ template :cal SetSyn("cheetah")<CR>
-an 50.20.220 &Syntax.C.CHILL :cal SetSyn("chill")<CR>
-an 50.20.230 &Syntax.C.ChordPro :cal SetSyn("chordpro")<CR>
-an 50.20.240 &Syntax.C.Clean :cal SetSyn("clean")<CR>
-an 50.20.250 &Syntax.C.Clever :cal SetSyn("cl")<CR>
-an 50.20.260 &Syntax.C.Clipper :cal SetSyn("clipper")<CR>
-an 50.20.270 &Syntax.C.Cmake :cal SetSyn("cmake")<CR>
-an 50.20.280 &Syntax.C.Cmusrc :cal SetSyn("cmusrc")<CR>
-an 50.20.290 &Syntax.C.Cobol :cal SetSyn("cobol")<CR>
-an 50.20.300 &Syntax.C.Coco/R :cal SetSyn("coco")<CR>
-an 50.20.310 &Syntax.C.Cold\ Fusion :cal SetSyn("cf")<CR>
-an 50.20.320 &Syntax.C.Conary\ Recipe :cal SetSyn("conaryrecipe")<CR>
-an 50.20.330 &Syntax.C.Config.Cfg\ Config\ file :cal SetSyn("cfg")<CR>
-an 50.20.340 &Syntax.C.Config.Configure\.in :cal SetSyn("config")<CR>
-an 50.20.350 &Syntax.C.Config.Generic\ Config\ file :cal SetSyn("conf")<CR>
-an 50.20.360 &Syntax.C.CRM114 :cal SetSyn("crm")<CR>
-an 50.20.370 &Syntax.C.Crontab :cal SetSyn("crontab")<CR>
-an 50.20.380 &Syntax.C.CSP :cal SetSyn("csp")<CR>
-an 50.20.390 &Syntax.C.Ctrl-H :cal SetSyn("ctrlh")<CR>
-an 50.20.400 &Syntax.C.CUDA :cal SetSyn("cuda")<CR>
-an 50.20.410 &Syntax.C.CUPL.CUPL :cal SetSyn("cupl")<CR>
-an 50.20.420 &Syntax.C.CUPL.Simulation :cal SetSyn("cuplsim")<CR>
-an 50.20.430 &Syntax.C.CVS.commit\ file :cal SetSyn("cvs")<CR>
-an 50.20.440 &Syntax.C.CVS.cvsrc :cal SetSyn("cvsrc")<CR>
-an 50.20.450 &Syntax.C.Cyn++ :cal SetSyn("cynpp")<CR>
-an 50.20.460 &Syntax.C.Cynlib :cal SetSyn("cynlib")<CR>
-an 50.30.100 &Syntax.DE.D :cal SetSyn("d")<CR>
-an 50.30.110 &Syntax.DE.Debian.Debian\ ChangeLog :cal SetSyn("debchangelog")<CR>
-an 50.30.120 &Syntax.DE.Debian.Debian\ Control :cal SetSyn("debcontrol")<CR>
-an 50.30.130 &Syntax.DE.Debian.Debian\ Sources\.list :cal SetSyn("debsources")<CR>
-an 50.30.140 &Syntax.DE.Denyhosts :cal SetSyn("denyhosts")<CR>
-an 50.30.150 &Syntax.DE.Desktop :cal SetSyn("desktop")<CR>
-an 50.30.160 &Syntax.DE.Dict\ config :cal SetSyn("dictconf")<CR>
-an 50.30.170 &Syntax.DE.Dictd\ config :cal SetSyn("dictdconf")<CR>
-an 50.30.180 &Syntax.DE.Diff :cal SetSyn("diff")<CR>
-an 50.30.190 &Syntax.DE.Digital\ Command\ Lang :cal SetSyn("dcl")<CR>
-an 50.30.200 &Syntax.DE.Dircolors :cal SetSyn("dircolors")<CR>
-an 50.30.210 &Syntax.DE.Django\ template :cal SetSyn("django")<CR>
-an 50.30.220 &Syntax.DE.DNS/BIND\ zone :cal SetSyn("bindzone")<CR>
-an 50.30.230 &Syntax.DE.DocBook.auto-detect :cal SetSyn("docbk")<CR>
-an 50.30.240 &Syntax.DE.DocBook.SGML :cal SetSyn("docbksgml")<CR>
-an 50.30.250 &Syntax.DE.DocBook.XML :cal SetSyn("docbkxml")<CR>
-an 50.30.260 &Syntax.DE.Dot :cal SetSyn("dot")<CR>
-an 50.30.270 &Syntax.DE.Doxygen.C\ with\ doxygen :cal SetSyn("c.doxygen")<CR>
-an 50.30.280 &Syntax.DE.Doxygen.C++\ with\ doxygen :cal SetSyn("cpp.doxygen")<CR>
-an 50.30.290 &Syntax.DE.Doxygen.IDL\ with\ doxygen :cal SetSyn("idl.doxygen")<CR>
-an 50.30.300 &Syntax.DE.Doxygen.Java\ with\ doxygen :cal SetSyn("java.doxygen")<CR>
-an 50.30.310 &Syntax.DE.Dracula :cal SetSyn("dracula")<CR>
-an 50.30.320 &Syntax.DE.DSSSL :cal SetSyn("dsl")<CR>
-an 50.30.330 &Syntax.DE.DTD :cal SetSyn("dtd")<CR>
-an 50.30.340 &Syntax.DE.DTML\ (Zope) :cal SetSyn("dtml")<CR>
-an 50.30.350 &Syntax.DE.DTrace :cal SetSyn("dtrace")<CR>
-an 50.30.360 &Syntax.DE.Dylan.Dylan :cal SetSyn("dylan")<CR>
-an 50.30.370 &Syntax.DE.Dylan.Dylan\ interface :cal SetSyn("dylanintr")<CR>
-an 50.30.380 &Syntax.DE.Dylan.Dylan\ lid :cal SetSyn("dylanlid")<CR>
-an 50.30.400 &Syntax.DE.EDIF :cal SetSyn("edif")<CR>
-an 50.30.410 &Syntax.DE.Eiffel :cal SetSyn("eiffel")<CR>
-an 50.30.420 &Syntax.DE.Elinks\ config :cal SetSyn("elinks")<CR>
-an 50.30.430 &Syntax.DE.Elm\ filter\ rules :cal SetSyn("elmfilt")<CR>
-an 50.30.440 &Syntax.DE.Embedix\ Component\ Description :cal SetSyn("ecd")<CR>
-an 50.30.450 &Syntax.DE.ERicsson\ LANGuage :cal SetSyn("erlang")<CR>
-an 50.30.460 &Syntax.DE.ESMTP\ rc :cal SetSyn("esmtprc")<CR>
-an 50.30.470 &Syntax.DE.ESQL-C :cal SetSyn("esqlc")<CR>
-an 50.30.480 &Syntax.DE.Essbase\ script :cal SetSyn("csc")<CR>
-an 50.30.490 &Syntax.DE.Esterel :cal SetSyn("esterel")<CR>
-an 50.30.500 &Syntax.DE.Eterm\ config :cal SetSyn("eterm")<CR>
-an 50.30.510 &Syntax.DE.Eviews :cal SetSyn("eviews")<CR>
-an 50.30.520 &Syntax.DE.Exim\ conf :cal SetSyn("exim")<CR>
-an 50.30.530 &Syntax.DE.Expect :cal SetSyn("expect")<CR>
-an 50.30.540 &Syntax.DE.Exports :cal SetSyn("exports")<CR>
-an 50.40.100 &Syntax.FG.Fetchmail :cal SetSyn("fetchmail")<CR>
-an 50.40.110 &Syntax.FG.FlexWiki :cal SetSyn("flexwiki")<CR>
-an 50.40.120 &Syntax.FG.Focus\ Executable :cal SetSyn("focexec")<CR>
-an 50.40.130 &Syntax.FG.Focus\ Master :cal SetSyn("master")<CR>
-an 50.40.140 &Syntax.FG.FORM :cal SetSyn("form")<CR>
-an 50.40.150 &Syntax.FG.Forth :cal SetSyn("forth")<CR>
-an 50.40.160 &Syntax.FG.Fortran :cal SetSyn("fortran")<CR>
-an 50.40.170 &Syntax.FG.FoxPro :cal SetSyn("foxpro")<CR>
-an 50.40.180 &Syntax.FG.FrameScript :cal SetSyn("framescript")<CR>
-an 50.40.190 &Syntax.FG.Fstab :cal SetSyn("fstab")<CR>
-an 50.40.200 &Syntax.FG.Fvwm.Fvwm\ configuration :cal SetSyn("fvwm1")<CR>
-an 50.40.210 &Syntax.FG.Fvwm.Fvwm2\ configuration :cal SetSyn("fvwm2")<CR>
-an 50.40.220 &Syntax.FG.Fvwm.Fvwm2\ configuration\ with\ M4 :cal SetSyn("fvwm2m4")<CR>
-an 50.40.240 &Syntax.FG.GDB\ command\ file :cal SetSyn("gdb")<CR>
-an 50.40.250 &Syntax.FG.GDMO :cal SetSyn("gdmo")<CR>
-an 50.40.260 &Syntax.FG.Gedcom :cal SetSyn("gedcom")<CR>
-an 50.40.270 &Syntax.FG.Git.Output :cal SetSyn("git")<CR>
-an 50.40.280 &Syntax.FG.Git.Commit :cal SetSyn("gitcommit")<CR>
-an 50.40.290 &Syntax.FG.Git.Config :cal SetSyn("gitconfig")<CR>
-an 50.40.300 &Syntax.FG.Git.Rebase :cal SetSyn("gitrebase")<CR>
-an 50.40.310 &Syntax.FG.Git.Send\ Email :cal SetSyn("gitsendemail")<CR>
-an 50.40.320 &Syntax.FG.Gkrellmrc :cal SetSyn("gkrellmrc")<CR>
-an 50.40.330 &Syntax.FG.GP :cal SetSyn("gp")<CR>
-an 50.40.340 &Syntax.FG.GPG :cal SetSyn("gpg")<CR>
-an 50.40.350 &Syntax.FG.Group\ file :cal SetSyn("group")<CR>
-an 50.40.360 &Syntax.FG.Grub :cal SetSyn("grub")<CR>
-an 50.40.370 &Syntax.FG.GNU\ Server\ Pages :cal SetSyn("gsp")<CR>
-an 50.40.380 &Syntax.FG.GNUplot :cal SetSyn("gnuplot")<CR>
-an 50.40.390 &Syntax.FG.GrADS\ scripts :cal SetSyn("grads")<CR>
-an 50.40.400 &Syntax.FG.Gretl :cal SetSyn("gretl")<CR>
-an 50.40.410 &Syntax.FG.Groff :cal SetSyn("groff")<CR>
-an 50.40.420 &Syntax.FG.Groovy :cal SetSyn("groovy")<CR>
-an 50.40.430 &Syntax.FG.GTKrc :cal SetSyn("gtkrc")<CR>
-an 50.50.100 &Syntax.HIJK.Hamster :cal SetSyn("hamster")<CR>
-an 50.50.110 &Syntax.HIJK.Haskell.Haskell :cal SetSyn("haskell")<CR>
-an 50.50.120 &Syntax.HIJK.Haskell.Haskell-c2hs :cal SetSyn("chaskell")<CR>
-an 50.50.130 &Syntax.HIJK.Haskell.Haskell-literate :cal SetSyn("lhaskell")<CR>
-an 50.50.140 &Syntax.HIJK.HASTE :cal SetSyn("haste")<CR>
-an 50.50.150 &Syntax.HIJK.Hercules :cal SetSyn("hercules")<CR>
-an 50.50.160 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR>
-an 50.50.170 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR>
-an 50.50.180 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR>
-an 50.50.190 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR>
-an 50.50.200 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR>
-an 50.50.210 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR>
-an 50.50.220 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR>
-an 50.50.230 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR>
-an 50.50.240 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR>
-an 50.50.250 &Syntax.HIJK.Host\.conf :cal SetSyn("hostconf")<CR>
-an 50.50.260 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR>
-an 50.50.280 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR>
-an 50.50.290 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR>
-an 50.50.300 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR>
-an 50.50.310 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR>
-an 50.50.320 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR>
-an 50.50.330 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR>
-an 50.50.340 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR>
-an 50.50.350 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR>
-an 50.50.360 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR>
-an 50.50.370 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR>
-an 50.50.380 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR>
-an 50.50.390 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR>
-an 50.50.400 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR>
-an 50.50.420 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR>
-an 50.50.430 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR>
-an 50.50.440 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR>
-an 50.50.450 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR>
-an 50.50.460 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR>
-an 50.50.470 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR>
-an 50.50.480 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR>
-an 50.50.490 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR>
-an 50.50.500 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR>
-an 50.50.510 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR>
-an 50.50.530 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR>
-an 50.50.540 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR>
-an 50.50.550 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR>
-an 50.50.560 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR>
-an 50.60.100 &Syntax.L-Ma.Lace :cal SetSyn("lace")<CR>
-an 50.60.110 &Syntax.L-Ma.LamdaProlog :cal SetSyn("lprolog")<CR>
-an 50.60.120 &Syntax.L-Ma.Latte :cal SetSyn("latte")<CR>
-an 50.60.130 &Syntax.L-Ma.Ld\ script :cal SetSyn("ld")<CR>
-an 50.60.140 &Syntax.L-Ma.LDAP.LDIF :cal SetSyn("ldif")<CR>
-an 50.60.150 &Syntax.L-Ma.LDAP.Configuration :cal SetSyn("ldapconf")<CR>
-an 50.60.160 &Syntax.L-Ma.Lex :cal SetSyn("lex")<CR>
-an 50.60.170 &Syntax.L-Ma.LFTP\ config :cal SetSyn("lftp")<CR>
-an 50.60.180 &Syntax.L-Ma.Libao :cal SetSyn("libao")<CR>
-an 50.60.190 &Syntax.L-Ma.LifeLines\ script :cal SetSyn("lifelines")<CR>
-an 50.60.200 &Syntax.L-Ma.Lilo :cal SetSyn("lilo")<CR>
-an 50.60.210 &Syntax.L-Ma.Limits\ config :cal SetSyn("limits")<CR>
-an 50.60.220 &Syntax.L-Ma.Linden\ scripting :cal SetSyn("lsl")<CR>
-an 50.60.230 &Syntax.L-Ma.Lisp :cal SetSyn("lisp")<CR>
-an 50.60.240 &Syntax.L-Ma.Lite :cal SetSyn("lite")<CR>
-an 50.60.250 &Syntax.L-Ma.LiteStep\ RC :cal SetSyn("litestep")<CR>
-an 50.60.260 &Syntax.L-Ma.Locale\ Input :cal SetSyn("fdcc")<CR>
-an 50.60.270 &Syntax.L-Ma.Login\.access :cal SetSyn("loginaccess")<CR>
-an 50.60.280 &Syntax.L-Ma.Login\.defs :cal SetSyn("logindefs")<CR>
-an 50.60.290 &Syntax.L-Ma.Logtalk :cal SetSyn("logtalk")<CR>
-an 50.60.300 &Syntax.L-Ma.LOTOS :cal SetSyn("lotos")<CR>
-an 50.60.310 &Syntax.L-Ma.LotusScript :cal SetSyn("lscript")<CR>
-an 50.60.320 &Syntax.L-Ma.Lout :cal SetSyn("lout")<CR>
-an 50.60.330 &Syntax.L-Ma.LPC :cal SetSyn("lpc")<CR>
-an 50.60.340 &Syntax.L-Ma.Lua :cal SetSyn("lua")<CR>
-an 50.60.350 &Syntax.L-Ma.Lynx\ Style :cal SetSyn("lss")<CR>
-an 50.60.360 &Syntax.L-Ma.Lynx\ config :cal SetSyn("lynx")<CR>
-an 50.60.380 &Syntax.L-Ma.M4 :cal SetSyn("m4")<CR>
-an 50.60.390 &Syntax.L-Ma.MaGic\ Point :cal SetSyn("mgp")<CR>
-an 50.60.400 &Syntax.L-Ma.Mail :cal SetSyn("mail")<CR>
-an 50.60.410 &Syntax.L-Ma.Mail\ aliases :cal SetSyn("mailaliases")<CR>
-an 50.60.420 &Syntax.L-Ma.Mailcap :cal SetSyn("mailcap")<CR>
-an 50.60.430 &Syntax.L-Ma.Makefile :cal SetSyn("make")<CR>
-an 50.60.440 &Syntax.L-Ma.MakeIndex :cal SetSyn("ist")<CR>
-an 50.60.450 &Syntax.L-Ma.Man\ page :cal SetSyn("man")<CR>
-an 50.60.460 &Syntax.L-Ma.Man\.conf :cal SetSyn("manconf")<CR>
-an 50.60.470 &Syntax.L-Ma.Maple\ V :cal SetSyn("maple")<CR>
-an 50.60.480 &Syntax.L-Ma.Mason :cal SetSyn("mason")<CR>
-an 50.60.490 &Syntax.L-Ma.Mathematica :cal SetSyn("mma")<CR>
-an 50.60.500 &Syntax.L-Ma.Matlab :cal SetSyn("matlab")<CR>
-an 50.60.510 &Syntax.L-Ma.Maxima :cal SetSyn("maxima")<CR>
-an 50.70.100 &Syntax.Me-NO.MEL\ (for\ Maya) :cal SetSyn("mel")<CR>
-an 50.70.110 &Syntax.Me-NO.Messages\ (/var/log) :cal SetSyn("messages")<CR>
-an 50.70.120 &Syntax.Me-NO.Metafont :cal SetSyn("mf")<CR>
-an 50.70.130 &Syntax.Me-NO.MetaPost :cal SetSyn("mp")<CR>
-an 50.70.140 &Syntax.Me-NO.MGL :cal SetSyn("mgl")<CR>
-an 50.70.150 &Syntax.Me-NO.MMIX :cal SetSyn("mmix")<CR>
-an 50.70.160 &Syntax.Me-NO.Modconf :cal SetSyn("modconf")<CR>
-an 50.70.170 &Syntax.Me-NO.Model :cal SetSyn("model")<CR>
-an 50.70.180 &Syntax.Me-NO.Modsim\ III :cal SetSyn("modsim3")<CR>
-an 50.70.190 &Syntax.Me-NO.Modula\ 2 :cal SetSyn("modula2")<CR>
-an 50.70.200 &Syntax.Me-NO.Modula\ 3 :cal SetSyn("modula3")<CR>
-an 50.70.210 &Syntax.Me-NO.Monk :cal SetSyn("monk")<CR>
-an 50.70.220 &Syntax.Me-NO.Mplayer\ config :cal SetSyn("mplayerconf")<CR>
-an 50.70.230 &Syntax.Me-NO.MOO :cal SetSyn("moo")<CR>
-an 50.70.240 &Syntax.Me-NO.Mrxvtrc :cal SetSyn("mrxvtrc")<CR>
-an 50.70.250 &Syntax.Me-NO.MS-DOS/Windows.4DOS\ \.bat\ file :cal SetSyn("btm")<CR>
-an 50.70.260 &Syntax.Me-NO.MS-DOS/Windows.\.bat\/\.cmd\ file :cal SetSyn("dosbatch")<CR>
-an 50.70.270 &Syntax.Me-NO.MS-DOS/Windows.\.ini\ file :cal SetSyn("dosini")<CR>
-an 50.70.280 &Syntax.Me-NO.MS-DOS/Windows.Message\ text :cal SetSyn("msmessages")<CR>
-an 50.70.290 &Syntax.Me-NO.MS-DOS/Windows.Module\ Definition :cal SetSyn("def")<CR>
-an 50.70.300 &Syntax.Me-NO.MS-DOS/Windows.Registry :cal SetSyn("registry")<CR>
-an 50.70.310 &Syntax.Me-NO.MS-DOS/Windows.Resource\ file :cal SetSyn("rc")<CR>
-an 50.70.320 &Syntax.Me-NO.Msql :cal SetSyn("msql")<CR>
-an 50.70.330 &Syntax.Me-NO.MuPAD :cal SetSyn("mupad")<CR>
-an 50.70.340 &Syntax.Me-NO.MUSHcode :cal SetSyn("mush")<CR>
-an 50.70.350 &Syntax.Me-NO.Muttrc :cal SetSyn("muttrc")<CR>
-an 50.70.370 &Syntax.Me-NO.Nanorc :cal SetSyn("nanorc")<CR>
-an 50.70.380 &Syntax.Me-NO.Nastran\ input/DMAP :cal SetSyn("nastran")<CR>
-an 50.70.390 &Syntax.Me-NO.Natural :cal SetSyn("natural")<CR>
-an 50.70.400 &Syntax.Me-NO.Netrc :cal SetSyn("netrc")<CR>
-an 50.70.410 &Syntax.Me-NO.Novell\ NCF\ batch :cal SetSyn("ncf")<CR>
-an 50.70.420 &Syntax.Me-NO.Not\ Quite\ C\ (LEGO) :cal SetSyn("nqc")<CR>
-an 50.70.430 &Syntax.Me-NO.Nroff :cal SetSyn("nroff")<CR>
-an 50.70.440 &Syntax.Me-NO.NSIS\ script :cal SetSyn("nsis")<CR>
-an 50.70.460 &Syntax.Me-NO.Objective\ C :cal SetSyn("objc")<CR>
-an 50.70.470 &Syntax.Me-NO.Objective\ C++ :cal SetSyn("objcpp")<CR>
-an 50.70.480 &Syntax.Me-NO.OCAML :cal SetSyn("ocaml")<CR>
-an 50.70.490 &Syntax.Me-NO.Occam :cal SetSyn("occam")<CR>
-an 50.70.500 &Syntax.Me-NO.Omnimark :cal SetSyn("omnimark")<CR>
-an 50.70.510 &Syntax.Me-NO.OpenROAD :cal SetSyn("openroad")<CR>
-an 50.70.520 &Syntax.Me-NO.Open\ Psion\ Lang :cal SetSyn("opl")<CR>
-an 50.70.530 &Syntax.Me-NO.Oracle\ config :cal SetSyn("ora")<CR>
-an 50.80.100 &Syntax.PQ.Packet\ filter\ conf :cal SetSyn("pf")<CR>
-an 50.80.110 &Syntax.PQ.Palm\ resource\ compiler :cal SetSyn("pilrc")<CR>
-an 50.80.120 &Syntax.PQ.Pam\ config :cal SetSyn("pamconf")<CR>
-an 50.80.130 &Syntax.PQ.PApp :cal SetSyn("papp")<CR>
-an 50.80.140 &Syntax.PQ.Pascal :cal SetSyn("pascal")<CR>
-an 50.80.150 &Syntax.PQ.Password\ file :cal SetSyn("passwd")<CR>
-an 50.80.160 &Syntax.PQ.PCCTS :cal SetSyn("pccts")<CR>
-an 50.80.170 &Syntax.PQ.PDF :cal SetSyn("pdf")<CR>
-an 50.80.180 &Syntax.PQ.Perl.Perl :cal SetSyn("perl")<CR>
-an 50.80.190 &Syntax.PQ.Perl.Perl\ POD :cal SetSyn("pod")<CR>
-an 50.80.200 &Syntax.PQ.Perl.Perl\ XS :cal SetSyn("xs")<CR>
-an 50.80.210 &Syntax.PQ.PHP.PHP\ 3-4 :cal SetSyn("php")<CR>
-an 50.80.220 &Syntax.PQ.PHP.Phtml\ (PHP\ 2) :cal SetSyn("phtml")<CR>
-an 50.80.230 &Syntax.PQ.Pike :cal SetSyn("pike")<CR>
-an 50.80.240 &Syntax.PQ.Pine\ RC :cal SetSyn("pine")<CR>
-an 50.80.250 &Syntax.PQ.Pinfo\ RC :cal SetSyn("pinfo")<CR>
-an 50.80.260 &Syntax.PQ.PL/M :cal SetSyn("plm")<CR>
-an 50.80.270 &Syntax.PQ.PL/SQL :cal SetSyn("plsql")<CR>
-an 50.80.280 &Syntax.PQ.PLP :cal SetSyn("plp")<CR>
-an 50.80.290 &Syntax.PQ.PO\ (GNU\ gettext) :cal SetSyn("po")<CR>
-an 50.80.300 &Syntax.PQ.Postfix\ main\ config :cal SetSyn("pfmain")<CR>
-an 50.80.310 &Syntax.PQ.PostScript.PostScript :cal SetSyn("postscr")<CR>
-an 50.80.320 &Syntax.PQ.PostScript.PostScript\ Printer\ Description :cal SetSyn("ppd")<CR>
-an 50.80.330 &Syntax.PQ.Povray.Povray\ scene\ descr :cal SetSyn("pov")<CR>
-an 50.80.340 &Syntax.PQ.Povray.Povray\ configuration :cal SetSyn("povini")<CR>
-an 50.80.350 &Syntax.PQ.PPWizard :cal SetSyn("ppwiz")<CR>
-an 50.80.360 &Syntax.PQ.Prescribe\ (Kyocera) :cal SetSyn("prescribe")<CR>
-an 50.80.370 &Syntax.PQ.Printcap :cal SetSyn("pcap")<CR>
-an 50.80.380 &Syntax.PQ.Privoxy :cal SetSyn("privoxy")<CR>
-an 50.80.390 &Syntax.PQ.Procmail :cal SetSyn("procmail")<CR>
-an 50.80.400 &Syntax.PQ.Product\ Spec\ File :cal SetSyn("psf")<CR>
-an 50.80.410 &Syntax.PQ.Progress :cal SetSyn("progress")<CR>
-an 50.80.420 &Syntax.PQ.Prolog :cal SetSyn("prolog")<CR>
-an 50.80.430 &Syntax.PQ.ProMeLa :cal SetSyn("promela")<CR>
-an 50.80.440 &Syntax.PQ.Protocols :cal SetSyn("protocols")<CR>
-an 50.80.450 &Syntax.PQ.Purify\ log :cal SetSyn("purifylog")<CR>
-an 50.80.460 &Syntax.PQ.Pyrex :cal SetSyn("pyrex")<CR>
-an 50.80.470 &Syntax.PQ.Python :cal SetSyn("python")<CR>
-an 50.80.490 &Syntax.PQ.Quake :cal SetSyn("quake")<CR>
-an 50.80.500 &Syntax.PQ.Quickfix\ window :cal SetSyn("qf")<CR>
-an 50.90.100 &Syntax.R-Sg.R.R :cal SetSyn("r")<CR>
-an 50.90.110 &Syntax.R-Sg.R.R\ help :cal SetSyn("rhelp")<CR>
-an 50.90.120 &Syntax.R-Sg.R.R\ noweb :cal SetSyn("rnoweb")<CR>
-an 50.90.130 &Syntax.R-Sg.Racc\ input :cal SetSyn("racc")<CR>
-an 50.90.140 &Syntax.R-Sg.Radiance :cal SetSyn("radiance")<CR>
-an 50.90.150 &Syntax.R-Sg.Ratpoison :cal SetSyn("ratpoison")<CR>
-an 50.90.160 &Syntax.R-Sg.RCS.RCS\ log\ output :cal SetSyn("rcslog")<CR>
-an 50.90.170 &Syntax.R-Sg.RCS.RCS\ file :cal SetSyn("rcs")<CR>
-an 50.90.180 &Syntax.R-Sg.Readline\ config :cal SetSyn("readline")<CR>
-an 50.90.190 &Syntax.R-Sg.Rebol :cal SetSyn("rebol")<CR>
-an 50.90.200 &Syntax.R-Sg.Remind :cal SetSyn("remind")<CR>
-an 50.90.210 &Syntax.R-Sg.Relax\ NG\ compact :cal SetSyn("rnc")<CR>
-an 50.90.220 &Syntax.R-Sg.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl")<CR>
-an 50.90.230 &Syntax.R-Sg.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib")<CR>
-an 50.90.240 &Syntax.R-Sg.Resolv\.conf :cal SetSyn("resolv")<CR>
-an 50.90.250 &Syntax.R-Sg.Reva\ Forth :cal SetSyn("reva")<CR>
-an 50.90.260 &Syntax.R-Sg.Rexx :cal SetSyn("rexx")<CR>
-an 50.90.270 &Syntax.R-Sg.Robots\.txt :cal SetSyn("robots")<CR>
-an 50.90.280 &Syntax.R-Sg.RockLinux\ package\ desc\. :cal SetSyn("desc")<CR>
-an 50.90.290 &Syntax.R-Sg.Rpcgen :cal SetSyn("rpcgen")<CR>
-an 50.90.300 &Syntax.R-Sg.RPL/2 :cal SetSyn("rpl")<CR>
-an 50.90.310 &Syntax.R-Sg.ReStructuredText :cal SetSyn("rst")<CR>
-an 50.90.320 &Syntax.R-Sg.RTF :cal SetSyn("rtf")<CR>
-an 50.90.330 &Syntax.R-Sg.Ruby :cal SetSyn("ruby")<CR>
-an 50.90.350 &Syntax.R-Sg.S-Lang :cal SetSyn("slang")<CR>
-an 50.90.360 &Syntax.R-Sg.Samba\ config :cal SetSyn("samba")<CR>
-an 50.90.370 &Syntax.R-Sg.SAS :cal SetSyn("sas")<CR>
-an 50.90.380 &Syntax.R-Sg.Sather :cal SetSyn("sather")<CR>
-an 50.90.390 &Syntax.R-Sg.Scheme :cal SetSyn("scheme")<CR>
-an 50.90.400 &Syntax.R-Sg.Scilab :cal SetSyn("scilab")<CR>
-an 50.90.410 &Syntax.R-Sg.Screen\ RC :cal SetSyn("screen")<CR>
-an 50.90.420 &Syntax.R-Sg.SDL :cal SetSyn("sdl")<CR>
-an 50.90.430 &Syntax.R-Sg.Sed :cal SetSyn("sed")<CR>
-an 50.90.440 &Syntax.R-Sg.Sendmail\.cf :cal SetSyn("sm")<CR>
-an 50.90.450 &Syntax.R-Sg.Send-pr :cal SetSyn("sendpr")<CR>
-an 50.90.460 &Syntax.R-Sg.Sensors\.conf :cal SetSyn("sensors")<CR>
-an 50.90.470 &Syntax.R-Sg.Service\ Location\ config :cal SetSyn("slpconf")<CR>
-an 50.90.480 &Syntax.R-Sg.Service\ Location\ registration :cal SetSyn("slpreg")<CR>
-an 50.90.490 &Syntax.R-Sg.Service\ Location\ SPI :cal SetSyn("slpspi")<CR>
-an 50.90.500 &Syntax.R-Sg.Services :cal SetSyn("services")<CR>
-an 50.90.510 &Syntax.R-Sg.Setserial\ config :cal SetSyn("setserial")<CR>
-an 50.90.520 &Syntax.R-Sg.SGML.SGML\ catalog :cal SetSyn("catalog")<CR>
-an 50.90.530 &Syntax.R-Sg.SGML.SGML\ DTD :cal SetSyn("sgml")<CR>
-an 50.90.540 &Syntax.R-Sg.SGML.SGML\ Declaration :cal SetSyn("sgmldecl")<CR>
-an 50.90.550 &Syntax.R-Sg.SGML.SGML-linuxdoc :cal SetSyn("sgmllnx")<CR>
-an 50.100.100 &Syntax.Sh-S.Shell\ script.sh\ and\ ksh :cal SetSyn("sh")<CR>
-an 50.100.110 &Syntax.Sh-S.Shell\ script.csh :cal SetSyn("csh")<CR>
-an 50.100.120 &Syntax.Sh-S.Shell\ script.tcsh :cal SetSyn("tcsh")<CR>
-an 50.100.130 &Syntax.Sh-S.Shell\ script.zsh :cal SetSyn("zsh")<CR>
-an 50.100.140 &Syntax.Sh-S.SiCAD :cal SetSyn("sicad")<CR>
-an 50.100.150 &Syntax.Sh-S.Sieve :cal SetSyn("sieve")<CR>
-an 50.100.160 &Syntax.Sh-S.Simula :cal SetSyn("simula")<CR>
-an 50.100.170 &Syntax.Sh-S.Sinda.Sinda\ compare :cal SetSyn("sindacmp")<CR>
-an 50.100.180 &Syntax.Sh-S.Sinda.Sinda\ input :cal SetSyn("sinda")<CR>
-an 50.100.190 &Syntax.Sh-S.Sinda.Sinda\ output :cal SetSyn("sindaout")<CR>
-an 50.100.200 &Syntax.Sh-S.SiSU :cal SetSyn("sisu")<CR>
-an 50.100.210 &Syntax.Sh-S.SKILL.SKILL :cal SetSyn("skill")<CR>
-an 50.100.220 &Syntax.Sh-S.SKILL.SKILL\ for\ Diva :cal SetSyn("diva")<CR>
-an 50.100.230 &Syntax.Sh-S.Slice :cal SetSyn("slice")<CR>
-an 50.100.240 &Syntax.Sh-S.SLRN.Slrn\ rc :cal SetSyn("slrnrc")<CR>
-an 50.100.250 &Syntax.Sh-S.SLRN.Slrn\ score :cal SetSyn("slrnsc")<CR>
-an 50.100.260 &Syntax.Sh-S.SmallTalk :cal SetSyn("st")<CR>
-an 50.100.270 &Syntax.Sh-S.Smarty\ Templates :cal SetSyn("smarty")<CR>
-an 50.100.280 &Syntax.Sh-S.SMIL :cal SetSyn("smil")<CR>
-an 50.100.290 &Syntax.Sh-S.SMITH :cal SetSyn("smith")<CR>
-an 50.100.300 &Syntax.Sh-S.SNMP\ MIB :cal SetSyn("mib")<CR>
-an 50.100.310 &Syntax.Sh-S.SNNS.SNNS\ network :cal SetSyn("snnsnet")<CR>
-an 50.100.320 &Syntax.Sh-S.SNNS.SNNS\ pattern :cal SetSyn("snnspat")<CR>
-an 50.100.330 &Syntax.Sh-S.SNNS.SNNS\ result :cal SetSyn("snnsres")<CR>
-an 50.100.340 &Syntax.Sh-S.Snobol4 :cal SetSyn("snobol4")<CR>
-an 50.100.350 &Syntax.Sh-S.Snort\ Configuration :cal SetSyn("hog")<CR>
-an 50.100.360 &Syntax.Sh-S.SPEC\ (Linux\ RPM) :cal SetSyn("spec")<CR>
-an 50.100.370 &Syntax.Sh-S.Specman :cal SetSyn("specman")<CR>
-an 50.100.380 &Syntax.Sh-S.Spice :cal SetSyn("spice")<CR>
-an 50.100.390 &Syntax.Sh-S.Spyce :cal SetSyn("spyce")<CR>
-an 50.100.400 &Syntax.Sh-S.Speedup :cal SetSyn("spup")<CR>
-an 50.100.410 &Syntax.Sh-S.Splint :cal SetSyn("splint")<CR>
-an 50.100.420 &Syntax.Sh-S.Squid\ config :cal SetSyn("squid")<CR>
-an 50.100.430 &Syntax.Sh-S.SQL.ESQL-C :cal SetSyn("esqlc")<CR>
-an 50.100.440 &Syntax.Sh-S.SQL.MySQL :cal SetSyn("mysql")<CR>
-an 50.100.450 &Syntax.Sh-S.SQL.PL/SQL :cal SetSyn("plsql")<CR>
-an 50.100.460 &Syntax.Sh-S.SQL.SQL\ Anywhere :cal SetSyn("sqlanywhere")<CR>
-an 50.100.470 &Syntax.Sh-S.SQL.SQL\ (automatic) :cal SetSyn("sql")<CR>
-an 50.100.480 &Syntax.Sh-S.SQL.SQL\ (Oracle) :cal SetSyn("sqloracle")<CR>
-an 50.100.490 &Syntax.Sh-S.SQL.SQL\ Forms :cal SetSyn("sqlforms")<CR>
-an 50.100.500 &Syntax.Sh-S.SQL.SQLJ :cal SetSyn("sqlj")<CR>
-an 50.100.510 &Syntax.Sh-S.SQL.SQL-Informix :cal SetSyn("sqlinformix")<CR>
-an 50.100.520 &Syntax.Sh-S.SQR :cal SetSyn("sqr")<CR>
-an 50.100.530 &Syntax.Sh-S.Ssh.ssh_config :cal SetSyn("sshconfig")<CR>
-an 50.100.540 &Syntax.Sh-S.Ssh.sshd_config :cal SetSyn("sshdconfig")<CR>
-an 50.100.550 &Syntax.Sh-S.Standard\ ML :cal SetSyn("sml")<CR>
-an 50.100.560 &Syntax.Sh-S.Stata.SMCL :cal SetSyn("smcl")<CR>
-an 50.100.570 &Syntax.Sh-S.Stata.Stata :cal SetSyn("stata")<CR>
-an 50.100.580 &Syntax.Sh-S.Stored\ Procedures :cal SetSyn("stp")<CR>
-an 50.100.590 &Syntax.Sh-S.Strace :cal SetSyn("strace")<CR>
-an 50.100.600 &Syntax.Sh-S.Streaming\ descriptor\ file :cal SetSyn("sd")<CR>
-an 50.100.610 &Syntax.Sh-S.Subversion\ commit :cal SetSyn("svn")<CR>
-an 50.100.620 &Syntax.Sh-S.Sudoers :cal SetSyn("sudoers")<CR>
-an 50.100.630 &Syntax.Sh-S.Symbian\ meta-makefile :cal SetSyn("mmp")<CR>
-an 50.100.640 &Syntax.Sh-S.Sysctl\.conf :cal SetSyn("sysctl")<CR>
-an 50.110.100 &Syntax.TUV.TADS :cal SetSyn("tads")<CR>
-an 50.110.110 &Syntax.TUV.Tags :cal SetSyn("tags")<CR>
-an 50.110.120 &Syntax.TUV.TAK.TAK\ compare :cal SetSyn("takcmp")<CR>
-an 50.110.130 &Syntax.TUV.TAK.TAK\ input :cal SetSyn("tak")<CR>
-an 50.110.140 &Syntax.TUV.TAK.TAK\ output :cal SetSyn("takout")<CR>
-an 50.110.150 &Syntax.TUV.Tcl/Tk :cal SetSyn("tcl")<CR>
-an 50.110.160 &Syntax.TUV.TealInfo :cal SetSyn("tli")<CR>
-an 50.110.170 &Syntax.TUV.Telix\ Salt :cal SetSyn("tsalt")<CR>
-an 50.110.180 &Syntax.TUV.Termcap/Printcap :cal SetSyn("ptcap")<CR>
-an 50.110.190 &Syntax.TUV.Terminfo :cal SetSyn("terminfo")<CR>
-an 50.110.200 &Syntax.TUV.TeX.TeX/LaTeX :cal SetSyn("tex")<CR>
-an 50.110.210 &Syntax.TUV.TeX.plain\ TeX :cal SetSyn("plaintex")<CR>
-an 50.110.220 &Syntax.TUV.TeX.ConTeXt :cal SetSyn("context")<CR>
-an 50.110.230 &Syntax.TUV.TeX.TeX\ configuration :cal SetSyn("texmf")<CR>
-an 50.110.240 &Syntax.TUV.TeX.Texinfo :cal SetSyn("texinfo")<CR>
-an 50.110.250 &Syntax.TUV.TF\ mud\ client :cal SetSyn("tf")<CR>
-an 50.110.260 &Syntax.TUV.Tidy\ configuration :cal SetSyn("tidy")<CR>
-an 50.110.270 &Syntax.TUV.Tilde :cal SetSyn("tilde")<CR>
-an 50.110.280 &Syntax.TUV.TPP :cal SetSyn("tpp")<CR>
-an 50.110.290 &Syntax.TUV.Trasys\ input :cal SetSyn("trasys")<CR>
-an 50.110.300 &Syntax.TUV.Trustees :cal SetSyn("trustees")<CR>
-an 50.110.310 &Syntax.TUV.TSS.Command\ Line :cal SetSyn("tsscl")<CR>
-an 50.110.320 &Syntax.TUV.TSS.Geometry :cal SetSyn("tssgm")<CR>
-an 50.110.330 &Syntax.TUV.TSS.Optics :cal SetSyn("tssop")<CR>
-an 50.110.350 &Syntax.TUV.Udev\ config :cal SetSyn("udevconf")<CR>
-an 50.110.360 &Syntax.TUV.Udev\ permissions :cal SetSyn("udevperm")<CR>
-an 50.110.370 &Syntax.TUV.Udev\ rules :cal SetSyn("udevrules")<CR>
-an 50.110.380 &Syntax.TUV.UIT/UIL :cal SetSyn("uil")<CR>
-an 50.110.390 &Syntax.TUV.UnrealScript :cal SetSyn("uc")<CR>
-an 50.110.400 &Syntax.TUV.Updatedb\.conf :cal SetSyn("updatedb")<CR>
-an 50.110.420 &Syntax.TUV.Valgrind :cal SetSyn("valgrind")<CR>
-an 50.110.430 &Syntax.TUV.Vera :cal SetSyn("vera")<CR>
-an 50.110.440 &Syntax.TUV.Verilog-AMS\ HDL :cal SetSyn("verilogams")<CR>
-an 50.110.450 &Syntax.TUV.Verilog\ HDL :cal SetSyn("verilog")<CR>
-an 50.110.460 &Syntax.TUV.Vgrindefs :cal SetSyn("vgrindefs")<CR>
-an 50.110.470 &Syntax.TUV.VHDL :cal SetSyn("vhdl")<CR>
-an 50.110.480 &Syntax.TUV.Vim.Vim\ help\ file :cal SetSyn("help")<CR>
-an 50.110.490 &Syntax.TUV.Vim.Vim\ script :cal SetSyn("vim")<CR>
-an 50.110.500 &Syntax.TUV.Vim.Viminfo\ file :cal SetSyn("viminfo")<CR>
-an 50.110.510 &Syntax.TUV.Virata\ config :cal SetSyn("virata")<CR>
-an 50.110.520 &Syntax.TUV.Visual\ Basic :cal SetSyn("vb")<CR>
-an 50.110.530 &Syntax.TUV.VOS\ CM\ macro :cal SetSyn("voscm")<CR>
-an 50.110.540 &Syntax.TUV.VRML :cal SetSyn("vrml")<CR>
-an 50.110.550 &Syntax.TUV.VSE\ JCL :cal SetSyn("vsejcl")<CR>
-an 50.120.100 &Syntax.WXYZ.WEB.CWEB :cal SetSyn("cweb")<CR>
-an 50.120.110 &Syntax.WXYZ.WEB.WEB :cal SetSyn("web")<CR>
-an 50.120.120 &Syntax.WXYZ.WEB.WEB\ Changes :cal SetSyn("change")<CR>
-an 50.120.130 &Syntax.WXYZ.Webmacro :cal SetSyn("webmacro")<CR>
-an 50.120.140 &Syntax.WXYZ.Website\ MetaLanguage :cal SetSyn("wml")<CR>
-an 50.120.160 &Syntax.WXYZ.wDiff :cal SetSyn("wdiff")<CR>
-an 50.120.180 &Syntax.WXYZ.Wget\ config :cal SetSyn("wget")<CR>
-an 50.120.190 &Syntax.WXYZ.Whitespace\ (add) :cal SetSyn("whitespace")<CR>
-an 50.120.200 &Syntax.WXYZ.WildPackets\ EtherPeek\ Decoder :cal SetSyn("dcd")<CR>
-an 50.120.210 &Syntax.WXYZ.WinBatch/Webbatch :cal SetSyn("winbatch")<CR>
-an 50.120.220 &Syntax.WXYZ.Windows\ Scripting\ Host :cal SetSyn("wsh")<CR>
-an 50.120.230 &Syntax.WXYZ.WSML :cal SetSyn("wsml")<CR>
-an 50.120.240 &Syntax.WXYZ.WvDial :cal SetSyn("wvdial")<CR>
-an 50.120.260 &Syntax.WXYZ.X\ Keyboard\ Extension :cal SetSyn("xkb")<CR>
-an 50.120.270 &Syntax.WXYZ.X\ Pixmap :cal SetSyn("xpm")<CR>
-an 50.120.280 &Syntax.WXYZ.X\ Pixmap\ (2) :cal SetSyn("xpm2")<CR>
-an 50.120.290 &Syntax.WXYZ.X\ resources :cal SetSyn("xdefaults")<CR>
-an 50.120.300 &Syntax.WXYZ.XBL :cal SetSyn("xbl")<CR>
-an 50.120.310 &Syntax.WXYZ.Xinetd\.conf :cal SetSyn("xinetd")<CR>
-an 50.120.320 &Syntax.WXYZ.Xmodmap :cal SetSyn("xmodmap")<CR>
-an 50.120.330 &Syntax.WXYZ.Xmath :cal SetSyn("xmath")<CR>
-an 50.120.340 &Syntax.WXYZ.XML :cal SetSyn("xml")<CR>
-an 50.120.350 &Syntax.WXYZ.XML\ Schema\ (XSD) :cal SetSyn("xsd")<CR>
-an 50.120.360 &Syntax.WXYZ.XQuery :cal SetSyn("xquery")<CR>
-an 50.120.370 &Syntax.WXYZ.Xslt :cal SetSyn("xslt")<CR>
-an 50.120.380 &Syntax.WXYZ.XFree86\ Config :cal SetSyn("xf86conf")<CR>
-an 50.120.400 &Syntax.WXYZ.YAML :cal SetSyn("yaml")<CR>
-an 50.120.410 &Syntax.WXYZ.Yacc :cal SetSyn("yacc")<CR>
-
-" The End Of The Syntax Menu
-
-
-an 50.195 &Syntax.-SEP1-			<Nop>
-
-an <silent> 50.200 &Syntax.Set\ '&syntax'\ only :call <SID>Setsynonly()<CR>
-fun! s:Setsynonly()
-  let s:syntax_menu_synonly = 1
-endfun
-an <silent> 50.202 &Syntax.Set\ '&filetype'\ too :call <SID>Nosynonly()<CR>
-fun! s:Nosynonly()
-  if exists("s:syntax_menu_synonly")
-    unlet s:syntax_menu_synonly
-  endif
-endfun
-
-" Restore 'cpoptions'
-let &cpo = s:cpo_save
-unlet s:cpo_save
diff --git a/runtime/tutor/runtime/termcap b/runtime/tutor/runtime/termcap
deleted file mode 100644
index 38790c4..0000000
--- a/runtime/tutor/runtime/termcap
+++ /dev/null
@@ -1,135 +0,0 @@
-#
-# Demonstration of a termcap file (for the Amiga and Archimedes)
-#
-# Maintainer:	Bram Moolenaar <Bram@vim.org>
-# Last change:	1999 Feb 02
-#
-sx|ansi|any ansi terminal with pessimistic assumptions:\
-	:co#80:li#24:cl=50\E[;H\E[2J:bs:am:cm=\E[%i%d;%dH:\
-	:nd=\E[C:up=\E[A:ce=\E[K:ho=\E[H:pt:
-
-Mu|sun|Sun Microsystems Workstation console:\
-	:am:bs:km:mi:ms:pt:li#34:co#80:cl=^L:cm=\E[%i%d;%dH:\
-	:ce=\E[K:cd=\E[J:\
-	:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:rs=\E[s:\
-	:md=\E[1m:mr=\E[7m:me=\E[m:\
-	:al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\
-	:AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\
-	:up=\E[A:nd=\E[C:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\
-	:k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\
-	:k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z:
-
-M-|sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\
-	:ic@:im@:ei@:tc=sun:
-Mu|sun-s|Sun Microsystems Workstation window with status line:\
-	:hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun:
-Mu|sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\
-	:hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun-e:
-M0|sun-48|Sun 48-line window:\
-	:li#48:co#80:tc=sun:
-M1|sun-34|Sun 34-line window:\
-	:li#34:co#80:tc=sun:
-M2|sun-24|Sun 24-line window:\
-	:li#24:co#80:tc=sun:
-M3|sun-17|Sun 17-line window:\
-	:li#17:co#80:tc=sun:
-
-v9|925a|tvi925a|TeleVideo Model 925:\
-	:al=\EE:am:bs:bt=\EI:bw:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:\
-	:dl=\ER:do=^V:ei=:ic=\EQ:if=/usr/share/lib/tabset/std:im=:kb=^H:kd=^V:\
-	:kh=^^:kl=^H:kn#12:kr=^L:ku=^K:li#24:nd=^L:pt:se=\EG0:sg#1:so=\EG4:\
-	:ue=\EG0:ug#1:ul:up=^K:us=\EG8:is=\El\
-	:vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
-	:ve=\E.4:vs=\E.2:
-
-d0|vt100|vt100-am|vt100am|dec vt100:\
-	:do=^J:co#80:li#24:cl=50\E[;H\E[2J:sf=5\ED:\
-	:le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
-	:ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
-	:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\
-	:rf=/usr/share/lib/tabset/vt100:\
-	:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
-	:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
-	:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:vt#3:xn:\
-	:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:
-
-# Amiga termcap by Bram Moolenaar
-AA|amiga|Amiga ANSI:\
-	:co#80:li#25:am:do=\E[B:ce=\E[K:cd=\E[J:\
-	:cl=\014:ku=\233A:kd=\233B:kl=\233D:kr=\233C:kb=^H:\
-	:#4=\233 A:%i=\233 @:%1=\233?~:\
-	:k1=\2330~:k2=\2331~:k3=\2332~:k4=\2333~:k5=\2334~:\
-	:k6=\2335~:k7=\2336~:k8=\2337~:k9=\2338~:k;=\2339~:\
-	:F1=\23310~:F2=\23311~:F3=\23312~:F4=\23313~:F5=\23314~:\
-	:F6=\23315~:F7=\23316~:F8=\23317~:F9=\23318~:FA=\23319~:\
-	:al=\E[L:AL=\E[%dL:dl=\E[M:DL=\E[%dM:le=^H:cm=\E[%i%d;%dH:\
-	:nd=\E[C:RI=\E[%dC:up=\E[A:\
-	:ce=\E[K:ho=\E[H:dc=\E[P:ic=\E[@:vi=\E[0 p:ve=\E[1 p:\
-	:so=\E[2m:se=\E[m:us=\E[4m:ue=\E[m:mr=\E[7m:mb=\E[7;2m:me=\E[m:
-
-# Acorn VDU
-# For non-green text, change the ^B in the :cl= line to
-# your favourite control code.
-a0|acorn0|Acorn VDU Driver Mode 0:\
-	:cl=^V\200^S^A^B\200\200\200:\
-	:is=^C^F^D^O^V\200^S^A^B\200\200\200:\
-	:tc=acorn_generic
-
-ag|acorn_generic|Acorn Generic VDU driver:\
-	:li#32:\
-	:co#80:\
-	:am:\
-	:bs:\
-	:bw:\
-	:bl=^G:\
-	:ce=^W^H^E^F\200\200\200\200\200\200:\
-	:cl=^L:\
-	:cm=^_%r%.%.:\
-	:ho=^^:\
-	:le=\010:\
-	:cr=\015:\
-	:me=^W^Q^E\200\200\200\200\200\200\200:\
-	:mr=^W^Q^E\200\200\200\200\200\200\200:\
-	:sb=^W^G^A^B\200\200\200\200\200\200:\
-	:se=^W^Q^E\200\200\200\200\200\200\200:\
-	:sf=^W^G^A^C\200\200\200\200\200\200:\
-	:so=^W^Q^E\200\200\200\200\200\200\200:\
-	:sr=^W^G^A^B\200\200\200\200\200\200:\
-	:up=^K:\
-	:vb=^R^C^G^Y^D\200\200\200\200^Ye\200^E\200^D^Ye\200\200\200\200:\
-	:vi=^W^A\200\200\200\200\200\200\200\200:\
-	:ve=^W^A^A\200\200\200\200\200\200\200:\
-	:ku=\317:\
-	:kd=\316:\
-	:kl=\314:\
-	:kr=\315:\
-	:kP=\337:\
-	:kN=\336:\
-	:kh=\036:\
-	:kH=\313:\
-	:su=\337:\
-	:sd=\336:\
-	:#4=\334:\
-	:%i=\335:\
-	:k1=\301:\
-	:k2=\302:\
-	:k3=\303:\
-	:k4=\304:\
-	:k5=\305:\
-	:k6=\306:\
-	:k7=\307:\
-	:k8=\310:\
-	:k9=\311:\
-	:F1=\321:\
-	:F2=\322:\
-	:F3=\323:\
-	:F4=\324:\
-	:F5=\325:\
-	:F6=\326:\
-	:F7=\327:\
-	:F8=\330:\
-	:F9=\331
-
-#
-# END OF TERMCAP
-#
diff --git a/runtime/tutor/runtime/tools.info b/runtime/tutor/runtime/tools.info
deleted file mode 100755
index 4d173b0..0000000
--- a/runtime/tutor/runtime/tools.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/tutor.info b/runtime/tutor/runtime/tutor.info
deleted file mode 100755
index f8ceda3..0000000
--- a/runtime/tutor/runtime/tutor.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim16x16.gif b/runtime/tutor/runtime/vim16x16.gif
deleted file mode 100644
index 505a855..0000000
--- a/runtime/tutor/runtime/vim16x16.gif
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim16x16.png b/runtime/tutor/runtime/vim16x16.png
deleted file mode 100644
index fb45d22..0000000
--- a/runtime/tutor/runtime/vim16x16.png
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim16x16.xpm b/runtime/tutor/runtime/vim16x16.xpm
deleted file mode 100644
index cb75b71..0000000
--- a/runtime/tutor/runtime/vim16x16.xpm
+++ /dev/null
@@ -1,27 +0,0 @@
-/* XPM */
-static char * vim16x16[] = {
-"16 16 8 1",
-" 	c None",
-".	c #000000",
-"+	c #000080",
-"@	c #008000",
-"#	c #00FF00",
-"$	c #808080",
-"%	c #C0C0C0",
-"&	c #FFFFFF",
-"  .....#. ....  ",
-" .&&&&&.@.&&&&. ",
-" .%%%%%$..%%%%$.",
-"  .%%%$.@.&%%$. ",
-"  .%%%$..&%%$.  ",
-"  .%%%$.&%%$..  ",
-" #.%%%$&%%$.@@. ",
-"#@.%%%&%%$.@@@@.",
-".@.%%%%%..@@@@+ ",
-" ..%%%%.%...@.  ",
-"  .%%%%...%%.%. ",
-"  .%%%.%%.%%%%%.",
-"  .%%$..%.%.%.%.",
-"  .%$.@.%.%.%.%.",
-"   .. .%%.%.%.%.",
-"       .. . . . "};
diff --git a/runtime/tutor/runtime/vim32x32.gif b/runtime/tutor/runtime/vim32x32.gif
deleted file mode 100644
index 523821b..0000000
--- a/runtime/tutor/runtime/vim32x32.gif
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim32x32.png b/runtime/tutor/runtime/vim32x32.png
deleted file mode 100644
index c6e04fa..0000000
--- a/runtime/tutor/runtime/vim32x32.png
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim32x32.xpm b/runtime/tutor/runtime/vim32x32.xpm
deleted file mode 100644
index 43a3a40..0000000
--- a/runtime/tutor/runtime/vim32x32.xpm
+++ /dev/null
@@ -1,43 +0,0 @@
-/* XPM */
-static char * vim32x32[] = {
-"32 32 8 1",
-" 	c None",
-".	c #000000",
-"+	c #000080",
-"@	c #008000",
-"#	c #00FF00",
-"$	c #808080",
-"%	c #C0C0C0",
-"&	c #FFFFFF",
-"               ..               ",
-"              .##.              ",
-"   ...........#@@#. .........   ",
-"  .&&&&&&&&&&&.@@@#.&&&&&&&&&.  ",
-"  .&%%%%%%%%%%%.@@@.&%%%%%%%%%. ",
-"   .%%%%%%%%%%$.@@@@.%%%%%%%%$. ",
-"    .$%%%%%%$$.@@@@@@.$%%%%%$$. ",
-"    .&%%%%%%$.@@@@@@.&%%%%%$$.  ",
-"    .&%%%%%%$.@@@@@.&&%%%%$$.   ",
-"    .&%%%%%%$.@@@@.&&%%%%$$.    ",
-"    .&%%%%%%$.@@@.&&%%%%$$.     ",
-"    .&%%%%%%$.@@.&&%%%%$$.#.    ",
-"   ..&%%%%%%$.@.&&%%%%$$.@@#.   ",
-"  .#.&%%%%%%$..&&%%%%$$.@@@@#.  ",
-" .#@.&%%%%%%$.&&%%%%$$.@@@@@@#. ",
-".#@@.&%%%%%%$&&%%%%$$.@@@@@@@@#.",
-".+@@.&%%%%%%$&%%%%$$.@@@@@@@@@+.",
-" .+@.&%%%%%%$%%%%$$.@@@@@@@@@+. ",
-"  .+.&%%%%%%%%%%...@@@@@@@@@+.  ",
-"   ..&%%%%%%%%%.%%.@@@@@@@@+.   ",
-"    .&%%%%%%%%%.%%.@@@@@@@+.    ",
-"    .&%%%%%%%%$...@...@......   ",
-"    .&%%%%%%%$.%%%.%%%.%%%.%%.  ",
-"    .&%%%%%%$$..%%..%%%%%%%%%%. ",
-"    .&%%%%%$$..%%...%%++%%..%.  ",
-"    .&%%%%$$.@.%%..%%+.%%..%%.  ",
-"    .&%%%$$.@@.%%..%%..%%..%%.  ",
-"    .&%%$$..+.%%..%%..%%..%%.   ",
-"     .%$$.  ..%%%.%%..%%..%%%.  ",
-"      ...    ....+..  ..  ...   ",
-"              .++.              ",
-"               ..               "};
diff --git a/runtime/tutor/runtime/vim48x48.gif b/runtime/tutor/runtime/vim48x48.gif
deleted file mode 100644
index 6be182e..0000000
--- a/runtime/tutor/runtime/vim48x48.gif
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim48x48.png b/runtime/tutor/runtime/vim48x48.png
deleted file mode 100644
index 4bac67e..0000000
--- a/runtime/tutor/runtime/vim48x48.png
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vim48x48.xpm b/runtime/tutor/runtime/vim48x48.xpm
deleted file mode 100644
index b2fdd95..0000000
--- a/runtime/tutor/runtime/vim48x48.xpm
+++ /dev/null
@@ -1,59 +0,0 @@
-/* XPM */
-static char * vim48x48[] = {
-"48 48 8 1",
-" 	c None",
-".	c #000000",
-"+	c #000084",
-"@	c #008200",
-"#	c #00FF00",
-"$	c #848284",
-"&	c #C6C3C6",
-"*	c #FFFFFF",
-"                       ..                       ",
-"                      .##.                      ",
-"                     .#@@#.                     ",
-"      ...............#@@@@#.   ...............  ",
-"     .***************.@@@@@#. .***************. ",
-"    .**&&&&&&&&&&&&&&$.@@@@@#.**&&&&&&&&&&&&&&$.",
-"    .*&&&&&&&&&&&&&&&$.@@@@@@.*&&&&&&&&&&&&&&&$.",
-"    .*$&&&&&&&&&&&&&&$.@@@@@@.*$&&&&&&&&&&&&&&$.",
-"     .$$$&&&&&&&&&$$$.@@@@@@@@.$$$&&&&&&&&&&&$$.",
-"      ..*&&&&&&&&&$$.@@@@@@@@@@..*&&&&&&&&&&$$. ",
-"       .*&&&&&&&&&$$.@@@@@@@@@@.**&&&&&&&&&$$.  ",
-"       .*&&&&&&&&&$$.@@@@@@@@@.**&&&&&&&&&$$.   ",
-"       .*&&&&&&&&&$$.@@@@@@@@.**&&&&&&&&&$$.    ",
-"       .*&&&&&&&&&$$.@@@@@@@.**&&&&&&&&&$$.     ",
-"       .*&&&&&&&&&$$.@@@@@@.**&&&&&&&&&$$.      ",
-"       .*&&&&&&&&&$$.@@@@@.**&&&&&&&&&$$.       ",
-"       .*&&&&&&&&&$$.@@@@.**&&&&&&&&&$$..       ",
-"      ..*&&&&&&&&&$$.@@@.**&&&&&&&&&$$.@#.      ",
-"     .#.*&&&&&&&&&$$.@@.**&&&&&&&&&$$.@@@#.     ",
-"    .#@.*&&&&&&&&&$$.@.**&&&&&&&&&$$.@@@@@#.    ",
-"   .#@@.*&&&&&&&&&$$..**&&&&&&&&&$$.@@@@@@@#.   ",
-"  .#@@@.*&&&&&&&&&$$.**&&&&&&&&&$$.@@@@@@@@@#.  ",
-" .#@@@@.*&&&&&&&&&$$**&&&&&&&&&$$.@@@@@@@@@@@#. ",
-".#+@@@@.*&&&&&&&&&$$*&&&&&&&&&$$.@@@@@@@@@@@@@#.",
-" .++@@@.*&&&&&&&&&$*&&&&&&&&&$$.@@@@@@@@@@@@@++.",
-"  .++@@.*&&&&&&&&&$&&&&&&&&&$$.@@@@@@@@@@@@@++. ",
-"   .++@.*&&&&&&&&&&&&&&&&&&$$.@@@@@@@@@@@@@++.  ",
-"    .++.*&&&&&&&&&&&&&&&&....@@@@@@@@@@@@@++.   ",
-"     .+.*&&&&&&&&&&&&&&&.&&&.@@@@@@@@@@@@+++    ",
-"      ..*&&&&&&&&&&&&&&&.&&&.@@@@@@@@@@@++.     ",
-"       .*&&&&&&&&&&&&&&&.&&&.@@@@@@@@@@++.      ",
-"       .*&&&&&&&&&&&&&&$$...@@@@@@@@@@++.       ",
-"       .*&&&&&&&&&&&&&$$...@@....@@....+....    ",
-"       .*&&&&&&&&&&&&$$..&&..&&&&..&&&&..&&&.   ",
-"       .*&&&&&&&&&&&$$..&&&.@.&&&&&&&&&&&&&&&.  ",
-"       .*&&&&&&&&&&$$.@.&&&.@.&&&&&&&&&&&&&&&.  ",
-"       .*&&&&&&&&&$$.@@.&&.@@.&&....&&....&&.   ",
-"       .*&&&&&&&&$$.@@.&&&.@.&&&.+.&&&. .&&&.   ",
-"       .*&&&&&&&$$.@@@.&&.@@.&&.++.&&.  .&&.    ",
-"       .*&&&&&&$$.@@@.&&&.@.&&&.+.&&&. .&&&.    ",
-"       .*&&&&&$$.++@@.&&.@@.&&.. .&&.  .&&.     ",
-"       .*&&&&$$. .++.&&&.@.&&&. .&&&. .&&&.     ",
-"        .$$$$$.   .+.&&&&..&&&&..&&&&..&&&&.    ",
-"         .....     .+....@+....  ....  ....     ",
-"                    .++@@++.                    ",
-"                     .++++.                     ",
-"                      .++.                      ",
-"                       ..                       "};
diff --git a/runtime/tutor/runtime/vimlogo.cdr b/runtime/tutor/runtime/vimlogo.cdr
deleted file mode 100644
index e2a35f2..0000000
--- a/runtime/tutor/runtime/vimlogo.cdr
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vimlogo.eps b/runtime/tutor/runtime/vimlogo.eps
deleted file mode 100644
index 5bf45ff..0000000
--- a/runtime/tutor/runtime/vimlogo.eps
+++ /dev/null
@@ -1,791 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 147 74 429 356 
-%%LanguageLevel: 1
-%%Creator: CorelDRAW 11
-%%Title: vimlogo.eps
-%%CreationDate: Mon Feb 02 14:35:16 2004
-%%DocumentProcessColors: Cyan Yellow Black 
-%%DocumentSuppliedResources: (atend)
-%%EndComments
-%%BeginProlog
-/AutoFlatness false def
-/AutoSteps 0 def
-/CMYKMarks true def
-/UseLevel 1 def
-%Build: CorelDRAW 11 Version 11.633
-%Color profile:  Generic offset separations profile
-/CorelIsEPS true def
-%%BeginResource: procset wCorel11Dict 11.0 0
-/wCorel11Dict 300 dict def wCorel11Dict begin
-% Copyright (c)1992-2002 Corel Corporation
-% All rights reserved.     v11.0 r0.0
-/bd{bind def}bind def/ld{load def}bd/xd{exch def}bd/_ null def/rp{{pop}repeat}
-bd/@cp/closepath ld/@gs/gsave ld/@gr/grestore ld/@np/newpath ld/Tl/translate ld
-/$sv 0 def/@sv{/$sv save def}bd/@rs{$sv restore}bd/spg/showpage ld/showpage{}
-bd currentscreen/@dsp xd/$dsp/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF
-false def/$Scra 0 def/SetScr/setscreen ld/@ss{2 index 0 eq{$dsf 3 1 roll 4 -1
-roll pop}if exch $Scra add exch load SetScr}bd/SepMode_5 where{pop}{/SepMode_5
-0 def}ifelse/CorelIsSeps where{pop}{/CorelIsSeps false def}ifelse
-/CorelIsInRIPSeps where{pop}{/CorelIsInRIPSeps false def}ifelse/CorelIsEPS
-where{pop}{/CorelIsEPS false def}ifelse/CurrentInkName_5 where{pop}
-{/CurrentInkName_5(Composite)def}ifelse/$ink_5 where{pop}{/$ink_5 -1 def}
-ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def/$t 1 def/$n _ def/$o 0 def/$fil 0
-def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 def/$N _ def/$O 0 def/$PF false
-def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def/s1t 0 def/s1n _ def/$bkg false def
-/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op false def matrix currentmatrix/$ctm xd
-/$ptm matrix def/$ttm matrix def/$stm matrix def/$ffpnt true def
-/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring
-16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle
-16#60/grave 16#7C/bar
-16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl
-16#88/circumflex/perthousand/Scaron/guilsinglleft/OE
-16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash
-16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis
-16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section
-16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron
-16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered
-16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown
-16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
-16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis
-16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply
-16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
-16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide
-16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def/Comp?{
-/LumSepsDict where{pop false}{/AldusSepsDict where{pop false}{1 0 0 0 @gs
-setcmykcolor currentcmykcolor @gr add add add 0 ne 0 1 0 0 @gs setcmykcolor
-currentcmykcolor @gr add add add 0 ne 0 0 1 0 @gs setcmykcolor currentcmykcolor
-@gr add add add 0 ne 0 0 0 1 @gs setcmykcolor currentcmykcolor @gr add add add
-0 ne and and and}ifelse}ifelse}bd/@PL{/LV where{pop LV 2 ge L2? not and{@np
-/Courier findfont 12 scalefont setfont 72 144 m
-(The PostScript level set in the Corel application is higher than)show 72 132 m
-(the PostScript level of this device. Change the PS Level in the Corel)show 72
-120 m(application to Level 1 by selecting the PostScript tab in the print)show
-72 108 m(dialog, and selecting Level 1 from the Compatibility drop down list.)
-show flush spg quit}if}if}bd/@BeginSysCorelDict{systemdict/Corel30Dict known
-{systemdict/Corel30Dict get exec}if systemdict/CorelLexDict known{1 systemdict
-/CorelLexDict get exec}if}bd/@EndSysCorelDict{systemdict/Corel30Dict known
-{end}if/EndCorelLexDict where{pop EndCorelLexDict}if}bd AutoFlatness{/@ifl{dup
-currentflat exch sub 10 gt{
-([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush
-@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{
-{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill
-{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip
-/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat}
-bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse}
-bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped
-{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{
-/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit
-ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l
-/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp}
-bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1
-exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1
-sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type
-/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd
-/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def}
-ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{
-/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{
-dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2
-copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix
-/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd
-{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd}
-if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch
-load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA}
-{$dsa}ifelse $SCP @ss}if}bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge
-{pop}{exch pop}ifelse}bd/InRange{3 -1 roll @MN @MX}bd/@sqr{dup 0 rl dup 0 exch
-rl neg 0 rl @cp}bd/currentscale{1 0 dtransform matrix defaultmatrix idtransform
-dup mul exch dup mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform
-dup mul exch dup mul add sqrt}bd/@unscale{}bd/wDstChck{2 1 roll dup 3 -1 roll
-eq{1 add}if}bd/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1
-exch sub}bd/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch}
-repeat pop}bd/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1
-roll sub neg exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index
-.114 mul add 4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb
-/setrgbcolor ld/GetRgb/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray
-ld/SetRgb2 systemdict/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor
-get def/SetHsb systemdict/sethsbcolor get def/GetHsb systemdict
-/currenthsbcolor get def/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor
-sub 3 1 roll SetHsb GetRgb2}bd/setcmykcolor where{pop/LumSepsDict where{pop
-/SetCmyk_5{LumSepsDict/setcmykcolor get exec}def}{/AldusSepsDict where{pop
-/SetCmyk_5{AldusSepsDict/setcmykcolor get exec}def}{/SetCmyk_5/setcmykcolor ld
-}ifelse}ifelse}{/SetCmyk_5{cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{
-pop/GetCmyk/currentcmykcolor ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse
-/setoverprint where{pop}{/setoverprint{/$op xd}bd}ifelse/currentoverprint where
-{pop}{/currentoverprint{$op}bd}ifelse/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1
-roll mul exch}repeat pop}ifelse}bd/@trp{exch pop 5 1 roll @tc_5}bd
-/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 4 $ink_5 sub index exch pop 5 1
-roll pop pop pop pop SepsColor true eq{$ink_5 3 gt{1 sub neg SetGry}{0 0 0 4
-$ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry}ifelse}ifelse}bd
-/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array astore}bd}ifelse
-/Corelsetcustomcolor_exists false def/setcustomcolor where{pop
-/Corelsetcustomcolor_exists true def}if CorelIsSeps true eq CorelIsInRIPSeps
-false eq and{/Corelsetcustomcolor_exists false def}if
-Corelsetcustomcolor_exists false eq{/setcustomcolor{exch aload pop SepMode_5 0
-eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0}ifelse 6 1 roll
-5 rp 1 sub neg SetGry}ifelse}bd}if/@scc_5{dup type/booleantype eq{dup
-currentoverprint ne{setoverprint}{pop}ifelse}{1 eq setoverprint}ifelse dup _ eq
-{pop setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse
-SepMode_5 0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage
-where{pop/ColorImage{colorimage}def}{/ColorImage{/ncolors xd/$multi xd $multi
-true eq{ncolors 3 eq{/daqB xd/daqG xd/daqR xd pop pop exch pop abs{daqR pop
-daqG pop daqB pop}repeat}{/daqK xd/daqY xd/daqM xd/daqC xd pop pop exch pop abs
-{daqC pop daqM pop daqY pop daqK pop}repeat}ifelse}{/dataaq xd{dataaq ncolors
-dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index get 255
-div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g 255 mul
-cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv getinterval pop}{
-4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 index get 255 div
-$dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div $dat 4 index 3
-add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 roll put}for $dat
-0 $dat length ncolors idiv getinterval}if}ifelse}image}ifelse}bd}ifelse
-/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd
-/currentcmykcolor{GetCmyk}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd
-/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor}
-bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd
-/currentgray{currentrgbcolor rgb2g}bd/InsideDCS false def/IMAGE/image ld/image
-{InsideDCS{IMAGE}{/EPSDict where{pop SepMode_5 0 eq{IMAGE}{dup type/dicttype eq
-{dup/ImageType get 1 ne{IMAGE}{dup dup/BitsPerComponent get 8 eq exch
-/BitsPerComponent get 1 eq or currentcolorspace 0 get/DeviceGray eq and{
-CurrentInkName_5(Black)eq{IMAGE}{dup/DataSource get/TCC xd/Height get abs{TCC
-pop}repeat}ifelse}{IMAGE}ifelse}ifelse}{2 index 1 ne{CurrentInkName_5(Black)eq
-{IMAGE}{/TCC xd pop pop exch pop abs{TCC pop}repeat}ifelse}{IMAGE}ifelse}
-ifelse}ifelse}{IMAGE}ifelse}ifelse}bd}ifelse/WaldoColor_5 true def/$fm 0 def
-/wfill{1 $fm eq{fill}{eofill}ifelse}bd/@Pf{@sv SepMode_5 0 eq $Psc 0 ne or
-$ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y $k $n $o @scc_5 pop $ctm setmatrix 72
-1000 div dup matrix scale dup concat dup Bburx exch Bbury exch itransform
-ceiling cvi/Bbury xd ceiling cvi/Bburx xd Bbllx exch Bblly exch itransform
-floor cvi/Bblly xd floor cvi/Bbllx xd $Prm aload pop $Psn load exec}{1 SetGry
-wfill}ifelse @rs @np}bd/F{matrix currentmatrix $sdf{$scf $sca $scp @ss}if $fil
-1 eq{CorelPtrnDoFill}{$fil 2 eq{@ff}{$fil 3 eq{@Pf}{$fil 4 eq
-{CorelShfillDoFill}{$t $c $m $y $k $n $o @scc_5{wfill}{@np}ifelse}ifelse}
-ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{
-matrix currentmatrix $ctm setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K
-$N $O @scc_5{matrix currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF
-{$dsf $dsa $dsp @ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/_E{
-5 array astore exch cvlit xd}bd/@cc{currentfile $dat readhexstring pop}bd/@sm{
-/$ctm $ctm currentmatrix def}bd/@E{/Bbury xd/Bburx xd/Bblly xd/Bbllx xd}bd/@c{
-@cp}bd/@P{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd}bd/tcc{@cc}def/@B{
-@gs S @gr F}bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq{/$ink_5 -1 def}
-{CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5(Magenta)eq{/$ink_5 1
-def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{CurrentInkName_5(Black)eq
-{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse}ifelse}ifelse}bd/@whi{@gs
--72000 dup m -72000 72000 l 72000 dup l 72000 -72000 l @cp 1 SetGry fill @gr}
-bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec cvx]cvx settransfer @whi}
-bd/deflevel 0 def/@sax{/deflevel deflevel 1 add def}bd/@eax{/deflevel deflevel
-dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax}ifelse}bd/eax{{exec}forall}
-bd/@rax{deflevel 0 eq{@rs @sv}if}bd systemdict/pdfmark known not{/pdfmark
-/cleartomark ld}if/wclip{1 $fm eq{clip}{eoclip}ifelse}bd
-% Copyright (c)1992-2002 Corel Corporation
-% All rights reserved.     v11.0 r0.0
-/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index 3 index l 3
-index 3 index l clip pop pop pop pop}bd/@i{@sm @gs @ii 6 index 1 ne{/$frg true
-def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5/$frg xd}{/$frg false def}
-ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np/$ury xd/$urx xd/$lly xd
-/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 div ceiling cvi string
-def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl $urx $llx sub $ury
-$lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid $hei abs $bts 1 eq
-{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]/tcc load $bts
-1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa $dsp @ss}if}{$hei abs{tcc pop}
-repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd
-/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd $ngx $llx $lly Tl $urx $llx sub $ury
-$lly sub scale $wid $hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse
-]$msimage false eq $ncl 1 eq or{/$dat $wid $bts mul $ncl mul 8 div ceiling cvi
-string def/@cc load false $ncl ColorImage}{$wid $bts mul 8 div ceiling cvi $ncl
-3 eq{dup dup/$dat1 exch string def/$dat2 exch string def/$dat3 exch string def
-/@cc1 load/@cc2 load/@cc3 load}{dup dup dup/$dat1 exch string def/$dat2 exch
-string def/$dat3 exch string def/$dat4 exch string def/@cc1 load/@cc2 load
-/@cc3 load/@cc4 load}ifelse true $ncl ColorImage}ifelse $SDF{$dsf $dsa $dsp
-@ss}if @gr $ctm setmatrix}bd/@cc1{currentfile $dat1 readhexstring pop}bd/@cc2{
-currentfile $dat2 readhexstring pop}bd/@cc3{currentfile $dat3 readhexstring pop
-}bd/@cc4{currentfile $dat4 readhexstring pop}bd/$msimage false def/COMP 0 def
-/MaskedImage false def L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx
-xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling
-cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK}
-ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8
-dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent
-$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]}
-ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def
-/DataSource currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP
-2 eq{/RunLengthDecode filter}if}ifelse def currentdict end image $SDF{$dsf $dsa
-$dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/@I_3{@sm @gs @ii @np/$ury
-xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul
-$ncl mul 8 div ceiling cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq
-{/DeviceRGB}{/DeviceCMYK}ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub
-$ury $lly sub scale/ImageDataDict 8 dict def ImageDataDict begin/ImageType 1
-def/Width $wid def/Height $hei abs def/BitsPerComponent $bts def/Decode $ncl 1
-eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]}ifelse}ifelse def
-/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def/DataSource
-currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP 2 eq{
-/RunLengthDecode filter}if}ifelse def end/MaskedImageDict 7 dict def
-MaskedImageDict begin/ImageType 3 def/InterleaveType 3 def/MaskDict
-ImageMaskDict def/DataDict ImageDataDict def end MaskedImageDict image $SDF
-{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd/@SetMask{/$mbts xd/$mhei xd/$mwid
-xd/ImageMaskDict 8 dict def ImageMaskDict begin/ImageType 1 def/Width $mwid def
-/Height $mhei abs def/BitsPerComponent $mbts def/DataSource maskstream def
-/ImageMatrix[$mwid 0 0 $mhei neg 0 $mhei 0 gt{$mhei}{0}ifelse]def/Decode[1 0]
-def end}bd/@daq{dup type/arraytype eq{{}forall}if}bd/@BMP{/@cc xd UseLevel 3 eq
-MaskedImage true eq and{7 -2 roll pop pop @I_3}{12 index 1 gt UseLevel 2 eq
-UseLevel 3 eq or and{7 -2 roll pop pop @I_2}{11 index 1 eq{12 -1 roll pop @i}{
-7 -2 roll pop pop @I}ifelse}ifelse}ifelse}bd
-% Copyright (c)1992-2002 Corel Corporation
-% All rights reserved.     v11.0 r0.0
-/@p{/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true def}{@gs $t $c $m $y $k $n $o
-@scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd/$pn xd}bd
-/CorelPtrnDoFill{@gs $ctm setmatrix $pm concat CorelPtrnSetBBox wclip @sv Bburx
-Bbury $pm itransform/$tury xd/$turx xd Bbllx Bblly $pm itransform/$tlly xd
-/$tllx xd newpath $tllx $tlly m $tllx $tury l $turx $tury l $turx $tlly l $tllx
-$tlly m @cp pathbbox @rs/$tury xd/$turx xd/$tlly xd/$tllx xd/$wid $turx $tllx
-sub def/$hei $tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{wfill}if}{
-$t $c $m $y $k $n $o @scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei
-scale <00> 8 1 false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse
-@gr $wid 0 gt $hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub
-/$phei xd exch sub/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div
-ceiling 1 add/$tly xd currentdict/CorelPtrnL2Pattern known $psy 0 eq and $psx 0
-eq and{CorelPtrnL2Pattern}{$psx 0 eq{CorelPtrnTileVeritcal}{CorelPtrnTileHoriz
-}ifelse}ifelse}if @gr @np/$bkg false def}bd/CorelPtrnSetBBox{pathbbox/$ury xd
-/$urx xd/$lly xd/$llx xd}bd/CorelPtrnSetFirstTile{$tllx $pxf add dup $tllx gt
-{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei add}if/$ty xd}bd/p{/$pm
-xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def}bd/CorelPtrnDraw{@ep}bd
-/CorelPtrnPutTile{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei
-sub $ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{
-/$in false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0
-$phei rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3
-index sub Tl matrix currentmatrix/$ctm xd CorelPtrnDraw pop pop pop pop}{pop
-pop}ifelse @rs}bd/CorelPtrnTileHoriz{CorelPtrnSetFirstTile 0 1 $tly 1 sub{dup
-$psx mul $tx add{dup $llx gt{$pwid sub}{exit}ifelse}loop exch $phei mul $ty
-exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 roll add exch CorelPtrnPutTile
-pop}for pop pop}for}bd/CorelPtrnTileVeritcal{CorelPtrnSetFirstTile 0 1 $tlx 1
-sub{dup $pwid mul $tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}
-{exit}ifelse}loop 0 1 $tly 1 sub{$phei mul 3 copy sub CorelPtrnPutTile pop}for
-pop pop}for}bd L2? UseLevel 2 ge and{/CorelPtrnL2Pattern{@sv[$pn cvlit load
-aload pop pop]$pwid $phei $pn cvlit load aload pop pop pop pop pathbbox pop pop
-2 index sub exch 3 index sub 4 -2 roll pop pop exch matrix identmatrix
-translate/PatternMatrix xd/PatternYStep xd/PatternXStep xd/PatternBBox xd
-currentdict/PatternMainDict xd <</PaintType 1/PatternType 1/TilingType 1/BBox
-PatternBBox/XStep PatternXStep/YStep PatternYStep/PaintProc{begin
-PatternMainDict begin $ctm currentmatrix pop 0 CorelPtrnDraw end end}bind >>
-PatternMatrix makepattern setpattern fill @rs}def}if
-end
-%%EndResource
-%%EndProlog
-%%BeginSetup
-wCorel11Dict begin
-@BeginSysCorelDict
-2.6131 setmiterlimit
-1.00 setflat
-/$fst 128 def
-%%EndSetup
-
-%%Page: 1 1
-%LogicalPage: 1
-%%BeginPageSetup
-@sv
-@sm
-@sv
-%%EndPageSetup
-@rax %Note: Object
-147.81600 74.66400 428.47200 355.32000 @E
- 0 O 0 @g
-0.00 0.00 0.00 1.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-428.47200 216.43200 m
-286.70400 355.32000 L
-147.81600 213.62400 L
-286.70400 74.66400 L
-428.47200 216.43200 L
-@c
-B
-
-@rax %Note: Object
-286.70400 80.35200 422.78400 216.43200 @E
- 0 O 0 @g
-0.60 0.00 0.40 0.58 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-414.28800 216.43200 m
-422.78400 216.43200 L
-286.70400 80.35200 L
-286.70400 88.84800 L
-414.28800 216.43200 L
-@c
-B
-
-@rax %Note: Object
-153.50400 80.35200 286.70400 213.62400 @E
- 0 O 0 @g
-0.60 0.00 0.40 0.51 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-153.50400 213.62400 m
-162.00000 213.62400 L
-286.70400 88.84800 L
-286.70400 80.35200 L
-153.50400 213.62400 L
-@c
-B
-
-@rax %Note: Object
-153.50400 213.62400 286.70400 349.63200 @E
- 0 O 0 @g
-0.60 0.00 0.40 0.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-286.70400 341.20800 m
-286.70400 349.63200 L
-153.50400 213.62400 L
-162.00000 213.62400 L
-286.70400 341.20800 L
-@c
-B
-
-@rax %Note: Object
-286.70400 216.43200 422.78400 349.63200 @E
- 0 O 0 @g
-0.73 0.00 0.99 0.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-286.70400 349.63200 m
-286.70400 341.20800 L
-414.28800 216.43200 L
-422.78400 216.43200 L
-286.70400 349.63200 L
-@c
-B
-
-@rax %Note: Object
-162.00000 88.84800 414.28800 341.20800 @E
- 0 O 0 @g
-0.60 0.00 0.40 0.40 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-286.70400 88.84800 m
-414.28800 216.43200 L
-286.70400 341.20800 L
-162.00000 213.62400 L
-286.70400 88.84800 L
-@c
-B
-
-@rax %Note: Object
-165.81600 103.03200 423.72000 344.01600 @E
- 0 O 0 @g
-0.00 0.00 0.00 1.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-313.20000 312.84000 m
-321.69600 304.27200 L
-321.69600 304.27200 L
-263.08800 244.80000 L
-263.08800 304.27200 L
-268.77600 304.27200 L
-277.27200 312.84000 L
-277.27200 335.44800 L
-268.77600 344.01600 L
-174.31200 344.01600 L
-165.81600 335.44800 L
-165.81600 312.84000 L
-174.31200 304.27200 L
-180.93600 304.27200 L
-180.93600 111.52800 L
-191.30400 103.03200 L
-220.60800 103.03200 L
-423.72000 312.84000 L
-423.72000 335.44800 L
-415.22400 344.01600 L
-322.63200 344.01600 L
-313.20000 335.44800 L
-313.20000 312.84000 L
-@c
-B
-
-@rax %Note: Object
-171.43200 309.96000 271.58400 338.40000 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-177.12000 309.96000 m
-171.43200 315.64800 L
-171.43200 332.64000 L
-177.12000 338.32800 L
-265.96800 338.40000 L
-271.58400 332.64000 L
-265.96800 329.90400 L
-263.08800 332.64000 L
-177.12000 318.52800 L
-177.12000 309.96000 L
-@c
-B
-
-@rax %Note: Object
-187.48800 108.72000 194.11200 315.64800 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-194.11200 108.72000 m
-187.48800 114.40800 L
-187.48800 310.03200 L
-194.11200 315.64800 L
-194.11200 108.72000 L
-@c
-B
-
-@rax %Note: Object
-247.03200 207.93600 341.56800 315.64800 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-335.88000 309.96000 m
-341.56800 315.64800 L
-341.56800 304.27200 L
-247.03200 207.93600 L
-257.47200 230.61600 L
-335.88000 309.96000 L
-@c
-B
-
-@rax %Note: Object
-177.12000 309.96000 196.05600 321.33600 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.50 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-196.05600 318.45600 m
-194.11200 315.64800 L
-187.48800 309.96000 L
-177.12000 309.96000 L
-177.12000 321.33600 L
-196.05600 318.45600 L
-@c
-B
-
-@rax %Note: Object
-247.03200 208.00800 271.58400 332.64000 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.50 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-257.47200 309.96000 m
-257.47200 230.61600 L
-247.03200 208.00800 L
-247.03200 315.72000 L
-263.08800 315.72000 L
-265.96800 318.52800 L
-263.08800 332.64000 L
-271.58400 332.64000 L
-271.58400 315.64800 L
-265.96800 309.96000 L
-257.47200 309.96000 L
-@c
-B
-
-@rax %Note: Object
-318.88800 309.96000 418.10400 338.32800 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-324.50400 309.96000 m
-318.88800 315.64800 L
-318.88800 332.64000 L
-325.44000 338.32800 L
-411.48000 338.32800 L
-418.10400 332.64000 L
-408.60000 324.14400 L
-324.50400 318.52800 L
-324.50400 309.96000 L
-@c
-B
-
-@rax %Note: Object
-194.11200 108.72000 418.10400 332.64000 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.50 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-418.10400 315.64800 m
-218.66400 108.72000 L
-194.11200 108.72000 L
-194.11200 117.21600 L
-212.11200 117.21600 L
-411.48000 321.33600 L
-408.60000 332.64000 L
-418.10400 332.64000 L
-418.10400 315.64800 L
-@c
-B
-
-@rax %Note: Object
-324.50400 309.96000 343.44000 321.33600 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.50 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-343.44000 318.45600 m
-341.49600 315.64800 L
-335.88000 309.96000 L
-324.50400 309.96000 L
-324.50400 321.33600 L
-343.44000 318.45600 L
-@c
-B
-
-@rax %Note: Object
-177.12000 114.40800 412.41600 332.71200 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.20 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-247.03200 208.00800 m
-247.03200 315.72000 L
-263.08800 315.72000 L
-265.96800 318.52800 L
-265.96800 329.90400 L
-263.08800 332.71200 L
-179.92800 332.71200 L
-177.12000 329.90400 L
-177.12000 318.52800 L
-179.92800 315.72000 L
-194.11200 315.72000 L
-194.11200 117.21600 L
-197.78400 114.40800 L
-213.98400 114.40800 L
-412.41600 321.33600 L
-412.41600 329.47200 L
-409.53600 332.71200 L
-327.38400 332.71200 L
-324.50400 329.90400 L
-324.50400 318.45600 L
-327.38400 315.64800 L
-341.56800 315.64800 L
-341.56800 304.27200 L
-247.03200 208.00800 L
-@c
-B
-
-@rax %Note: Object
-292.89600 185.18400 326.95200 213.55200 @E
- 0 O 0 @g
-0.00 0.00 0.00 1.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-298.58400 207.86400 m
-305.20800 213.55200 L
-322.20000 213.55200 L
-326.95200 207.86400 L
-321.26400 190.87200 L
-314.71200 185.18400 L
-297.72000 185.18400 L
-292.89600 190.87200 L
-298.58400 207.86400 L
-@c
-B
-
-@rax %Note: Object
-304.27200 114.33600 424.22400 182.37600 @E
- 0 O 0 @g
-0.00 0.00 0.00 1.00 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-304.27200 114.33600 m
-321.33600 165.31200 L
-315.64800 165.31200 L
-321.33600 182.37600 L
-346.75200 182.37600 L
-352.44000 176.68800 L
-356.25600 176.68800 L
-361.87200 182.37600 L
-380.80800 182.37600 L
-386.49600 176.68800 L
-390.24000 176.68800 L
-395.92800 182.37600 L
-416.66400 182.37600 L
-424.22400 171.00000 L
-411.84000 130.68000 L
-417.45600 130.68000 L
-411.98400 114.33600 L
-377.92800 114.33600 L
-391.24800 154.00800 L
-382.75200 154.00800 L
-374.90400 130.82400 L
-380.52000 130.82400 L
-375.19200 114.33600 L
-341.13600 114.33600 L
-354.38400 154.00800 L
-345.88800 154.00800 L
-337.96800 130.68000 L
-343.65600 130.68000 L
-338.32800 114.33600 L
-304.27200 114.33600 L
-@c
-B
-
-@rax %Note: Object
-311.83200 120.02400 418.46400 176.68800 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.20 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-414.07200 176.68800 m
-418.46400 170.42400 L
-404.49600 125.64000 L
-410.11200 125.64000 L
-408.24000 120.02400 L
-385.56000 120.02400 L
-398.80800 159.69600 L
-378.93600 159.69600 L
-367.63200 125.64000 L
-373.24800 125.64000 L
-371.37600 120.02400 L
-348.69600 120.02400 L
-361.94400 159.69600 L
-342.07200 159.69600 L
-330.76800 125.64000 L
-336.45600 125.64000 L
-334.51200 120.02400 L
-311.83200 120.02400 L
-328.89600 171.00000 L
-323.20800 171.00000 L
-325.08000 176.68800 L
-345.88800 176.68800 L
-351.57600 171.00000 L
-357.19200 171.00000 L
-362.88000 176.68800 L
-379.87200 176.68800 L
-385.56000 171.00000 L
-391.24800 171.00000 L
-396.93600 176.68800 L
-414.07200 176.68800 L
-@c
-B
-
-@rax %Note: Object
-267.40800 114.33600 318.45600 182.37600 @E
- 0 O 0 @g
-0.00 0.00 0.00 1.00 k
-/$fm 0 def
-318.45600 182.37600 m
-301.10400 130.75200 L
-307.00800 130.75200 L
-301.39200 114.33600 L
-267.40800 114.33600 L
-284.40000 165.31200 L
-278.71200 165.31200 L
-318.45600 182.37600 L
-@c
-278.71200 165.31200 m
-284.40000 182.37600 L
-318.45600 182.37600 L
-@c
-F
-
-@rax %Note: Object
-267.40800 114.33600 318.45600 182.37600 @E
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-318.45600 182.37600 m
-301.10400 130.75200 L
-307.00800 130.75200 L
-301.39200 114.33600 L
-267.40800 114.33600 L
-284.40000 165.31200 L
-278.71200 165.31200 L
-@c
-278.71200 165.31200 m
-284.40000 182.37600 L
-318.45600 182.37600 L
-@c
-S
-
-@rax %Note: Object
-274.96800 120.02400 310.89600 176.68800 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.20 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-297.64800 120.02400 m
-299.52000 125.64000 L
-293.83200 125.64000 L
-310.89600 176.68800 L
-287.28000 176.68800 L
-285.33600 171.00000 L
-291.96000 171.00000 L
-274.96800 120.02400 L
-297.64800 120.02400 L
-@c
-B
-
-@rax %Note: Object
-299.52000 190.87200 320.32800 207.86400 @E
- 0 O 0 @g
-0.00 0.00 0.00 0.20 k
-0 J 0 j [] 0 d 0 R 0 @G
-0.00 0.00 0.00 1.00 K
-0 0.21600 0.21600 0.00000 @w
-/$fm 0 def
-316.51200 193.68000 m
-320.32800 205.05600 L
-318.45600 207.86400 L
-307.08000 207.86400 L
-303.33600 205.05600 L
-299.52000 193.68000 L
-301.46400 190.87200 L
-312.84000 190.87200 L
-316.51200 193.68000 L
-@c
-B
-
-%%PageTrailer
-@rs
-@rs
-%%Trailer
-@EndSysCorelDict
-end
-%%DocumentSuppliedResources: procset wCorel11Dict 11.0 0
-%%EOF
diff --git a/runtime/tutor/runtime/vimlogo.gif b/runtime/tutor/runtime/vimlogo.gif
deleted file mode 100644
index 89c4c13..0000000
--- a/runtime/tutor/runtime/vimlogo.gif
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vimlogo.pdf b/runtime/tutor/runtime/vimlogo.pdf
deleted file mode 100644
index a9ad60f..0000000
--- a/runtime/tutor/runtime/vimlogo.pdf
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/runtime/vimlogo.xpm b/runtime/tutor/runtime/vimlogo.xpm
deleted file mode 100644
index 63e0d54..0000000
--- a/runtime/tutor/runtime/vimlogo.xpm
+++ /dev/null
@@ -1,75 +0,0 @@
-/* XPM */
-static char *vimlogo[] = {
-/* width height num_colors chars_per_pixel */
-"   125    60        8            1",
-/* colors */
-". c #000000",
-"# c #00007f",
-"a c #007f00",
-"b c #7f7f7f",
-"c c #00ff00",
-"d c #bfbfbf",
-"e c #ffffff",
-"f c None",
-/* pixels */
-"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffffffffffffffffffffee.cc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"fffffffffffffffffffffffffee.cccc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffeeeeeeeeeeeeeeeeeeee.ccaacc.eeffeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"fffffee....................caaaacc.eeee...................eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffee.deeeeeeeeeeeeeeeeeeb.aaaaacc.ee.deeeeeeeeeeeeeeeeeb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffe.dedddddddddddddddddddb.aaaaacc..dedddddddddddddddddd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffe.eddddddddddddddddddddb.aaaaaacc.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffe.eddddddddddddddddddddb.aaaaaaac.edddddddddddddddddddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffe.edddddddddddddddddddbb.aaaaaaaa.eddddddddddddddddddbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffe.bbdddddddddddddddddbbb.aaaaaaaa.bbddddddddddddddddbb.befffffffffffffffffffffffffffeeeeeffffffffffffffffffffffffffffffff",
-"ffffee.bbbbddddddddddddbbbb.aaaaaaaaaa.bbbbddddddddddddbbb.eefffffffffffffffeeeeeeeeeeeee...effffffffffffffffffffffffffffffff",
-"fffffee..beddddddddddddbbb.aaaaaaaaaaaa..dedddddddddddbbb.eeffffffffffffffffe..........ee...effffffffffffffffffffffffffffffff",
-"ffffffeee.eddddddddddddbb.aaaaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffe..........eee..eeeeeefffeeeeeeefffffffffffffffff",
-"ffffffffe.eddddddddddddbb.aaaaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffe..ee..ee..efe..e....eefee.....eeffffffffffffffff",
-"ffffffffe.eddddddddddddbb.aaaaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffe..ee..ee..efe........eee.......eefffffffffffffff",
-"ffffffffe.eddddddddddddbb.aaaaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffe..ee..ee..efe...eee..ee..eeeee..efffffffffffffff",
-"ffffffffe.eddddddddddddbb.aaaaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffeeeee..eeeeefe..eefe..ee.........efffffffffffffff",
-"ffffffffe.eddddddddddddbb.aaaaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffe..efffffe..effe..ee.........efffffffffffffff",
-"ffffffffe.eddddddddddddbb.aaaaaaa.eedddddddddddbbb.eefffffffffffffffffffffffffffe..efffffe..effe..ee..eeeeeeeefffffffffffffff",
-"fffffffee.eddddddddddddbb.aaaaaa.eedddddddddddbbb.eeffffffffffffffffffffffffffeee..eeeffee..eeee..ee...eeee..efffffffffffffff",
-"ffffffee..eddddddddddddbb.aaaaa.eedddddddddddbbb.c.eefffffffffffffffffffffffffe......effe....ee....ee........efffffffffffffff",
-"fffffee.c.eddddddddddddbb.aaaa.eedddddddddddbbb.acc.eeffffffffffffffffffffffffe......effe....ee....eee......eefffffffffffffff",
-"ffffee.cc.eddddddddddddbb.aaa.eedddddddddddbbb.aaacc.eefffffffffffffffffffffffeeeeeeeeffeeeeeeeeeeeefeeeeeeeeffffffffffffffff",
-"fffee.cca.eddddddddddddbb.aa.eedddddddddddbbb.aaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffee.ccaa.eddddddddddddbb.a.eedddddddddddbbb.aaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"fee.ccaaa.eddddddddddddbb..eedddddddddddbbb.aaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ee.ccaaaa.eddddddddddddbb.eedddddddddddbbb.aaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"e.ccaaaaa.eddddddddddddbbeedddddddddddbbb.aaaaaaaaaaaaacc.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"...aaaaaa.eddddddddddddbdedddddddddddbbb.aaaaaaaaaaaaaaacc.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"e.##aaaaa.eddddddddddddbedddddddddddbbb.aaaaaaaaaaaaaaaaa...effffffffffffffffeeeeeffffeeeefffffeeeeffffffffffffffffffffffffff",
-"ee.##aaaa.eddddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eeffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
-"fee.##aaa.edddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffffffffffffffffe...effffe..efffffe..effffffffffffffffffffffffff",
-"ffee.##aa.eddddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffeeeeeeeffffeeeeee..efeeeeeeefffeee..eeeeefffeeeeeeeffeeeeeeeeee",
-"fffee.##a.edddddddddddddddddddddbbb.aaaaaaaaaaaaaaaaa##.eefffee.....eeffee....e..efe.....efffe........effee.....eefe....e...e",
-"ffffee.##.edddddddddddddddddddd....aaaaaaaaaaaaaaaaa##.eefffee.......eeee........efe.....efffe........efee.......eee.........",
-"fffffee.#.eddddddddddddddddddd.dbb.aaaaaaaaaaaaaaaa##.eeffffe..eeeee..ee...eee...efeeee..efffeee..eeeeefe...eee...eeee...ee..",
-"ffffffee..eddddddddddddddddddd.ddb.aaaaaaaaaaaaaaa##.eefffffe.........ee..eefee..effffe..efffffe..efffffe..eefee..effe..eeeee",
-"fffffffee.eddddddddddddddddddb.bbb.aaaaaaaaaaaaaa##.eeffffffe.........ee..efffe..effffe..efffffe..efffffe..efffe..effe..effff",
-"ffffffffe.edddddddddddddddddbbb...aaaaaaaaaaaaaa##.eeeeeeeffe..eeeeeeeee..eefee..effffe..efffffe..efeeeee..eefee..effe..effff",
-"ffffffffe.eddddddddddddddddbb......aa.....aa.....#......beefe...eeee..ee...eee...eeeeee..eeeeffe..eee..ee...eee...eeee..eeeee",
-"ffffffffe.edddddddddddddddbbb.dbbb.aa.dbbb..dbbbb..dbbbb.befee........eee.........ee........effe.......eee.......eee........e",
-"ffffffffe.eddddddddddddddbbb..bdd.aaa.bdddbbdddddbbdddddb.effee......eefee....e...ee........effee....eeefee.....eefe........e",
-"ffffffffe.edddddddddddddbbb.a.ddb.aaa.ddddddddddddddddddb.efffeeeeeeeefffeeeeeeeeeeeeeeeeeeeefffeeeeeeffffeeeeeeeffeeeeeeeeee",
-"ffffffffe.eddddddddddddbbb.a.bddb.aa.bdddbbbbddddbbbbdddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.edddddddddddbbb.aa.bdd.aaa.bddb....bddb....bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.eddddddddddbbb.aaa.ddb.aaa.ddb.##b.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.edddddddddbbb..aa.bddb.aa.bddb.#e.bddb.ee.bddb.efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.eddddddddbbb..aaa.bdd.aaa.bdd.#ee.bdd.bee.bdd.befffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.edddddddbbb.aaaaa.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.eddddddbbb.##aaa.bddb.aa.bddb.ee.bddb.ee.bddb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.edddddbbb.e.##aa.bdd.aaa.bdd.bee.bdd.bee.bdd.beffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffe.bddddbbb.eee.##a.ddb.aaa.ddb.eeb.ddb.eeb.ddb.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffee..bbbb..eefee.#.bbbbb.a.bbbbb.e.bbbbb.e.bbbbb.effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"fffffffffeeb....beefffee........a.......e.......e.......effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffffeeeeeeeefffffee.##aaaa##.eeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffffffffffffffffffee.##aa##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"fffffffffffffffffffffffffee.####.eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"ffffffffffffffffffffffffffee.##.eefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
-"fffffffffffffffffffffffffffee..eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-};
diff --git a/runtime/tutor/runtime/vimrc_example.vim b/runtime/tutor/runtime/vimrc_example.vim
deleted file mode 100644
index a2a891c..0000000
--- a/runtime/tutor/runtime/vimrc_example.vim
+++ /dev/null
@@ -1,94 +0,0 @@
-" An example for a vimrc file.
-"
-" Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2008 Jun 16
-"
-" To use it, copy it to
-"     for Unix and OS/2:  ~/.vimrc
-"	      for Amiga:  s:.vimrc
-"  for MS-DOS and Win32:  $VIM\_vimrc
-"	    for OpenVMS:  sys$login:.vimrc
-
-" When started as "evim", evim.vim will already have done these settings.
-if v:progname =~? "evim"
-  finish
-endif
-
-" Use Vim settings, rather then Vi settings (much better!).
-" This must be first, because it changes other options as a side effect.
-set nocompatible
-
-" allow backspacing over everything in insert mode
-set backspace=indent,eol,start
-
-if has("vms")
-  set nobackup		" do not keep a backup file, use versions instead
-else
-  set backup		" keep a backup file
-endif
-set history=50		" keep 50 lines of command line history
-set ruler		" show the cursor position all the time
-set showcmd		" display incomplete commands
-set incsearch		" do incremental searching
-
-" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
-" let &guioptions = substitute(&guioptions, "t", "", "g")
-
-" Don't use Ex mode, use Q for formatting
-map Q gq
-
-" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
-" so that you can undo CTRL-U after inserting a line break.
-inoremap <C-U> <C-G>u<C-U>
-
-" In many terminal emulators the mouse works just fine, thus enable it.
-set mouse=a
-
-" Switch syntax highlighting on, when the terminal has colors
-" Also switch on highlighting the last used search pattern.
-if &t_Co > 2 || has("gui_running")
-  syntax on
-  set hlsearch
-endif
-
-" Only do this part when compiled with support for autocommands.
-if has("autocmd")
-
-  " Enable file type detection.
-  " Use the default filetype settings, so that mail gets 'tw' set to 72,
-  " 'cindent' is on in C files, etc.
-  " Also load indent files, to automatically do language-dependent indenting.
-  filetype plugin indent on
-
-  " Put these in an autocmd group, so that we can delete them easily.
-  augroup vimrcEx
-  au!
-
-  " For all text files set 'textwidth' to 78 characters.
-  autocmd FileType text setlocal textwidth=78
-
-  " When editing a file, always jump to the last known cursor position.
-  " Don't do it when the position is invalid or when inside an event handler
-  " (happens when dropping a file on gvim).
-  " Also don't do it when the mark is in the first line, that is the default
-  " position when opening a file.
-  autocmd BufReadPost *
-    \ if line("'\"") > 1 && line("'\"") <= line("$") |
-    \   exe "normal! g`\"" |
-    \ endif
-
-  augroup END
-
-else
-
-  set autoindent		" always set autoindenting on
-
-endif " has("autocmd")
-
-" Convenient command to see the difference between the current buffer and the
-" file it was loaded from, thus the changes you made.
-" Only define it when not defined already.
-if !exists(":DiffOrig")
-  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
-		  \ | wincmd p | diffthis
-endif
diff --git a/runtime/tutor/src.info b/runtime/tutor/src.info
deleted file mode 100755
index 1ab7c6c..0000000
--- a/runtime/tutor/src.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/uninstal.txt b/runtime/tutor/uninstal.txt
deleted file mode 100644
index bb06c99..0000000
--- a/runtime/tutor/uninstal.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-Uninstalling Vim on Dos and MS-Windows.
-
-There are three ways to remove Vim:
-
-1. With the GUI uninstaller.
-   This is only available when Vim was installed with the self-installing
-   executable.  This has a minimal number of questions.  It can delete
-   everything that was installed.  This also unregisters the VisVim.dll
-
-2. With uninstal.exe.
-   This removes most installed items, but does not delete the files you
-   unpacked.
-
-3. By hand.
-   This is a bit more work, but you can decide exactly what you want to
-   remove.  For uninstalling the "Edit with Vim" popup menu entry you still
-   have to use uninstal.exe.
-
-It's recommended to use the method that matches with how you installed Vim.
-Thus if you installed Vim by hand, deleted it by hand.
-
-The first two methods should be available from the Add/Remove software window
-and the Vim entry in the Start menu.  If these have been removed already, find
-"uninstall-gui.exe" or "uninstal.exe" in the Vim directory.
-   Running these programs should be self-explanatory.  Carefully read the
-messages to avoid deleting something you want to keep.
-
-Here are guidelines for removing Vim by hand:
-
-1. Remove the "Edit with Vim" popup menu entry, if it exists.  This will only
-   be on MS-Windows 95/98/NT.  This is done by running the uninstal.exe
-   program.  It removes the registry entries for the "Edit with Vim" popup
-   menu entry.  You only need to run uninstal.exe when you have installed the
-   menu entry.  You can also run uninstal.exe from the Control panel with the
-   Add/Remove programs application.
-   Note that uninstal.exe offers you to uninstal other items.  You can skip
-   this.
-
-2. Only if you have used the OLE version of gvim: Remove the registration of
-   this program by running "gvim -unregister" in a console window.
-
-3. Delete the executables.  If you copied the executables to another location,
-   you will have to delete them from where you copied them to.  If you don't
-   remember where they are, look in the directories from the $PATH environment
-   variable.
-   If you created .bat files when installing Vim, also search for vim.bat,
-   gvim.bat, etc.
-
-4. If you completely want to delete vim, and are not going to install another
-   version, you can delete the vimrc files that you created.  These are
-   normally located in a directory like "C:\vim".  If the $VIM environment
-   variable is set, it will tell the name of the directory.  Normally you can
-   delete everything in this directory.  Warning: You might have put some
-   files there that you would like to save.  If you did remove it all, you can
-   skip the next step.
-
-5. Delete the distributed files.  If you followed the directions, these will
-   be located in a directory like "C:\vim\vim54".  If the $VIM environment
-   variable is set, the directory will be $VIM\vim54.  Delete the "vim54"
-   directory and all that is in it.  Warning: If you changed any of the
-   distributed files, or added some of your own files, you might want to save
-   these first.  But normally you would not have changed or added files here.
-
-6. Remove setting the $VIM and $VIMRUNTIME environment variable and adjust
-   $PATH.  $VIM only needs to be removed if you are not going to install
-   another version of Vim.  $VIMRUNTIME is mostly not set.  Check if $PATH
-   contains the path of the vim directory.  Note that $PATH may be set in
-   several places, you will have to find the right one, and only delete the
-   Vim path from it.  You can most likely find the lines that set $PATH, $VIM
-   and/or $VIMRUNTIME in C:\autoexec.bat.  Under Windows NT you might need to
-   use the "System Properties" editor to change the environment variables, if
-   they are not in the C:\autoexec.bat file.  You can start it by selecting
-   Start/Settings/Control Panel and then "System".
-
-7. If you added a Vim entry in the start menu, delete it.
-
-8. If you created icons for Vim on the desktop, delete them.
-
-Vim does not use .ini files.  The above should remove all Vim files, except
-the ones that you moved elsewhere yourself.
diff --git a/runtime/tutor/vimdir.info b/runtime/tutor/vimdir.info
deleted file mode 100755
index ddb2a14..0000000
--- a/runtime/tutor/vimdir.info
+++ /dev/null
Binary files differ
diff --git a/runtime/tutor/vimtutor.bat b/runtime/tutor/vimtutor.bat
deleted file mode 100644
index b147a8c..0000000
--- a/runtime/tutor/vimtutor.bat
+++ /dev/null
@@ -1,67 +0,0 @@
-:: Start Vim on a copy of the tutor file.
-@echo off
-
-:: Usage: vimtutor [-console] [xx]
-::
-:: -console means gvim will not be used
-:: xx is a language code like "es" or "nl".
-:: When an xx argument is given, it tries loading that tutor.
-:: When this fails or no xx argument was given, it tries using 'v:lang'
-:: When that also fails, it uses the English version.
-
-:: Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
-FOR %%d in (. %TMP% %TEMP%) DO IF EXIST %%d\nul SET TUTORCOPY=%%d\$tutor$
-
-SET xx=%1
-
-IF NOT .%1==.-console GOTO use_gui
-SHIFT
-SET xx=%1
-GOTO use_vim
-:use_gui
-
-:: Try making a copy of tutor with gvim.  If gvim cannot be found, try using
-:: vim instead.  If vim cannot be found, alert user to check environment and
-:: installation.
-
-:: The script tutor.vim tells Vim which file to copy.
-:: For Windows NT "start" works a bit differently.
-IF .%OS%==.Windows_NT GOTO ntaction
-
-start /w gvim -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim"
-IF ERRORLEVEL 1 GOTO use_vim
-
-:: Start gvim without any .vimrc, set 'nocompatible'
-start /w gvim -u NONE -c "set nocp" %TUTORCOPY%
-
-GOTO end
-
-:ntaction
-start "dummy" /b /w gvim -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim"
-IF ERRORLEVEL 1 GOTO use_vim
-
-:: Start gvim without any .vimrc, set 'nocompatible'
-start "dummy" /b /w gvim -u NONE -c "set nocp" %TUTORCOPY%
-
-GOTO end
-
-:use_vim
-:: The script tutor.vim tells Vim which file to copy
-vim -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim"
-IF ERRORLEVEL 1 GOTO no_executable
-
-:: Start vim without any .vimrc, set 'nocompatible'
-vim -u NONE -c "set nocp" %TUTORCOPY%
-
-GOTO end
-
-:no_executable
-ECHO.
-ECHO.
-ECHO No vim or gvim found in current directory or PATH.
-ECHO Check your installation or re-run install.exe
-
-:end
-:: remove the copy of the tutor
-IF EXIST %TUTORCOPY% DEL %TUTORCOPY%
-SET xx=
diff --git a/runtime/tutor/vimtutor.com b/runtime/tutor/vimtutor.com
deleted file mode 100755
index 0e6854b..0000000
--- a/runtime/tutor/vimtutor.com
+++ /dev/null
@@ -1,104 +0,0 @@
-$ !
-$ !=====================================================================
-$ !
-$ !	VimTutor.com	version 29-Aug-2002
-$ !
-$ !	Author: Tom Wyant <Thomas.R.Wyant-III@usa.dupont.com>
-$ !
-$ !	This DCL command procedure executes the vimtutor command
-$ !	(suprise, suprise!) which gives you a brief tutorial on the VIM
-$ !	editor. Languages other than the default are supported in the
-$ !	usual way, as are at least some of the command qualifiers,
-$ !	though you'll need to play some fairly serious games with DCL
-$ !	to specify ones that need quoting.
-$ !
-$ !	Copyright (c) 2002 E. I. DuPont de Nemours and Company, Inc
-$ !
-$ !	This program is free software; you can redistribute it and/or
-$ !	modify it under the terms of the VIM license as available from
-$ !	the vim 6.1 ":help license" command or (at your option) the
-$ !	license from any later version of vim.
-$ !
-$ !	This program is distributed in the hope that it will be useful,
-$ !	but WITHOUT ANY WARRANTY; without even the implied warranty of
-$ !	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-$ !
-$ !=====================================================================
-$ !
-$ !
-$ !	Check for the existence of VIM, and die if it isn't there.
-$ !
-$	if f$search ("vim:vim.exe") .eqs. ""
-$	then
-$	    write sys$error "Error - Can't run tutoral. VIM not found."
-$	    exit
-$	endif
-$ !
-$ !
-$ !	Pick up the argument, if any.
-$ !
-$	inx = 0
-$ arg_loop:
-$	inx = inx + 1
-$	if f$type (p'inx') .nes. ""
-$	then
-$	    if p'inx' .nes. "" .and. f$locate ("-", p'inx') .ne. 0
-$	    then
-$		xx = p'inx'
-$		assign/nolog "''xx'" xx
-$		p'inx' = ""
-$	    endif
-$	    goto arg_loop
-$	endif
-$ !
-$ !
-$ !	Make sure we clean up our toys when we're through playing.
-$ !
-$	on error then goto exit
-$ !
-$ !
-$ !	Create the VIM foreign command if needed
-$ !
-$	if f$type (vim) .eqs. "" then vim := $vim:vim
-$ !
-$ !
-$ !	Build the name for our temp file.
-$ !
-$	tutfil = "sys$login:vimtutor_" + -
-		f$edit (f$getjpi (0, "pid"), "trim") + "."
-$	assign/nolog 'tutfil' TUTORCOPY
-$ !
-$ !
-$ !	Copy the selected file to the temp file
-$ !
-$	assign/nolog/user nla0: sys$error
-$	assign/nolog/user nla0: sys$output
-$	vim -u "NONE" -c "so $VIMRUNTIME/tutor/tutor.vim"
-$ !
-$ !
-$ !	Run the tutorial
-$ !
-$	assign/nolog/user sys$command sys$input
-$	vim -u "NONE" -c "set nocp" 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' 'tutfil'
-$ !
-$ !
-$ !	Ditch the copy.
-$ !
-$ exit:
-$	if f$type (tutfil) .nes. "" .and. f$search (tutfil) .nes. "" then -
-$	    delete 'tutfil';*
-$	if f$type (xx) .nes. "" then deassign xx
-$	deassign TUTORCOPY
-$	exit
-$ !
-$ !=====================================================================
-$ !
-$ !		Modification history
-$ !
-$ !	29-Aug-2002	T. R. Wyant
-$ !		Changed license to vim.
-$ !		Fix error "input is not from a terminal"
-$ !		Juggle documentation (copyright and contact to front,
-$ !			modification history to end).
-$ !	25-Jul-2002	T. R. Wyant
-$ !		Initial version
diff --git a/runtime/vimrc_example.vim b/runtime/vimrc_example.vim
index eaf3fd6..a2a891c 100644
--- a/runtime/vimrc_example.vim
+++ b/runtime/vimrc_example.vim
@@ -1,7 +1,7 @@
 " An example for a vimrc file.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2006 Nov 16
+" Last change:	2008 Jun 16
 "
 " To use it, copy it to
 "     for Unix and OS/2:  ~/.vimrc
@@ -37,6 +37,10 @@
 " Don't use Ex mode, use Q for formatting
 map Q gq
 
+" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
+" so that you can undo CTRL-U after inserting a line break.
+inoremap <C-U> <C-G>u<C-U>
+
 " In many terminal emulators the mouse works just fine, thus enable it.
 set mouse=a
 
@@ -66,8 +70,10 @@
   " When editing a file, always jump to the last known cursor position.
   " Don't do it when the position is invalid or when inside an event handler
   " (happens when dropping a file on gvim).
+  " Also don't do it when the mark is in the first line, that is the default
+  " position when opening a file.
   autocmd BufReadPost *
-    \ if line("'\"") > 0 && line("'\"") <= line("$") |
+    \ if line("'\"") > 1 && line("'\"") <= line("$") |
     \   exe "normal! g`\"" |
     \ endif
 
@@ -81,5 +87,8 @@
 
 " Convenient command to see the difference between the current buffer and the
 " file it was loaded from, thus the changes you made.
-command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
-	 	\ | wincmd p | diffthis
+" Only define it when not defined already.
+if !exists(":DiffOrig")
+  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+		  \ | wincmd p | diffthis
+endif
