updated for version 7.0139
diff --git a/Filelist b/Filelist
index 738dd9e..17a27a6 100644
--- a/Filelist
+++ b/Filelist
@@ -377,6 +377,7 @@
 		src/os_mac.pbproj/project.pbxproj \
 		src/proto/gui_mac.pro \
 		src/proto/os_mac.pro \
+		src/proto/os_mac_conv.pro \
 
 # source files for VMS (in the extra archive)
 SRC_VMS =	\
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index cb8ff41..e68b75a 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 7.0aa.  Last change: 2005 Aug 24
+*filetype.txt*  For Vim version 7.0aa.  Last change: 2005 Aug 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -44,15 +44,21 @@
 	name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
 	contents of the file.
 
-To add your own file types, see |new-filetype| below.
+To add your own file types, see |new-filetype| below.  To search for help on a
+filetype prepend "ft-" and optionally append "-syntax", "-indent" or
+"-plugin".  For example: >
+	:help ft-vim-indent
+	:help ft-vim-syntax
+	:help ft-man-plugin
 
 If the file type is not detected automatically, or it finds the wrong type,
 you can either set the 'filetype' option manually, or add a modeline to your
 file.  Example, for in an IDL file use the command: >
 	:set filetype=idl
-or add this |modeline| to the file: >
-	/* vim: set filetype=idl : */
-<
+
+or add this |modeline| to the file:
+	/* vim: set filetype=idl : */ ~
+
 						*:filetype-plugin-on*
 You can enable loading the plugin files for specific file types with: >
 	:filetype plugin on
@@ -132,16 +138,16 @@
 can be used to overrule the filetype used for certain extensions:
 
 	file name	variable ~
-	*.asa		g:filetype_asa	|aspvbs-syntax| |aspperl-syntax|
-	*.asp		g:filetype_asp	|aspvbs-syntax| |aspperl-syntax|
-	*.asm		g:asmsyntax	|asm-syntax|
+	*.asa		g:filetype_asa	|ft-aspvbs-syntax| |ft-aspperl-syntax|
+	*.asp		g:filetype_asp	|ft-aspvbs-syntax| |ft-aspperl-syntax|
+	*.asm		g:asmsyntax	|ft-asm-syntax|
 	*.prg		g:filetype_prg
 	*.pl		g:filetype_pl
 	*.inc		g:filetype_inc
-	*.w		g:filetype_w	|cweb-syntax|
-	*.i		g:filetype_i	|progress-syntax|
-	*.p		g:filetype_p	|pascal-syntax|
-	*.sh		g:bash_is_sh	|sh-syntax|
+	*.w		g:filetype_w	|ft-cweb-syntax|
+	*.i		g:filetype_i	|ft-progress-syntax|
+	*.p		g:filetype_p	|ft-pascal-syntax|
+	*.sh		g:bash_is_sh	|ft-sh-syntax|
 
 							*filetype-ignore*
 To avoid that certain files are being inspected, the g:ft_ignore_pat variable
@@ -380,7 +386,7 @@
 3.  Docs for the default filetype plugins.		*ftplugin-docs*
 
 
-CHANGELOG						*changelog-plugin*
+CHANGELOG						*ft-changelog-plugin*
 
 Allows for easy entrance of Changelog entries in Changelog files.  There are
 some commands, mappings, and variables worth exploring:
@@ -466,7 +472,7 @@
 the Changelog.
 
 
-FORTRAN							*fortran-plugin*
+FORTRAN							*ft-fortran-plugin*
 
 Options:
 'expandtab'	is switched on to avoid tabs as required by the Fortran
@@ -476,10 +482,10 @@
 'formatoptions' is set to break code and comment lines and to preserve long
 		lines.  You can format comments with |gq|.
 For further discussion of fortran_have_tabs and the method used for the
-detection of source format see |fortran-syntax|.
+detection of source format see |ft-fortran-syntax|.
 
 
-MAIL							*mail-plugin*
+MAIL							*ft-mail-plugin*
 
 Options:
 'modeline'	is switched off to avoid the danger of trojan horses, and to
@@ -496,7 +502,7 @@
 	to the end of the file in Normal mode.  This means "> " is inserted in
 	each line.
 
-MAN							*man-plugin* *:Man*
+MAN							*ft-man-plugin* *:Man*
 
 Displays a manual page in a nice way.  Also see the user manual
 |find-manpage|.
@@ -523,7 +529,7 @@
 CTRL-T		Jump back to the previous manual page.
 
 
-RPM SPEC						*spec-plugin*
+RPM SPEC						*ft-spec-plugin*
 
 Since the text for this plugin is rather long it has been put in a separate
 file: |pi_spec.txt|.
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 0540c43..f26c540 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 7.0aa.  Last change: 2005 Mar 29
+*indent.txt*    For Vim version 7.0aa.  Last change: 2005 Aug 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -449,7 +449,7 @@
 REMARKS ABOUT SPECIFIC INDENT FILES ~
 
 
-FORTRAN							*fortran-indent*
+FORTRAN							*ft-fortran-indent*
 
 Block if, select case, and where constructs are indented.  Comments, labelled
 statements and continuation lines are indented if the Fortran is in free
@@ -457,7 +457,7 @@
 form because of the left margin requirements.  Hence manual indent corrections
 will be necessary for labelled statements and continuation lines when fixed
 source form is being used.  For further discussion of the method used for the
-detection of source format see |fortran-syntax|.
+detection of source format see |ft-fortran-syntax|.
 
 Do loops ~
 All do loops are left unindented by default.  Do loops can be unstructured in
@@ -485,7 +485,7 @@
 other extensions such as .for.
 
 
-PYTHON							*python-indent*
+PYTHON							*ft-python-indent*
 
 The amount of indent can be set for the following situations.  The examples
 given are de the defaults.  Note that the variables are set to an expression,
@@ -499,7 +499,7 @@
 	let g:pyindent_continue = '&sw * 2'
 
 
