changeset 501:ce2181d14aa0 v7.0139

updated for version 7.0139
author vimboss
date Tue, 30 Aug 2005 21:55:26 +0000
parents 4772a5e3f9fa
children 52e76e2b5b65
files Filelist runtime/doc/filetype.txt runtime/doc/indent.txt runtime/doc/pi_netrw.txt runtime/doc/spell.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt src/fileio.c src/gui_mac.c src/if_ruby.c src/mbyte.c src/normal.c src/option.c src/os_mac_conv.c src/os_unix.c src/proto.h src/proto/gui_mac.pro src/proto/os_mac_conv.pro src/screen.c src/spell.c src/testdir/test58.in src/testdir/test58.ok src/testdir/test59.in src/testdir/test59.ok src/version.h
diffstat 26 files changed, 923 insertions(+), 377 deletions(-) [+]
line wrap: on
line diff
--- a/Filelist
+++ b/Filelist
@@ -377,6 +377,7 @@ SRC_MAC =	\
 		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 =	\
--- 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 @@ Detail: The ":filetype on" command will 
 	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 @@ kind of file it is.  This doesn't always
 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. Overrule the settings after loading t
 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 @@ under it.  If not found, a new entry and
 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 @@ Options:
 '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 @@ Local mappings:
 	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-]		Jump to the manual page for the 
 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|.
--- 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 @@ option.  Setting the 'indentkeys' option
 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 @@ source form, whereas they are not indent
 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 @@ to get do loops indented in .f90 files a
 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 @@ Indent for a continuation line: >
 	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 @@ In addition, you can turn the verbose mo
 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: >
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -904,7 +904,7 @@ One may rename a block of files and dire
 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 @@ Pressing "q" will list the bookmarked di
 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.
--- 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 @@ To add words to your own word list:				*
 
 							*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
--- 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 @@ Unix shell: >
    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_obsolete_ok		obsolete keywords are 
 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 @@ Even on a slow (90Mhz) PC this mode work
 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 @@ will install syntax perl highlighting fo
 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 @@ server version, by default for 1.3.x.  S
 <
 
 		*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_ctx_outside_macro	contexts outside 
 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 @@ For Visual Basic use: >
 	: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 @@ otherwise "vb".  Files with the ".frm" e
 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 @@ an the "after" directory in 'runtimepath
     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 @@ of C or C++: >
 	: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_comment_string	like c_comment_stri
 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 @@ Or to avoid the highlighting: >
 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 @@ To disable it again, use this: >
 	: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 @@ comment highlighting, add the following 
 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 @@ will be classified as tcsh, UNLESS the "
 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 @@ To disable these again, use this: >
 	: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 @@ startup vimrc: >
    :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 @@ to standard by placing this in your vimr
 	: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 @@ line to your startup file: >
 	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 @@ or: >
 	: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 @@ If this variable is undefined or zero, b
 
 
 
-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 @@ delimiters % and ;.  This can be turned 
 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 @@ Finally, some vendors support hexadecima
 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 @@ your .vimrc: >
 	: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 @@ gvim display.  Here, statements are colo
 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 @@ Parenthesis checking does not catch too 
 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|.