-VERILOG							*verilog-indent*
+VERILOG							*ft-verilog-indent*
 
 General block statements such as if, for, case, always, initial, function,
 specify and begin, etc., are indented.  The module block statements (first
@@ -534,7 +534,7 @@
 Make sure to do ":set cmdheight=2" first to allow the display of the message.
 
 
-VIM							*vim-indent*
+VIM							*ft-vim-indent*
 
 For indenting Vim scripts there is one variable that specifies the amount of
 indent for a continuation line, a line that starts with a backslash: >
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 48ee880..41b8820 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -904,7 +904,7 @@
 the V (|linewise-visual|).
 
 
-HIDING FILES OR DIRECTORIES				*g:netrw-a*
+HIDING FILES OR DIRECTORIES				*g:netrw-a* *netrw-a*
 
 Netrw's browsing facility allows one to use the hiding list in one of
 three ways: ignore it, hide files which match, and show only those files
@@ -1077,7 +1077,7 @@
 history (query). (see |netrw-b|, |netrw-B|, |netrw-u|, and |netrw-U|)
 
 
-IMPROVING DIRECTORY BROWSING				*netrw-listhack*
+IMPROVING DIRECTORY BROWSING				*netrw-list-hack*
 
 Especially with the remote directory browser, constantly entering the password
 is tedious.
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index b9e5114..a2d5135 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 29
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -64,13 +64,19 @@
 
 							*zg*
 zg			Add word under the cursor as a good word to the first
-			name in 'spellfile'.  In Visual mode the selected
-			characters are added as a word (including white
-			space!).  If the word is explicitly marked as bad word
-			in another spell file the result is unpredictable.
-			A count may precede the command to indicate the entry
-			in 'spellfile' to be used.  A count of two uses the
-			second entry.
+			name in 'spellfile'.  A count may precede the command
+			to indicate the entry in 'spellfile' to be used.  A
+			count of two uses the second entry.
+
+			In Visual mode the selected characters are added as a
+			word (including white space!).
+			When the cursor is on text that is marked as badly
+			spelled then the marked text is used.
+			Otherwise the word under the cursor, separated by
+			non-word characters, is used.
+
+			If the word is explicitly marked as bad word in
+			another spell file the result is unpredictable.
 
 							*zG*
 zG			Like "zg" but add the word to the internal word list
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index a6a03f5..f3210ea 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 14
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -454,7 +454,7 @@
    for f in *.[ch]; do gvim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" $f; done
 <
 
-ABEL							*abel.vim* *abel-syntax*
+ABEL						*abel.vim* *ft-abel-syntax*
 
 ABEL highlighting provides some user-defined options.  To enable them, assign
 any value to the respective variable.  Example: >
@@ -467,7 +467,7 @@
 abel_cpp_comments_illegal	do not interpret '//' as inline comment leader
 
 
-ADA							*ada.vim* *ada-syntax*
+ADA						*ada.vim* *ft-ada-syntax*
 
 This mode is designed for the 1995 edition of Ada ("Ada95"), which
 includes support for objected-programming, protected types, and so on.
@@ -515,7 +515,7 @@
 the performance unacceptable, turn on ada_withuse_ordinary.
 
 
-ANT						*ant.vim* *ant-syntax*
+ANT						*ant.vim* *ft-ant-syntax*
 
 The ant syntax file provides syntax highlighting for javascript and python
 by default.  Syntax highlighting for other script languages can be installed
@@ -533,7 +533,7 @@
 See |mysyntaxfile-add| for installing script languages permanently.
 
 
-APACHE						*apache.vim* *apache-syntax*
+APACHE						*apache.vim* *ft-apache-syntax*
 
 The apache syntax file provides syntax highlighting depending on Apache HTTP
 server version, by default for 1.3.x.  Set "apache_version" to Apache version
@@ -543,8 +543,8 @@
 <
 
 		*asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k*
-ASSEMBLY	*asm-syntax* *asmh8300-syntax* *nasm-syntax* *masm-syntax*
-		*asm68k-syntax* *fasm.vim*
+ASSEMBLY	*ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax*
+		*ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim*
 
 Files matching "*.i" could be Progress or Assembly.  If the automatic detection
 doesn't work for you, or you don't edit Progress at all, use this in your
@@ -598,7 +598,7 @@
 nasm_no_warn		potentially risky syntax not as ToDo
 
 
-ASPPERL and ASPVBS			*aspperl-syntax* *aspvbs-syntax*
+ASPPERL and ASPVBS			*ft-aspperl-syntax* *ft-aspvbs-syntax*
 
 *.asp and *.asa files could be either Perl or Visual Basic script.  Since it's
 hard to detect this you can set two global variables to tell Vim what you are
@@ -610,7 +610,7 @@
 	:let g:filetype_asp = "aspvbs"
 
 
-BASIC				*basic.vim* *vb.vim* *basic-syntax* *vb-syntax*
+BASIC			*basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax*
 
 Both Visual Basic and "normal" basic use the extension ".bas".	To detect
 which one should be used, Vim checks for the string "VB_Name" in the first
@@ -619,7 +619,7 @@
 Basic.
 
 
-C							*c.vim* *c-syntax*
+C							*c.vim* *ft-c-syntax*
 
 A few things in C highlighting are optional.  To enable them assign any value
 to the respective variable.  Example: >
@@ -686,7 +686,7 @@
     syn sync fromstart
     set foldmethod=syntax
 
-CH						*ch.vim* *ch-syntax*
+CH						*ch.vim* *ft-ch-syntax*
 
 C/C++ interpreter.  Ch has similar syntax highlighting to C and builds upon
 the C syntax file.  See |c.vim| for all the settings that are available for C.
@@ -696,7 +696,7 @@
 	:let ch_syntax_for_h = 1
 
 
-CHILL						*chill.vim* *chill-syntax*
+CHILL						*chill.vim* *ft-chill-syntax*
 
 Chill syntax highlighting is similar to C.  See |c.vim| for all the settings
 that are available.  Additionally there is:
@@ -706,7 +706,7 @@
 chill_minlines		like c_minlines
 
 
-CHANGELOG				*changelog.vim* *changelog-syntax*
+CHANGELOG				*changelog.vim* *ft-changelog-syntax*
 
 ChangeLog supports highlighting spaces at the start of a line.
 If you do not like this, add following line to your .vimrc: >
@@ -722,7 +722,7 @@
 This works immediately.
 
 
-COBOL						*cobol.vim* *cobol-syntax*
+COBOL						*cobol.vim* *ft-cobol-syntax*
 
 COBOL highlighting has different needs for legacy code than it does for fresh
 development.  This is due to differences in what is being done (maintenance
@@ -733,7 +733,7 @@
 	:unlet cobol_legacy_code
 
 
-COLD FUSION				*coldfusion.vim* *coldfusion-syntax*
+COLD FUSION			*coldfusion.vim* *ft-coldfusion-syntax*
 
 The ColdFusion has its own version of HTML comments.  To turn on ColdFusion
 comment highlighting, add the following line to your startup file: >
@@ -743,7 +743,7 @@
 The ColdFusion syntax file is based on the HTML syntax file.
 
 
-CSH						*csh.vim* *csh-syntax*
+CSH						*csh.vim* *ft-csh-syntax*
 
 This covers the shell named "csh".  Note that on some systems tcsh is actually
 used.
@@ -766,7 +766,7 @@
 variable.
 
 
-CYNLIB						*cynlib.vim* *cynlib-syntax*
+CYNLIB						*cynlib.vim* *ft-cynlib-syntax*
 
 Cynlib files are C++ files that use the Cynlib class library to enable
 hardware modelling and simulation using C++.  Typically Cynlib files have a .cc
@@ -786,7 +786,7 @@
 	:unlet cynlib_cyntax_for_cpp
 <
 
-CWEB						*cweb.vim* *cweb-syntax*
+CWEB						*cweb.vim* *ft-cweb-syntax*
 
 Files matching "*.w" could be Progress or cweb.  If the automatic detection
 doesn't work for you, or you don't edit Progress at all, use this in your
@@ -794,7 +794,7 @@
    :let filetype_w = "cweb"
 
 
-DESKTOP					   *desktop.vim* *desktop-syntax*
+DESKTOP					   *desktop.vim* *ft-desktop-syntax*
 
 Primary goal of this syntax file is to highlight .desktop and .directory files
 according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/
@@ -804,7 +804,7 @@
 	:let enforce_freedesktop_standard = 1
 
 
-DIRCOLORS			       *dircolors.vim* *dircolors-syntax*
+DIRCOLORS			       *dircolors.vim* *ft-dircolors-syntax*
 
 The dircolors utility highlighting definition has one option.  It exists to
 provide compatibility with the Slackware GNU/Linux distributions version of
@@ -815,9 +815,9 @@
 	let dircolors_is_slackware = 1
 
 
-DOCBOOK					*docbk.vim* *docbk-syntax* *docbook*
-DOCBOOK	XML				*docbkxml.vim* *docbkxml-syntax*
-DOCBOOK	SGML				*docbksgml.vim* *docbksgml-syntax*
+DOCBOOK					*docbk.vim* *ft-docbk-syntax* *docbook*
+DOCBOOK	XML				*docbkxml.vim* *ft-docbkxml-syntax*
+DOCBOOK	SGML				*docbksgml.vim* *ft-docbksgml-syntax*
 
 There are two types of DocBook files: SGML and XML.  To specify what type you
 are using the "b:docbk_type" variable should be set.  Vim does this for you
@@ -834,7 +834,7 @@
 	:set filetype=docbkxml
 
 
-DOSBATCH				*dosbatch.vim* *dosbatch-syntax*
+DOSBATCH				*dosbatch.vim* *ft-dosbatch-syntax*
 
 There is one option with highlighting DOS batch files.	This covers new
 extensions to the Command Interpreter introduced with Windows 2000 and
@@ -857,7 +857,7 @@
 
 
 
-DTD						*dtd.vim* *dtd-syntax*
+DTD						*dtd.vim* *ft-dtd-syntax*
 
 The DTD syntax highlighting is case sensitive by default.  To disable
 case-sensitive highlighting, add the following line to your startup file: >
@@ -881,7 +881,7 @@
 The DTD syntax file is also included by xml.vim to highlight included dtd's.
 
 
-EIFFEL						*eiffel.vim* *eiffel-syntax*
+EIFFEL					*eiffel.vim* *ft-eiffel-syntax*
 
 While Eiffel is not case-sensitive, its style guidelines are, and the
 syntax highlighting file encourages their use.  This also allows to
@@ -924,7 +924,7 @@
 to your startup file.
 
 
-ERLANG						*erlang.vim* *erlang-syntax*
+ERLANG						*erlang.vim* *ft-erlang-syntax*
 
 The erlang highlighting supports Erlang (ERicsson LANGuage).
 Erlang is case sensitive and default extension is ".erl".
@@ -939,7 +939,7 @@
 	:let erlang_characters = 1
 
 
-FORM						*form.vim* *form-syntax*
+FORM						*form.vim* *ft-form-syntax*
 
 The coloring scheme for syntax elements in the FORM file uses the default
 modes Conditional, Number, Statement, Comment, PreProc, Type, and String,
@@ -973,7 +973,7 @@
 conditionals are LightBlue for better distinction.
 
 
-FORTRAN					*fortran.vim* *fortran-syntax*
+FORTRAN					*fortran.vim* *ft-fortran-syntax*
 
 Default highlighting and dialect ~
 Highlighting appropriate for f95 (Fortran 95) is used by default.  This choice
@@ -1114,11 +1114,11 @@
 strings are not recognized.  Some keywords may be highlighted incorrectly
 because Fortran90 has no reserved words.
 
-For further information related to fortran, see |fortran-indent| and
-|fortran-plugin|.
+For further information related to fortran, see |ft-fortran-indent| and
+|ft-fortran-plugin|.
 
 
-FVWM CONFIGURATION FILES			*fvwm.vim* *fvwm-syntax*
+FVWM CONFIGURATION FILES			*fvwm.vim* *ft-fvwm-syntax*
 
 In order for Vim to recognize Fvwm configuration files that do not match
 the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns
@@ -1142,7 +1142,7 @@
 to your .vimrc file.
 
 
-GSP							*gsp.vim*
+GSP						*gsp.vim* *ft-gsp-syntax*
 
 The default coloring style for GSP pages is defined by |html.vim|, and
 the coloring for java code (within java tags or inline between backticks)
@@ -1165,7 +1165,7 @@
 group to make them easier to see.
 
 
-GROFF						*groff.vim* *groff-syntax*
+GROFF						*groff.vim* *ft-groff-syntax*
 
 The groff syntax file is a wrapper for |nroff.vim|, see the notes
 under that heading for examples of use and configuration.  The purpose
@@ -1174,7 +1174,7 @@
 (see |filetype.txt|).
 
 
-HASKELL			     *haskell.vim* *lhaskell.vim* *haskell-syntax*
+HASKELL			     *haskell.vim* *lhaskell.vim* *ft-haskell-syntax*
 
 The Haskell syntax files support plain Haskell code as well as literate
 Haskell code, the latter in both Bird style and TeX style.  The Haskell
@@ -1218,7 +1218,7 @@
 loading a file.
 
 
-HTML						*html.vim* *html-syntax*
+HTML						*html.vim* *ft-html-syntax*
 
 The coloring scheme for tags in the HTML file works as follows.
 
@@ -1291,7 +1291,7 @@
 the preprocessor language to the cluster htmlPreproc.
 
 
-HTML/OS (by Aestiva)				*htmlos.vim* *htmlos-syntax*
+HTML/OS (by Aestiva)				*htmlos.vim* *ft-htmlos-syntax*
 
 The coloring scheme for HTML/OS works as follows:
 
@@ -1312,7 +1312,7 @@
 block of HTML/OS code can either be << or [[ and >> or ]], respectively.
 
 
-IA64				*ia64.vim* *intel-itanium* *ia64-syntax*
+IA64				*ia64.vim* *intel-itanium* *ft-ia64-syntax*
 
 Highlighting for the Intel Itanium 64 assembly language.  See |asm.vim| for
 how to recognize this filetype.
@@ -1321,7 +1321,7 @@
 	:let g:filetype_inc = "ia64"
 
 
-INFORM						*inform.vim* *inform-syntax*
+INFORM						*inform.vim* *ft-inform-syntax*
 
 Inform highlighting includes symbols provided by the Inform Library, as
 most programs make extensive use of it.  If do not wish Library symbols
@@ -1350,7 +1350,7 @@
 	:let inform_highlight_old=1
 
 
-JAVA						*java.vim* *java-syntax*
+JAVA						*java.vim* *ft-java-syntax*
 
 The java.vim syntax highlighting file offers several options:
 
@@ -1443,7 +1443,7 @@
 number is that redrawing can become slow.
 
 
-LACE						*lace.vim* *lace-syntax*
+LACE						*lace.vim* *ft-lace-syntax*
 
 Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the
 style guide lines are not.  If you prefer case insensitive highlighting, just
@@ -1451,7 +1451,7 @@
 	:let lace_case_insensitive=1
 
 
-LEX						*lex.vim* *lex-syntax*
+LEX						*lex.vim* *ft-lex-syntax*
 
 Lex uses brute-force synchronizing as the "^%%$" section delimiter
 gives no clue as to what section follows.  Consequently, the value for >
@@ -1460,7 +1460,7 @@
 difficulties (such as may happen with large lex files).
 
 
-LITE						*lite.vim* *lite-syntax*
+LITE						*lite.vim* *ft-lite-syntax*
 
 There are two options for the lite syntax highlighting.
 
@@ -1474,7 +1474,7 @@
 	:let lite_minlines = 200
 
 
-LPC						*lpc.vim* *lpc-syntax*
+LPC						*lpc.vim* *ft-lpc-syntax*
 
 LPC stands for a simple, memory-efficient language: Lars Pensj| C.  The
 file name of LPC is usually *.c.  Recognizing these files as LPC would bother
@@ -1515,7 +1515,7 @@
 instead, and the name of your source file should be *.pike
 
 
-LUA						*lua.vim* *lua-syntax*
+LUA						*lua.vim* *ft-lua-syntax*
 
 This syntax file may be used for Lua 4.0 and Lua 5.0 (default).  If you are
 programming in Lua 4.0, use this: >
@@ -1525,7 +1525,7 @@
 If lua_version variable doesn't exist, it is set to 5.
 
 
-MAIL								*mail.vim*
+MAIL						*mail.vim* *ft-mail.vim*
 
 Vim highlights all the standard elements of an email (headers, signatures,
 quoted text and URLs / email addresses).  In keeping with standard conventions,
@@ -1543,7 +1543,7 @@
     :let mail_minlines = 30
 
 
-MAKE						*make.vim* *make-syntax*
+MAKE						*make.vim* *ft-make-syntax*
 
 In makefiles, commands are usually highlighted to make it easy for you to spot
 errors.  However, this may be too much coloring for you.  You can turn this
@@ -1552,7 +1552,7 @@
 	:let make_no_commands = 1
 
 
-MAPLE						*maple.vim* *maple-syntax*
+MAPLE						*maple.vim* *ft-maple-syntax*
 
 Maple V, by Waterloo Maple Inc, supports symbolic algebra.  The language
 supports many packages of functions which are selectively loaded by the user.
@@ -1577,7 +1577,7 @@
   mv_finance	 mv_logic	mv_powseries
 
 
-MATHEMATICA			*mma.vim* *mma-syntax* *mathematica-syntax*
+MATHEMATICA		*mma.vim* *ft-mma-syntax* *ft-mathematica-syntax*
 
 Empty *.m files will automatically be presumed to be Matlab files unless you
 have the following in your .vimrc: >
@@ -1585,7 +1585,7 @@
 	let filetype_m = "mma"
 
 
-MOO						*moo.vim* *moo-syntax*
+MOO						*moo.vim* *ft-moo-syntax*
 
 If you use C-style comments inside expressions and find it mangles your
 highlighting, you may want to use extended (slow!) matches for C-style
@@ -1621,7 +1621,7 @@
 	:syn keyword mooKnownBuiltinFunction sprintf contained
 
 
-MSQL						*msql.vim* *msql-syntax*
+MSQL						*msql.vim* *ft-msql-syntax*
 
 There are two options for the msql syntax highlighting.
 
@@ -1635,7 +1635,7 @@
 	:let msql_minlines = 200
 
 
-NCF						*ncf.vim* *ncf-syntax*
+NCF						*ncf.vim* *ft-ncf-syntax*
 
 There is one option for NCF syntax highlighting.
 
@@ -1647,7 +1647,7 @@
 If you don't want to highlight these errors, leave it unset.
 
 
-NROFF						*nroff.vim* *nroff-syntax*
+NROFF						*nroff.vim* *ft-nroff-syntax*
 
 The nroff syntax file works with AT&T n/troff out of the box.  You need to
 activate the GNU groff extra features included in the syntax file before you
@@ -1718,7 +1718,7 @@
 groff syntax highlighting either on a file basis or globally by default.
 
 
-OCAML						*ocaml.vim* *ocaml-syntax*
+OCAML						*ocaml.vim* *ft-ocaml-syntax*
 
 The OCaml syntax file handles files having the following prefixes: .ml,
 .mli, .mll and .mly.  By setting the following variable >
@@ -1734,7 +1734,7 @@
 contain very long structures that Vim does not synchronize anymore.
 
 
-PAPP						*papp.vim* *papp-syntax*
+PAPP						*papp.vim* *ft-papp-syntax*
 
 The PApp syntax file handles .papp files and, to a lesser extend, .pxml
 and .pxsl files which are all a mixture of perl/xml/html/other using xml
@@ -1752,7 +1752,7 @@
 http://papp.plan9.de.
 
 
-PASCAL						*pascal.vim* *pascal-syntax*
+PASCAL						*pascal.vim* *ft-pascal-syntax*
 
 Files matching "*.p" could be Progress or Pascal.  If the automatic detection
 doesn't work for you, or you don't edit Progress at all, use this in your
@@ -1806,7 +1806,7 @@
 
 
 
-PERL						*perl.vim* *perl-syntax*
+PERL						*perl.vim* *ft-perl-syntax*
 
 There are a number of possible options to the perl syntax highlighting.
 
@@ -1866,7 +1866,7 @@
 	:let perl_fold_blocks = 1
 
 
-PHP3 and PHP4		*php.vim* *php3.vim* *php-syntax* *php3-syntax*
+PHP3 and PHP4		*php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax*
 
 [note: previously this was called "php3", but since it now also supports php4
 it has been renamed to "php"]
@@ -1919,7 +1919,7 @@
 x = 0 to sync from start.
 
 
-PPWIZARD					*ppwiz.vim* *ppwiz-syntax*
+PPWIZARD					*ppwiz.vim* *ft-ppwiz-syntax*
 
 PPWizard is a preprocessor for HTML and OS/2 INF files
 
@@ -1941,7 +1941,7 @@
   HTML code; if 0, treat HTML code like ordinary text.
 
 
-PHTML						*phtml.vim* *phtml-syntax*
+PHTML						*phtml.vim* *ft-phtml-syntax*
 
 There are two options for the phtml syntax highlighting.
 
@@ -1955,7 +1955,7 @@
 	:let phtml_minlines = 200
 
 
-POSTSCRIPT					*postscr.vim* *postscr-syntax*
+POSTSCRIPT				*postscr.vim* *ft-postscr-syntax*
 
 There are several options when it comes to highlighting PostScript.
 
@@ -2010,8 +2010,8 @@
 	:let postscr_andornot_binary=1
 <
 
-			*ptcap.vim*
-PRINTCAP + TERMCAP	*ptcap-syntax* *termcap-syntax* *printcap-syntax*
+			*ptcap.vim* *ft-printcap-syntax*
+PRINTCAP + TERMCAP	*ft-ptcap-syntax* *ft-termcap-syntax*
 
 This syntax file applies to the printcap and termcap databases.
 
@@ -2036,7 +2036,7 @@
 (The default is 20 lines.)
 
 
-PROGRESS				*progress.vim* *progress-syntax*
+PROGRESS				*progress.vim* *ft-progress-syntax*
 
 Files matching "*.w" could be Progress or cweb.  If the automatic detection
 doesn't work for you, or you don't edit cweb at all, use this in your
@@ -2048,7 +2048,7 @@
    :let filetype_p = "progress"
 
 
-PYTHON						*python.vim* *python-syntax*
+PYTHON						*python.vim* *ft-python-syntax*
 
 There are four options to control Python syntax highlighting.
 
@@ -2069,7 +2069,7 @@
 	:let python_highlight_all = 1
 
 
-QUAKE						*quake.vim* *quake-syntax*
+QUAKE						*quake.vim* *ft-quake-syntax*
 
 The Quake syntax definition should work for most any FPS (First Person
 Shooter) based on one of the Quake engines.  However, the command names vary
@@ -2091,7 +2091,7 @@
 commands than are actually available to you by the game.
 
 
-READLINE				*readline.vim* *readline-syntax*
+READLINE				*readline.vim* *ft-readline-syntax*
 
 The readline library is primarily used by the BASH shell, which adds quite a
 few commands and options to the ones already available.  To highlight these
@@ -2103,7 +2103,7 @@
 later, and part earlier) adds.
 
 
-REXX						*rexx.vim* *rexx-syntax*
+REXX						*rexx.vim* *ft-rexx-syntax*
 
 If you notice highlighting errors while scrolling backwards, which are fixed
 when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable
@@ -2114,7 +2114,7 @@
 number is that redrawing can become slow.
 
 
-RUBY						*ruby.vim* *ruby-syntax*
+RUBY						*ruby.vim* *ft-ruby-syntax*
 
 There are a few options to the Ruby syntax highlighting.
 
@@ -2139,7 +2139,7 @@
 "$global_var", "@instance_var", "| iterator |", and ":symbol".
 
 
-SCHEME						*scheme.vim* *scheme-syntax*
+SCHEME						*scheme.vim* *ft-scheme-syntax*
 
 By default only R5RS keywords are highlighted and properly indented.
 
@@ -2150,7 +2150,7 @@
 b:is_chicken or g:is_chicken, if you need them.
 
 
-SDL						*sdl.vim* *sdl-syntax*
+SDL						*sdl.vim* *ft-sdl-syntax*
 
 The SDL highlighting probably misses a few keywords, but SDL has so many
 of them it's almost impossibly to cope.
@@ -2170,7 +2170,7 @@
 satisfied with it for my own projects.
 
 
-SED						*sed.vim* *sed-syntax*
+SED						*sed.vim* *ft-sed-syntax*
 
 To make tabs stand out from regular blanks (accomplished by using Todo
 highlighting on the tabs), define "highlight_sedtabs" by putting >
@@ -2193,7 +2193,7 @@
   each plausible pattern delimiter).
 
 
-SGML						*sgml.vim* *sgml-syntax*
+SGML						*sgml.vim* *ft-sgml-syntax*
 
 The coloring scheme for tags in the SGML file works as follows.
 
@@ -2234,7 +2234,7 @@
 (Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
 
 
-SH			*sh.vim* *sh-syntax* *bash-syntax* *ksh-syntax*
+SH		*sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
 
 This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
 
@@ -2285,7 +2285,7 @@
 speed up displaying.  The disadvantage is that highlight errors may appear.
 
 
-SPEEDUP (AspenTech plant simulator)		*spup.vim* *spup-syntax*
+SPEEDUP (AspenTech plant simulator)		*spup.vim* *ft-spup-syntax*
 
 The Speedup syntax file has some options:
 
@@ -2317,8 +2317,8 @@
 the syntax file.
 
 
-SQL						*sql.vim* *sql-syntax*
-					*sqlinformix.vim* *sqlinformix-syntax*
+SQL						*sql.vim* *ft-sql-syntax*
+				*sqlinformix.vim* *ft-sqlinformix-syntax*
 
 While there is an ANSI standard for SQL, most database engines add their
 own custom extensions.  Vim currently supports the Oracle and Informix
@@ -2328,7 +2328,7 @@
     :let g:filetype_sql = "sqlinformix" 
 
 
-TCSH						*tcsh.vim* *tcsh-syntax*
+TCSH						*tcsh.vim* *ft-tcsh-syntax*
 
 This covers the shell named "tcsh".  It is a superset of csh.  See |csh.vim|
 for how the filetype is detected.
@@ -2350,7 +2350,7 @@
 number is that redrawing can become slow.
 
 
-TEX						*tex.vim* *tex-syntax*
+TEX						*tex.vim* *ft-tex-syntax*
 
 *tex-folding*
 Want Syntax Folding? ~
@@ -2425,7 +2425,7 @@
 always accept such use of @.
 
 
-TF						*tf.vim* *tf-syntax*
+TF						*tf.vim* *ft-tf-syntax*
 
 There is one option for the tf syntax highlighting.
 
@@ -2435,7 +2435,7 @@
 	:let tf_minlines = your choice
 
 
-VIM						*vim.vim* *vim-syntax*
+VIM						*vim.vim* *ft-vim-syntax*
 
 There is a tradeoff between more accurate syntax highlighting versus
 screen updating speed.  To improve accuracy, you may wish to increase
@@ -2459,7 +2459,7 @@
 					 loaded.
 
 
-XF86CONFIG				*xf86conf.vim* *xf86conf-syntax*
+XF86CONFIG				*xf86conf.vim* *ft-xf86conf-syntax*
 
 The syntax of XF86Config file differs in XFree86 v3.x and v4.x.  Both
 variants are supported.  Automatic detection is used, but is far from perfect.
@@ -2474,7 +2474,7 @@
 highlighted.
 
 
-XML						*xml.vim* *xml-syntax*
+XML						*xml.vim* *ft-xml-syntax*
 
 Xml namespaces are highlighted by default.  This can be inhibited by
 setting a global variable: >
@@ -2492,7 +2492,7 @@
 especially for large files.
 
 
-X Pixmaps (XPM)					*xpm.vim* *xpm-syntax*
+X Pixmaps (XPM)					*xpm.vim* *ft-xpm-syntax*
 
 xpm.vim creates its syntax items dynamically based upon the contents of the
 XPM file.  Thus if you make changes e.g. in the color specification strings,
diff --git a/runtime/doc/tags b/runtime/doc/tags
index afa6b7b..ef72d3c 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1036,6 +1036,8 @@
 +comments	various.txt	/*+comments*
 +cryptv	various.txt	/*+cryptv*
 +cscope	various.txt	/*+cscope*
++cursorshape	various.txt	/*+cursorshape*
++debug	various.txt	/*+debug*
 +dialog_con	various.txt	/*+dialog_con*
 +dialog_con_gui	various.txt	/*+dialog_con_gui*
 +dialog_gui	various.txt	/*+dialog_gui*
@@ -1702,6 +1704,7 @@
 :aun	gui.txt	/*:aun*
 :aunmenu	gui.txt	/*:aunmenu*
 :autocmd	autocmd.txt	/*:autocmd*
+:autocmd-verbose	autocmd.txt	/*:autocmd-verbose*
 :b	windows.txt	/*:b*
 :bN	windows.txt	/*:bN*
 :bNext	windows.txt	/*:bNext*
@@ -4140,10 +4143,8 @@
 ab	motion.txt	/*ab*
 abandon	editing.txt	/*abandon*
 abbreviations	map.txt	/*abbreviations*
-abel-syntax	syntax.txt	/*abel-syntax*
 abel.vim	syntax.txt	/*abel.vim*
 active-buffer	windows.txt	/*active-buffer*
-ada-syntax	syntax.txt	/*ada-syntax*
 ada.vim	syntax.txt	/*ada.vim*
 add()	eval.txt	/*add()*
 add-filetype-plugin	usr_05.txt	/*add-filetype-plugin*
@@ -4176,11 +4177,9 @@
 alt-input	debugger.txt	/*alt-input*
 alternate-file	editing.txt	/*alternate-file*
 amiga-window	starting.txt	/*amiga-window*
-ant-syntax	syntax.txt	/*ant-syntax*
 ant.vim	syntax.txt	/*ant.vim*
 antialias	gui_x11.txt	/*antialias*
 ap	motion.txt	/*ap*
-apache-syntax	syntax.txt	/*apache-syntax*
 apache.vim	syntax.txt	/*apache.vim*
 append()	eval.txt	/*append()*
 aquote	motion.txt	/*aquote*
@@ -4195,14 +4194,9 @@
 argument-list	editing.txt	/*argument-list*
 argv()	eval.txt	/*argv()*
 as	motion.txt	/*as*
-asm-syntax	syntax.txt	/*asm-syntax*
 asm.vim	syntax.txt	/*asm.vim*
 asm68k	syntax.txt	/*asm68k*
-asm68k-syntax	syntax.txt	/*asm68k-syntax*
-asmh8300-syntax	syntax.txt	/*asmh8300-syntax*
 asmh8300.vim	syntax.txt	/*asmh8300.vim*
-aspperl-syntax	syntax.txt	/*aspperl-syntax*
-aspvbs-syntax	syntax.txt	/*aspvbs-syntax*
 at	motion.txt	/*at*
 athena-intellimouse	gui.txt	/*athena-intellimouse*
 attr-list	syntax.txt	/*attr-list*
@@ -4226,7 +4220,6 @@
 autocmd-remove	autocmd.txt	/*autocmd-remove*
 autocmd-searchpat	autocmd.txt	/*autocmd-searchpat*
 autocmd-use	autocmd.txt	/*autocmd-use*
-autocmd-verbose	autocmd.txt	/*autocmd-verbose*
 autocmd.txt	autocmd.txt	/*autocmd.txt*
 autocmds-kept	version5.txt	/*autocmds-kept*
 autocommand	autocmd.txt	/*autocommand*
@@ -4255,8 +4248,6 @@
 bar	motion.txt	/*bar*
 bars	help.txt	/*bars*
 base_font_name_list	mbyte.txt	/*base_font_name_list*
-bash-syntax	syntax.txt	/*bash-syntax*
-basic-syntax	syntax.txt	/*basic-syntax*
 basic.vim	syntax.txt	/*basic.vim*
 beep	options.txt	/*beep*
 beos-colors	os_beos.txt	/*beos-colors*
@@ -4319,7 +4310,6 @@
 byteidx()	eval.txt	/*byteidx()*
 bzip2	pi_gzip.txt	/*bzip2*
 c	change.txt	/*c*
-c-syntax	syntax.txt	/*c-syntax*
 c.vim	syntax.txt	/*c.vim*
 cW	change.txt	/*cW*
 c_<BS>	cmdline.txt	/*c_<BS>*
@@ -4393,7 +4383,6 @@
 catch-order	eval.txt	/*catch-order*
 catch-text	eval.txt	/*catch-text*
 cc	change.txt	/*cc*
-ch-syntax	syntax.txt	/*ch-syntax*
 ch.vim	syntax.txt	/*ch.vim*
 change-list-jumps	motion.txt	/*change-list-jumps*
 change-tabs	change.txt	/*change-tabs*
@@ -4410,8 +4399,6 @@
 changed-6.2	version6.txt	/*changed-6.2*
 changed-6.3	version6.txt	/*changed-6.3*
 changelist	motion.txt	/*changelist*
-changelog-plugin	filetype.txt	/*changelog-plugin*
-changelog-syntax	syntax.txt	/*changelog-syntax*
 changelog.vim	syntax.txt	/*changelog.vim*
 changetick	eval.txt	/*changetick*
 changing	change.txt	/*changing*
@@ -4423,7 +4410,6 @@
 charconvert_to-variable	eval.txt	/*charconvert_to-variable*
 charset	mbyte.txt	/*charset*
 charset-conversion	mbyte.txt	/*charset-conversion*
-chill-syntax	syntax.txt	/*chill-syntax*
 chill.vim	syntax.txt	/*chill.vim*
 cindent()	eval.txt	/*cindent()*
 cinkeys-format	indent.txt	/*cinkeys-format*
@@ -4446,12 +4432,10 @@
 cmdline.txt	cmdline.txt	/*cmdline.txt*
 cmdwin	cmdline.txt	/*cmdwin*
 cmdwin-char	cmdline.txt	/*cmdwin-char*
-cobol-syntax	syntax.txt	/*cobol-syntax*
 cobol.vim	syntax.txt	/*cobol.vim*
 codeset	mbyte.txt	/*codeset*
 coding-style	develop.txt	/*coding-style*
 col()	eval.txt	/*col()*
-coldfusion-syntax	syntax.txt	/*coldfusion-syntax*
 coldfusion.vim	syntax.txt	/*coldfusion.vim*
 collapse	tips.txt	/*collapse*
 color-xterm	syntax.txt	/*color-xterm*
@@ -4583,7 +4567,6 @@
 cscopetag	if_cscop.txt	/*cscopetag*
 cscopetagorder	if_cscop.txt	/*cscopetagorder*
 cscopeverbose	if_cscop.txt	/*cscopeverbose*
-csh-syntax	syntax.txt	/*csh-syntax*
 csh.vim	syntax.txt	/*csh.vim*
 cspc	if_cscop.txt	/*cspc*
 csprg	if_cscop.txt	/*csprg*
@@ -4615,9 +4598,7 @@
 cursor_right	intro.txt	/*cursor_right*
 cursor_up	intro.txt	/*cursor_up*
 cw	change.txt	/*cw*
-cweb-syntax	syntax.txt	/*cweb-syntax*
 cweb.vim	syntax.txt	/*cweb.vim*
-cynlib-syntax	syntax.txt	/*cynlib-syntax*
 cynlib.vim	syntax.txt	/*cynlib.vim*
 d	change.txt	/*d*
 daB	motion.txt	/*daB*
@@ -4657,7 +4638,6 @@
 design-multi-platform	develop.txt	/*design-multi-platform*
 design-not	develop.txt	/*design-not*
 design-speed-size	develop.txt	/*design-speed-size*
-desktop-syntax	syntax.txt	/*desktop-syntax*
 desktop.vim	syntax.txt	/*desktop.vim*
 develop-spell	develop.txt	/*develop-spell*
 develop.txt	develop.txt	/*develop.txt*
@@ -4689,7 +4669,6 @@
 digraphs-define	digraph.txt	/*digraphs-define*
 digraphs-use	digraph.txt	/*digraphs-use*
 dip	motion.txt	/*dip*
-dircolors-syntax	syntax.txt	/*dircolors-syntax*
 dircolors.vim	syntax.txt	/*dircolors.vim*
 dis	motion.txt	/*dis*
 disable-menus	gui.txt	/*disable-menus*
@@ -4698,11 +4677,8 @@
 dl	change.txt	/*dl*
 do	diff.txt	/*do*
 doc-file-list	help.txt	/*doc-file-list*
-docbk-syntax	syntax.txt	/*docbk-syntax*
 docbk.vim	syntax.txt	/*docbk.vim*
-docbksgml-syntax	syntax.txt	/*docbksgml-syntax*
 docbksgml.vim	syntax.txt	/*docbksgml.vim*
-docbkxml-syntax	syntax.txt	/*docbkxml-syntax*
 docbkxml.vim	syntax.txt	/*docbkxml.vim*
 docbook	syntax.txt	/*docbook*
 documentation-6	version6.txt	/*documentation-6*
@@ -4719,7 +4695,6 @@
 dos-temp-files	os_dos.txt	/*dos-temp-files*
 dos16	os_msdos.txt	/*dos16*
 dos32	os_msdos.txt	/*dos32*
-dosbatch-syntax	syntax.txt	/*dosbatch-syntax*
 dosbatch.vim	syntax.txt	/*dosbatch.vim*
 double-click	term.txt	/*double-click*
 download	intro.txt	/*download*
@@ -4727,7 +4702,6 @@
 drag-n-drop	gui.txt	/*drag-n-drop*
 drag-n-drop-win32	gui_w32.txt	/*drag-n-drop-win32*
 drag-status-line	term.txt	/*drag-status-line*
-dtd-syntax	syntax.txt	/*dtd-syntax*
 dtd.vim	syntax.txt	/*dtd.vim*
 dying-variable	eval.txt	/*dying-variable*
 e	motion.txt	/*e*
@@ -4741,7 +4715,6 @@
 editing.txt	editing.txt	/*editing.txt*
 efm-entries	quickfix.txt	/*efm-entries*
 efm-ignore	quickfix.txt	/*efm-ignore*
-eiffel-syntax	syntax.txt	/*eiffel-syntax*
 eiffel.vim	syntax.txt	/*eiffel.vim*
 emacs-keys	tips.txt	/*emacs-keys*
 emacs-tags	tagsrch.txt	/*emacs-tags*
@@ -4754,7 +4727,6 @@
 end	intro.txt	/*end*
 end-of-file	pattern.txt	/*end-of-file*
 enlightened-terminal	syntax.txt	/*enlightened-terminal*
-erlang-syntax	syntax.txt	/*erlang-syntax*
 erlang.vim	syntax.txt	/*erlang.vim*
 errmsg-variable	eval.txt	/*errmsg-variable*
 error-file-format	quickfix.txt	/*error-file-format*
@@ -4964,18 +4936,114 @@
 fontset	mbyte.txt	/*fontset*
 foreground()	eval.txt	/*foreground()*
 fork	os_unix.txt	/*fork*
-form-syntax	syntax.txt	/*form-syntax*
 form.vim	syntax.txt	/*form.vim*
 format-bullet-list	tips.txt	/*format-bullet-list*
 format-comments	change.txt	/*format-comments*
 formatting	change.txt	/*formatting*
 formfeed	intro.txt	/*formfeed*
-fortran-indent	indent.txt	/*fortran-indent*
-fortran-plugin	filetype.txt	/*fortran-plugin*
-fortran-syntax	syntax.txt	/*fortran-syntax*
 fortran.vim	syntax.txt	/*fortran.vim*
 french-maillist	intro.txt	/*french-maillist*
 frombook	usr_01.txt	/*frombook*
+ft-abel-syntax	syntax.txt	/*ft-abel-syntax*
+ft-ada-syntax	syntax.txt	/*ft-ada-syntax*
+ft-ant-syntax	syntax.txt	/*ft-ant-syntax*
+ft-apache-syntax	syntax.txt	/*ft-apache-syntax*
+ft-asm-syntax	syntax.txt	/*ft-asm-syntax*
+ft-asm68k-syntax	syntax.txt	/*ft-asm68k-syntax*
+ft-asmh8300-syntax	syntax.txt	/*ft-asmh8300-syntax*
+ft-aspperl-syntax	syntax.txt	/*ft-aspperl-syntax*
+ft-aspvbs-syntax	syntax.txt	/*ft-aspvbs-syntax*
+ft-bash-syntax	syntax.txt	/*ft-bash-syntax*
+ft-basic-syntax	syntax.txt	/*ft-basic-syntax*
+ft-c-syntax	syntax.txt	/*ft-c-syntax*
+ft-ch-syntax	syntax.txt	/*ft-ch-syntax*
+ft-changelog-plugin	filetype.txt	/*ft-changelog-plugin*
+ft-changelog-syntax	syntax.txt	/*ft-changelog-syntax*
+ft-chill-syntax	syntax.txt	/*ft-chill-syntax*
+ft-cobol-syntax	syntax.txt	/*ft-cobol-syntax*
+ft-coldfusion-syntax	syntax.txt	/*ft-coldfusion-syntax*
+ft-csh-syntax	syntax.txt	/*ft-csh-syntax*
+ft-cweb-syntax	syntax.txt	/*ft-cweb-syntax*
+ft-cynlib-syntax	syntax.txt	/*ft-cynlib-syntax*
+ft-desktop-syntax	syntax.txt	/*ft-desktop-syntax*
+ft-dircolors-syntax	syntax.txt	/*ft-dircolors-syntax*
+ft-docbk-syntax	syntax.txt	/*ft-docbk-syntax*
+ft-docbksgml-syntax	syntax.txt	/*ft-docbksgml-syntax*
+ft-docbkxml-syntax	syntax.txt	/*ft-docbkxml-syntax*
+ft-dosbatch-syntax	syntax.txt	/*ft-dosbatch-syntax*
+ft-dtd-syntax	syntax.txt	/*ft-dtd-syntax*
+ft-eiffel-syntax	syntax.txt	/*ft-eiffel-syntax*
+ft-erlang-syntax	syntax.txt	/*ft-erlang-syntax*
+ft-form-syntax	syntax.txt	/*ft-form-syntax*
+ft-fortran-indent	indent.txt	/*ft-fortran-indent*
+ft-fortran-plugin	filetype.txt	/*ft-fortran-plugin*
+ft-fortran-syntax	syntax.txt	/*ft-fortran-syntax*
+ft-fvwm-syntax	syntax.txt	/*ft-fvwm-syntax*
+ft-groff-syntax	syntax.txt	/*ft-groff-syntax*
+ft-gsp-syntax	syntax.txt	/*ft-gsp-syntax*
+ft-haskell-syntax	syntax.txt	/*ft-haskell-syntax*
+ft-html-syntax	syntax.txt	/*ft-html-syntax*
+ft-htmlos-syntax	syntax.txt	/*ft-htmlos-syntax*
+ft-ia64-syntax	syntax.txt	/*ft-ia64-syntax*
+ft-inform-syntax	syntax.txt	/*ft-inform-syntax*
+ft-java-syntax	syntax.txt	/*ft-java-syntax*
+ft-ksh-syntax	syntax.txt	/*ft-ksh-syntax*
+ft-lace-syntax	syntax.txt	/*ft-lace-syntax*
+ft-lex-syntax	syntax.txt	/*ft-lex-syntax*
+ft-lite-syntax	syntax.txt	/*ft-lite-syntax*
+ft-lpc-syntax	syntax.txt	/*ft-lpc-syntax*
+ft-lua-syntax	syntax.txt	/*ft-lua-syntax*
+ft-mail-plugin	filetype.txt	/*ft-mail-plugin*
+ft-mail.vim	syntax.txt	/*ft-mail.vim*
+ft-make-syntax	syntax.txt	/*ft-make-syntax*
+ft-man-plugin	filetype.txt	/*ft-man-plugin*
+ft-maple-syntax	syntax.txt	/*ft-maple-syntax*
+ft-masm-syntax	syntax.txt	/*ft-masm-syntax*
+ft-mathematica-syntax	syntax.txt	/*ft-mathematica-syntax*
+ft-mma-syntax	syntax.txt	/*ft-mma-syntax*
+ft-moo-syntax	syntax.txt	/*ft-moo-syntax*
+ft-msql-syntax	syntax.txt	/*ft-msql-syntax*
+ft-nasm-syntax	syntax.txt	/*ft-nasm-syntax*
+ft-ncf-syntax	syntax.txt	/*ft-ncf-syntax*
+ft-nroff-syntax	syntax.txt	/*ft-nroff-syntax*
+ft-ocaml-syntax	syntax.txt	/*ft-ocaml-syntax*
+ft-papp-syntax	syntax.txt	/*ft-papp-syntax*
+ft-pascal-syntax	syntax.txt	/*ft-pascal-syntax*
+ft-perl-syntax	syntax.txt	/*ft-perl-syntax*
+ft-php-syntax	syntax.txt	/*ft-php-syntax*
+ft-php3-syntax	syntax.txt	/*ft-php3-syntax*
+ft-phtml-syntax	syntax.txt	/*ft-phtml-syntax*
+ft-postscr-syntax	syntax.txt	/*ft-postscr-syntax*
+ft-ppwiz-syntax	syntax.txt	/*ft-ppwiz-syntax*
+ft-printcap-syntax	syntax.txt	/*ft-printcap-syntax*
+ft-progress-syntax	syntax.txt	/*ft-progress-syntax*
+ft-ptcap-syntax	syntax.txt	/*ft-ptcap-syntax*
+ft-python-indent	indent.txt	/*ft-python-indent*
+ft-python-syntax	syntax.txt	/*ft-python-syntax*
+ft-quake-syntax	syntax.txt	/*ft-quake-syntax*
+ft-readline-syntax	syntax.txt	/*ft-readline-syntax*
+ft-rexx-syntax	syntax.txt	/*ft-rexx-syntax*
+ft-ruby-syntax	syntax.txt	/*ft-ruby-syntax*
+ft-scheme-syntax	syntax.txt	/*ft-scheme-syntax*
+ft-sdl-syntax	syntax.txt	/*ft-sdl-syntax*
+ft-sed-syntax	syntax.txt	/*ft-sed-syntax*
+ft-sgml-syntax	syntax.txt	/*ft-sgml-syntax*
+ft-sh-syntax	syntax.txt	/*ft-sh-syntax*
+ft-spec-plugin	filetype.txt	/*ft-spec-plugin*
+ft-spup-syntax	syntax.txt	/*ft-spup-syntax*
+ft-sql-syntax	syntax.txt	/*ft-sql-syntax*
+ft-sqlinformix-syntax	syntax.txt	/*ft-sqlinformix-syntax*
+ft-tcsh-syntax	syntax.txt	/*ft-tcsh-syntax*
+ft-termcap-syntax	syntax.txt	/*ft-termcap-syntax*
+ft-tex-syntax	syntax.txt	/*ft-tex-syntax*
+ft-tf-syntax	syntax.txt	/*ft-tf-syntax*
+ft-vb-syntax	syntax.txt	/*ft-vb-syntax*
+ft-verilog-indent	indent.txt	/*ft-verilog-indent*
+ft-vim-indent	indent.txt	/*ft-vim-indent*
+ft-vim-syntax	syntax.txt	/*ft-vim-syntax*
+ft-xf86conf-syntax	syntax.txt	/*ft-xf86conf-syntax*
+ft-xml-syntax	syntax.txt	/*ft-xml-syntax*
+ft-xpm-syntax	syntax.txt	/*ft-xpm-syntax*
 ftdetect	filetype.txt	/*ftdetect*
 ftp	pi_netrw.txt	/*ftp*
 ftplugin	usr_41.txt	/*ftplugin*
@@ -4991,7 +5059,6 @@
 function-range-example	eval.txt	/*function-range-example*
 function_key	intro.txt	/*function_key*
 functions	eval.txt	/*functions*
-fvwm-syntax	syntax.txt	/*fvwm-syntax*
 fvwm.vim	syntax.txt	/*fvwm.vim*
 fvwm2rc	syntax.txt	/*fvwm2rc*
 fvwmrc	syntax.txt	/*fvwmrc*
@@ -5125,7 +5192,6 @@
 graphic-option-gone	version4.txt	/*graphic-option-gone*
 greek	options.txt	/*greek*
 grep	quickfix.txt	/*grep*
-groff-syntax	syntax.txt	/*groff-syntax*
 groff.vim	syntax.txt	/*groff.vim*
 group-name	syntax.txt	/*group-name*
 gs	various.txt	/*gs*
@@ -5213,13 +5279,13 @@
 has()	eval.txt	/*has()*
 has-patch	eval.txt	/*has-patch*
 has_key()	eval.txt	/*has_key()*
-haskell-syntax	syntax.txt	/*haskell-syntax*
 haskell.vim	syntax.txt	/*haskell.vim*
 hasmapto()	eval.txt	/*hasmapto()*
 hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -5307,9 +5373,7 @@
 howto.txt	howto.txt	/*howto.txt*
 hpterm	term.txt	/*hpterm*
 hpterm-color	syntax.txt	/*hpterm-color*
-html-syntax	syntax.txt	/*html-syntax*
 html.vim	syntax.txt	/*html.vim*
-htmlos-syntax	syntax.txt	/*htmlos-syntax*
 htmlos.vim	syntax.txt	/*htmlos.vim*
 http	pi_netrw.txt	/*http*
 i	insert.txt	/*i*
@@ -5420,7 +5484,6 @@
 i_digraph	digraph.txt	/*i_digraph*
 i_esc	intro.txt	/*i_esc*
 i`	motion.txt	/*i`*
-ia64-syntax	syntax.txt	/*ia64-syntax*
 ia64.vim	syntax.txt	/*ia64.vim*
 ib	motion.txt	/*ib*
 iccf	uganda.txt	/*iccf*
@@ -5460,7 +5523,6 @@
 index()	eval.txt	/*index()*
 index.txt	index.txt	/*index.txt*
 info-message	starting.txt	/*info-message*
-inform-syntax	syntax.txt	/*inform-syntax*
 inform.vim	syntax.txt	/*inform.vim*
 initialization	starting.txt	/*initialization*
 input()	eval.txt	/*input()*
@@ -5511,7 +5573,6 @@
 j	motion.txt	/*j*
 java-cinoptions	indent.txt	/*java-cinoptions*
 java-indenting	indent.txt	/*java-indenting*
-java-syntax	syntax.txt	/*java-syntax*
 java.vim	syntax.txt	/*java.vim*
 join()	eval.txt	/*join()*
 jsbterm-mouse	options.txt	/*jsbterm-mouse*
@@ -5546,10 +5607,8 @@
 keypad-point	intro.txt	/*keypad-point*
 keys()	eval.txt	/*keys()*
 known-bugs	todo.txt	/*known-bugs*
-ksh-syntax	syntax.txt	/*ksh-syntax*
 l	motion.txt	/*l*
 l:var	eval.txt	/*l:var*
-lace-syntax	syntax.txt	/*lace-syntax*
 lace.vim	syntax.txt	/*lace.vim*
 lang-variable	eval.txt	/*lang-variable*
 language-mapping	map.txt	/*language-mapping*
@@ -5561,7 +5620,6 @@
 len()	eval.txt	/*len()*
 less	various.txt	/*less*
 letter	print.txt	/*letter*
-lex-syntax	syntax.txt	/*lex-syntax*
 lex.vim	syntax.txt	/*lex.vim*
 lhaskell.vim	syntax.txt	/*lhaskell.vim*
 libcall()	eval.txt	/*libcall()*
@@ -5581,7 +5639,6 @@
 list-index	eval.txt	/*list-index*
 list-modification	eval.txt	/*list-modification*
 list-repeat	windows.txt	/*list-repeat*
-lite-syntax	syntax.txt	/*lite-syntax*
 lite.vim	syntax.txt	/*lite.vim*
 literal-string	eval.txt	/*literal-string*
 lnum-variable	eval.txt	/*lnum-variable*
@@ -5597,9 +5654,7 @@
 localtime()	eval.txt	/*localtime()*
 long-lines	version5.txt	/*long-lines*
 lowercase	change.txt	/*lowercase*
-lpc-syntax	syntax.txt	/*lpc-syntax*
 lpc.vim	syntax.txt	/*lpc.vim*
-lua-syntax	syntax.txt	/*lua-syntax*
 lua.vim	syntax.txt	/*lua.vim*
 m	motion.txt	/*m*
 m'	motion.txt	/*m'*
@@ -5616,13 +5671,10 @@
 macintosh	os_mac.txt	/*macintosh*
 macro	map.txt	/*macro*
 mail-list	intro.txt	/*mail-list*
-mail-plugin	filetype.txt	/*mail-plugin*
 mail.vim	syntax.txt	/*mail.vim*
 maillist	intro.txt	/*maillist*
 maillist-archive	intro.txt	/*maillist-archive*
-make-syntax	syntax.txt	/*make-syntax*
 make.vim	syntax.txt	/*make.vim*
-man-plugin	filetype.txt	/*man-plugin*
 manual-copyright	usr_01.txt	/*manual-copyright*
 map()	eval.txt	/*map()*
 map-<SID>	map.txt	/*map-<SID>*
@@ -5648,14 +5700,12 @@
 map_space_in_rhs	map.txt	/*map_space_in_rhs*
 maparg()	eval.txt	/*maparg()*
 mapcheck()	eval.txt	/*mapcheck()*
-maple-syntax	syntax.txt	/*maple-syntax*
 maple.vim	syntax.txt	/*maple.vim*
 mapleader	map.txt	/*mapleader*
 maplocalleader	map.txt	/*maplocalleader*
 mapping	map.txt	/*mapping*
 mark	motion.txt	/*mark*
 mark-motions	motion.txt	/*mark-motions*
-masm-syntax	syntax.txt	/*masm-syntax*
 masm.vim	syntax.txt	/*masm.vim*
 match()	eval.txt	/*match()*
 match-highlight	pattern.txt	/*match-highlight*
@@ -5663,7 +5713,6 @@
 matchit-install	usr_05.txt	/*matchit-install*
 matchlist()	eval.txt	/*matchlist()*
 matchstr()	eval.txt	/*matchstr()*
-mathematica-syntax	syntax.txt	/*mathematica-syntax*
 max()	eval.txt	/*max()*
 mbyte-IME	mbyte.txt	/*mbyte-IME*
 mbyte-XIM	mbyte.txt	/*mbyte-XIM*
@@ -5693,7 +5742,6 @@
 missing-options	vi_diff.txt	/*missing-options*
 mkdir()	eval.txt	/*mkdir()*
 mlang.txt	mlang.txt	/*mlang.txt*
-mma-syntax	syntax.txt	/*mma-syntax*
 mma.vim	syntax.txt	/*mma.vim*
 mode()	eval.txt	/*mode()*
 mode-Ex	intro.txt	/*mode-Ex*
@@ -5706,7 +5754,6 @@
 modeline	options.txt	/*modeline*
 modeline-local	options.txt	/*modeline-local*
 modeline-version	options.txt	/*modeline-version*
-moo-syntax	syntax.txt	/*moo-syntax*
 moo.vim	syntax.txt	/*moo.vim*
 more-compatible	version5.txt	/*more-compatible*
 more-prompt	message.txt	/*more-prompt*
@@ -5731,7 +5778,6 @@
 msdos-problems	os_msdos.txt	/*msdos-problems*
 msdos-termcap	os_msdos.txt	/*msdos-termcap*
 msdos-versions	os_msdos.txt	/*msdos-versions*
-msql-syntax	syntax.txt	/*msql-syntax*
 msql.vim	syntax.txt	/*msql.vim*
 mswin.vim	gui_w32.txt	/*mswin.vim*
 multi-byte	mbyte.txt	/*multi-byte*
@@ -5759,7 +5805,6 @@
 mzscheme-vimext	if_mzsch.txt	/*mzscheme-vimext*
 mzscheme-window	if_mzsch.txt	/*mzscheme-window*
 n	pattern.txt	/*n*
-nasm-syntax	syntax.txt	/*nasm-syntax*
 nasm.vim	syntax.txt	/*nasm.vim*
 navigation	motion.txt	/*navigation*
 nb-commands	netbeans.txt	/*nb-commands*
@@ -5768,7 +5813,6 @@
 nb-messages	netbeans.txt	/*nb-messages*
 nb-special	netbeans.txt	/*nb-special*
 nb-terms	netbeans.txt	/*nb-terms*
-ncf-syntax	syntax.txt	/*ncf-syntax*
 ncf.vim	syntax.txt	/*ncf.vim*
 netbeans	netbeans.txt	/*netbeans*
 netbeans-commands	netbeans.txt	/*netbeans-commands*
@@ -5792,6 +5836,7 @@
 netrw-R	pi_netrw.txt	/*netrw-R*
 netrw-S	pi_netrw.txt	/*netrw-S*
 netrw-U	pi_netrw.txt	/*netrw-U*
+netrw-a	pi_netrw.txt	/*netrw-a*
 netrw-activate	pi_netrw.txt	/*netrw-activate*
 netrw-b	pi_netrw.txt	/*netrw-b*
 netrw-bookmark	pi_netrw.txt	/*netrw-bookmark*
@@ -5830,8 +5875,8 @@
 netrw-horiz	pi_netrw.txt	/*netrw-horiz*
 netrw-i	pi_netrw.txt	/*netrw-i*
 netrw-list	pi_netrw.txt	/*netrw-list*
+netrw-list-hack	pi_netrw.txt	/*netrw-list-hack*
 netrw-listbookmark	pi_netrw.txt	/*netrw-listbookmark*
-netrw-listhack	pi_netrw.txt	/*netrw-listhack*
 netrw-maps	pi_netrw.txt	/*netrw-maps*
 netrw-move	pi_netrw.txt	/*netrw-move*
 netrw-netrc	pi_netrw.txt	/*netrw-netrc*
@@ -5955,7 +6000,6 @@
 notation	intro.txt	/*notation*
 notepad	gui_w32.txt	/*notepad*
 nr2char()	eval.txt	/*nr2char()*
-nroff-syntax	syntax.txt	/*nroff-syntax*
 nroff.vim	syntax.txt	/*nroff.vim*
 numbered-function	eval.txt	/*numbered-function*
 o	insert.txt	/*o*
@@ -5966,7 +6010,6 @@
 object-select	motion.txt	/*object-select*
 objects	index.txt	/*objects*
 obtaining-exted	netbeans.txt	/*obtaining-exted*
-ocaml-syntax	syntax.txt	/*ocaml-syntax*
 ocaml.vim	syntax.txt	/*ocaml.vim*
 ole-activation	if_ole.txt	/*ole-activation*
 ole-eval	if_ole.txt	/*ole-eval*
@@ -6009,10 +6052,8 @@
 page_down	intro.txt	/*page_down*
 page_up	intro.txt	/*page_up*
 pager	message.txt	/*pager*
-papp-syntax	syntax.txt	/*papp-syntax*
 papp.vim	syntax.txt	/*papp.vim*
 paragraph	motion.txt	/*paragraph*
-pascal-syntax	syntax.txt	/*pascal-syntax*
 pascal.vim	syntax.txt	/*pascal.vim*
 pattern	pattern.txt	/*pattern*
 pattern-atoms	pattern.txt	/*pattern-atoms*
@@ -6044,7 +6085,6 @@
 perl-editing	if_perl.txt	/*perl-editing*
 perl-overview	if_perl.txt	/*perl-overview*
 perl-patterns	pattern.txt	/*perl-patterns*
-perl-syntax	syntax.txt	/*perl-syntax*
 perl-using	if_perl.txt	/*perl-using*
 perl.vim	syntax.txt	/*perl.vim*
 pexpr-option	print.txt	/*pexpr-option*
@@ -6052,11 +6092,8 @@
 pheader-option	print.txt	/*pheader-option*
 photon-fonts	os_qnx.txt	/*photon-fonts*
 photon-gui	os_qnx.txt	/*photon-gui*
-php-syntax	syntax.txt	/*php-syntax*
 php.vim	syntax.txt	/*php.vim*
-php3-syntax	syntax.txt	/*php3-syntax*
 php3.vim	syntax.txt	/*php3.vim*
-phtml-syntax	syntax.txt	/*phtml-syntax*
 phtml.vim	syntax.txt	/*phtml.vim*
 pi_gzip.txt	pi_gzip.txt	/*pi_gzip.txt*
 pi_netrw.txt	pi_netrw.txt	/*pi_netrw.txt*
@@ -6075,14 +6112,12 @@
 posix	vi_diff.txt	/*posix*
 posix-compliance	vi_diff.txt	/*posix-compliance*
 posix-screen-size	vi_diff.txt	/*posix-screen-size*
-postscr-syntax	syntax.txt	/*postscr-syntax*
 postscr.vim	syntax.txt	/*postscr.vim*
 postscript-cjk-printing	print.txt	/*postscript-cjk-printing*
 postscript-print-encoding	print.txt	/*postscript-print-encoding*
 postscript-print-trouble	print.txt	/*postscript-print-trouble*
 postscript-print-util	print.txt	/*postscript-print-util*
 postscript-printing	print.txt	/*postscript-printing*
-ppwiz-syntax	syntax.txt	/*ppwiz-syntax*
 ppwiz.vim	syntax.txt	/*ppwiz.vim*
 press-enter	message.txt	/*press-enter*
 press-return	message.txt	/*press-return*
@@ -6092,7 +6127,6 @@
 print-intro	print.txt	/*print-intro*
 print-options	print.txt	/*print-options*
 print.txt	print.txt	/*print.txt*
-printcap-syntax	syntax.txt	/*printcap-syntax*
 printf()	eval.txt	/*printf()*
 printing	print.txt	/*printing*
 printing-formfeed	print.txt	/*printing-formfeed*
@@ -6100,9 +6134,7 @@
 profiling	repeat.txt	/*profiling*
 profiling-variable	eval.txt	/*profiling-variable*
 progname-variable	eval.txt	/*progname-variable*
-progress-syntax	syntax.txt	/*progress-syntax*
 progress.vim	syntax.txt	/*progress.vim*
-ptcap-syntax	syntax.txt	/*ptcap-syntax*
 ptcap.vim	syntax.txt	/*ptcap.vim*
 pterm-mouse	options.txt	/*pterm-mouse*
 put	change.txt	/*put*
@@ -6116,11 +6148,9 @@
 python-error	if_pyth.txt	/*python-error*
 python-eval	if_pyth.txt	/*python-eval*
 python-examples	if_pyth.txt	/*python-examples*
-python-indent	indent.txt	/*python-indent*
 python-input	if_pyth.txt	/*python-input*
 python-output	if_pyth.txt	/*python-output*
 python-range	if_pyth.txt	/*python-range*
-python-syntax	syntax.txt	/*python-syntax*
 python-vim	if_pyth.txt	/*python-vim*
 python-window	if_pyth.txt	/*python-window*
 python-windows	if_pyth.txt	/*python-windows*
@@ -6133,7 +6163,6 @@
 qnx-compiling	os_qnx.txt	/*qnx-compiling*
 qnx-general	os_qnx.txt	/*qnx-general*
 qnx-terminal	os_qnx.txt	/*qnx-terminal*
-quake-syntax	syntax.txt	/*quake-syntax*
 quake.vim	syntax.txt	/*quake.vim*
 quickfix	quickfix.txt	/*quickfix*
 quickfix-6	version6.txt	/*quickfix-6*
@@ -6188,7 +6217,6 @@
 read-only-share	editing.txt	/*read-only-share*
 read-stdin	version5.txt	/*read-stdin*
 readfile()	eval.txt	/*readfile()*
-readline-syntax	syntax.txt	/*readline-syntax*
 readline.vim	syntax.txt	/*readline.vim*
 recording	repeat.txt	/*recording*
 recover.txt	recover.txt	/*recover.txt*
@@ -6227,7 +6255,6 @@
 retab-example	change.txt	/*retab-example*
 rethrow	eval.txt	/*rethrow*
 reverse()	eval.txt	/*reverse()*
-rexx-syntax	syntax.txt	/*rexx-syntax*
 rexx.vim	syntax.txt	/*rexx.vim*
 rgb.txt	gui_w32.txt	/*rgb.txt*
 rgview	starting.txt	/*rgview*
@@ -6257,7 +6284,6 @@
 ruby-globals	if_ruby.txt	/*ruby-globals*
 ruby-message	if_ruby.txt	/*ruby-message*
 ruby-set_option	if_ruby.txt	/*ruby-set_option*
-ruby-syntax	syntax.txt	/*ruby-syntax*
 ruby-vim	if_ruby.txt	/*ruby-vim*
 ruby-window	if_ruby.txt	/*ruby-window*
 ruby.vim	syntax.txt	/*ruby.vim*
@@ -6297,7 +6323,6 @@
 sandbox	eval.txt	/*sandbox*
 save-file	editing.txt	/*save-file*
 save-settings	starting.txt	/*save-settings*
-scheme-syntax	syntax.txt	/*scheme-syntax*
 scheme.vim	syntax.txt	/*scheme.vim*
 scp	pi_netrw.txt	/*scp*
 script	usr_41.txt	/*script*
@@ -6318,7 +6343,6 @@
 scrollbind-quickadj	scroll.txt	/*scrollbind-quickadj*
 scrollbind-relative	scroll.txt	/*scrollbind-relative*
 scrolling	scroll.txt	/*scrolling*
-sdl-syntax	syntax.txt	/*sdl-syntax*
 sdl.vim	syntax.txt	/*sdl.vim*
 search()	eval.txt	/*search()*
 search-commands	pattern.txt	/*search-commands*
@@ -6328,7 +6352,6 @@
 search-replace	change.txt	/*search-replace*
 searchpair()	eval.txt	/*searchpair()*
 section	motion.txt	/*section*
-sed-syntax	syntax.txt	/*sed-syntax*
 sed.vim	syntax.txt	/*sed.vim*
 self	eval.txt	/*self*
 send-money	sponsor.txt	/*send-money*
@@ -6349,9 +6372,7 @@
 setting-guifont	gui.txt	/*setting-guifont*
 setwinvar()	eval.txt	/*setwinvar()*
 sftp	pi_netrw.txt	/*sftp*
-sgml-syntax	syntax.txt	/*sgml-syntax*
 sgml.vim	syntax.txt	/*sgml.vim*
-sh-syntax	syntax.txt	/*sh-syntax*
 sh.vim	syntax.txt	/*sh.vim*
 shell-window	tips.txt	/*shell-window*
 shell_error-variable	eval.txt	/*shell_error-variable*
@@ -6382,7 +6403,6 @@
 space	intro.txt	/*space*
 spec-customizing	pi_spec.txt	/*spec-customizing*
 spec-how-to-use-it	pi_spec.txt	/*spec-how-to-use-it*
-spec-plugin	filetype.txt	/*spec-plugin*
 spec-setting-a-map	pi_spec.txt	/*spec-setting-a-map*
 spec_chglog_format	pi_spec.txt	/*spec_chglog_format*
 spec_chglog_prepend	pi_spec.txt	/*spec_chglog_prepend*
@@ -6397,11 +6417,13 @@
 spell-COMPOUNDMAX	spell.txt	/*spell-COMPOUNDMAX*
 spell-COMPOUNDMIN	spell.txt	/*spell-COMPOUNDMIN*
 spell-COMPOUNDSYLMAX	spell.txt	/*spell-COMPOUNDSYLMAX*
+spell-FLAG	spell.txt	/*spell-FLAG*
 spell-FOL	spell.txt	/*spell-FOL*
 spell-KEP	spell.txt	/*spell-KEP*
 spell-LOW	spell.txt	/*spell-LOW*
 spell-MAP	spell.txt	/*spell-MAP*
 spell-NEEDAFFIX	spell.txt	/*spell-NEEDAFFIX*
+spell-NEEDCOMPOUND	spell.txt	/*spell-NEEDCOMPOUND*
 spell-NOBREAK	spell.txt	/*spell-NOBREAK*
 spell-PFX	spell.txt	/*spell-PFX*
 spell-PFXPOSTPONE	spell.txt	/*spell-PFXPOSTPONE*
@@ -6442,11 +6464,8 @@
 sponsor-faq	sponsor.txt	/*sponsor-faq*
 sponsor.txt	sponsor.txt	/*sponsor.txt*
 spoon	os_unix.txt	/*spoon*
-spup-syntax	syntax.txt	/*spup-syntax*
 spup.vim	syntax.txt	/*spup.vim*
-sql-syntax	syntax.txt	/*sql-syntax*
 sql.vim	syntax.txt	/*sql.vim*
-sqlinformix-syntax	syntax.txt	/*sqlinformix-syntax*
 sqlinformix.vim	syntax.txt	/*sqlinformix.vim*
 sscanf	eval.txt	/*sscanf*
 standard-plugin	usr_05.txt	/*standard-plugin*
@@ -6744,7 +6763,6 @@
 tcl-window-height	if_tcl.txt	/*tcl-window-height*
 tcl-window-option	if_tcl.txt	/*tcl-window-option*
 tcsh-style	cmdline.txt	/*tcsh-style*
-tcsh-syntax	syntax.txt	/*tcsh-syntax*
 tcsh.vim	syntax.txt	/*tcsh.vim*
 tear-off-menus	gui.txt	/*tear-off-menus*
 telnet-CTRL-]	tagsrch.txt	/*telnet-CTRL-]*
@@ -6759,7 +6777,6 @@
 termcap-colors	term.txt	/*termcap-colors*
 termcap-cursor-color	term.txt	/*termcap-cursor-color*
 termcap-cursor-shape	term.txt	/*termcap-cursor-shape*
-termcap-syntax	syntax.txt	/*termcap-syntax*
 termcap-title	term.txt	/*termcap-title*
 terminal-colors	os_unix.txt	/*terminal-colors*
 terminal-info	term.txt	/*terminal-info*
@@ -6772,11 +6789,9 @@
 tex-runon	syntax.txt	/*tex-runon*
 tex-slow	syntax.txt	/*tex-slow*
 tex-style	syntax.txt	/*tex-style*
-tex-syntax	syntax.txt	/*tex-syntax*
 tex.vim	syntax.txt	/*tex.vim*
 text-objects	motion.txt	/*text-objects*
 text-objects-changed	version5.txt	/*text-objects-changed*
-tf-syntax	syntax.txt	/*tf-syntax*
 tf.vim	syntax.txt	/*tf.vim*
 this_session-variable	eval.txt	/*this_session-variable*
 throw-catch	eval.txt	/*throw-catch*
@@ -7029,10 +7044,8 @@
 various-cmds	various.txt	/*various-cmds*
 various-motions	motion.txt	/*various-motions*
 various.txt	various.txt	/*various.txt*
-vb-syntax	syntax.txt	/*vb-syntax*
 vb.vim	syntax.txt	/*vb.vim*
 verbose	starting.txt	/*verbose*
-verilog-indent	indent.txt	/*verilog-indent*
 version-5.1	version5.txt	/*version-5.1*
 version-5.2	version5.txt	/*version-5.2*
 version-5.3	version5.txt	/*version-5.3*
@@ -7062,14 +7075,12 @@
 vim-arguments	starting.txt	/*vim-arguments*
 vim-default-editor	gui_w32.txt	/*vim-default-editor*
 vim-dev	intro.txt	/*vim-dev*
-vim-indent	indent.txt	/*vim-indent*
 vim-kpart	gui_x11.txt	/*vim-kpart*
 vim-mac	intro.txt	/*vim-mac*
 vim-modes	intro.txt	/*vim-modes*
 vim-modes-intro	intro.txt	/*vim-modes-intro*
 vim-multibyte	intro.txt	/*vim-multibyte*
 vim-script-intro	usr_41.txt	/*vim-script-intro*
-vim-syntax	syntax.txt	/*vim-syntax*
 vim-variable	eval.txt	/*vim-variable*
 vim.vim	syntax.txt	/*vim.vim*
 vim:	options.txt	/*vim:*
@@ -7212,7 +7223,6 @@
 x11-clientserver	remote.txt	/*x11-clientserver*
 x11-cut-buffer	gui_x11.txt	/*x11-cut-buffer*
 x11-selection	gui_x11.txt	/*x11-selection*
-xf86conf-syntax	syntax.txt	/*xf86conf-syntax*
 xf86conf.vim	syntax.txt	/*xf86conf.vim*
 xfontset	mbyte.txt	/*xfontset*
 xfree-xterm	syntax.txt	/*xfree-xterm*
@@ -7220,9 +7230,7 @@
 xim-input-style	mbyte.txt	/*xim-input-style*
 xiterm	syntax.txt	/*xiterm*
 xml-folding	syntax.txt	/*xml-folding*
-xml-syntax	syntax.txt	/*xml-syntax*
 xml.vim	syntax.txt	/*xml.vim*
-xpm-syntax	syntax.txt	/*xpm-syntax*
 xpm.vim	syntax.txt	/*xpm.vim*
 xterm-8-bit	term.txt	/*xterm-8-bit*
 xterm-8bit	term.txt	/*xterm-8bit*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index f019ef0..6e63813 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Aug 29
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Aug 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,58 +30,16 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Spelling:
-- Check support of flags of two characters, numbers (comma separated) and HUH.
-  When using many compound flags, does regexp still work?
+Mac:
+- strings.h is bogus, add configure check.
+- GUI: pasting lines results in ^M instead of line breaks. (Benjamin Esham)
+- "cp -R ../runtime appdir" may copy way too much.
 
-- "zg" doesn't work for Thai?
+cmdline_at_end() and cmdline_overstrike() may not be used.
 
-- Compound word is accepted if nr of words is <= COMPOUNDMAX OR nr of
-  syllables <= COMPOUNDSYLMAX.  Specify AND in the affix file?
+Ruby: documentation for window width (Wind)
 
-- COMPOUNDMAX -> COMPOUNDWORDMAX?
-
-- Support flags on a suffix.  Used for second level affixes.
-  The flags may also be used for compounding.  Default is an OR mechanism with
-  the flags of the word.  Adding "compset" on the affixes means the compound
-  flags of the word are not used.
-  Instead of "SFX a 0 add/FLAGS ." we could use "SFX a 0 add . /FLAGS".
-
-- NEEDCOMPOUND also used for affix?  Or use "needcomp" after affix?
-
-- Do we need a flag for the rule that when compounding is done the following
-  word doesn't have a capital after a word character, even for Onecap words?
-
-- Also see tklspell: http://tkltrans.sourceforge.net/
-- New hunspell home page: http://hunspell.sourceforge.net/
-    - Lots of code depends on LANG, that isn't right.  Enable each mechanism
-      in the affix file separately.
-    - Example with compounding dash is bad, gets in the way of setting
-      COMPOUNDMIN and COMPOUNDMAX to a reasonable value.
-    - PSEUDOROOT == NEEDAFFIX
-    - COMPOUNDROOT -> COMPOUNDED?  For a word that already is a compound word
-	    Or use COMPOUNDED2, COMPOUNDED3, etc.
-- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag,
-  then the word must also have a suffix marked with the CIRCUMFIX flag.
-  It's a bit primitive, since only one flag is used, which doesn't allow
-  matching specific prefixes with suffixes.
-  Alternative:
-	PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond}
-  We might not need this at all, you can use the NEEDAFFIX flag.
-- When a suffix has more than one syllable, it may count as a word for
-  COMPOUNDMAX.
-- Add flags to count extra syllables in a word.  SYLLABLEADDONE
-  SYLLABLEADDTWO, etc.?  Or make it possible to specify the syllable count
-  of a word directly, after another slash: /abc/3
-- MORPHO items ignores morphological items: after word and affix
-
-- Implement multiple flags for compound words and CMP item?
-  Await comments from other spell checking authors.
-
-Help tags: something to make it easy to find help about a certain filetype?
-    use ft-c-syntax ft-c-ftplugin etc.?
-
-Mac GUI: pasting lines results in ^M instead of line breaks. (Benjamin Esham)
+Add a few more languages for spell checking.
 
 Mac unicode patch (Da Woon Jung):
 - selecting proportional font breaks display
@@ -1348,6 +1306,43 @@
 Spell checking:
 9   Work together with OpenOffice.org to update the wordlists.  (Adri Verhoef,
     Aad Nales)  Setup vim-spell maillist?
+-   Compound word is accepted if nr of words is <= COMPOUNDMAX OR nr of
+    syllables <= COMPOUNDSYLMAX.  Specify using AND in the affix file?
+-   COMPOUNDMAX -> COMPOUNDWORDMAX?
+-   Support flags on a suffix.  Used for second level affixes.  The flags may
+    also be used for compounding.  Default is an OR mechanism with the flags
+    of the word.  Adding "compset" on the affixes means the compound flags of
+    the word are not used.  Instead of "SFX a 0 add/FLAGS ." we could use "SFX
+    a 0 add . /FLAGS" (or support both).
+-   NEEDCOMPOUND also used for affix?  Or use "needcomp" after affix?
+-   Do we need a flag for the rule that when compounding is done the following
+    word doesn't have a capital after a word character, even for Onecap words?
+-   New hunspell home page: http://hunspell.sourceforge.net/
+    - Lots of code depends on LANG, that isn't right.  Enable each mechanism
+      in the affix file separately.
+    - Example with compounding dash is bad, gets in the way of setting
+      COMPOUNDMIN and COMPOUNDMAX to a reasonable value.
+    - PSEUDOROOT == NEEDAFFIX
+    - COMPOUNDROOT -> COMPOUNDED?  For a word that already is a compound word
+	    Or use COMPOUNDED2, COMPOUNDED3, etc.
+-   CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then
+    the word must also have a suffix marked with the CIRCUMFIX flag.  It's a
+    bit primitive, since only one flag is used, which doesn't allow matching
+    specific prefixes with suffixes.
+    Alternative:
+	PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond}
+    We might not need this at all, you can use the NEEDAFFIX flag and the
+    affix which is required.
+-   When a suffix has more than one syllable, it may count as a word for
+    COMPOUNDMAX.
+-   Add flags to count extra syllables in a word.  SYLLABLEADD1 SYLLABLEADD2,
+    etc.?  Or make it possible to specify the syllable count of a word
+    directly, e.g., after another slash: /abc/3
+-   MORPHO item in affix file: ignore morphological fields after word and
+    affix.
+-   Implement multiple flags for compound words and CMP item?
+    Await comments from other spell checking authors.
+-   Also see tklspell: http://tkltrans.sourceforge.net/
 8   Charles Campbell asks for method to add "contained" groups to existing
     syntax items (to add @Spell).
     Add ":syntax contains {pattern} add=@Spell" command?  A bit like ":syn
diff --git a/src/fileio.c b/src/fileio.c
index a34048c..d49d87b 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1515,8 +1515,6 @@
 # ifdef MACOS_X
 	    if (fio_flags & FIO_MACROMAN)
 	    {
-		extern int macroman2enc __ARGS((char_u *ptr, long *sizep, long
-			    real_size));
 		/*
 		 * Conversion from Apple MacRoman char encoding to UTF-8 or
 		 * latin1.  This is in os_mac_conv.c.
@@ -4815,9 +4813,6 @@
 	     */
 	    char_u	*from;
 	    size_t	fromlen;
-	    extern int enc2macroman __ARGS((char_u *from, size_t fromlen,
-			char_u *to, int *tolenp, int maxtolen, char_u *rest,
-			int *restlenp));
 
 	    if (ip->bw_restlen > 0)
 	    {
diff --git a/src/gui_mac.c b/src/gui_mac.c
index f01dc86..9253aa1 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -94,10 +94,6 @@
 #if defined(USE_CARBONIZED) && defined(FEAT_MBYTE)
 # define USE_CARBONKEYHANDLER
 static EventHandlerUPP keyEventHandlerUPP = NULL;
-/* Defined in os_mac_conv.c */
-extern char_u *mac_utf16_to_enc __ARGS((UniChar *from, size_t fromLen, size_t *actualLen));
-extern UniChar *mac_enc_to_utf16 __ARGS((char_u *from, size_t fromLen, size_t *actualLen));
-extern CFStringRef mac_enc_to_cfstring __ARGS((char_u *from, size_t fromLen));
 #endif
 
 #ifdef MACOS_X
@@ -1618,7 +1614,7 @@
  */
 #define FONT_STYLE_BUFFER_SIZE 32
     static void
-GetFontPanelSelection(char_u* outName)
+GetFontPanelSelection(char_u *outName)
 {
     Str255	    buf;
     ByteCount	    fontNameLen = 0;
@@ -1639,12 +1635,12 @@
 	 * get an unwanted utf-16 name) */
 	if (ATSUFindFontName(fid, kFontFullName, kFontMacintoshPlatform,
 		    kFontNoScriptCode, kFontNoLanguageCode,
-		    255, outName, &fontNameLen, NULL) != noErr)
+		    255, (char *)outName, &fontNameLen, NULL) != noErr)
 	    return;
 
 	/* Only encode font size, because style (bold, italic, etc) is
 	 * already part of the font full name */