-
-
-FVWM CONFIGURATION FILES			*fvwm.vim* *fvwm-syntax*
+For further information related to fortran, see |ft-fortran-indent| and
+|ft-fortran-plugin|.
+
+
+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 @@ in /usr/X11/lib/X11/, you should add the
 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 @@ The backticks for inline java are highli
 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 @@ filetype from a |modeline| or in a perso
 (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 @@ set before turning syntax highlighting o
 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 @@ Now you just need to make sure that you 
 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 @@ Lastly, it should be noted that the open
 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 @@ To have *.inc files be recognized as IA6
 	: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 @@ startup sequence: >
 	: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 @@ displayed line.  The default value is 10
 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 @@ define the vim variable 'lace_case_insen
 	: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 @@ may be changed by the user if s/he is ex
 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 @@ set "lite_minlines" to the value you des
 	: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 @@ uLPC has been developed to Pike, so you 
 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 @@ programming in Lua 4.0, use this: >
 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 @@ with short headers, you can change this 
     :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 @@ feature off by using: >
 	: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 @@ 1, also in their .vimrc file (prior to s
   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 @@ have the following in your .vimrc: >
 	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 @@ An example of adding sprintf() to the li
 	: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 @@ set "msql_minlines" to the value you des
 	: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 @@ errors, use this: >
 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 @@ Finally, there is a |groff.vim| syntax f
 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 @@ prevents highlighting of "end" as error,
 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 @@ The newest version of the papp.vim synta
 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 @@ will be highlighted as Error. >
 
 
 
-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 @@ If you want to fold blocks in if stateme
 	: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 at least x lines backwards
 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 @@ This syntax file has the options:
   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 @@ set "phtml_minlines" to the value you de
 	: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 @@ postscr_andornot_binary as follows: >
 	: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 @@ internal variable to a larger number: >
 (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 @@ Pascal.  Use this if you don't use assem
    :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 @@ preceding three options): >
 	: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 @@ Any combination of these three variables
 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 @@ This will add highlighting for the comma
 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 @@ displayed line.  The default value is 10
 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 @@ This will prevent highlighting of specia
 "$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 @@ Also scheme.vim supports keywords of the
 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 @@ The indentation is probably also incompl
 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 @@ Bugs:
   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 @@ vimrc file: >
 (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 @@ The default is to use the twice sh_minli
 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 @@ fast enough, you can increase minlines a
 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 @@ If you want to use the Informix dialect,
     :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 @@ displayed line.  The default value is 15
 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 @@ Putting "let g:tex_stylish=1" into your 
 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 @@ set "tf_minlines" to the value you desir
 	: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 @@ for external scripting languages (curren
 					 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 @@ Note that spaces and underscores in opti
 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 @@ Note: syntax folding might slow down syn
 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,
--- 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 @@ 90.5	usr_90.txt	/*90.5*
 :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 @@ a`	motion.txt	/*a`*
 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	intro.txt	/*alt*
 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 @@ arglist-quit	usr_07.txt	/*arglist-quit*
 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-patterns	autocmd.txt	/*autocmd-p
 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 @@ balloon-eval	debugger.txt	/*balloon-eval
 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 @@ byte2line()	eval.txt	/*byte2line()*
 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-interrupt	eval.txt	/*catch-interru
 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.1	version6.txt	/*changed-6.1*
 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_from-variable	eval.txt	/*cha
 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-window	cmdline.txt	/*cmdline-win
 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 @@ cscopequickfix	if_cscop.txt	/*cscopequic
 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_left	intro.txt	/*cursor_left*
 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-maintain	develop.txt	/*design-mai
 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-default	digraph.txt	/*digraphs-
 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 @@ diw	motion.txt	/*diw*
 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-standard-mappings	os_dos.txt	/*dos-s
 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 @@ dp	diff.txt	/*dp*
 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 @@ edit-no-break	usr_25.txt	/*edit-no-break
 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 @@ encryption	editing.txt	/*encryption*
 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 @@ font-sizes	gui_x11.txt	/*font-sizes*
 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-list	usr_41.txt	/*function-list
 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 @@ gr	change.txt	/*gr*
 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 @@ hangulin.txt	hangulin.txt	/*hangulin.txt
 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	howto.txt	/*howto*
 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_backspacing	insert.txt	/*i_backspacing
 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	index.txt	/*index*
 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 @@ i}	motion.txt	/*i}*
 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-plus	intro.txt	/*keypad-plus*
 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 @@ left-right-motions	motion.txt	/*left-rig
 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-identity	eval.txt	/*list-identity*
 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 @@ locale-name	mbyte.txt	/*locale-name*
 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 @@ mac-vimfile	os_mac.txt	/*mac-vimfile*
 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_lhs	map.txt	/*map_space_in_
 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 @@ matchend()	eval.txt	/*matchend()*
 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 @@ minimal-features	os_msdos.txt	/*minimal-
 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 @@ modeless-selection	gui.txt	/*modeless-se
 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-mode	gui_w32.txt	/*msdos-mode*
 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-vim	if_mzsch.txt	/*mzscheme-vim
 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-functions	netbeans.txt	/*nb-functions
 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-D	pi_netrw.txt	/*netrw-D*
 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-history	pi_netrw.txt	/*netrw-histo
 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 @@ not-edited	editing.txt	/*not-edited*
 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-motions	motion.txt	/*object-motio
 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-up	intro.txt	/*page-up*
 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-compiling	if_perl.txt	/*perl-compil
 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 @@ pfn-option	print.txt	/*pfn-option*
 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 @@ ports-6	version6.txt	/*ports-6*
 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 @@ prevnonblank()	eval.txt	/*prevnonblank()
 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 @@ profile	repeat.txt	/*profile*
 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-current	if_pyth.txt	/*python-curr
 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	os_qnx.txt	/*qnx*
 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-messages	insert.txt	/*read-messages
 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 @@ restricted-mode	starting.txt	/*restricte
 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-evaluate	if_ruby.txt	/*ruby-evaluat
 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 @@ s<CR>	change.txt	/*s<CR>*
 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 @@ scroll.txt	scroll.txt	/*scroll.txt*
 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-range	pattern.txt	/*search-range*
 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 @@ setreg()	eval.txt	/*setreg()*
 setting-guifont	gui.txt	/*setting-guifont*
 setwinvar()	eval.txt	/*setwinvar()*
 sftp	pi_netrw.txt	/*sftp*
-sgml-syntax	syntax.txt	/*sgml-syntax*
 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 @@ soundfold()	eval.txt	/*soundfold()*
 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-COMPOUNDFLAGS	spell.txt	/*spell-CO
 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	sponsor.txt	/*sponsor*
 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-expr	if_tcl.txt	/*tcl-window-
 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-changed	version4.txt	/*termcap-c
 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-math	syntax.txt	/*tex-math*
 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	various.txt	/*various*
 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-announce	intro.txt	/*vim-announce*
 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 @@ x-resources	version5.txt	/*x-resources*
 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	mbyte.txt	/*xim*
 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*
--- 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 @@ be worked on, but only if you sponsor Vi
 							*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?
-
-- "zg" doesn't work for Thai?
-
-- Compound word is accepted if nr of words is <= COMPOUNDMAX OR nr of
-  syllables <= COMPOUNDSYLMAX.  Specify 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".
-
-- 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?
+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.
 
-- 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
+cmdline_at_end() and cmdline_overstrike() may not be used.
 
-- Implement multiple flags for compound words and CMP item?
-  Await comments from other spell checking authors.
+Ruby: documentation for window width (Wind)
 
-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 @@ 7   When Vim detects a file is being edi
 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
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1515,8 +1515,6 @@ retry:
 # 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 @@ buf_write_bytes(ip)
 	     */
 	    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)
 	    {
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -94,10 +94,6 @@ static EventHandlerUPP mouseWheelHandler
 #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 @@ InstallFontPanelHandler()
  */
 #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 @@ GetFontPanelSelection(char_u* outName)
 	 * 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 @@ GetFontPanelSelection(char_u* outName)
     }
     else
     {
-	*outName = NULL;
+	*outName = NUL;
     }
 }
 #endif
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -191,7 +191,7 @@ static int (*dll_rb_w32_snprintf)(char*,
 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 @@ static VALUE window_set_height(VALUE sel
     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 @@ static void ruby_vim_init(void)
     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);
 
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5788,11 +5788,6 @@ convert_input_safe(ptr, len, maxlen, res
     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".
--- a/src/normal.c
+++ b/src/normal.c
@@ -4678,6 +4678,18 @@ dozet:
 								      == 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;
--- a/src/option.c
+++ b/src/option.c
@@ -2994,7 +2994,7 @@ set_init_1()
 		    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
--- 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 @@ mac_string_convert(ptr, len, lenp, fail_
 
     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 @@ mac_string_convert(ptr, len, lenp, fail_
 	    }
 	    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 @@ mac_string_convert(ptr, len, lenp, fail_
     }
     CFRelease(cfstr);
     if (lenp != NULL)
-	*lenp = strlen(retval);
+	*lenp = STRLEN(retval);
 
     return retval;
 }
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -173,17 +173,6 @@ static int  have_wildcard __ARGS((int, c
 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
--- a/src/proto.h
+++ b/src/proto.h
@@ -261,6 +261,10 @@ extern char *vim_SelFile __ARGS((Widget 
 # include "if_perlsfio.pro"
 #endif
 
+#if defined(FEAT_MBYTE) && defined(MACOS_X)
+# include "os_mac_conv.pro"
+#endif
+
 #ifdef __BORLANDC__
 # define _PROTO_H
 #endif
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -47,6 +47,7 @@ void gui_mch_free_font __ARGS((GuiFont f
 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));
new file mode 100644
--- /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));
--- a/src/screen.c
+++ b/src/screen.c
@@ -2939,6 +2939,10 @@ win_line(wp, lnum, startrow, endrow)
 		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
     }
--- a/src/spell.c
+++ b/src/spell.c
@@ -375,7 +375,7 @@ struct slang_S
     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 @@ find_word(mip, mode)
 		/* 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 @@ find_word(mip, mode)
 	    {
 		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 @@ find_word(mip, mode)
 #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)
-		{
-		    /* Find following word in keep-case tree. */
-		    mip->mi_compoff = wlen;
-		    find_word(mip, FIND_KEEPCOMPOUND);
-
+
+		/* 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)
+		{
+		    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 @@ spell_cat_line(buf, line, maxlen)
     }
 }
 
+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 @@ spell_load_lang(lang)
 {
     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);
-
-    if (r == FAIL && *langcp != NUL)
+    r = do_in_runtimepath(fname_enc, FALSE, spell_load_cb, &sl);
+
+    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)
-    {
-	/* Load all the additions. */
+    else if (sl.sl_slang != NULL)
+    {
+	/* 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 @@ slang_alloc(lang)
 	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 @@ slang_clear(lp)
 #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 @@ slang_clear(lp)
     static void
 spell_load_cb(fname, cookie)
     char_u	*fname;
-    void	*cookie;	    /* points to the language name */
-{
-    (void)spell_load_file(fname, (char_u *)cookie, NULL, FALSE);
+    void	*cookie;
+{
+    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 @@ read_compound(fd, slang, len)
     --todo;
     c = getc(fd);					/* <compminlen> */
     if (c < 1)
-	c = MAXWLEN;
+	c = 0;
     slang->sl_compminlen = c;
 
     --todo;
@@ -3508,6 +3550,7 @@ did_set_spelllang(buf)
     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 @@ did_set_spelllang(buf)
 		    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 @@ did_set_spelllang(buf)
 		    *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 @@ process_compflags(spin, aff, compflags)
 	STRCPY(p, spin->si_compflags);
 	STRCAT(p, "/");
     }
-    else
-	*p = NUL;
     spin->si_compflags = p;
     tp = p + STRLEN(p);
 
@@ -7703,37 +7751,55 @@ init_spellfile()
     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 @@ suggest_try_change(su)
 			/* 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 @@ suggest_try_change(su)
 						      >= 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 @@ suggest_try_change(su)
 		    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 @@ suggest_try_change(su)
 	    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;
--- a/src/testdir/test58.in
+++ b/src/testdir/test58.in
@@ -93,6 +93,9 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.lat
 :" 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 @@ bad: wordutilize pro borkborkborkborkbor
  	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:
--- a/src/testdir/test58.ok
+++ b/src/testdir/test58.ok
@@ -105,19 +105,19 @@ la
 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 @@ startwordwordwordwordend
 ['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']
--- a/src/testdir/test59.in
+++ b/src/testdir/test59.in
@@ -97,6 +97,9 @@ gg:/^addstart/+1,/^addend/-1w! Xtest.utf
 :" 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 @@ badend
 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:
--- a/src/testdir/test59.ok
+++ b/src/testdir/test59.ok
@@ -101,23 +101,23 @@ bad
 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 @@ startwordwordwordwordend
 ['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']
--- 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 "