-	vim_snprintf(styleString, FONT_STYLE_BUFFER_SIZE, ":h%d",
+	vim_snprintf((char *)styleString, FONT_STYLE_BUFFER_SIZE, ":h%d",
 		gFontPanelInfo.size/*,
 		((gFontPanelInfo.style & bold)!=0 ? ":b" : ""),
 		((gFontPanelInfo.style & italic)!=0 ? ":i" : ""),
@@ -1655,7 +1651,7 @@
     }
     else
     {
-	*outName = NULL;
+	*outName = NUL;
     }
 }
 #endif
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 112b91e..4396b46 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -191,7 +191,7 @@
 static HINSTANCE hinstRuby = 0; /* Instance of ruby.dll */
 
 /*
- * Table of name to function pointer of python.
+ * Table of name to function pointer of ruby.
  */
 #define RUBY_PROC FARPROC
 static struct
@@ -768,6 +768,24 @@
     return height;
 }
 
+static VALUE window_width(VALUE self)
+{
+    win_T *win = get_win(self);
+
+    return INT2NUM(win->w_width);
+}
+
+static VALUE window_set_width(VALUE self, VALUE width)
+{
+    win_T *win = get_win(self);
+    win_T *savewin = curwin;
+
+    curwin = win;
+    win_setwidth(NUM2INT(width));
+    curwin = savewin;
+    return width;
+}
+
 static VALUE window_cursor(VALUE self)
 {
     win_T *win = get_win(self);
@@ -860,6 +878,8 @@
     rb_define_method(cVimWindow, "buffer", window_buffer, 0);
     rb_define_method(cVimWindow, "height", window_height, 0);
     rb_define_method(cVimWindow, "height=", window_set_height, 1);
+    rb_define_method(cVimWindow, "width", window_width, 0);
+    rb_define_method(cVimWindow, "width=", window_set_width, 1);
     rb_define_method(cVimWindow, "cursor", window_cursor, 0);
     rb_define_method(cVimWindow, "cursor=", window_set_cursor, 1);
 
diff --git a/src/mbyte.c b/src/mbyte.c
index d446a5b..bf86b5e 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5788,11 +5788,6 @@
     return dlen;
 }
 
-#if defined(MACOS_X)
-/* This is in os_mac_conv.c. */
-extern char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, int from, int to, int *unconvlenp));
-#endif
-
 /*
  * Convert text "ptr[*lenp]" according to "vcp".
  * Returns the result in allocated memory and sets "*lenp".
diff --git a/src/normal.c b/src/normal.c
index ebf4008..e7cfad6 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -4678,6 +4678,18 @@
 								      == FAIL)
 			return;
 # endif
+		    if (ptr == NULL)
+		    {
+			pos_T	pos = curwin->w_cursor;
+			int	attr;
+
+			/* Find bad word under the cursor. */
+			len = spell_move_to(curwin, FORWARD, TRUE, TRUE, &attr);
+			if (len != 0 && curwin->w_cursor.col <= pos.col)
+			    ptr = ml_get_pos(&curwin->w_cursor);
+			curwin->w_cursor = pos;
+		    }
+
 		    if (ptr == NULL && (len = find_ident_under_cursor(&ptr,
 							    FIND_IDENT)) == 0)
 			return;
diff --git a/src/option.c b/src/option.c
index 98c0ad8..bbf564a 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2994,7 +2994,7 @@
 		    kLocaleRegionMask | kLocaleRegionVariantMask,
 		    sizeof buf, buf) == noErr && *buf)
 	{
-	    vim_setenv("LANG", buf);
+	    vim_setenv((char_u *)"LANG", (char_u *)buf);
 #   ifdef HAVE_LOCALE_H
 	    setlocale(LC_ALL, "");
 #   endif
diff --git a/src/os_mac_conv.c b/src/os_mac_conv.c
index c255e73..fbce577 100644
--- a/src/os_mac_conv.c
+++ b/src/os_mac_conv.c
@@ -17,17 +17,6 @@
 #include "vim.h"
 
 #ifdef FEAT_MBYTE
-extern char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, int from, int to, int *unconvlenp));
-extern int macroman2enc __ARGS((char_u *ptr, long *sizep, long real_size));
-extern int enc2macroman __ARGS((char_u *from, size_t fromlen, char_u *to, int *tolenp, int maxtolen, char_u *rest, int *restlenp));
-
-extern void	    mac_conv_init __ARGS((void));
-extern void	    mac_conv_cleanup __ARGS((void));
-extern char_u	    *mac_utf16_to_enc __ARGS((UniChar *from, size_t fromLen, size_t *actualLen));
-extern UniChar	    *mac_enc_to_utf16 __ARGS((char_u *from, size_t fromLen, size_t *actualLen));
-extern CFStringRef  mac_enc_to_cfstring __ARGS((char_u *from, size_t fromLen));
-extern char_u	    *mac_precompose_path __ARGS((char_u *decompPath, size_t decompLen, size_t *precompLen));
-
 static char_u	    *mac_utf16_to_utf8 __ARGS((UniChar *from, size_t fromLen, size_t *actualLen));
 static UniChar	    *mac_utf8_to_utf16 __ARGS((char_u *from, size_t fromLen, size_t *actualLen));
 
@@ -114,7 +103,7 @@
 
     if (!CFStringGetBytes(cfstr, convertRange, to, NULL, FALSE, retval, buflen, NULL))
 #endif
-    if (!CFStringGetCString(cfstr, retval, buflen, to))
+    if (!CFStringGetCString(cfstr, (char *)retval, buflen, to))
     {
 	CFRelease(cfstr);
 	if (fail_on_error)
@@ -140,14 +129,14 @@
 	    }
 	    else
 	    {
-		if (!CFStringGetCString(cfstr, d, buflen - out, to))
+		if (!CFStringGetCString(cfstr, (char *)d, buflen - out, to))
 		{
 		    *d++ = '?';
 		    out++;
 		}
 		else
 		{
-		    i = strlen(d);
+		    i = STRLEN(d);
 		    d += i;
 		    out += i;
 		}
@@ -162,7 +151,7 @@
     }
     CFRelease(cfstr);
     if (lenp != NULL)
-	*lenp = strlen(retval);
+	*lenp = STRLEN(retval);
 
     return retval;
 }
diff --git a/src/os_unix.c b/src/os_unix.c
index d567f90..7d32482 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -173,17 +173,6 @@
 static int  have_dollars __ARGS((int, char_u **));
 #endif
 
-#ifndef NO_EXPANDPATH
-# if defined(MACOS_X) && defined(FEAT_MBYTE)
-extern char_u	*mac_precompose_path __ARGS((char_u *decompPath, size_t decompLen, size_t *precompLen));
-# endif
-#endif
-
-#if defined(MACOS_X) && defined(FEAT_MBYTE)
-extern void	mac_conv_init __ARGS((void));
-extern void	mac_conv_cleanup __ARGS((void));
-#endif
-
 #ifndef __EMX__
 static int save_patterns __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file));
 #endif
diff --git a/src/proto.h b/src/proto.h
index 4c0db37..6116578 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -261,6 +261,10 @@
 # include "if_perlsfio.pro"
 #endif
 
+#if defined(FEAT_MBYTE) && defined(MACOS_X)
+# include "os_mac_conv.pro"
+#endif
+
 #ifdef __BORLANDC__
 # define _PROTO_H
 #endif
diff --git a/src/proto/gui_mac.pro b/src/proto/gui_mac.pro
index 933fe4d..c640351 100644
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -47,6 +47,7 @@
 guicolor_T gui_mch_get_color __ARGS((char_u *name));
 void gui_mch_set_fg_color __ARGS((guicolor_T color));
 void gui_mch_set_bg_color __ARGS((guicolor_T color));
+void gui_mch_set_sp_color __ARGS((guicolor_T color));
 void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
 int gui_mch_haskey __ARGS((char_u *name));
 void gui_mch_beep __ARGS((void));
diff --git a/src/proto/os_mac_conv.pro b/src/proto/os_mac_conv.pro
new file mode 100644
index 0000000..1ab9d28
--- /dev/null
+++ b/src/proto/os_mac_conv.pro
@@ -0,0 +1,10 @@
+extern char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, int from, int to, int *unconvlenp));
+extern int macroman2enc __ARGS((char_u *ptr, long *sizep, long real_size));
+extern int enc2macroman __ARGS((char_u *from, size_t fromlen, char_u *to, int *tolenp, int maxtolen, char_u *rest, int *restlenp));
+
+extern void	    mac_conv_init __ARGS((void));
+extern void	    mac_conv_cleanup __ARGS((void));
+extern char_u	    *mac_utf16_to_enc __ARGS((UniChar *from, size_t fromLen, size_t *actualLen));
+extern UniChar	    *mac_enc_to_utf16 __ARGS((char_u *from, size_t fromLen, size_t *actualLen));
+extern CFStringRef  mac_enc_to_cfstring __ARGS((char_u *from, size_t fromLen));
+extern char_u	    *mac_precompose_path __ARGS((char_u *decompPath, size_t decompLen, size_t *precompLen));
diff --git a/src/screen.c b/src/screen.c
index ba345ae..2c39ac7 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2939,6 +2939,10 @@
 		word_end = wp->w_cursor.col + len + 1;
 
 	    wp->w_cursor = pos;
+
+	    /* Need to restart syntax highlighting for this line. */
+	    if (has_syntax)
+		syntax_start(wp, lnum);
 	}
 #endif
     }
diff --git a/src/spell.c b/src/spell.c
index 2b04bf8..56c891d 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -375,7 +375,7 @@
     char_u	*sl_midword;	/* MIDWORD string or NULL */
 
     int		sl_compmax;	/* COMPOUNDMAX (default: MAXWLEN) */
-    int		sl_compminlen;	/* COMPOUNDMIN (default: MAXWLEN) */
+    int		sl_compminlen;	/* COMPOUNDMIN (default: 0) */
     int		sl_compsylmax;	/* COMPOUNDSYLMAX (default: MAXWLEN) */
     regprog_T	*sl_compprog;	/* COMPOUNDFLAGS turned into a regexp progrm
 				 * (NULL when no compounding) */
@@ -1299,7 +1299,7 @@
 		/* For multi-byte chars check character length against
 		 * COMPOUNDMIN. */
 		if (has_mbyte
-			&& slang->sl_compminlen < MAXWLEN
+			&& slang->sl_compminlen > 0
 			&& mb_charlen_len(mip->mi_word + mip->mi_compoff,
 				wlen - mip->mi_compoff) < slang->sl_compminlen)
 			continue;
@@ -1388,6 +1388,8 @@
 	    {
 		int	save_result = mip->mi_result;
 		char_u	*save_end = mip->mi_end;
+		langp_T	*save_lp = mip->mi_lp;
+		int	lpi;
 
 		/* Check that a valid word follows.  If there is one and we
 		 * are compounding, it will set "mi_result", thus we are
@@ -1417,25 +1419,43 @@
 #endif
 		c = mip->mi_compoff;
 		++mip->mi_complen;
-		find_word(mip, FIND_COMPOUND);
 
-		/* When NOBREAK any word that matches is OK.  Otherwise we
-		 * need to find the longest match, thus try with keep-case and
-		 * prefix too. */
-		if (!slang->sl_nobreak || mip->mi_result == SP_BAD)
+		/* For NOBREAK we need to try all NOBREAK languages, at least
+		 * to find the ".add" file(s). */
+		for (lpi = 0; lpi < mip->mi_buf->b_langp.ga_len; ++lpi)
 		{
-		    /* Find following word in keep-case tree. */
-		    mip->mi_compoff = wlen;
-		    find_word(mip, FIND_KEEPCOMPOUND);
+		    if (slang->sl_nobreak)
+		    {
+			mip->mi_lp = LANGP_ENTRY(mip->mi_buf->b_langp, lpi);
+			if (mip->mi_lp->lp_slang->sl_fidxs == NULL
+					 || !mip->mi_lp->lp_slang->sl_nobreak)
+			    continue;
+		    }
 
+		    find_word(mip, FIND_COMPOUND);
+
+		    /* When NOBREAK any word that matches is OK.  Otherwise we
+		     * need to find the longest match, thus try with keep-case
+		     * and prefix too. */
 		    if (!slang->sl_nobreak || mip->mi_result == SP_BAD)
 		    {
-			/* Check for following word with prefix. */
-			mip->mi_compoff = c;
-			find_prefix(mip, FIND_COMPOUND);
+			/* Find following word in keep-case tree. */
+			mip->mi_compoff = wlen;
+			find_word(mip, FIND_KEEPCOMPOUND);
+
+			if (!slang->sl_nobreak || mip->mi_result == SP_BAD)
+			{
+			    /* Check for following word with prefix. */
+			    mip->mi_compoff = c;
+			    find_prefix(mip, FIND_COMPOUND);
+			}
 		    }
+
+		    if (!slang->sl_nobreak)
+			break;
 		}
 		--mip->mi_complen;
+		mip->mi_lp = save_lp;
 
 		if (slang->sl_nobreak)
 		{
@@ -2037,6 +2057,13 @@
     }
 }
 
+typedef struct spelload_S
+{
+    char_u  sl_lang[MAXWLEN + 1];	/* language name */
+    slang_T *sl_slang;			/* resulting slang_T struct */
+    int	    sl_nobreak;			/* NOBREAK language found */
+} spelload_T;
+
 /*
  * Load word list(s) for "lang" from Vim spell file(s).
  * "lang" must be the language without the region: e.g., "en".
@@ -2047,35 +2074,37 @@
 {
     char_u	fname_enc[85];
     int		r;
-    char_u	langcp[MAXWLEN + 1];
+    spelload_T	sl;
 
     /* Copy the language name to pass it to spell_load_cb() as a cookie.
      * It's truncated when an error is detected. */
-    STRCPY(langcp, lang);
+    STRCPY(sl.sl_lang, lang);
+    sl.sl_slang = NULL;
+    sl.sl_nobreak = FALSE;
 
     /*
      * Find the first spell file for "lang" in 'runtimepath' and load it.
      */
     vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5,
 					"spell/%s.%s.spl", lang, spell_enc());
-    r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &langcp);
+    r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
 
-    if (r == FAIL && *langcp != NUL)
+    if (r == FAIL && *sl.sl_lang != NUL)
     {
 	/* Try loading the ASCII version. */
 	vim_snprintf((char *)fname_enc, sizeof(fname_enc) - 5,
 						  "spell/%s.ascii.spl", lang);
-	r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &langcp);
+	r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
     }
 
     if (r == FAIL)
 	smsg((char_u *)_("Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""),
 						     lang, spell_enc(), lang);
-    else if (*langcp != NUL)
+    else if (sl.sl_slang != NULL)
     {
-	/* Load all the additions. */
+	/* At least one file was loaded, now load all the additions. */
 	STRCPY(fname_enc + STRLEN(fname_enc) - 3, "add.spl");
-	do_in_runtimepath(fname_enc, TRUE, spell_load_cb, &langcp);
+	do_in_runtimepath(fname_enc, TRUE, spell_load_cb, &sl);
     }
 }
 
@@ -2122,7 +2151,6 @@
 	lp->sl_name = vim_strsave(lang);
 	ga_init2(&lp->sl_rep, sizeof(fromto_T), 10);
 	lp->sl_compmax = MAXWLEN;
-	lp->sl_compminlen = MAXWLEN;
 	lp->sl_compsylmax = MAXWLEN;
     }
     return lp;
@@ -2237,7 +2265,7 @@
 #endif
 
     lp->sl_compmax = MAXWLEN;
-    lp->sl_compminlen = MAXWLEN;
+    lp->sl_compminlen = 0;
     lp->sl_compsylmax = MAXWLEN;
     lp->sl_regions[0] = NUL;
 }
@@ -2249,9 +2277,23 @@
     static void
 spell_load_cb(fname, cookie)
     char_u	*fname;
-    void	*cookie;	    /* points to the language name */
+    void	*cookie;
 {
-    (void)spell_load_file(fname, (char_u *)cookie, NULL, FALSE);
+    spelload_T	*slp = (spelload_T *)cookie;
+    slang_T	*slang;
+
+    slang = spell_load_file(fname, slp->sl_lang, NULL, FALSE);
+    if (slang != NULL)
+    {
+	/* When a previously loaded file has NOBREAK also use it for the
+	 * ".add" files. */
+	if (slp->sl_nobreak && slang->sl_add)
+	    slang->sl_nobreak = TRUE;
+	else if (slang->sl_nobreak)
+	    slp->sl_nobreak = TRUE;
+
+	slp->sl_slang = slang;
+    }
 }
 
 /*
@@ -2941,7 +2983,7 @@
     --todo;
     c = getc(fd);					/* <compminlen> */
     if (c < 1)
-	c = MAXWLEN;
+	c = 0;
     slang->sl_compminlen = c;
 
     --todo;
@@ -3508,6 +3550,7 @@
     char_u	*spf;
     char_u	*use_region = NULL;
     int		dont_use_region = FALSE;
+    int		nobreak = FALSE;
 
     ga_init2(&ga, sizeof(langp_T), 2);
     clear_midword(buf);
@@ -3624,6 +3667,8 @@
 		    LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask;
 		    ++ga.ga_len;
 		    use_midword(lp, buf);
+		    if (lp->sl_nobreak)
+			nobreak = TRUE;
 		}
 	    }
     }
@@ -3678,6 +3723,11 @@
 		    *p = NUL;	/* truncate at ".encoding.add" */
 	    }
 	    lp = spell_load_file(spf_name, lang, NULL, TRUE);
+
+	    /* If one of the languages has NOBREAK we assume the addition
+	     * files also have this. */
+	    if (lp != NULL && nobreak)
+		lp->sl_nobreak = TRUE;
 	}
 	if (lp != NULL && ga_grow(&ga, 1) == OK)
 	{
@@ -5229,8 +5279,6 @@
 	STRCPY(p, spin->si_compflags);
 	STRCAT(p, "/");
     }
-    else
-	*p = NUL;
     spin->si_compflags = p;
     tp = p + STRLEN(p);
 
@@ -7703,37 +7751,55 @@
     char_u	*fname;
     char_u	*rtp;
     char_u	*lend;
+    int		aspath = FALSE;
+    char_u	*lstart = curbuf->b_p_spl;
 
     if (*curbuf->b_p_spl != NUL && curbuf->b_langp.ga_len > 0)
     {
-	/* Find the end of the language name.  Exclude the region. */
+	/* Find the end of the language name.  Exclude the region.  If there
+	 * is a path separator remember the start of the tail. */
 	for (lend = curbuf->b_p_spl; *lend != NUL
 			&& vim_strchr((char_u *)",._", *lend) == NULL; ++lend)
-	    ;
+	    if (vim_ispathsep(*lend))
+	    {
+		aspath = TRUE;
+		lstart = lend + 1;
+	    }
 
 	/* Loop over all entries in 'runtimepath'.  Use the first one where we
 	 * are allowed to write. */
 	rtp = p_rtp;
 	while (*rtp != NUL)
 	{
-	    /* Copy the path from 'runtimepath' to buf[]. */
-	    copy_option_part(&rtp, buf, MAXPATHL, ",");
+	    if (aspath)
+		/* Use directory of an entry with path, e.g., for
+		 * "/dir/lg.utf-8.spl" use "/dir". */
+		vim_strncpy(buf, curbuf->b_p_spl, lstart - curbuf->b_p_spl - 1);
+	    else
+		/* Copy the path from 'runtimepath' to buf[]. */
+		copy_option_part(&rtp, buf, MAXPATHL, ",");
 	    if (filewritable(buf) == 2)
 	    {
 		/* Use the first language name from 'spelllang' and the
 		 * encoding used in the first loaded .spl file. */
-		fname = LANGP_ENTRY(curbuf->b_langp, 0)->lp_slang->sl_fname;
-		if (fname == NULL)
-		    break;
+		if (aspath)
+		    vim_strncpy(buf, curbuf->b_p_spl, lend - curbuf->b_p_spl);
+		else
+		{
+		    l = STRLEN(buf);
+		    vim_snprintf((char *)buf + l, MAXPATHL - l,
+				 "/spell/%.*s", (int)(lend - lstart), lstart);
+		}
 		l = STRLEN(buf);
-		vim_snprintf((char *)buf + l, MAXPATHL - l,
-			"/spell/%.*s.%s.add",
-			(int)(lend - curbuf->b_p_spl), curbuf->b_p_spl,
-			strstr((char *)gettail(fname), ".ascii.") != NULL
-					   ? (char_u *)"ascii" : spell_enc());
+		fname = LANGP_ENTRY(curbuf->b_langp, 0)->lp_slang->sl_fname;
+		vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
+			fname != NULL
+			  && strstr((char *)gettail(fname), ".ascii.") != NULL
+				       ? (char_u *)"ascii" : spell_enc());
 		set_option_value((char_u *)"spellfile", 0L, buf, OPT_LOCAL);
 		break;
 	    }
+	    aspath = FALSE;
 	}
     }
 }
@@ -9293,7 +9359,7 @@
 			/* For multi-byte chars check character length against
 			 * COMPOUNDMIN. */
 			if (has_mbyte
-				&& slang->sl_compminlen < MAXWLEN
+				&& slang->sl_compminlen > 0
 				&& mb_charlen(tword + sp->ts_splitoff)
 						       < slang->sl_compminlen)
 			    break;
@@ -9430,7 +9496,7 @@
 						      >= slang->sl_compminlen
 #ifdef FEAT_MBYTE
 			    && (!has_mbyte
-				|| slang->sl_compminlen == MAXWLEN
+				|| slang->sl_compminlen == 0
 				|| mb_charlen(tword + sp->ts_splitoff)
 						      >= slang->sl_compminlen)
 #endif
@@ -9470,7 +9536,12 @@
 		    if (!try_compound && !fword_ends)
 		    {
 			/* If we're going to split need to check that the
-			 * words so far are valid for compounding. */
+			 * words so far are valid for compounding.  If there
+			 * is only one word it must not have the NEEDCOMPOUND
+			 * flag. */
+			if (sp->ts_complen == sp->ts_compsplit
+						     && (flags & WF_NEEDCOMP))
+			    break;
 			p = preword;
 			while (*skiptowhite(p) != NUL)
 			    p = skipwhite(skiptowhite(p));
@@ -9576,7 +9647,11 @@
 	    case STATE_ENDNUL:
 		/* Past the NUL bytes in the node. */
 		su->su_badflags = sp->ts_save_badflags;
-		if (fword[sp->ts_fidx] == NUL)
+		if (fword[sp->ts_fidx] == NUL
+#ifdef FEAT_MBYTE
+			&& sp->ts_tcharlen == 0
+#endif
+		   )
 		{
 		    /* The badword ends, can't use the bytes in this node. */
 		    sp->ts_state = STATE_DEL;
diff --git a/src/testdir/test58.in b/src/testdir/test58.in
index 8bb58bf..b3902f1 100644
--- a/src/testdir/test58.in
+++ b/src/testdir/test58.in
@@ -93,6 +93,9 @@
 :" Compound words
 :call TestOne('3', '3')
 :call TestOne('4', '4')
+:call TestOne('5', '5')
+:call TestOne('6', '6')
+:call TestOne('7', '7')
 :"
 gg:/^test output:/,$wq! test.out
 ENDTEST
@@ -474,4 +477,123 @@
  	startwordwordwordwordend borkpreborkpreborkbork
 badend
 
+Test affix flags with two characters
+
+5affstart
+SET ISO8859-1
+
+FLAG long
+
+NEEDAFFIX !!
+
+COMPOUNDFLAGS ssmm*ee
+
+NEEDCOMPOUND xx
+
+SFX 13 Y 1
+SFX 13 0 bork .
+
+SFX a1 Y 1
+SFX a1 0 a1 .
+
+SFX aé Y 1
+SFX aé 0 aé .
+
+PFX zz Y 1
+PFX zz 0 pre .
+5affend
+
+5dicstart
+1234
+foo/a1aé!!
+bar/zz13ee
+start/ss
+end/ee
+middle/mmxx
+5dicend
+
+5good: fooa1 fooaé bar prebar barbork prebarbork  startprebar
+      start end startend  startmiddleend
+bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
+	startprobar
+badend
+
+6affstart
+SET ISO8859-1
+
+FLAG caplong
+
+NEEDAFFIX A!
+
+COMPOUNDFLAGS sMm*Ee
+
+NEEDCOMPOUND Xx
+
+SFX N3 Y 1
+SFX N3 0 bork .
+
+SFX A1 Y 1
+SFX A1 0 a1 .
+
+SFX Aé Y 1
+SFX Aé 0 aé .
+
+PFX Zz Y 1
+PFX Zz 0 pre .
+6affend
+
+6dicstart
+1234
+mee/A1AéA!
+bar/ZzN3Ee
+lead/s
+end/Ee
+middle/MmXx
+6dicend
+
+6good: meea1 meeaé bar prebar barbork prebarbork  leadprebar
+      lead end leadend  leadmiddleend
+bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
+	leadprobar
+badend
+
+7affstart
+SET ISO8859-1
+
+FLAG num
+
+NEEDAFFIX 9999
+
+COMPOUNDFLAGS 2,77*123
+
+NEEDCOMPOUND 1
+
+SFX 61003 Y 1
+SFX 61003 0 meat .
+
+SFX 391 Y 1
+SFX 391 0 a1 .
+
+SFX 111 Y 1
+SFX 111 0 aé .
+
+PFX 17 Y 1
+PFX 17 0 pre .
+7affend
+
+7dicstart
+1234
+mee/391,111,9999
+bar/17,61003,123
+lead/2
+tail/123
+middle/77,1
+7dicend
+
+7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebar
+      lead tail leadtail  leadmiddletail
+bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
+	leadprobar
+badend
+
 test output:
diff --git a/src/testdir/test58.ok b/src/testdir/test58.ok
index 67f1f9c..9fba6bc 100644
--- a/src/testdir/test58.ok
+++ b/src/testdir/test58.ok
@@ -105,19 +105,19 @@
 foomï
 ['foo mï', 'foo', 'foofoo']
 barmï
-['bar mï', 'barfoo', 'barbar']
+['barfoo', 'barbar', 'mï']
 mïfoo
 ['mï foo', 'foo', 'foofoo']
 mïbar
 ['foobar', 'barbar', 'mï']
 mïmï
-['mï mï', 'mï', 'la mï']
+['mï mï', 'mï']
 lala
-['la mï']
+[]
 mïla
 ['mï', 'mï mï']
 lamï
-['la mï', 'mï', 'mï mï']
+['mï', 'mï mï']
 foola
 ['foo', 'foobar', 'foofoo']
 labar
@@ -160,3 +160,99 @@
 ['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
 borkpreborkpreborkbork
 ['borkpreborkprebork bork', 'borkprebork preborkbork', 'bork preborkpreborkbork']
+
+test 5-5
+# file: Xtest.latin1.spl
+bar
+barbork
+end
+fooa1
+fooaé
+prebar
+prebarbork
+start
+-------
+bad
+['bar', 'end', 'fooa1']
+foo
+['fooa1', 'fooaé', 'bar']
+fooa2
+['fooa1', 'fooaé', 'bar']
+prabar
+['prebar', 'bar', 'bar bar']
+probarbirk
+['prebarbork']
+middle
+[]
+startmiddle
+['startmiddleend']
+middleend
+[]
+endstart
+['end start', 'start']
+startprobar
+['startprebar', 'start prebar', 'startbar']
+
+test 6-6
+# file: Xtest.latin1.spl
+bar
+barbork
+end
+lead
+meea1
+meeaé
+prebar
+prebarbork
+-------
+bad
+['bar', 'end', 'lead']
+mee
+['meea1', 'meeaé', 'bar']
+meea2
+['meea1', 'meeaé', 'lead']
+prabar
+['prebar', 'leadbar', 'bar']
+probarbirk
+['prebarbork']
+middle
+[]
+leadmiddle
+['leadmiddleend']
+middleend
+[]
+endlead
+['end lead', 'lead', 'end end']
+leadprobar
+['leadprebar', 'lead prebar', 'leadbar']
+
+test 7-7
+# file: Xtest.latin1.spl
+bar
+barmeat
+lead
+meea1
+meeaé
+prebar
+prebarmeat
+tail
+-------
+bad
+['bar', 'lead', 'tail']
+mee
+['meea1', 'meeaé', 'bar']
+meea2
+['meea1', 'meeaé', 'lead']
+prabar
+['prebar', 'leadbar', 'bar']
+probarmaat
+['prebarmeat']
+middle
+[]
+leadmiddle
+[]
+middletail
+[]
+taillead
+['tail lead', 'tail']
+leadprobar
+['leadprebar', 'lead prebar', 'leadbar']
diff --git a/src/testdir/test59.in b/src/testdir/test59.in
index aab48ae..a2dcc89 100644
--- a/src/testdir/test59.in
+++ b/src/testdir/test59.in
@@ -97,6 +97,9 @@
 :" Compound words
 :call TestOne('3', '3')
 :call TestOne('4', '4')
+:call TestOne('5', '5')
+:call TestOne('6', '6')
+:call TestOne('7', '7')
 :"
 gg:/^test output:/,$wq! test.out
 ENDTEST
@@ -478,4 +481,127 @@
 test2:
 elequint test elekwint test elekwent asdf
 
+Test affix flags with two characters
+
+5affstart
+SET ISO8859-1
+
+FLAG long
+
+NEEDAFFIX !!
+
+COMPOUNDFLAGS ssmm*ee
+
+NEEDCOMPOUND xx
+
+SFX 13 Y 1
+SFX 13 0 bork .
+
+SFX a1 Y 1
+SFX a1 0 a1 .
+
+SFX aé Y 1
+SFX aé 0 aé .
+
+PFX zz Y 1
+PFX zz 0 pre .
+5affend
+
+5dicstart
+1234
+foo/a1aé!!
+bar/zz13ee
+start/ss
+end/ee
+middle/mmxx
+5dicend
+
+5good: fooa1 fooaé bar prebar barbork prebarbork  startprebar
+      start end startend  startmiddleend
+bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
+	startprobar
+badend
+
+6affstart
+SET ISO8859-1
+
+FLAG caplong
+
+NEEDAFFIX A!
+
+COMPOUNDFLAGS sMm*Ee
+
+NEEDCOMPOUND Xx
+
+SFX N3 Y 1
+SFX N3 0 bork .
+
+SFX A1 Y 1
+SFX A1 0 a1 .
+
+SFX Aé Y 1
+SFX Aé 0 aé .
+
+PFX Zz Y 1
+PFX Zz 0 pre .
+6affend
+
+6dicstart
+1234
+mee/A1AéA!
+bar/ZzN3Ee
+lead/s
+end/Ee
+middle/MmXx
+6dicend
+
+6good: meea1 meeaé bar prebar barbork prebarbork  leadprebar
+      lead end leadend  leadmiddleend
+bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
+	leadprobar
+badend
+
+7affstart
+SET ISO8859-1
+
+FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
+FLAG num
+
+NEEDAFFIX 9999
+
+COMPOUNDFLAGS 2,77*123
+
+NEEDCOMPOUND 1
+
+SFX 61003 Y 1
+SFX 61003 0 meat .
+
+SFX 391 Y 1
+SFX 391 0 a1 .
+
+SFX 111 Y 1
+SFX 111 0 aé .
+
+PFX 17 Y 1
+PFX 17 0 pre .
+7affend
+
+7dicstart
+1234
+mee/391,111,9999
+bar/17,61003,123
+lead/2
+tail/123
+middle/77,1
+7dicend
+
+7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebar
+      lead tail leadtail  leadmiddletail
+bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
+	leadprobar
+badend
+
 test output:
diff --git a/src/testdir/test59.ok b/src/testdir/test59.ok
index e09eaac..c37ecb8 100644
--- a/src/testdir/test59.ok
+++ b/src/testdir/test59.ok
@@ -101,23 +101,23 @@
 bar
 ['foobar', 'foo', 'mï']
 la
-['foo', 'mï']
+['mï', 'foo']
 foomï
 ['foo mï', 'foo', 'foofoo']
 barmï
-['bar mï', 'barfoo', 'barbar']
+['barfoo', 'barbar', 'mï']
 mïfoo
 ['mï foo', 'foo', 'foofoo']
 mïbar
 ['foobar', 'barbar', 'mï']
 mïmï
-['mï mï', 'mï', 'la mï']
+['mï mï', 'mï']
 lala
 []
 mïla
-['mï']
+['mï', 'mï mï']
 lamï
-['la mï', 'mï', 'mï mï']
+['mï', 'mï mï']
 foola
 ['foo', 'foobar', 'foofoo']
 labar
@@ -160,3 +160,99 @@
 ['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
 borkpreborkpreborkbork
 ['borkpreborkprebork bork', 'borkprebork preborkbork', 'bork preborkpreborkbork']
+
+test 5-5
+# file: Xtest.utf-8.spl
+bar
+barbork
+end
+fooa1
+fooaé
+prebar
+prebarbork
+start
+-------
+bad
+['bar', 'end', 'fooa1']
+foo
+['fooa1', 'fooaé', 'bar']
+fooa2
+['fooa1', 'fooaé', 'bar']
+prabar
+['prebar', 'bar', 'bar bar']
+probarbirk
+['prebarbork']
+middle
+[]
+startmiddle
+['startmiddleend']
+middleend
+[]
+endstart
+['end start', 'start']
+startprobar
+['startprebar', 'start prebar', 'startbar']
+
+test 6-6
+# file: Xtest.utf-8.spl
+bar
+barbork
+end
+lead
+meea1
+meeaé
+prebar
+prebarbork
+-------
+bad
+['bar', 'end', 'lead']
+mee
+['meea1', 'meeaé', 'bar']
+meea2
+['meea1', 'meeaé', 'lead']
+prabar
+['prebar', 'leadbar', 'bar']
+probarbirk
+['prebarbork']
+middle
+[]
+leadmiddle
+['leadmiddleend']
+middleend
+[]
+endlead
+['end lead', 'lead', 'end end']
+leadprobar
+['leadprebar', 'lead prebar', 'leadbar']
+
+test 7-7
+# file: Xtest.utf-8.spl
+bar
+barmeat
+lead
+meea1
+meeaé
+prebar
+prebarmeat
+tail
+-------
+bad
+['bar', 'lead', 'tail']
+mee
+['meea1', 'meeaé', 'bar']
+meea2
+['meea1', 'meeaé', 'lead']
+prabar
+['prebar', 'leadbar', 'bar']
+probarmaat
+['prebarmeat']
+middle
+[]
+leadmiddle
+[]
+middletail
+[]
+taillead
+['tail lead', 'tail']
+leadprobar
+['leadprebar', 'lead prebar', 'leadbar']
diff --git a/src/version.h b/src/version.h
index 2317c87..2ea46ab 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 29)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 29, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 30)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 30, compiled "