From 0dc065ee7c3bd51e5df3926700e409ae74cdfecf Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Mon, 4 Jul 2005 22:49:24 +0000
Subject: [PATCH] updated for version 7.0102

---
 Filelist                         |   1 +
 runtime/compiler/bdf.vim         |   8 +-
 runtime/compiler/gcc.vim         |   6 +-
 runtime/compiler/rst.vim         |   6 +-
 runtime/doc/options.txt          |   6 +-
 runtime/doc/spell.txt            |  19 +-
 runtime/doc/todo.txt             |   2 +-
 runtime/filetype.vim             |  65 ++++++-
 runtime/ftplugin/a2ps.vim        |  14 ++
 runtime/ftplugin/alsaconf.vim    |   6 +-
 runtime/ftplugin/arch.vim        |   6 +-
 runtime/ftplugin/bdf.vim         |   5 +-
 runtime/ftplugin/calendar.vim    |   5 +-
 runtime/ftplugin/conf.vim        |   6 +-
 runtime/ftplugin/context.vim     |   6 +-
 runtime/ftplugin/crm.vim         |   6 +-
 runtime/ftplugin/css.vim         |   5 +-
 runtime/ftplugin/cvsrc.vim       |   6 +-
 runtime/ftplugin/dictconf.vim    |  13 ++
 runtime/ftplugin/dictdconf.vim   |  13 ++
 runtime/ftplugin/dircolors.vim   |   6 +-
 runtime/ftplugin/elinks.vim      |   6 +-
 runtime/ftplugin/eterm.vim       |   5 +-
 runtime/ftplugin/fetchmail.vim   |   6 +-
 runtime/ftplugin/gpg.vim         |   6 +-
 runtime/ftplugin/group.vim       |  13 ++
 runtime/ftplugin/grub.vim        |   6 +-
 runtime/ftplugin/haskell.vim     |   5 +-
 runtime/ftplugin/indent.vim      |   7 +-
 runtime/ftplugin/ld.vim          |   5 +-
 runtime/ftplugin/lftp.vim        |   6 +-
 runtime/ftplugin/libao.vim       |   6 +-
 runtime/ftplugin/limits.vim      |   6 +-
 runtime/ftplugin/loginaccess.vim |   6 +-
 runtime/ftplugin/logindefs.vim   |   6 +-
 runtime/ftplugin/m4.vim          |   5 +-
 runtime/ftplugin/mailcap.vim     |   6 +-
 runtime/ftplugin/manconf.vim     |  13 ++
 runtime/ftplugin/mf.vim          |  18 +-
 runtime/ftplugin/modconf.vim     |   5 +-
 runtime/ftplugin/mp.vim          |  27 ++-
 runtime/ftplugin/mplayerconf.vim |   5 +-
 runtime/ftplugin/muttrc.vim      |   5 +-
 runtime/ftplugin/nanorc.vim      |  13 ++
 runtime/ftplugin/netrc.vim       |   6 +-
 runtime/ftplugin/pamconf.vim     |   6 +-
 runtime/ftplugin/passwd.vim      |  13 ++
 runtime/ftplugin/pinfo.vim       |   6 +-
 runtime/ftplugin/procmail.vim    |   6 +-
 runtime/ftplugin/prolog.vim      |   5 +-
 runtime/ftplugin/protocols.vim   |  13 ++
 runtime/ftplugin/quake.vim       |   6 +-
 runtime/ftplugin/racc.vim        |   5 +-
 runtime/ftplugin/readline.vim    |   6 +-
 runtime/ftplugin/rnc.vim         |   6 +-
 runtime/ftplugin/rst.vim         |   5 +-
 runtime/ftplugin/screen.vim      |   6 +-
 runtime/ftplugin/sensors.vim     |  13 ++
 runtime/ftplugin/services.vim    |  13 ++
 runtime/ftplugin/setserial.vim   |  13 ++
 runtime/ftplugin/sieve.vim       |   5 +-
 runtime/ftplugin/slpconf.vim     |  14 ++
 runtime/ftplugin/slpreg.vim      |  14 ++
 runtime/ftplugin/slpspi.vim      |  14 ++
 runtime/ftplugin/sshconfig.vim   |   6 +-
 runtime/ftplugin/sudoers.vim     |   6 +-
 runtime/ftplugin/sysctl.vim      |   5 +-
 runtime/ftplugin/terminfo.vim    |   6 +-
 runtime/ftplugin/udevconf.vim    |  13 ++
 runtime/ftplugin/udevperm.vim    |  13 ++
 runtime/ftplugin/udevrules.vim   |  13 ++
 runtime/ftplugin/updatedb.vim    |   6 +-
 runtime/ftplugin/xdefaults.vim   |   5 +-
 runtime/ftplugin/xf86conf.vim    |   6 +-
 runtime/ftplugin/xinetd.vim      |   5 +-
 runtime/ftplugin/xmodmap.vim     |   6 +-
 runtime/ftplugin/yaml.vim        |   5 +-
 runtime/ftplugin/zsh.vim         |   6 +-
 runtime/indent/config.vim        |   3 +-
 runtime/indent/css.vim           |  73 ++++---
 runtime/indent/dictconf.vim      |  12 ++
 runtime/indent/dictdconf.vim     |  12 ++
 runtime/indent/ld.vim            |  42 +++-
 runtime/indent/tcl.vim           |  28 +--
 runtime/spell/fr/fr_FR.diff      |  11 +-
 runtime/syntax/a2ps.vim          |  71 +++++++
 runtime/syntax/alsaconf.vim      |  10 +-
 runtime/syntax/arch.vim          |  20 +-
 runtime/syntax/calendar.vim      |   5 +-
 runtime/syntax/context.vim       |  10 +-
 runtime/syntax/crm.vim           |   7 +-
 runtime/syntax/cvsrc.vim         |   6 +-
 runtime/syntax/dictconf.vim      |  80 ++++++++
 runtime/syntax/dictdconf.vim     | 146 ++++++++++++++
 runtime/syntax/elinks.vim        |  10 +-
 runtime/syntax/eterm.vim         |   9 +-
 runtime/syntax/group.vim         |  52 +++++
 runtime/syntax/indent.vim        |   8 +-
 runtime/syntax/lftp.vim          |   6 +-
 runtime/syntax/libao.vim         |   4 +-
 runtime/syntax/manconf.vim       | 117 +++++++++++
 runtime/syntax/mplayerconf.vim   |   5 +-
 runtime/syntax/nanorc.vim        | 243 +++++++++++++++++++++++
 runtime/syntax/passwd.vim        |  71 +++++++
 runtime/syntax/pinfo.vim         |   5 +-
 runtime/syntax/protocols.vim     |  44 +++++
 runtime/syntax/racc.vim          |  14 +-
 runtime/syntax/readline.vim      |   5 +-
 runtime/syntax/rnc.vim           |  12 +-
 runtime/syntax/rst.vim           |   5 +-
 runtime/syntax/screen.vim        |  12 +-
 runtime/syntax/sensors.vim       |  52 +++++
 runtime/syntax/services.vim      |  54 ++++++
 runtime/syntax/setserial.vim     | 120 ++++++++++++
 runtime/syntax/sieve.vim         |  13 +-
 runtime/syntax/slpconf.vim       | 273 ++++++++++++++++++++++++++
 runtime/syntax/slpreg.vim        | 122 ++++++++++++
 runtime/syntax/slpspi.vim        |  39 ++++
 runtime/syntax/sudoers.vim       |   4 +-
 runtime/syntax/terminfo.vim      |   4 +-
 runtime/syntax/udevconf.vim      |  39 ++++
 runtime/syntax/udevperm.vim      |  69 +++++++
 runtime/syntax/udevrules.vim     | 117 +++++++++++
 runtime/syntax/updatedb.vim      |   6 +-
 runtime/syntax/xinetd.vim        |   2 +-
 runtime/syntax/xmodmap.vim       |   6 +-
 runtime/syntax/yaml.vim          |   6 +-
 src/Make_mvc.mak                 |   2 +-
 src/option.c                     |  26 +--
 src/po/Make_cyg.mak              |  76 ++++++++
 src/spell.c                      | 223 ++++++++++++++-------
 src/testdir/Make_amiga.mak       |   3 +-
 src/testdir/Make_dos.mak         |   2 +-
 src/testdir/Make_os2.mak         |   2 +-
 src/testdir/Make_vms.mms         |   4 +-
 src/testdir/Makefile             |   7 +-
 src/testdir/test58.in            | 320 +++++++++++++++++++++++++++++++
 src/testdir/test58.ok            |  42 ++++
 src/version.h                    |   4 +-
 139 files changed, 3050 insertions(+), 417 deletions(-)
 create mode 100644 runtime/ftplugin/a2ps.vim
 create mode 100644 runtime/ftplugin/dictconf.vim
 create mode 100644 runtime/ftplugin/dictdconf.vim
 create mode 100644 runtime/ftplugin/group.vim
 create mode 100644 runtime/ftplugin/manconf.vim
 create mode 100644 runtime/ftplugin/nanorc.vim
 create mode 100644 runtime/ftplugin/passwd.vim
 create mode 100644 runtime/ftplugin/protocols.vim
 create mode 100644 runtime/ftplugin/sensors.vim
 create mode 100644 runtime/ftplugin/services.vim
 create mode 100644 runtime/ftplugin/setserial.vim
 create mode 100644 runtime/ftplugin/slpconf.vim
 create mode 100644 runtime/ftplugin/slpreg.vim
 create mode 100644 runtime/ftplugin/slpspi.vim
 create mode 100644 runtime/ftplugin/udevconf.vim
 create mode 100644 runtime/ftplugin/udevperm.vim
 create mode 100644 runtime/ftplugin/udevrules.vim
 create mode 100644 runtime/indent/dictconf.vim
 create mode 100644 runtime/indent/dictdconf.vim
 create mode 100644 runtime/syntax/a2ps.vim
 create mode 100644 runtime/syntax/dictconf.vim
 create mode 100644 runtime/syntax/dictdconf.vim
 create mode 100644 runtime/syntax/group.vim
 create mode 100644 runtime/syntax/manconf.vim
 create mode 100644 runtime/syntax/nanorc.vim
 create mode 100644 runtime/syntax/passwd.vim
 create mode 100644 runtime/syntax/protocols.vim
 create mode 100644 runtime/syntax/sensors.vim
 create mode 100644 runtime/syntax/services.vim
 create mode 100644 runtime/syntax/setserial.vim
 create mode 100644 runtime/syntax/slpconf.vim
 create mode 100644 runtime/syntax/slpreg.vim
 create mode 100644 runtime/syntax/slpspi.vim
 create mode 100644 runtime/syntax/udevconf.vim
 create mode 100644 runtime/syntax/udevperm.vim
 create mode 100644 runtime/syntax/udevrules.vim
 create mode 100644 src/po/Make_cyg.mak
 create mode 100644 src/testdir/test58.in
 create mode 100644 src/testdir/test58.ok

diff --git a/Filelist b/Filelist
index c591d544ae..3182ba889f 100644
--- a/Filelist
+++ b/Filelist
@@ -699,6 +699,7 @@ LANG_SRC = \
 		src/po/README_mvc.txt \
 		src/po/cleanup.vim \
 		src/po/Makefile \
+		src/po/Make_cyg.mak \
 		src/po/Make_ming.mak \
 		src/po/Make_mvc.mak \
 		src/po/sjiscorr.c \
diff --git a/runtime/compiler/bdf.vim b/runtime/compiler/bdf.vim
index 133e980408..77f124c597 100644
--- a/runtime/compiler/bdf.vim
+++ b/runtime/compiler/bdf.vim
@@ -8,16 +8,12 @@ if exists("current_compiler")
 endif
 let current_compiler = "bdf"
 
-if exists(":CompilerSet") != 2
-  command -nargs=* CompilerSet setlocal <args>
-endif
-
 let s:cpo_save = &cpo
 set cpo-=C
 
-CompilerSet makeprg=bdftopcf\ $*
+setlocal makeprg=bdftopcf\ $*
 
-CompilerSet errorformat=%ABDF\ %trror\ on\ line\ %l:\ %m,
+setlocal errorformat=%ABDF\ %trror\ on\ line\ %l:\ %m,
       \%-Z%p^,
       \%Cbdftopcf:\ bdf\ input\\,\ %f\\,\ corrupt,
       \%-G%.%#
diff --git a/runtime/compiler/gcc.vim b/runtime/compiler/gcc.vim
index 1e64f32833..11f7714da1 100644
--- a/runtime/compiler/gcc.vim
+++ b/runtime/compiler/gcc.vim
@@ -8,14 +8,10 @@ if exists("current_compiler")
 endif
 let current_compiler = "gcc"
 
-if exists(":CompilerSet") != 2
-  command -nargs=* CompilerSet setlocal <args>
-endif
-
 let s:cpo_save = &cpo
 set cpo-=C
 
-CompilerSet errorformat=
+setlocal errorformat=
       \%*[^\"]\"%f\"%*\\D%l:\ %m,
       \\"%f\"%*\\D%l:\ %m,
       \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
diff --git a/runtime/compiler/rst.vim b/runtime/compiler/rst.vim
index f983fe7213..828f99e350 100644
--- a/runtime/compiler/rst.vim
+++ b/runtime/compiler/rst.vim
@@ -8,14 +8,10 @@ if exists("current_compiler")
 endif
 let current_compiler = "rst"
 
-if exists(":CompilerSet") != 2
-  command -nargs=* CompilerSet setlocal <args>
-endif
-
 let s:cpo_save = &cpo
 set cpo-=C
 
-CompilerSet errorformat=
+setlocal errorformat=
       \%f:%l:\ (%tEBUG/0)\ %m,
       \%f:%l:\ (%tNFO/1)\ %m,
       \%f:%l:\ (%tARNING/2)\ %m,
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 300ddb7500..6c6a8dc99c 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 02
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5642,7 +5642,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 	The languages are specified with 'spelllang'.
 
 						*'spellcapcheck'* *'spc'*
-'spellcapcheck' 'spc'	string	(default "[.?!][])'" \t\n]\+")
+'spellcapcheck' 'spc'	string	(default "[.?!]\_[\])'" \t]\+")
 			local to buffer
 			{not in Vi}
 			{not available when compiled without the |+syntax|
@@ -5652,6 +5652,8 @@ A jump table for the options with a short description can be found at |Q_op|.
 	with SpellCap |hl-SpellCap|.
 	When this check is not wanted make this option empty.
 	Only used when 'spell' is set.
+	Be careful with special characters, see |option-backslash| about
+	including spaces and backslashes.
 
 						*'spellfile'* *'spf'*
 'spellfile' 'spf'	string	(default empty)
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 46d1b70dae..5fc1dd82d5 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 03
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -181,7 +181,9 @@ Always use lowercase letters for the language and region names.
 
 When adding a word with |zg| or another command it's always added for all
 regions.  You can change that by manually editing the 'spellfile'.  See
-|spell-wordlist-format|.
+|spell-wordlist-format|.  Note that the regions as specified in the files in
+'spellfile' are only used when all entries in "spelllang" specify the same
+region (not counting files specified by their .spl name).
 
 
 SPELL FILES						*spell-load*
@@ -488,6 +490,10 @@ Example:
 	Campbell/?3				rare word in region 3 "gb"
 	's mornings/=				keep-case word
 
+Note that when "/=" is used the same word with all upper-case letters is not
+accepted.  This is different from a word with mixed case that is automatically
+marked as keep-case, those words may appear in all upper-case letters.
+
 
 FORMAT WITH AFFIX COMPRESSION
 
@@ -571,9 +577,12 @@ affix file.  This has the meaning that case matters.  This can be used if the
 word does not have the first letter in upper case at the start of a sentence.
 Example (assuming that = was used for KEP):
 
-	word list	matches			does not match ~
-	's morgens/=	's morgens		'S morgens 's Morgens
-	's Morgens	's Morgens		'S morgens 's morgens
+    word list	    matches		    does not match ~
+    's morgens/=    's morgens		    'S morgens 's Morgens 'S MORGENS
+    's Morgens	    's Morgens 'S MORGENS   'S morgens 's morgens
+
+The flag can also be used to avoid that the word matches when it is in all
+upper-case letters.
 
 							*spell-affix-mbyte*
 The basic word list is normally in an 8-bit encoding, which is mentioned in
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 9d0a966916..0dc952e34b 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 03
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index c11c012c31..44d8ce794b 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2005 Jun 30
+" Last Change:	2005 Jul 04
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -71,6 +71,9 @@ endfun
 " A-A-P recipe
 au BufNewFile,BufRead *.aap			setf aap
 
+" A2ps printing utility
+au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
+
 " ABAB/4
 au BufNewFile,BufRead *.abap			setf abap
 
@@ -451,6 +454,12 @@ au BufNewFile,BufRead *.d			setf d
 " Desktop files
 au BufNewFile,BufRead *.desktop,.directory	setf desktop
 
+" Dict config
+au BufNewFile,BufRead dict.conf,.dictrc		setf dictconf
+
+" Dictd config
+au BufNewFile,BufRead dictd.conf		setf dictdconf
+
 " Diff files
 au BufNewFile,BufRead *.diff,*.rej,*.patch	setf diff
 
@@ -600,6 +609,9 @@ au BufNewFile,BufRead *.groovy			setf groovy
 " GNU Server Pages
 au BufNewFile,BufRead *.gsp			setf gsp
 
+" Group file
+au BufNewFile,BufRead /etc/group		setf group
+
 " GTK RC
 au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
 
@@ -672,6 +684,9 @@ au BufNewFile,BufRead */.icewm/menu		setf icemenu
 " IDL (Interactive Data Language)
 au BufNewFile,BufRead *.pro			setf idlang
 
+" Indent RC
+au BufNewFile,BufRead indentrc			setf indentrc
+
 " Inform
 au BufNewFile,BufRead .indent.pro		setf indent
 
@@ -754,6 +769,9 @@ au BufNewFile,BufRead *.lex,*.l			setf lex
 " Libao
 au BufNewFile,BufRead /etc/libao.conf,*/.libao	setf libao
 
+" Libsensors
+au BufNewFile,BufRead /etc/sensors.conf		setf sensors
+
 " LFTP
 au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
 
@@ -819,6 +837,9 @@ au BufNewFile,BufRead *.ist,*.mst		setf ist
 " Manpage
 au BufNewFile,BufRead *.man			setf man
 
+" Man config
+au BufNewFile,BufRead /etc/man.conf		setf manconf
+
 " Maple V
 au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
 
@@ -935,6 +956,9 @@ au BufNewFile,BufRead *.mush			setf mush
 au BufNewFile,BufRead Muttrc			setf muttrc
 au BufNewFile,BufRead .muttrc*,*/.mutt/muttrc*	call s:StarSetf('muttrc')
 
+" Nano
+au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
+
 " Nastran input/DMAP
 "au BufNewFile,BufRead *.dat			setf nastran
 
@@ -1014,6 +1038,9 @@ au BufNewFile,BufRead /etc/pam.conf		setf pamconf
 " PApp
 au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
 
+" Password file
+au BufNewFile,BufRead /etc/passwd,/etc/shadow,/etc/shadow- setf passwd
+
 " Pascal (also *.p)
 au BufNewFile,BufRead *.pas			setf pascal
 
@@ -1225,6 +1252,9 @@ au BufNewFile,BufRead INDEX,INFO
 " Prolog
 au BufNewFile,BufRead *.pdb			setf prolog
 
+" Protocols
+au BufNewFile,BufRead /etc/protocols		setf protocols
+
 " Pyrex
 au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
 
@@ -1344,6 +1374,21 @@ au BufNewFile,BufRead sendmail.cf		setf sm
 " Sendmail .mc files are actually m4
 au BufNewFile,BufRead *.mc			setf m4
 
+" Services
+au BufNewFile,BufRead /etc/services		setf services
+
+" Service Location config
+au BufNewFile,BufRead /etc/slp.conf		setf slpconf
+
+" Service Location registration
+au BufNewFile,BufRead /etc/slp.reg		setf slpreg
+
+" Service Location SPI
+au BufNewFile,BufRead /etc/slp.spi		setf slpspi
+
+" Setserial config
+au BufNewFile,BufRead /etc/serial.conf		setf setserial
+
 " SGML
 au BufNewFile,BufRead *.sgm,*.sgml
 	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' |
@@ -1634,6 +1679,18 @@ au BufNewFile,BufReadPost *.tsscl		setf tsscl
 " Motif UIT/UIL files
 au BufNewFile,BufRead *.uit,*.uil		setf uil
 
+" Udev conf
+au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
+
+" Udev rules
+au BufNewFile,BufRead /etc/udev/rules.d/*.rules setf udevrules
+
+" Udev permissions
+au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
+"
+" Udev symlinks config
+au BufNewFile,BufRead /etc/udev/cdsymlinks.conf	setf sh
+
 " UnrealScript
 au BufNewFile,BufRead *.uc			setf uc
 
@@ -1752,6 +1809,9 @@ au BufNewFile,BufRead *.csproj,*.csproj.user	setf xml
 " Qt Linguist translation source and Qt User Interface Files are XML
 au BufNewFile,BufRead *.ts,*.ui			setf xml
 
+" Xdg menus
+au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
+
 " XSD
 au BufNewFile,BufRead *.xsd			setf xsd
 
@@ -1851,6 +1911,9 @@ au! BufNewFile,BufRead *jarg*
 " Makefile
 au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
 
+" Modconf
+au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
+
 " Ruby Makefile
 au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')
 
diff --git a/runtime/ftplugin/a2ps.vim b/runtime/ftplugin/a2ps.vim
new file mode 100644
index 0000000000..e590c98067
--- /dev/null
+++ b/runtime/ftplugin/a2ps.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin file
+" Language:         a2ps(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
+
+setlocal comments=:# commentstring=#\ %s include=^\\s*Include:
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/alsaconf.vim b/runtime/ftplugin/alsaconf.vim
index fd96e82f92..c0e13a7e9a 100644
--- a/runtime/ftplugin/alsaconf.vim
+++ b/runtime/ftplugin/alsaconf.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         alsaconf(8) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/arch.vim b/runtime/ftplugin/arch.vim
index 0102e9a5d4..9433f10093 100644
--- a/runtime/ftplugin/arch.vim
+++ b/runtime/ftplugin/arch.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         GNU Arch inventory file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/bdf.vim b/runtime/ftplugin/bdf.vim
index a303d85e34..92ee66bfc4 100644
--- a/runtime/ftplugin/bdf.vim
+++ b/runtime/ftplugin/bdf.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         BDF font definition
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-22
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=b:COMMENT commentstring=COMMENT\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/calendar.vim b/runtime/ftplugin/calendar.vim
index f71bfe4ee3..c786203dbe 100644
--- a/runtime/ftplugin/calendar.vim
+++ b/runtime/ftplugin/calendar.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         calendar(1) input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/ commentstring& include&
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/conf.vim b/runtime/ftplugin/conf.vim
index dce5e65b54..6087c21928 100644
--- a/runtime/ftplugin/conf.vim
+++ b/runtime/ftplugin/conf.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         generic configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/context.vim b/runtime/ftplugin/context.vim
index 8868319d90..10be14cb0e 100644
--- a/runtime/ftplugin/context.vim
+++ b/runtime/ftplugin/context.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:         ConTeXt typesetting engine
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
@@ -11,9 +11,9 @@ let b:did_ftplugin = 1
 let s:cpo_save = &cpo
 set cpo&vim
 
-let b:undo_ftplugin = "setl com< cms< def< inc< sua<"
+let b:undo_ftplugin = "setl com< cms< def< inc< sua< fo<"
 
-setlocal comments=:%,b:%D,b:%C,b:%M commentstring=%\ %s
+setlocal comments=:%,b:%D,b:%C,b:%M commentstring=%\ %s formatoptions+=tcroql
 
 let &l:define='\\\%([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\='
         \ .     'def\|\\font\|\\\%(future\)\=let'
diff --git a/runtime/ftplugin/crm.vim b/runtime/ftplugin/crm.vim
index 12b41bf902..71ae83f186 100644
--- a/runtime/ftplugin/crm.vim
+++ b/runtime/ftplugin/crm.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         CRM114
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/css.vim b/runtime/ftplugin/css.vim
index 417590c458..d9d9005536 100644
--- a/runtime/ftplugin/css.vim
+++ b/runtime/ftplugin/css.vim
@@ -1,15 +1,16 @@
 " Vim filetype plugin file
 " Language:         CSS
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/ commentstring&
+setlocal formatoptions-=t formatoptions+=croql
 
 let &l:include = '^\s*@import\s\+\%(url(\)\='
diff --git a/runtime/ftplugin/cvsrc.vim b/runtime/ftplugin/cvsrc.vim
index 686fddf0e5..beb222fd7c 100644
--- a/runtime/ftplugin/cvsrc.vim
+++ b/runtime/ftplugin/cvsrc.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         cvs(1) RC file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments= commentstring=
+setlocal comments= commentstring= formatoptions-=tcroql
diff --git a/runtime/ftplugin/dictconf.vim b/runtime/ftplugin/dictconf.vim
new file mode 100644
index 0000000000..b818ff1d10
--- /dev/null
+++ b/runtime/ftplugin/dictconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         dict(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/dictdconf.vim b/runtime/ftplugin/dictdconf.vim
new file mode 100644
index 0000000000..68111b12f0
--- /dev/null
+++ b/runtime/ftplugin/dictdconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         dictd(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/dircolors.vim b/runtime/ftplugin/dircolors.vim
index 2062c38bf0..4bda7ea8e9 100644
--- a/runtime/ftplugin/dircolors.vim
+++ b/runtime/ftplugin/dircolors.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         dircolors(1) input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/elinks.vim b/runtime/ftplugin/elinks.vim
index ab81f1d4c9..ac1642dcad 100644
--- a/runtime/ftplugin/elinks.vim
+++ b/runtime/ftplugin/elinks.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         elinks(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/eterm.vim b/runtime/ftplugin/eterm.vim
index 22725ef15a..257a4154c7 100644
--- a/runtime/ftplugin/eterm.vim
+++ b/runtime/ftplugin/eterm.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         eterm(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=:# commentstring=#\ %s include=^\\s*include
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/fetchmail.vim b/runtime/ftplugin/fetchmail.vim
index d8985c3827..e9f195f41d 100644
--- a/runtime/ftplugin/fetchmail.vim
+++ b/runtime/ftplugin/fetchmail.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         fetchmail(1) RC File
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/gpg.vim b/runtime/ftplugin/gpg.vim
index a3f7b2689e..b684244514 100644
--- a/runtime/ftplugin/gpg.vim
+++ b/runtime/ftplugin/gpg.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         gpg(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/group.vim b/runtime/ftplugin/group.vim
new file mode 100644
index 0000000000..443c4eb95b
--- /dev/null
+++ b/runtime/ftplugin/group.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         group(5) user group file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments= commentstring= formatoptions-=tcroq formatoptions+=l
diff --git a/runtime/ftplugin/grub.vim b/runtime/ftplugin/grub.vim
index a29b7818a5..6230ec3eeb 100644
--- a/runtime/ftplugin/grub.vim
+++ b/runtime/ftplugin/grub.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         grub(8) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/haskell.vim b/runtime/ftplugin/haskell.vim
index 242875b36a..141e90ae91 100644
--- a/runtime/ftplugin/haskell.vim
+++ b/runtime/ftplugin/haskell.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         Haskell
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_plugin = "setl com< cms<"
+let b:undo_plugin = "setl com< cms< fo<"
 
 setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/indent.vim b/runtime/ftplugin/indent.vim
index 64f0fde6af..8266e937c2 100644
--- a/runtime/ftplugin/indent.vim
+++ b/runtime/ftplugin/indent.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         indent(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=s1:/*,mb:*,ex:*/
+setlocal comments=s1:/*,mb:*,ex:*/ commentstring&
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/ld.vim b/runtime/ftplugin/ld.vim
index d4b6bbc148..f8ba5896c3 100644
--- a/runtime/ftplugin/ld.vim
+++ b/runtime/ftplugin/ld.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         ld(1) script
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/ commentstring=/*%s*/ include=^\\s*INCLUDE
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/lftp.vim b/runtime/ftplugin/lftp.vim
index e94ebc742e..8b26e55064 100644
--- a/runtime/ftplugin/lftp.vim
+++ b/runtime/ftplugin/lftp.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         lftp(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/libao.vim b/runtime/ftplugin/libao.vim
index c38ac95621..83a00f3fa5 100644
--- a/runtime/ftplugin/libao.vim
+++ b/runtime/ftplugin/libao.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         libao.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/limits.vim b/runtime/ftplugin/limits.vim
index 1207535008..586372303d 100644
--- a/runtime/ftplugin/limits.vim
+++ b/runtime/ftplugin/limits.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         limits(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/loginaccess.vim b/runtime/ftplugin/loginaccess.vim
index 404a36dd00..616ff0b6cb 100644
--- a/runtime/ftplugin/loginaccess.vim
+++ b/runtime/ftplugin/loginaccess.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         login.access(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/logindefs.vim b/runtime/ftplugin/logindefs.vim
index 26486bcd82..e51a38318d 100644
--- a/runtime/ftplugin/logindefs.vim
+++ b/runtime/ftplugin/logindefs.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         login.defs(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/m4.vim b/runtime/ftplugin/m4.vim
index 8f971e84c1..1754fd0678 100644
--- a/runtime/ftplugin/m4.vim
+++ b/runtime/ftplugin/m4.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         m4
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=:#,:dnl commentstring=dnl\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/mailcap.vim b/runtime/ftplugin/mailcap.vim
index 208c9f55a4..ec1143f9f9 100644
--- a/runtime/ftplugin/mailcap.vim
+++ b/runtime/ftplugin/mailcap.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         Mailcap configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-set comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/manconf.vim b/runtime/ftplugin/manconf.vim
new file mode 100644
index 0000000000..ac4b1fae25
--- /dev/null
+++ b/runtime/ftplugin/manconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         man.conf(5) - man configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/mf.vim b/runtime/ftplugin/mf.vim
index b066d531e3..d9c9c90bd5 100644
--- a/runtime/ftplugin/mf.vim
+++ b/runtime/ftplugin/mf.vim
@@ -1,16 +1,14 @@
-" Vim filetype plugin
-" Language:	METAFONT
-" Maintainer:	Dorai Sitaram <ds26@gte.com>
-" URL:		http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
-" Last Change:	May 27, 2003
+" Vim filetype plugin file
+" Language:         MetaFont
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
 
-" Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
   finish
 endif
-
-" Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setl com=:%
-setl fo-=t
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=croql
+
diff --git a/runtime/ftplugin/modconf.vim b/runtime/ftplugin/modconf.vim
index 26ed0e7ace..a33a8f65ef 100644
--- a/runtime/ftplugin/modconf.vim
+++ b/runtime/ftplugin/modconf.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         modules.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=:# commentstring=#\ %s include=^\\s*include
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/mp.vim b/runtime/ftplugin/mp.vim
index 3385565b39..aad8d9519f 100644
--- a/runtime/ftplugin/mp.vim
+++ b/runtime/ftplugin/mp.vim
@@ -1,7 +1,22 @@
-" Vim filetype plugin
-" Language:	MetaPost
-" Maintainer:	Dorai Sitaram <ds26@gte.com>
-" URL:		http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
-" Last Change:	May 27, 2003
+" Vim filetype plugin file
+" Language:         MetaPost
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
 
-runtime! ftplugin/mf.vim ftplugin/mf_*.vim ftplugin/mf/*.vim
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=croql
+
+if !exists(":FixBeginfigs") != 2
+  command -nargs=0 FixBeginfigs call s:fix_beginfigs()
+
+  function! s:fix_beginfigs()
+    let i = 1
+    g/^beginfig(\d*);$/s//\='beginfig('.i.');'/ | let i = i + 1
+  endfunction
+endif
diff --git a/runtime/ftplugin/mplayerconf.vim b/runtime/ftplugin/mplayerconf.vim
index 631b9131b6..15ff201098 100644
--- a/runtime/ftplugin/mplayerconf.vim
+++ b/runtime/ftplugin/mplayerconf.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         mplayer(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=:# commentstring=#\ %s include=^\\s*include
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/muttrc.vim b/runtime/ftplugin/muttrc.vim
index 62017e90f0..184d6e53ed 100644
--- a/runtime/ftplugin/muttrc.vim
+++ b/runtime/ftplugin/muttrc.vim
@@ -1,15 +1,16 @@
 " Vim filetype plugin file
 " Language:         mutt RC File
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=:# commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
 
 let &l:include = '^\s*source\>'
diff --git a/runtime/ftplugin/nanorc.vim b/runtime/ftplugin/nanorc.vim
new file mode 100644
index 0000000000..539ee02436
--- /dev/null
+++ b/runtime/ftplugin/nanorc.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         nanorc(5) - GNU nano configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/netrc.vim b/runtime/ftplugin/netrc.vim
index d156ef8021..206dfd08f9 100644
--- a/runtime/ftplugin/netrc.vim
+++ b/runtime/ftplugin/netrc.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         netrc(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments= commentstring=
+setlocal comments= commentstring= formatoptions-=tcroq formatoptions+=l
diff --git a/runtime/ftplugin/pamconf.vim b/runtime/ftplugin/pamconf.vim
index 0332f7e09c..860c0d029e 100644
--- a/runtime/ftplugin/pamconf.vim
+++ b/runtime/ftplugin/pamconf.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         pam(8) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/passwd.vim b/runtime/ftplugin/passwd.vim
new file mode 100644
index 0000000000..3b08ae4fc5
--- /dev/null
+++ b/runtime/ftplugin/passwd.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         passwd(5) password file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments= commentstring= formatoptions-=tcroq formatoptions+=l
diff --git a/runtime/ftplugin/pinfo.vim b/runtime/ftplugin/pinfo.vim
index 117a2e2f3a..f56467f320 100644
--- a/runtime/ftplugin/pinfo.vim
+++ b/runtime/ftplugin/pinfo.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         pinfo(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/procmail.vim b/runtime/ftplugin/procmail.vim
index 95d806783a..f3edc369cd 100644
--- a/runtime/ftplugin/procmail.vim
+++ b/runtime/ftplugin/procmail.vim
@@ -1,15 +1,15 @@
 " Vim filetype plugin file
 " Language:         procmail(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
 
 let &l:include = '^\s*INCLUDERC\>'
diff --git a/runtime/ftplugin/prolog.vim b/runtime/ftplugin/prolog.vim
index e5ab76d4ef..eebbdab002 100644
--- a/runtime/ftplugin/prolog.vim
+++ b/runtime/ftplugin/prolog.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         Prolog
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/,:% commentstring=%\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/protocols.vim b/runtime/ftplugin/protocols.vim
new file mode 100644
index 0000000000..2e04d8591c
--- /dev/null
+++ b/runtime/ftplugin/protocols.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         protocols(5) - Internet protocols definition file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/quake.vim b/runtime/ftplugin/quake.vim
index f750aef1a6..e658eb0b5f 100644
--- a/runtime/ftplugin/quake.vim
+++ b/runtime/ftplugin/quake.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         Quake[1-3] configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:// commentstring=//\ %s
+setlocal comments=:// commentstring=//\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/racc.vim b/runtime/ftplugin/racc.vim
index 461d3a4c5e..6969080bd3 100644
--- a/runtime/ftplugin/racc.vim
+++ b/runtime/ftplugin/racc.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         Racc input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/readline.vim b/runtime/ftplugin/readline.vim
index 29bbe39b19..bf29a41d01 100644
--- a/runtime/ftplugin/readline.vim
+++ b/runtime/ftplugin/readline.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         readline(3) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/rnc.vim b/runtime/ftplugin/rnc.vim
index 713f387f3a..ca875b8b35 100644
--- a/runtime/ftplugin/rnc.vim
+++ b/runtime/ftplugin/rnc.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         Relax NG compact syntax
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/rst.vim b/runtime/ftplugin/rst.vim
index 6414c84a85..7c297b8f6d 100644
--- a/runtime/ftplugin/rst.vim
+++ b/runtime/ftplugin/rst.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         reStructuredText documentation format
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< et<"
+let b:undo_ftplugin = "setl com< cms< et< fo<"
 
 setlocal comments=fb:.. commentstring=..\ %s expandtab
+setlocal formatoptions+=tcroql
diff --git a/runtime/ftplugin/screen.vim b/runtime/ftplugin/screen.vim
index cd803fdb5c..03b9b98267 100644
--- a/runtime/ftplugin/screen.vim
+++ b/runtime/ftplugin/screen.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         screen(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/sensors.vim b/runtime/ftplugin/sensors.vim
new file mode 100644
index 0000000000..d675cd911a
--- /dev/null
+++ b/runtime/ftplugin/sensors.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         sensors.conf(5) - libsensors configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/services.vim b/runtime/ftplugin/services.vim
new file mode 100644
index 0000000000..de7d15e0a8
--- /dev/null
+++ b/runtime/ftplugin/services.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         services(5) - Internet network services list
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/setserial.vim b/runtime/ftplugin/setserial.vim
new file mode 100644
index 0000000000..ea0cb964e0
--- /dev/null
+++ b/runtime/ftplugin/setserial.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         setserial(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/sieve.vim b/runtime/ftplugin/sieve.vim
index 97d235bc46..39b5d7673e 100644
--- a/runtime/ftplugin/sieve.vim
+++ b/runtime/ftplugin/sieve.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         Sieve filtering language input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/slpconf.vim b/runtime/ftplugin/slpconf.vim
new file mode 100644
index 0000000000..dea5dfd239
--- /dev/null
+++ b/runtime/ftplugin/slpconf.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin file
+" Language:         RFC 2614 - An API for Service Location configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:#,:; commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/slpreg.vim b/runtime/ftplugin/slpreg.vim
new file mode 100644
index 0000000000..71e865bf00
--- /dev/null
+++ b/runtime/ftplugin/slpreg.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin file
+" Language:         RFC 2614 - An API for Service Location registration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:#,:; commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/slpspi.vim b/runtime/ftplugin/slpspi.vim
new file mode 100644
index 0000000000..181a7ece75
--- /dev/null
+++ b/runtime/ftplugin/slpspi.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin file
+" Language:         RFC 2614 - An API for Service Location SPI file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:#,:; commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/sshconfig.vim b/runtime/ftplugin/sshconfig.vim
index 456a09d353..f02bc7a893 100644
--- a/runtime/ftplugin/sshconfig.vim
+++ b/runtime/ftplugin/sshconfig.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         OpenSSH client configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/sudoers.vim b/runtime/ftplugin/sudoers.vim
index c76bfa993e..30c1f5c0a5 100644
--- a/runtime/ftplugin/sudoers.vim
+++ b/runtime/ftplugin/sudoers.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         sudoers(5) configuration files
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/sysctl.vim b/runtime/ftplugin/sysctl.vim
index 50939d74dd..90618f97b7 100644
--- a/runtime/ftplugin/sysctl.vim
+++ b/runtime/ftplugin/sysctl.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         sysctl.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_plugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 setlocal comments=:;,:# commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/terminfo.vim b/runtime/ftplugin/terminfo.vim
index df4af34af7..822cac4996 100644
--- a/runtime/ftplugin/terminfo.vim
+++ b/runtime/ftplugin/terminfo.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         terminfo(5) definition
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/udevconf.vim b/runtime/ftplugin/udevconf.vim
new file mode 100644
index 0000000000..b7a7f840f2
--- /dev/null
+++ b/runtime/ftplugin/udevconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         udev(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/udevperm.vim b/runtime/ftplugin/udevperm.vim
new file mode 100644
index 0000000000..584a4e78f0
--- /dev/null
+++ b/runtime/ftplugin/udevperm.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         udev(8) permissions file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/udevrules.vim b/runtime/ftplugin/udevrules.vim
new file mode 100644
index 0000000000..29c02b0da2
--- /dev/null
+++ b/runtime/ftplugin/udevrules.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         udev(8) rules file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/updatedb.vim b/runtime/ftplugin/updatedb.vim
index ce818e811f..20354628d1 100644
--- a/runtime/ftplugin/updatedb.vim
+++ b/runtime/ftplugin/updatedb.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         updatedb.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_plugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/xdefaults.vim b/runtime/ftplugin/xdefaults.vim
index fc04c310d6..e65cfdd264 100644
--- a/runtime/ftplugin/xdefaults.vim
+++ b/runtime/ftplugin/xdefaults.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         X resources files like ~/.Xdefaults (xrdb)
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=s1:/*,mb:*,ex:*/,:! commentstring& inc&
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/xf86conf.vim b/runtime/ftplugin/xf86conf.vim
index 11eb5d914a..2973dcd7bb 100644
--- a/runtime/ftplugin/xf86conf.vim
+++ b/runtime/ftplugin/xf86conf.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         XFree86 Configuration File
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/xinetd.vim b/runtime/ftplugin/xinetd.vim
index 271b307d1e..b789a9da42 100644
--- a/runtime/ftplugin/xinetd.vim
+++ b/runtime/ftplugin/xinetd.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         xinetd.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< inc<"
+let b:undo_ftplugin = "setl com< cms< inc< fo<"
 
 setlocal comments=:# commentstring=#\ %s include=^\\s*include
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/xmodmap.vim b/runtime/ftplugin/xmodmap.vim
index 37d0027405..c9bdec4930 100644
--- a/runtime/ftplugin/xmodmap.vim
+++ b/runtime/ftplugin/xmodmap.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         xmodmap(1) definition file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=:! commentstring=!\ %s
+setlocal comments=:! commentstring=!\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/yaml.vim b/runtime/ftplugin/yaml.vim
index 89c7e4ae0a..0b77f67c1b 100644
--- a/runtime/ftplugin/yaml.vim
+++ b/runtime/ftplugin/yaml.vim
@@ -1,13 +1,14 @@
 " Vim filetype plugin file
 " Language:         YAML (YAML Ain't Markup Language)
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms< et<"
+let b:undo_ftplugin = "setl com< cms< et< fo<"
 
 setlocal comments=:# commentstring=#\ %s expandtab
+setlocal formatoptions-=t formatoptions+=croql
diff --git a/runtime/ftplugin/zsh.vim b/runtime/ftplugin/zsh.vim
index 00dce30879..cd82fa4f23 100644
--- a/runtime/ftplugin/zsh.vim
+++ b/runtime/ftplugin/zsh.vim
@@ -1,13 +1,13 @@
 " Vim filetype plugin file
 " Language:         Zsh shell script
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< fo<"
 
-setlocal comments=b:# commentstring=#\ %s
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
diff --git a/runtime/indent/config.vim b/runtime/indent/config.vim
index 3789a507fc..cb2023d7dc 100644
--- a/runtime/indent/config.vim
+++ b/runtime/indent/config.vim
@@ -1,8 +1,7 @@
 " Vim indent file
 " Language:         Autoconf configure.{ac,in} file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" URL:              http://www.pcppopper.org/vim/indent/pcp/config/
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-06-30
 " TODO:             how about nested [()]'s in one line
 "                   what's wrong with '\\\@!'?
 
diff --git a/runtime/indent/css.vim b/runtime/indent/css.vim
index ee4288cf7c..b0560b473d 100644
--- a/runtime/indent/css.vim
+++ b/runtime/indent/css.vim
@@ -1,7 +1,7 @@
 " Vim indent file
-" Language:         CSS
-" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Language:	    CSS
+" Maintainer:	    Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
 
 if exists("b:did_indent")
   finish
@@ -15,39 +15,68 @@ if exists("*GetCSSIndent")
   finish
 endif
 
-function s:LookupLine(lnum)
-  let lnum = prevnonblank(a:lnum - 1)
-  while lnum > 0
+function s:prevnonblanknoncomment(lnum)
+  let lnum = a:lnum
+  while lnum > 1
+    let lnum = prevnonblank(lnum)
     let line = getline(lnum)
-
     if line =~ '\*/'
-      while lnum > 0 && line !~ '/\*'
+      while lnum > 1 && line !~ '/\*'
         let lnum -= 1
-        let line = getline(lnum)
       endwhile
+      if line =~ '^\s*/\*'
+        let lnum -= 1
+      else
+        break
+      endif
+    else
+      break
     endif
-
-    if line !~ '^\s*/\*'
-      return lnum
-    end
   endwhile
   return lnum
 endfunction
 
+function s:count_braces(lnum, count_open)
+  let n_open = 0
+  let n_close = 0
+  let line = getline(a:lnum)
+  let pattern = '[{}]'
+  let i = match(line, pattern)
+  while i != -1
+    if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'css\%(Comment\|StringQ\{1,2}\)'
+      if line[i] == '{'
+        let n_open += 1
+      elseif line[i] == '}'
+        if n_open > 0
+          let n_open -= 1
+        else
+          let n_close += 1
+        endif
+      endif
+    endif
+    let i = match(line, pattern, i + 1)
+  endwhile
+  return a:count_open ? n_open : n_close
+endfunction
+
 function GetCSSIndent()
-  let lnum = prevnonblank(v:lnum - 1)
-  if lnum == 0
-    return 0
+  let line = getline(v:lnum)
+  if line =~ '^\s*\*'
+    return cindent(v:lnum)
+  elseif line =~ '^\s*}'
+    return indent(v:lnum) - &sw
   endif
 
-  let ind = indent(lnum)
-
-  if substitute(getline(lnum), '/\*.*', '', 'e') =~ '{\(.*}\)\@!'
-    let ind = ind + &sw
+  let pnum = s:prevnonblanknoncomment(v:lnum - 1)
+  if pnum == 0
+    return 0
   endif
 
-  if getline(v:lnum) =~ '^\s*}'
-    let ind = ind - &sw
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+
+  let pline = getline(pnum)
+  if pline =~ '}\s*$'
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
   endif
 
   return ind
diff --git a/runtime/indent/dictconf.vim b/runtime/indent/dictconf.vim
new file mode 100644
index 0000000000..dcaf1e1520
--- /dev/null
+++ b/runtime/indent/dictconf.vim
@@ -0,0 +1,12 @@
+" Vim indent file
+" Language:         dict(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentkeys=0{,0},!^F,o,O cinwords= autoindent smartindent
+inoremap <buffer> # X#
diff --git a/runtime/indent/dictdconf.vim b/runtime/indent/dictdconf.vim
new file mode 100644
index 0000000000..f8f567064a
--- /dev/null
+++ b/runtime/indent/dictdconf.vim
@@ -0,0 +1,12 @@
+" Vim indent file
+" Language:         dictd(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentkeys=0{,0},!^F,o,O cinwords= autoindent smartindent
+inoremap <buffer> # X#
diff --git a/runtime/indent/ld.vim b/runtime/indent/ld.vim
index 8b7c03fce5..440b106f12 100644
--- a/runtime/indent/ld.vim
+++ b/runtime/indent/ld.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:         ld(1) script
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-06-30
 
 if exists("b:did_indent")
   finish
@@ -15,6 +15,27 @@ if exists("*GetLDIndent")
   finish
 endif
 
+function s:prevnonblanknoncomment(lnum)
+  let lnum = a:lnum
+  while lnum > 1
+    let lnum = prevnonblank(lnum)
+    let line = getline(lnum)
+    if line =~ '\*/'
+      while lnum > 1 && line !~ '/\*'
+        let lnum -= 1
+      endwhile
+      if line =~ '^\s*/\*'
+        let lnum -= 1
+      else
+        break
+      endif
+    else
+      break
+    endif
+  endwhile
+  return lnum
+endfunction
+
 function s:count_braces(lnum, count_open)
   let n_open = 0
   let n_close = 0
@@ -39,11 +60,24 @@ function s:count_braces(lnum, count_open)
 endfunction
 
 function GetLDIndent()
-  let pnum = prevnonblank(v:lnum - 1)
+  let line = getline(v:lnum)
+  if line =~ '^\s*\*'
+    return cindent(v:lnum)
+  elseif line =~ '^\s*}'
+    return indent(v:lnum) - &sw
+  endif
+
+  let pnum = s:prevnonblanknoncomment(v:lnum - 1)
   if pnum == 0
     return 0
   endif
 
-  return indent(pnum) + s:count_braces(pnum, 1) * &sw
-        \ - s:count_braces(v:lnum, 0) * &sw
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+
+  let pline = getline(pnum)
+  if pline =~ '}\s*$'
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
+  endif
+
+  return ind
 endfunction
diff --git a/runtime/indent/tcl.vim b/runtime/indent/tcl.vim
index 83e7719cb7..546b60daf8 100644
--- a/runtime/indent/tcl.vim
+++ b/runtime/indent/tcl.vim
@@ -1,7 +1,7 @@
 " Vim indent file
-" Language:         Tcl
-" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Language:	    Tcl
+" Maintainer:	    Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
 
 if exists("b:did_indent")
   finish
@@ -31,10 +31,10 @@ function s:count_braces(lnum, count_open)
   let n_open = 0
   let n_close = 0
   let line = getline(a:lnum)
-  let pattern = '\\\@<![{}]'
+  let pattern = '[{}]'
   let i = match(line, pattern)
   while i != -1
-    if synIDattr(synID(a:lnum, i + 1, 1), 'name') !~ 'tcl\%(Comment\|String\)'
+    if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'tcl\%(Comment\|String\)'
       if line[i] == '{'
         let n_open += 1
       elseif line[i] == '}'
@@ -51,20 +51,24 @@ function s:count_braces(lnum, count_open)
 endfunction
 
 function GetTclIndent()
+  let line = getline(v:lnum)
+  if line =~ '^\s*\*'
+    return cindent(v:lnum)
+  elseif line =~ '^\s*}'
+    return indent(v:lnum) - &sw
+  endif
+
   let pnum = s:prevnonblanknoncomment(v:lnum - 1)
   if pnum == 0
     return 0
   endif
 
   let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
-  if getline(pnum) =~ '\\$'
-    let ind += &sw
-  endif
 
-  let pnum = s:prevnonblanknoncomment(pnum - 1)
-  if pnum > 0 && getline(pnum) =~ '\\$'
-    let ind -= &sw
+  let pline = getline(pnum)
+  if pline =~ '}\s*$'
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
   endif
 
-  return ind - s:count_braces(v:lnum, 0) * &sw
+  return ind
 endfunction
diff --git a/runtime/spell/fr/fr_FR.diff b/runtime/spell/fr/fr_FR.diff
index b00f3b7a45..8233e5c44c 100644
--- a/runtime/spell/fr/fr_FR.diff
+++ b/runtime/spell/fr/fr_FR.diff
@@ -1,19 +1,22 @@
-*** fr_FR.orig.aff	Sun Apr 14 17:18:22 2002
---- fr_FR.aff	Mon Jun 27 19:42:54 2005
+*** fr_FR.orig.aff	Sun Jul  3 19:34:20 2005
+--- fr_FR.aff	Sun Jul  3 20:09:20 2005
 ***************
 *** 3,4 ****
---- 3,10 ----
+--- 3,13 ----
   
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
 + MIDWORD	'
 + 
   PFX A Y 10
 ***************
 *** 691,692 ****
---- 697,709 ----
+--- 700,712 ----
   
 + 
 + MAP 5
diff --git a/runtime/syntax/a2ps.vim b/runtime/syntax/a2ps.vim
new file mode 100644
index 0000000000..a5594439de
--- /dev/null
+++ b/runtime/syntax/a2ps.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language:         a2ps(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword a2psPreProc       Include
+                              \ nextgroup=a2psKeywordColon
+
+syn keyword a2psMacro         UserOption
+                              \ nextgroup=a2psKeywordColon
+
+syn keyword a2psKeyword       LibraryPath AppendLibraryPath PrependLibraryPath
+                              \ Options Medium Printer UnknownPrinter
+                              \ DefaultPrinter OutputFirstLine
+                              \ PageLabelFormat Delegation FileCommand
+                              \ nextgroup=a2psKeywordColon
+
+syn match   a2psKeywordColon  contained display ':'
+
+syn keyword a2psKeyword       Variable nextgroup=a2psVariableColon
+
+syn match   a2psVariableColon contained display ':'
+                              \ nextgroup=a2psVariable skipwhite
+
+syn match   a2psVariable      contained display '[^ \t:(){}]\+'
+                              \ contains=a2psVarPrefix
+
+syn match   a2psVarPrefix     contained display
+                              \ '\<\%(del\|pro\|ps\|pl\|toc\|user\|\)\ze\.'
+
+syn match   a2psLineCont      display '\\$'
+
+syn match   a2psSubst         display '$\%(-\=.\=\d\+\)\=\h\d\='
+syn match   a2psSubst         display '#[?!]\=\w\d\='
+syn match   a2psSubst         display '#{[^}]\+}'
+
+syn region  a2psString        display oneline start=+'+ end=+'+
+                              \ contains=a2psSubst
+
+syn region  a2psString        display oneline start=+"+ end=+"+
+                              \ contains=a2psSubst
+
+syn keyword a2psTodo          contained TODO FIXME XXX NOTE
+
+syn region  a2psComment       display oneline start='^\s*#' end='$'
+                              \ contains=a2psTodo,@Spell
+
+hi def link a2psTodo          Todo
+hi def link a2psComment       Comment
+hi def link a2psPreProc       PreProc
+hi def link a2psMacro         Macro
+hi def link a2psKeyword       Keyword
+hi def link a2psKeywordColon  Delimiter
+hi def link a2psVariableColon Delimiter
+hi def link a2psVariable      Identifier
+hi def link a2psVarPrefix     Type
+hi def link a2psLineCont      Special
+hi def link a2psSubst         PreProc
+hi def link a2psString        String
+
+let b:current_syntax = "a2ps"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/alsaconf.vim b/runtime/syntax/alsaconf.vim
index 0e3362a1a3..f2bda1894b 100644
--- a/runtime/syntax/alsaconf.vim
+++ b/runtime/syntax/alsaconf.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         alsaconf(8) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,21 +12,19 @@ set cpo&vim
 
 syn keyword alsoconfTodo        contained FIXME TODO XXX NOTE
 
-syn region  alsaconfComment     matchgroup=alsaconfComment
+syn region  alsaconfComment     display oneline
                                 \ start='#' end='$'
                                 \ contains=alsaconfTodo,@Spell
 
 syn match   alsaconfSpecialChar contained display '\\[ntvbrf]'
 syn match   alsaconfSpecialChar contained display '\\\o\+'
 
-syn region  alsaconfString      matchgroup=alsaconfString
-                                \ start=+"+ skip=+\\$+ end=+"+ end=+$+
+syn region  alsaconfString      start=+"+ skip=+\\$+ end=+"\|$+
                                 \ contains=alsaconfSpecialChar
 
 syn match   alsaconfSpecial     contained display 'confdir:'
 
-syn region  alsaconfPreProc     matchgroup=alsaconfPreProc start='<' end='>'
-                                \ contains=alsaconfSpecial
+syn region  alsaconfPreProc     start='<' end='>' contains=alsaconfSpecial
 
 syn match   alsaconfMode        display '[+?!-]'
 
diff --git a/runtime/syntax/arch.vim b/runtime/syntax/arch.vim
index 663cca84c1..b9789d2603 100644
--- a/runtime/syntax/arch.vim
+++ b/runtime/syntax/arch.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         GNU Arch inventory file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,19 +14,25 @@ setlocal iskeyword=@,48-57,_,-
 
 syn keyword archTodo    TODO FIXME XXX NOTE
 
-syn region  archComment display matchgroup=archComment
-                        \ start='^\%(#\|\s\)' end='$' contains=archTodo,@Spell
+syn region  archComment display start='^\%(#\|\s\)' end='$'
+                        \ contains=archTodo,@Spell
 
-syn keyword archKeyword implicit tagline explicit names
-syn keyword archKeyword untagged-source
-syn keyword archKeyword exclude junk backup precious unrecognized source
-                        \ skipwhite nextgroup=archRegex
+syn match   argBegin    display '^' nextgroup=archKeyword,archComment
+
+syn keyword archKeyword contained implicit tagline explicit names
+syn keyword archKeyword contained untagged-source
+                        \ nextgroup=archTMethod skipwhite
+syn keyword archKeyword contained exclude junk backup precious unrecognized
+                        \ source nextgroup=archRegex skipwhite
+
+syn keyword archTMethod contained source precious backup junk unrecognized
 
 syn match   archRegex   contained '\s*\zs.*'
 
 hi def link archTodo    Todo
 hi def link archComment Comment
 hi def link archKeyword Keyword
+hi def link archTMethod Type
 hi def link archRegex   String
 
 let b:current_syntax = "arch"
diff --git a/runtime/syntax/calendar.vim b/runtime/syntax/calendar.vim
index 502ac7051e..c47ef32e00 100644
--- a/runtime/syntax/calendar.vim
+++ b/runtime/syntax/calendar.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         calendar(1) input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,8 +12,7 @@ set cpo&vim
 
 syn keyword calendarTodo          contained TODO FIXME XXX NOTE
 
-syn region  calendarComment       matchgroup=calendarComment
-                                  \ start='/\*' end='\*/'
+syn region  calendarComment       start='/\*' end='\*/'
                                   \ contains=calendarTodo,@Spell
 
 syn region  calendarCppString     start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl
diff --git a/runtime/syntax/context.vim b/runtime/syntax/context.vim
index 4649b6c8f2..1b3d2446fb 100644
--- a/runtime/syntax/context.vim
+++ b/runtime/syntax/context.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         ConTeXt typesetting engine
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,10 +12,10 @@ set cpo&vim
 
 syn keyword contextTodo       TODO FIXME XXX NOTE
 
-syn region  contextComment    display oneline matchgroup=contextComment
-                              \ start='%' end='$' contains=contextTodo
-syn region  contextComment    display oneline matchgroup=contextComment
-                              \ start='^\s*%[CDM]' end='$' contains=ALL
+syn region  contextComment    display oneline start='%' end='$'
+                              \ contains=contextTodo
+syn region  contextComment    display oneline start='^\s*%[CDM]' end='$'
+                              \ contains=ALL
 
 syn match   contextStatement  display '\\[a-zA-Z@]\+' contains=@NoSpell
 
diff --git a/runtime/syntax/crm.vim b/runtime/syntax/crm.vim
index fdb15046e2..35d9e50c58 100644
--- a/runtime/syntax/crm.vim
+++ b/runtime/syntax/crm.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         CRM114
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-27
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,7 +12,7 @@ set cpo&vim
 
 syn keyword crmTodo       contained TODO FIXME XXX NOTE
 
-syn region  crmComment    matchgroup=crmComment start='#' end='$' end='\\#'
+syn region  crmComment    display oneline start='#' end='\\#'
                           \ contains=crmTodo,@Spell
 
 syn match   crmVariable   display ':[*#@]:[^:]\{-1,}:'
@@ -23,8 +23,7 @@ syn keyword crmStatement  insert noop accept alius alter classify eval exit
 syn keyword crmStatement  fail fault goto hash intersect isolate input learn
 syn keyword crmStatement  liaf match output syscall trap union window
 
-syn region  crmRegex      matchgroup=crmRegex start='/' skip='\\/' end='/'
-                          \ contains=crmVariable
+syn region  crmRegex      start='/' skip='\\/' end='/' contains=crmVariable
 
 syn match   crmLabel      display '^\s*:[[:graph:]]\+:'
 
diff --git a/runtime/syntax/cvsrc.vim b/runtime/syntax/cvsrc.vim
index f93ca63a58..d901ae1fd2 100644
--- a/runtime/syntax/cvsrc.vim
+++ b/runtime/syntax/cvsrc.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         cvs(1) RC file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -10,8 +10,8 @@ endif
 let s:cpo_save = &cpo
 set cpo&vim
 
-syn region  cvsrcString   display start=+"+ skip=+\\\\\|\\\\"+ end=+"\|$+
-syn region  cvsrcString   display start=+'+ skip=+\\\\\|\\\\'+ end=+'\|$+
+syn region  cvsrcString   display oneline start=+"+ skip=+\\\\\|\\\\"+ end=+"+
+syn region  cvsrcString   display oneline start=+'+ skip=+\\\\\|\\\\'+ end=+'+
 
 syn match   cvsrcNumber   display '\<\d\+\>'
 
diff --git a/runtime/syntax/dictconf.vim b/runtime/syntax/dictconf.vim
new file mode 100644
index 0000000000..21474fa065
--- /dev/null
+++ b/runtime/syntax/dictconf.vim
@@ -0,0 +1,80 @@
+" Vim syntax file
+" Language:         dict(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword dictconfTodo        contained TODO FIXME XXX NOTE
+
+syn region  dictconfComment     display oneline start='#' end='$'
+                                \ contains=dictconfTodo,@Spell
+
+syn match   dictconfBegin       display '^'
+                                \ nextgroup=dictconfKeyword,dictconfComment
+                                \ skipwhite
+
+syn keyword dictconfKeyword     contained server
+                                \ nextgroup=dictconfServer skipwhite
+
+syn keyword dictconfKeyword     contained pager
+                                \ nextgroup=dictconfPager
+
+syn match   dictconfServer      contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+                                \ nextgroup=dictconfServerOptG skipwhite
+
+syn region  dictconfServer      contained display oneline
+                                \ start=+"+ skip=+""+ end=+"+
+                                \ nextgroup=dictconfServerOptG skipwhite
+
+syn region  dictconfServerOptG  contained transparent
+                                \ matchgroup=dictconfServerOptsD start='{'
+                                \ matchgroup=dictconfServerOptsD end='}'
+                                \ contains=dictconfServerOpts,dictconfComment
+
+syn keyword dictconfServerOpts  contained port
+                                \ nextgroup=dictconfNumber skipwhite
+
+syn keyword dictconfServerOpts  contained user
+                                \ nextgroup=dictconfUsername skipwhite
+
+syn match   dictconfUsername    contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+                                \ nextgroup=dictconfSecret skipwhite
+syn region  dictconfUsername    contained display oneline
+                                \ start=+"+ skip=+""+ end=+"+
+                                \ nextgroup=dictconfSecret skipwhite
+
+syn match   dictconfSecret      contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region  dictconfSecret      contained display oneline
+                                \ start=+"+ skip=+""+ end=+"+
+
+syn match   dictconfNumber      contained '\<\d\+\>'
+
+syn match   dictconfPager       contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region  dictconfPager       contained display oneline
+                                \ start=+"+ skip=+""+ end=+"+
+
+hi def link dictconfTodo        Todo
+hi def link dictconfComment     Comment
+hi def link dictconfKeyword     Keyword
+hi def link dictconfServer      String
+hi def link dictconfServerOptsD Delimiter
+hi def link dictconfServerOpts  Identifier
+hi def link dictconfUsername    String
+hi def link dictconfSecret      Special
+hi def link dictconfNumber      Number
+hi def link dictconfPager       String
+
+let b:current_syntax = "dictconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/dictdconf.vim b/runtime/syntax/dictdconf.vim
new file mode 100644
index 0000000000..5651d7c777
--- /dev/null
+++ b/runtime/syntax/dictdconf.vim
@@ -0,0 +1,146 @@
+" Vim syntax file
+" Language:         dictd(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword dictdconfTodo        contained TODO FIXME XXX NOTE
+
+syn region  dictdconfComment    display oneline start='#' end='$'
+                                \ contains=dictdconfTodo,dictdconfSpecialC,
+                                \ @Spell
+
+syn keyword dictdconfSpecialC   LASTLINE
+
+syn match   dictdconfBegin      display '^'
+                                \ nextgroup=dictdconfKeyword,dictdconfComment
+                                \ skipwhite
+
+syn keyword dictdconfKeyword    contained access
+                                \ nextgroup=dictdconfAccessG skipwhite
+
+syn region  dictdconfAccessG    contained transparent
+                                \ matchgroup=dictdconfDelimiter start='{'
+                                \ matchgroup=dictdconfDelimiter end='}'
+                                \ contains=dictdconfAccess,dictdconfComment
+
+syn keyword dictdconfAccess     contained allow deny authonly user
+                                \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfKeyword    contained database
+                                \ nextgroup=dictdconfDatabase skipwhite
+
+syn match   dictdconfDatabase   contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+                                \ nextgroup=dictdconfSpecG skipwhite
+syn region  dictdconfDatabase   contained display oneline
+                                \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+                                \ nextgroup=dictdconfSpecG skipwhite
+
+syn region  dictdconfSpecG      contained transparent
+                                \ matchgroup=dictdconfDelimiter start='{'
+                                \ matchgroup=dictdconfDelimiter end='}'
+                                \ contains=dictdconfSpec,dictdconfAccess,
+                                \ dictdconfComment
+
+syn keyword dictdconfSpec       contained data index index_suffix index_word
+                                \ filter prefilter postfilter name info
+                                \ disable_strat
+                                \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfSpec       contained invisible
+
+syn keyword dictdconfKeyword    contained database_virtual
+                                \ nextgroup=dictdconfVDatabase skipwhite
+
+syn match   dictdconfVDatabase  contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+                                \ nextgroup=dictdconfVSpecG skipwhite
+syn region  dictdconfVDatabase   contained display oneline
+                                \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+                                \ nextgroup=dictdconfVSpecG skipwhite
+
+syn region  dictdconfVSpecG     contained transparent
+                                \ matchgroup=dictdconfDelimiter start='{'
+                                \ matchgroup=dictdconfDelimiter end='}'
+                                \ contains=dictdconfVSpec,dictdconfAccess,
+                                \ dictdconfComment
+
+syn keyword dictdconfVSpec      contained name info database_list disable_strat
+                                \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfVSpec      contained invisible
+
+syn keyword dictdconfKeyword    contained database_plugin
+                                \ nextgroup=dictdconfPDatabase skipwhite
+
+syn match   dictdconfPDatabase  contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+                                \ nextgroup=dictdconfPSpecG skipwhite
+syn region  dictdconfPDatabase   contained display oneline
+                                \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+                                \ nextgroup=dictdconfPSpecG skipwhite
+
+syn region  dictdconfPSpecG     contained transparent
+                                \ matchgroup=dictdconfDelimiter start='{'
+                                \ matchgroup=dictdconfDelimiter end='}'
+                                \ contains=dictdconfPSpec,dictdconfAccess,
+                                \ dictdconfComment
+
+syn keyword dictdconfPSpec      contained name info plugin data disable_strat
+                                \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfPSpec      contained invisible
+
+syn keyword dictdconfKeyword    contained database_exit
+
+syn keyword dictdconfKeyword    contained site
+                                \ nextgroup=dictdconfString skipwhite
+
+syn keyword dictdconfKeyword    contained user
+                                \ nextgroup=dictdconfUsername skipwhite
+
+syn match   dictdconfUsername   contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+                                \ nextgroup=dictdconfSecret skipwhite
+syn region  dictdconfUsername   contained display oneline
+                                \ start=+"+ skip=+""+ end=+"+
+                                \ nextgroup=dictdconfSecret skipwhite
+
+syn match   dictdconfSecret     contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region  dictdconfSecret     contained display oneline
+                                \ start=+"+ skip=+""+ end=+"+
+
+syn match   dictdconfString     contained display
+                                \ '[[:alnum:]_/.*-][[:alnum:]_/.*-]*'
+syn region  dictdconfString     contained display oneline
+                                \ start=+"+ skip=+""\|\\\\\|\\"+ end=+"+
+
+hi def link dictdconfTodo       Todo
+hi def link dictdconfComment    Comment
+hi def link dictdconfSpecialC   Special
+hi def link dictdconfKeyword    Keyword
+hi def link dictdconfIdentifier Identifier
+hi def link dictdconfAccess     dictdconfIdentifier
+hi def link dictdconfDatabase   dictdconfString
+hi def link dictdconfSpec       dictdconfIdentifier
+hi def link dictdconfVDatabase  dictdconfDatabase
+hi def link dictdconfVSpec      dictdconfSpec
+hi def link dictdconfPDatabase  dictdconfDatabase
+hi def link dictdconfPSpec      dictdconfSpec
+hi def link dictdconfUsername   dictdconfString
+hi def link dictdconfSecret     Special
+hi def link dictdconfString     String
+hi def link dictdconfDelimiter  Delimiter
+
+let b:current_syntax = "dictdconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/elinks.vim b/runtime/syntax/elinks.vim
index 20dff83233..dea04babf6 100644
--- a/runtime/syntax/elinks.vim
+++ b/runtime/syntax/elinks.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         elinks(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-27
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,13 +14,13 @@ setlocal iskeyword=@,48-57,_,-
 
 syn keyword elinksTodo      contained TODO FIXME XXX NOTE
 
-syn region  elinksComment   matchgroup=elinksComment start='#' end='$'
-                            \ contains=elinksTodo
+syn region  elinksComment   display oneline start='#' end='$'
+                            \ contains=elinksTodo,@Spell
 
 syn match   elinksNumber    '\<\d\+\>'
 
-syn region  elinksString    matchgroup=elinksString start=+"+
-                            \ skip=+\\\\\|\\"+ end=+"+ contains=@elinksColor
+syn region  elinksString    start=+"+ skip=+\\\\\|\\"+ end=+"+
+                            \ contains=@elinksColor
 
 syn keyword elinksKeyword   set bind
 
diff --git a/runtime/syntax/eterm.vim b/runtime/syntax/eterm.vim
index d24e08a2a4..8bc436705f 100644
--- a/runtime/syntax/eterm.vim
+++ b/runtime/syntax/eterm.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         eterm(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,10 +12,10 @@ set cpo&vim
 
 syn keyword etermTodo             contained TODO FIXME XXX NOTE
 
-syn region  etermComment          matchgroup=etermComment start='^#' end='$'
+syn region  etermComment          display oneline start='^#' end='$'
                                   \ contains=etermTodo,@Spell
 
-syn match   etermMagic            display display '^<Eterm-[0-9.]\+>$'
+syn match   etermMagic            display '^<Eterm-[0-9.]\+>$'
 
 syn match   etermNumber           contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
 
@@ -169,7 +169,8 @@ syn match   etermImageContrast    contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
 syn match   etermImageGamma       contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
                                   \ nextgroup=etermImageGamma skipwhite
 
-syn region  etermImageOptions     contained matchgroup=etermImageOptions
+syn region  etermImageOptions     contained display oneline
+                                  \ matchgroup=etermImageOptions
                                   \ start='border\|bevel\%(\s\+\%(up\|down\)\)\|padding'
                                   \ end='$' contains=etermNumber
 
diff --git a/runtime/syntax/group.vim b/runtime/syntax/group.vim
new file mode 100644
index 0000000000..9b3e500223
--- /dev/null
+++ b/runtime/syntax/group.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language:         group(5) user group file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   groupBegin          display '^' nextgroup=groupName
+
+syn match   groupName           contained display '[a-z_][a-z0-9_-]\{0,15}'
+                                \ nextgroup=groupPasswordColon
+
+syn match   groupPasswordColon  contained display ':'
+                                \ nextgroup=groupPassword,groupShadow
+
+syn match   groupPassword       contained display '[^:]*'
+                                \ nextgroup=groupGIDColon
+
+syn match   groupShadow         contained display '[x*]' nextgroup=groupGIDColon
+
+syn match   groupGIDColon       contained display ':' nextgroup=groupGID
+
+syn match   groupGID            contained display '\d\+'
+                                \ nextgroup=groupUserListColon
+
+syn match   groupUserListColon  contained display ':' nextgroup=groupUserList
+
+syn match   groupUserList       contained '[a-z_][a-z0-9_-]*'
+                                \ nextgroup=groupUserListSep
+
+syn match   groupUserListSep    contained display ',' nextgroup=groupUserList
+
+hi def link groupDelimiter      Normal
+hi def link groupName           Identifier
+hi def link groupPasswordColon  groupDelimiter
+hi def link groupPassword       Number
+hi def link groupShadow         Special
+hi def link groupGIDColon       groupDelimiter
+hi def link groupGID            Number
+hi def link groupUserListColon  groupDelimiter
+hi def link groupUserList       Identifier
+hi def link groupUserListSep    groupDelimiter
+
+let b:current_syntax = "group"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/indent.vim b/runtime/syntax/indent.vim
index 8d822ea474..9310c4914f 100644
--- a/runtime/syntax/indent.vim
+++ b/runtime/syntax/indent.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         indent(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 "   indent_is_bsd:  If exists, will change somewhat to match BSD implementation
 "
 " TODO: is the deny-all (a la lilo.vim nice or no?)...
@@ -21,11 +21,9 @@ syn match   indentError   '\S\+'
 
 syn keyword indentTodo    contained TODO FIXME XXX NOTE
 
-syn region  indentComment matchgroup=indentComment
-                          \ start='/\*' end='\*/'
+syn region  indentComment start='/\*' end='\*/'
                           \ contains=indentTodo,@Spell
-syn region  indentComment matchgroup=indentComment
-                          \ start='//' skip='\\$' end='$'
+syn region  indentComment start='//' skip='\\$' end='$'
                           \ contains=indentTodo,@Spell
 
 syn keyword indentOptions -bacc --blank-lines-after-ifdefs
diff --git a/runtime/syntax/lftp.vim b/runtime/syntax/lftp.vim
index 0aab71eb28..9b346a1394 100644
--- a/runtime/syntax/lftp.vim
+++ b/runtime/syntax/lftp.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         lftp(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-27
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,8 +12,8 @@ set cpo&vim
 
 setlocal iskeyword=@,48-57,-
 
-syn region  lftpComment         display oneline matchgroup=lftpComment
-                                \ start='#' end='$' contains=lftpTodo,@Spell
+syn region  lftpComment         display oneline start='#' end='$'
+                                \ contains=lftpTodo,@Spell
 
 syn keyword lftpTodo            contained TODO FIXME XXX NOTE
 
diff --git a/runtime/syntax/libao.vim b/runtime/syntax/libao.vim
index f4ce623a0c..fdf85940b8 100644
--- a/runtime/syntax/libao.vim
+++ b/runtime/syntax/libao.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         libao.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,7 +12,7 @@ set cpo&vim
 
 syn keyword libaoTodo     contained TODO FIXME XXX NOTE
 
-syn region  libaoComment  matchgroup=libaoComment start='^\s*#' end='$'
+syn region  libaoComment  display oneline start='^\s*#' end='$'
                           \ contains=libaoTodo,@Spell
 
 syn keyword libaoKeyword  default_driver
diff --git a/runtime/syntax/manconf.vim b/runtime/syntax/manconf.vim
new file mode 100644
index 0000000000..cdf89b9b3e
--- /dev/null
+++ b/runtime/syntax/manconf.vim
@@ -0,0 +1,117 @@
+" Vim syntax file
+" Language:         man.conf(5) - man configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword manconfTodo         contained TODO FIXME XXX NOTE
+
+syn region  manconfComment      display oneline start='^#' end='$'
+                                \ contains=manconfTodo,@Spell
+
+if !has("win32") && $OSTYPE =~   'bsd'
+  syn match   manconfBegin      display '^'
+                                \ nextgroup=manconfKeyword,manconfSection,
+                                \ manconfComment skipwhite
+
+  syn keyword manconfKeyword    contained _build _crunch
+                                \ nextgroup=manconfExtCmd skipwhite
+
+  syn keyword manconfKeyword    contained _suffix
+                                \ nextgroup=manconfExt skipwhite
+
+  syn keyword manconfKeyword    contained _crunch
+
+  syn keyword manconfKeyword    contained _subdir _version _whatdb
+                                \ nextgroup=manconfPaths skipwhite
+
+  syn match   manconfExtCmd     contained display '\.\S\+'
+                                \ nextgroup=manconfPaths skipwhite
+
+  syn match   manconfSection    contained '[^#_ \t]\S*'
+                                \ nextgroup=manconfPaths skipwhite
+
+  syn keyword manconfSection    contained _default
+                                \ nextgroup=manconfPaths skipwhite
+
+  syn match   manconfPaths      contained display '\S\+'
+                                \ nextgroup=manconfPaths skipwhite
+
+  syn match   manconfExt        contained display '\.\S\+'
+
+  hi def link manconfExtCmd     Type
+  hi def link manconfSection    Identifier
+  hi def link manconfPaths      String
+else
+  syn match   manconfBegin      display '^'
+                                \ nextgroup=manconfBoolean,manconfKeyword,
+                                \ manconfDecompress,manconfComment skipwhite
+
+  syn keyword manconfBoolean    contained FSSTND FHS NOAUTOPATH NOCACHE
+
+  syn keyword manconfKeyword    contained MANBIN
+                                \ nextgroup=manconfPath skipwhite
+
+  syn keyword manconfKeyword    contained MANPATH MANPATH_MAP
+                                \ nextgroup=manconfFirstPath skipwhite
+
+  syn keyword manconfKeyword    contained APROPOS WHATIS TROFF NROFF JNROFF EQN
+                                \ NEQN JNEQN TBL COL REFER PIC VGRIND GRAP
+                                \ PAGER BROWSER HTMLPAGER CMP CAT COMPRESS
+                                \ DECOMPRESS MANDEFOPTIONS
+                                \ nextgroup=manconfCommand skipwhite
+
+  syn keyword manconfKeyword    contained COMPRESS_EXT
+                                \ nextgroup=manconfExt skipwhite
+
+  syn keyword manconfKeyword    contained MANSECT
+                                \ nextgroup=manconfManSect skipwhite
+
+  syn match   manconfPath       contained display '\S\+'
+
+  syn match   manconfFirstPath  contained display '\S\+'
+                                \ nextgroup=manconfSecondPath skipwhite
+
+  syn match   manconfSecondPath contained display '\S\+'
+
+  syn match   manconfCommand    contained display '\%(/[^/ \t]\+\)\+'
+                                \ nextgroup=manconfCommandOpt skipwhite
+
+  syn match   manconfCommandOpt contained display '\S\+'
+                                \ nextgroup=manconfCommandOpt skipwhite
+
+  syn match   manconfExt        contained display '\.\S\+'
+
+  syn match   manconfManSect    contained '[^:]\+' nextgroup=manconfManSectSep
+
+  syn match   manconfManSectSep contained ':' nextgroup=manconfManSect
+
+  syn match   manconfDecompress contained '\.\S\+'
+                                \ nextgroup=manconfCommand skipwhite
+
+  hi def link manconfBoolean    Boolean
+  hi def link manconfPath       String
+  hi def link manconfFirstPath  manconfPath
+  hi def link manconfSecondPath manconfPath
+  hi def link manconfCommand    String
+  hi def link manconfCommandOpt Special
+  hi def link manconfManSect    Identifier
+  hi def link manconfManSectSep Delimiter
+  hi def link manconfDecompress Type
+endif
+
+hi def link manconfTodo         Todo
+hi def link manconfComment      Comment
+hi def link manconfKeyword      Keyword
+hi def link manconfExt          Type
+
+let b:current_syntax = "manconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/mplayerconf.vim b/runtime/syntax/mplayerconf.vim
index 856d8ce194..90592060e4 100644
--- a/runtime/syntax/mplayerconf.vim
+++ b/runtime/syntax/mplayerconf.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         mplayer(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-27
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,8 +14,7 @@ setlocal iskeyword=@,48-57,-
 
 syn keyword mplayerconfTodo     contained TODO FIXME XXX NOTE
 
-syn region mplayerconfComment   display matchgroup=mplayerconfComment
-                                \ start='#' end='$'
+syn region mplayerconfComment   display oneline start='#' end='$'
                                 \ contains=mplayerconfTodo,@Spell
 
 syn keyword mplayerconfPreProc  include
diff --git a/runtime/syntax/nanorc.vim b/runtime/syntax/nanorc.vim
new file mode 100644
index 0000000000..c13b30b7a4
--- /dev/null
+++ b/runtime/syntax/nanorc.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language:         nanorc(5) - GNU nano configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword nanorcTodo          contained TODO FIXME XXX NOTE
+
+syn region  nanorcComment       display oneline start='^\s*#' end='$'
+                                \ contains=nanorcTodo,@Spell
+
+syn match   nanorcBegin         display '^'
+                                \ nextgroup=nanorcKeyword,nanorcComment
+                                \ skipwhite
+
+syn keyword nanorcKeyword       contained set unset
+                                \ nextgroup=nanorcBoolOption,
+                                \ nanorcStringOption,nanorcNumberOption
+                                \ skipwhite
+
+syn keyword nanorcKeyword       contained syntax
+                                \ nextgroup=nanorcSynGroupName skipwhite
+
+syn keyword nanorcKeyword       contained color
+                                \ nextgroup=@nanorcFGColor skipwhite
+
+syn keyword nanorcBoolOption    contained autoindent backup const cut
+                                \ historylog morespace mouse multibuffer
+                                \ noconvert nofollow nohelp nowrap preserve
+                                \ rebinddelete regexp smarthome smooth suspend
+                                \ tempfile view
+
+syn keyword nanorcStringOption  contained backupdir brackets operatingdir
+                                \ punct quotestr speller whitespace
+                                \ nextgroup=nanorcString skipwhite
+
+syn keyword nanorcNumberOption  contained fill tabsize
+                                \ nextgroup=nanorcNumber skipwhite
+
+syn region  nanorcSynGroupName  contained display oneline start=+"+
+                                \ end=+"\ze\%([[:blank:]]\|$\)+
+                                \ nextgroup=nanorcRegexes skipwhite
+
+syn match   nanorcString        contained display '".*"'
+
+syn region  nanorcRegexes       contained display oneline start=+"+
+                                \ end=+"\ze\%([[:blank:]]\|$\)+
+                                \ nextgroup=nanorcRegexes skipwhite
+
+syn match   nanorcNumber        contained display '[+-]\=\<\d\+\>'
+
+syn cluster nanorcFGColor       contains=nanorcFGWhite,nanorcFGBlack,
+                                \ nanorcFGRed,nanorcFGBlue,nanorcFGGreen,
+                                \ nanorcFGYellow,nanorcFGMagenta,nanorcFGCyan,
+                                \ nanorcFGBWhite,nanorcFGBBlack,nanorcFGBRed,
+                                \ nanorcFGBBlue,nanorcFGBGreen,nanorcFGBYellow,
+                                \ nanorcFGBMagenta,nanorcFGBCyan
+
+syn keyword nanorcFGWhite       contained white
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBlack       contained black
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGRed         contained red
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBlue        contained blue
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGGreen       contained green
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGYellow      contained yellow
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGMagenta     contained magenta
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGCyan        contained cyan
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBWhite      contained brightwhite
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBBlack      contained brightblack
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBRed        contained brightred
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBBlue       contained brightblue
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBGreen      contained brightgreen
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBYellow     contained brightyellow
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBMagenta    contained brightmagenta
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn keyword nanorcFGBCyan       contained brightcyan
+                                \ nextgroup=@nanorcFGSpec skipwhite
+
+syn cluster nanorcBGColor       contains=nanorcBGWhite,nanorcBGBlack,
+                                \ nanorcBGRed,nanorcBGBlue,nanorcBGGreen,
+                                \ nanorcBGYellow,nanorcBGMagenta,nanorcBGCyan,
+                                \ nanorcBGBWhite,nanorcBGBBlack,nanorcBGBRed,
+                                \ nanorcBGBBlue,nanorcBGBGreen,nanorcBGBYellow,
+                                \ nanorcBGBMagenta,nanorcBGBCyan
+
+syn keyword nanorcBGWhite       contained white
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBlack       contained black
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGRed         contained red
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBlue        contained blue
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGGreen       contained green
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGYellow      contained yellow
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGMagenta     contained magenta
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGCyan        contained cyan
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBWhite      contained brightwhite
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBBlack      contained brightblack
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBRed        contained brightred
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBBlue       contained brightblue
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBGreen      contained brightgreen
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBYellow     contained brightyellow
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBMagenta    contained brightmagenta
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn keyword nanorcBGBCyan       contained brightcyan
+                                \ nextgroup=@nanorcBGSpec skipwhite
+
+syn match   nanorcBGColorSep    contained ',' nextgroup=@nanorcBGColor
+
+syn cluster nanorcFGSpec        contains=nanorcBGColorSep,nanorcRegexes,
+                                \ nanorcStartRegion
+
+syn cluster nanorcBGSpec        contains=nanorcRegexes,nanorcStartRegion
+
+syn keyword nanorcStartRegion   contained start nextgroup=nanorcStartRegionEq
+
+syn match   nanorcStartRegionEq contained '=' nextgroup=nanorcRegion
+
+syn region  nanorcRegion        contained display oneline start=+"+
+                                \ end=+"\ze\%([[:blank:]]\|$\)+
+                                \ nextgroup=nanorcEndRegion skipwhite
+
+syn keyword nanorcEndRegion     contained end nextgroup=nanorcStartRegionEq
+
+syn match   nanorcEndRegionEq   contained '=' nextgroup=nanorcRegex
+
+syn region  nanorcRegex         contained display oneline start=+"+
+                                \ end=+"\ze\%([[:blank:]]\|$\)+
+
+hi def link nanorcTodo          Todo
+hi def link nanorcComment       Comment
+hi def link nanorcKeyword       Keyword
+hi def link nanorcBoolOption    Identifier
+hi def link nanorcStringOption  Identifier
+hi def link nanorcNumberOption  Identifier
+hi def link nanorcSynGroupName  String
+hi def link nanorcString        String
+hi def link nanorcRegexes       nanorcString
+hi def link nanorcNumber        Number
+hi def      nanorcFGWhite       ctermfg=Gray guifg=Gray
+hi def      nanorcFGBlack       ctermfg=Black guifg=Black
+hi def      nanorcFGRed         ctermfg=DarkRed guifg=DarkRed
+hi def      nanorcFGBlue        ctermfg=DarkBlue guifg=DarkBlue
+hi def      nanorcFGGreen       ctermfg=DarkGreen guifg=DarkGreen
+hi def      nanorcFGYellow      ctermfg=Brown guifg=Brown
+hi def      nanorcFGMagenta     ctermfg=DarkMagenta guifg=DarkMagenta
+hi def      nanorcFGCyan        ctermfg=DarkCyan guifg=DarkCyan
+hi def      nanorcFGBWhite      ctermfg=White guifg=White
+hi def      nanorcFGBBlack      ctermfg=DarkGray guifg=DarkGray
+hi def      nanorcFGBRed        ctermfg=Red guifg=Red
+hi def      nanorcFGBBlue       ctermfg=Blue guifg=Blue
+hi def      nanorcFGBGreen      ctermfg=Green guifg=Green
+hi def      nanorcFGBYellow     ctermfg=Yellow guifg=Yellow
+hi def      nanorcFGBMagenta    ctermfg=Magenta guifg=Magenta
+hi def      nanorcFGBCyan       ctermfg=Cyan guifg=Cyan
+hi def link nanorcBGColorSep    Normal
+hi def      nanorcBGWhite       ctermbg=Gray guibg=Gray
+hi def      nanorcBGBlack       ctermbg=Black guibg=Black
+hi def      nanorcBGRed         ctermbg=DarkRed guibg=DarkRed
+hi def      nanorcBGBlue        ctermbg=DarkBlue guibg=DarkBlue
+hi def      nanorcBGGreen       ctermbg=DarkGreen guibg=DarkGreen
+hi def      nanorcBGYellow      ctermbg=Brown guibg=Brown
+hi def      nanorcBGMagenta     ctermbg=DarkMagenta guibg=DarkMagenta
+hi def      nanorcBGCyan        ctermbg=DarkCyan guibg=DarkCyan
+hi def      nanorcBGBWhite      ctermbg=White guibg=White
+hi def      nanorcBGBBlack      ctermbg=DarkGray guibg=DarkGray
+hi def      nanorcBGBRed        ctermbg=Red guibg=Red
+hi def      nanorcBGBBlue       ctermbg=Blue guibg=Blue
+hi def      nanorcBGBGreen      ctermbg=Green guibg=Green
+hi def      nanorcBGBYellow     ctermbg=Yellow guibg=Yellow
+hi def      nanorcBGBMagenta    ctermbg=Magenta guibg=Magenta
+hi def      nanorcBGBCyan       ctermbg=Cyan guibg=Cyan
+hi def link nanorcStartRegion   Type
+hi def link nanorcStartRegionEq Operator
+hi def link nanorcRegion        nanorcString
+hi def link nanorcEndRegion     Type
+hi def link nanorcEndRegionEq   Operator
+hi def link nanorcRegex         nanoRegexes
+
+let b:current_syntax = "nanorc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/passwd.vim b/runtime/syntax/passwd.vim
new file mode 100644
index 0000000000..ffb979f71c
--- /dev/null
+++ b/runtime/syntax/passwd.vim
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language:         passwd(5) password file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   passwdBegin         display '^' nextgroup=passwdAccount
+
+syn match   passwdAccount       contained display '[a-z_][a-z0-9_-]*'
+                                \ nextgroup=passwdPasswordColon
+
+syn match   passwdPasswordColon contained display ':'
+                                \ nextgroup=passwdPassword,passwdShadow
+
+syn match   passwdPassword      contained display '[^:]\+'
+                                \ nextgroup=passwdUIDColon
+
+syn match   passwdShadow        contained display '[x*!]'
+                                \ nextgroup=passwdUIDColon
+
+syn match   passwdUIDColon      contained display ':' nextgroup=passwdUID
+
+syn match   passwdUID           contained display '\d\+'
+                                \ nextgroup=passwdGIDColon
+
+syn match   passwdGIDColon      contained display ':' nextgroup=passwdGID
+
+syn match   passwdGID           contained display '\d\+'
+                                \ nextgroup=passwdGecosColon
+
+syn match   passwdGecosColon    contained display ':' nextgroup=passwdGecos
+
+syn match   passwdGecos         contained display '[^:]*'
+                                \ nextgroup=passwdDirColon
+
+syn match   passwdDirColon      contained display ':' nextgroup=passwdDir
+
+syn match   passwdDir           contained display '/[^:]*'
+                                \ nextgroup=passwdShellColon
+
+syn match   passwdShellColon    contained display ':'
+                                \ nextgroup=passwdShell
+
+syn match   passwdShell         contained display '[/*][^:]*'
+
+hi def link passwdColon         Normal
+hi def link passwdAccount       Identifier
+hi def link passwdPasswordColon passwdColon
+hi def link passwdPassword      Number
+hi def link passwdShadow        Special
+hi def link passwdUIDColon      passwdColon
+hi def link passwdUID           Number
+hi def link passwdGIDColon      passwdColon
+hi def link passwdGID           Number
+hi def link passwdGecosColon    passwdColon
+hi def link passwdGecos         Comment
+hi def link passwdDirColon      passwdColon
+hi def link passwdDir           Type
+hi def link passwdShellColon    passwdColon
+hi def link passwdShell         Operator
+
+let b:current_syntax = "passwd"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/pinfo.vim b/runtime/syntax/pinfo.vim
index dc76e9fbf2..88d490cc24 100644
--- a/runtime/syntax/pinfo.vim
+++ b/runtime/syntax/pinfo.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         pinfo(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-28
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -73,8 +73,7 @@ syn keyword pinfoSpecialKeys      KEY_BREAK KEY_DOWN KEY_UP KEY_LEFT KEY_RIGHT
                                   \ KEY_PPAGE KEY_END KEY_IC KEY_DC
 syn region  pinfoSpecialKeys      matchgroup=pinfoSpecialKeys transparent
                                   \ start=+KEY_\%(F\|CTRL\|ALT\)(+ end=+)+
-syn region  pinfoSimpleKey        matchgroup=pinfoSimpleKey start=+'+
-                                  \ skip=+\\'+ end=+'+
+syn region  pinfoSimpleKey        start=+'+ skip=+\\'+ end=+'+
                                   \ contains=pinfoSimpleKeyEscape
 syn match   pinfoSimpleKeyEscape  +\\[\\nt']+
 syn match   pinfoKeycode          '\<\d\+\>'
diff --git a/runtime/syntax/protocols.vim b/runtime/syntax/protocols.vim
new file mode 100644
index 0000000000..ab586bcff7
--- /dev/null
+++ b/runtime/syntax/protocols.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language:         protocols(5) - Internet protocols definition file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   protocolsBegin    display '^'
+                              \ nextgroup=protocolsName,protocolsComment
+
+syn match   protocolsName     contained display '[[:graph:]]\+'
+                              \ nextgroup=protocolsPort skipwhite
+
+syn match   protocolsPort     contained display '\d\+'
+                              \ nextgroup=protocolsAliases,protocolsComment
+                              \ skipwhite
+
+syn match   protocolsAliases  contained display '\S\+'
+                              \ nextgroup=protocolsAliases,protocolsComment
+                              \ skipwhite
+
+syn keyword protocolsTodo     contained TODO FIXME XXX NOTE
+
+syn region  protocolsComment  display oneline start='#' end='$'
+                              \ contains=protocolsTodo,@Spell
+
+hi def link protocolsTodo      Todo
+hi def link protocolsComment   Comment
+hi def link protocolsName      Identifier
+hi def link protocolsPort      Number
+hi def link protocolsPPDiv     Delimiter
+hi def link protocolsPPDivDepr Error
+hi def link protocolsProtocol  Type
+hi def link protocolsAliases   Macro
+
+let b:current_syntax = "protocols"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/racc.vim b/runtime/syntax/racc.vim
index 064489564d..a8a8c055de 100644
--- a/runtime/syntax/racc.vim
+++ b/runtime/syntax/racc.vim
@@ -1,7 +1,7 @@
 " Vim default file
 " Language:         Racc input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,9 +12,9 @@ set cpo&vim
 
 syn keyword raccTodo        contained TODO FIXME XXX NOTE
 
-syn region  raccComment     matchgroup=raccComment start='/\*' end='\*/'
+syn region  raccComment     start='/\*' end='\*/'
                             \ contains=raccTodo,@Spell
-syn region  raccComment     matchgroup=raccComment start='#' end='$'
+syn region  raccComment     display oneline start='#' end='$'
                             \ contains=raccTodo,@Spell
 
 syn region  raccClass       transparent matchgroup=raccKeyword
@@ -77,10 +77,10 @@ syn match   raccTargetS     contained '\<\l[a-z0-9]*\>'
 
 syn match   raccSpecial     contained '\\["'\\]'
 
-syn region  raccString      matchgroup=raccString start=+"+ skip=+\\\\\|\\"+
-                            \ end=+"+ contains=raccSpecial
-syn region  raccString      matchgroup=raccString start=+'+ skip=+\\\\\|\\'+
-                            \ end=+'+ contains=raccSpecial
+syn region  raccString      start=+"+ skip=+\\\\\|\\"+ end=+"+
+                            \ contains=raccSpecial
+syn region  raccString      start=+'+ skip=+\\\\\|\\'+ end=+'+
+                            \ contains=raccSpecial
 
 syn region  raccRules       transparent matchgroup=raccKeyword start='\<rule\>'
                             \ end='\<end\>' contains=raccComment,raccString,
diff --git a/runtime/syntax/readline.vim b/runtime/syntax/readline.vim
index cc4d86d626..cd7b10f4a8 100644
--- a/runtime/syntax/readline.vim
+++ b/runtime/syntax/readline.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         readline(3) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 "   readline_has_bash - if defined add support for bash specific
 "                       settings/functions
 
@@ -16,8 +16,7 @@ setlocal iskeyword=@,48-57,-
 
 syn keyword readlineTodo        contained TODO FIXME XXX NOTE
 
-syn region  readlineComment     display oneline matchgroup=readlineComment
-                                \ start='^\s*#' end='$'
+syn region  readlineComment     display oneline start='^\s*#' end='$'
                                 \ contains=readlineTodo,@Spell
 
 syn match   readlineString      '^\s*[A-Za-z-]\+:'me=e-1 contains=readlineKeys
diff --git a/runtime/syntax/rnc.vim b/runtime/syntax/rnc.vim
index 99f7f19fa7..3758ec5b8e 100644
--- a/runtime/syntax/rnc.vim
+++ b/runtime/syntax/rnc.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         Relax NG compact syntax
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-27
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,7 +14,7 @@ setlocal iskeyword=@,48-57,_,-,.
 
 syn keyword rncTodo         contained TODO FIXME XXX NOTE
 
-syn region  rncComment      matchgroup=rncComment start='^\s*#' end='$'
+syn region  rncComment      display oneline start='^\s*#' end='$'
                             \ contains=rncTodo,@Spell
 
 syn match   rncOperator     display '[-|,&+?*~]'
@@ -30,12 +30,12 @@ syn match   rncSpecial      display '\\x{\x\+}'
 syn region rncAnnotation    transparent start='\[' end='\]'
                             \ contains=ALLBUT,rncComment,rncTodo
 
-syn region  rncLiteral      matchgroup=rncLiteral oneline start=+"+ end=+"+
+syn region  rncLiteral      display oneline start=+"+ end=+"+
                             \ contains=rncSpecial
-syn region  rncLiteral      matchgroup=rncLiteral oneline start=+'+ end=+'+
-syn region  rncLiteral      matchgroup=rncLiteral start=+"""+ end=+"""+
+syn region  rncLiteral      display oneline start=+'+ end=+'+
+syn region  rncLiteral      display oneline start=+"""+ end=+"""+
                             \ contains=rncSpecial
-syn region  rncLiteral      matchgroup=rncLiteral start=+'''+ end=+'''+
+syn region  rncLiteral      display oneline start=+'''+ end=+'''+
 
 syn match   rncDelimiter    display '[{},()]'
 
diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim
index a1b4429cde..2336783f56 100644
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         reStructuredText documentation format
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,8 +14,7 @@ syn keyword     rstTodo             contained FIXME TODO XXX NOTE
 
 syn case ignore
 
-syn region      rstComment          matchgroup=rstComment
-                                    \ start='^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)'
+syn region      rstComment          start='^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)'
                                     \ end='^\s\@!' contains=rstTodo
 
 syn cluster     rstCruft            contains=rstFootnoteLabel,rstCitationLabel,
diff --git a/runtime/syntax/screen.vim b/runtime/syntax/screen.vim
index 553d1d517d..1baaa5b161 100644
--- a/runtime/syntax/screen.vim
+++ b/runtime/syntax/screen.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         screen(1) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,15 +14,13 @@ syn match   screenEscape    '\\.'
 
 syn keyword screenTodo      contained TODO FIXME XXX NOTE
 
-syn region  screenComment   display oneline matchgroup=screenComment
-                            \ start='#' end='$' contains=screenTodo,@Spell
+syn region  screenComment   display oneline start='#' end='$'
+                            \ contains=screenTodo,@Spell
 
-syn region  screenString    display oneline matchgroup=screenString
-                            \ start=+"+ skip=+\\"+ end=+"\|$+
+syn region  screenString    display oneline start=+"+ skip=+\\"+ end=+"+
                             \ contains=screenVariable,screenSpecial
 
-syn region  screenLiteral   display oneline matchgroup=screenLiteral
-                            \ start=+'+ skip=+\\'+ end=+'\|$+
+syn region  screenLiteral   display oneline start=+'+ skip=+\\'+ end=+'+
 
 syn match   screenVariable  contained display '$\(\h\w*\|{\h\w*}\)'
 
diff --git a/runtime/syntax/sensors.vim b/runtime/syntax/sensors.vim
new file mode 100644
index 0000000000..41c13e8007
--- /dev/null
+++ b/runtime/syntax/sensors.vim
@@ -0,0 +1,52 @@
+" Vim syntax file
+" Language:         sensors.conf(5) - libsensors configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword sensorsTodo         contained TODO FIXME XXX NOTE
+
+syn region  sensorsComment      display oneline start='#' end='$'
+                                \ contains=sensorsTodo,@Spell
+
+
+syn keyword sensorsKeyword      bus chip label compute ignore set
+
+syn region  sensorsName         display oneline
+                                \ start=+"+ skip=+\\\\\|\\"+ end=+"+
+                                \ contains=sensorsNameSpecial
+syn match   sensorsName         display '\w\+'
+
+syn match   sensorsNameSpecial  display '\\["\\rnt]'
+
+syn match   sensorsLineContinue '\\$'
+
+syn match   sensorsNumber       display '\d*.\d\+\>'
+
+syn match   sensorsRealWorld    display '@'
+
+syn match   sensorsOperator     display '[+*/-]'
+
+syn match   sensorsDelimiter    display '[()]'
+
+hi def link sensorsTodo         Todo
+hi def link sensorsComment      Comment
+hi def link sensorsKeyword      Keyword
+hi def link sensorsName         String
+hi def link sensorsNameSpecial  SpecialChar
+hi def link sensorsLineContinue Special
+hi def link sensorsNumber       Number
+hi def link sensorsRealWorld    Identifier
+hi def link sensorsOperator     Normal
+hi def link sensorsDelimiter    Normal
+
+let b:current_syntax = "sensors"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/services.vim b/runtime/syntax/services.vim
new file mode 100644
index 0000000000..a2db7b1ac3
--- /dev/null
+++ b/runtime/syntax/services.vim
@@ -0,0 +1,54 @@
+" Vim syntax file
+" Language:         services(5) - Internet network services list
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-30
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   servicesBegin     display '^'
+                              \ nextgroup=servicesName,servicesComment
+
+syn match   servicesName      contained display '[[:graph:]]\+'
+                              \ nextgroup=servicesPort skipwhite
+
+syn match   servicesPort      contained display '\d\+'
+                              \ nextgroup=servicesPPDiv,servicesPPDivDepr
+                              \ skipwhite
+
+syn match   servicesPPDiv     contained display '/'
+                              \ nextgroup=servicesProtocol skipwhite
+
+syn match   servicesPPDivDepr contained display ','
+                              \ nextgroup=servicesProtocol skipwhite
+
+syn match   servicesProtocol  contained display '\S\+'
+                              \ nextgroup=servicesAliases,servicesComment
+                              \ skipwhite
+
+syn match   servicesAliases   contained display '\S\+'
+                              \ nextgroup=servicesAliases,servicesComment
+                              \ skipwhite
+
+syn keyword servicesTodo      contained TODO FIXME XXX NOTE
+
+syn region  servicesComment   display oneline start='#' end='$'
+                              \ contains=servicesTodo,@Spell
+
+hi def link servicesTodo      Todo
+hi def link servicesComment   Comment
+hi def link servicesName      Identifier
+hi def link servicesPort      Number
+hi def link servicesPPDiv     Delimiter
+hi def link servicesPPDivDepr Error
+hi def link servicesProtocol  Type
+hi def link servicesAliases   Macro
+
+let b:current_syntax = "services"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/setserial.vim b/runtime/syntax/setserial.vim
new file mode 100644
index 0000000000..6d410f57b3
--- /dev/null
+++ b/runtime/syntax/setserial.vim
@@ -0,0 +1,120 @@
+" Vim syntax file
+" Language:         setserial(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   setserialBegin      display '^'
+                                \ nextgroup=setserialDevice,setserialComment
+                                \ skipwhite
+
+syn match   setserialDevice     contained display '\%(/[^ \t/]*\)\+'
+                                \ nextgroup=setserialParameter skipwhite
+
+syn keyword setserialParameter  contained port irq baud_base divisor
+                                \ close_delay closing_wait rx_trigger
+                                \ tx_trigger flow_off flow_on rx_timeout
+                                \ nextgroup=setserialNumber skipwhite
+
+syn keyword setserialParameter  contained uart
+                                \ nextgroup=setserialUARTType skipwhite
+
+syn keyword setserialParameter  contained autoconfig auto_irq skip_test
+                                \ spd_hi spd_vhi spd_shi spd_warp spd_cust
+                                \ spd_normal sak fourport session_lockout
+                                \ pgrp_lockout hup_notify split_termios
+                                \ callout_nohup low_latency
+                                \ nextgroup=setserialParameter skipwhite
+
+syn match   setserialParameter  contained display
+                                \ '\^\%(auto_irq\|skip_test\|sak\|fourport\)'
+                                \ contains=setserialNegation
+                                \ nextgroup=setserialParameter skipwhite
+
+syn match   setserialParameter  contained display
+                                \ '\^\%(session_lockout\|pgrp_lockout\)'
+                                \ contains=setserialNegation
+                                \ nextgroup=setserialParameter skipwhite
+
+syn match   setserialParameter  contained display
+                                \ '\^\%(hup_notify\|split_termios\)'
+                                \ contains=setserialNegation
+                                \ nextgroup=setserialParameter skipwhite
+
+syn match   setserialParameter  contained display
+                                \ '\^\%(callout_nohup\|low_latency\)'
+                                \ contains=setserialNegation
+                                \ nextgroup=setserialParameter skipwhite
+
+syn keyword setserialParameter  contained set_multiport
+                                \ nextgroup=setserialMultiport skipwhite
+
+syn match   setserialNumber     contained display '\<\d\+\>'
+                                \ nextgroup=setserialParameter skipwhite
+syn match   setserialNumber     contained display '0x\x\+'
+                                \ nextgroup=setserialParameter skipwhite
+
+syn keyword setserialUARTType   contained none
+
+syn match   setserialUARTType   contained display
+                                \ '8250\|16[4789]50\|16550A\=\|16650\%(V2\)\='
+                                \ nextgroup=setserialParameter skipwhite
+
+syn match   setserialUARTType   contained display '166[59]4'
+                                \ nextgroup=setserialParameter skipwhite
+
+syn match   setserialNegation   contained display '\^'
+
+syn match   setserialMultiport  contained '\<port\d\+\>'
+                                \ nextgroup=setserialPort skipwhite
+
+syn match   setserialPort       contained display '\<\d\+\>'
+                                \ nextgroup=setserialMask skipwhite
+syn match   setserialPort       contained display '0x\x\+'
+                                \ nextgroup=setserialMask skipwhite
+
+syn match   setserialMask       contained '\<mask\d\+\>'
+                                \ nextgroup=setserialBitMask skipwhite
+
+syn match   setserialBitMask    contained display '\<\d\+\>'
+                                \ nextgroup=setserialMatch skipwhite
+syn match   setserialBitMask    contained display '0x\x\+'
+                                \ nextgroup=setserialMatch skipwhite
+
+syn match   setserialMatch      contained '\<match\d\+\>'
+                                \ nextgroup=setserialMatchBits skipwhite
+
+syn match   setserialMatchBits  contained display '\<\d\+\>'
+                                \ nextgroup=setserialMultiport skipwhite
+syn match   setserialMatchBits  contained display '0x\x\+'
+                                \ nextgroup=setserialMultiport skipwhite
+
+syn keyword setserialTodo       contained TODO FIXME XXX NOTE
+
+syn region  setserialComment    display oneline start='^\s*#' end='$'
+                                \ contains=setserialTodo,@Spell
+
+hi def link setserialTodo       Todo
+hi def link setserialComment    Comment
+hi def link setserialDevice     Normal
+hi def link setserialParameter  Identifier
+hi def link setserialNumber     Number
+hi def link setserialUARTType   Type
+hi def link setserialNegation   Operator
+hi def link setserialMultiport  Type
+hi def link setserialPort       setserialNumber
+hi def link setserialMask       Type
+hi def link setserialBitMask    setserialNumber
+hi def link setserialMatch      Type
+hi def link setserialMatchBits  setserialNumber
+
+let b:current_syntax = "setserial"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sieve.vim b/runtime/syntax/sieve.vim
index 1ce67137c1..fa369fc737 100644
--- a/runtime/syntax/sieve.vim
+++ b/runtime/syntax/sieve.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         Sieve filtering language input file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,9 +12,8 @@ set cpo&vim
 
 syn keyword sieveTodo         contained TODO FIXME XXX NOTE
 
-syn region  sieveComment      matchgroup=sieveComment start='/\*' end='\*/'
-                              \ contains=sieveTodo,@Spell
-syn region  sieveComment      matchgroup=sieveComment start='#' end='$'
+syn region  sieveComment      start='/\*' end='\*/' contains=sieveTodo,@Spell
+syn region  sieveComment      display oneline start='#' end='$'
                               \ contains=sieveTodo,@Spell
 
 syn case ignore
@@ -25,9 +24,9 @@ syn match   sieveNumber       display '\<\d\+[KMG]\=\>'
 
 syn match   sieveSpecial      display '\\["\\]'
 
-syn region  sieveString       matchgroup=sieveString start=+"+
-                              \ skip=+\\\\\|\\"+ end=+"+ contains=sieveSpecial
-syn region  sieveString       matchgroup=sieveString start='text:' end='\n.\n'
+syn region  sieveString       start=+"+ skip=+\\\\\|\\"+ end=+"+
+                              \ contains=sieveSpecial
+syn region  sieveString       start='text:' end='\n.\n'
 
 syn keyword sieveConditional  if elsif else
 syn keyword sieveTest         address allof anyof envelope exists false header
diff --git a/runtime/syntax/slpconf.vim b/runtime/syntax/slpconf.vim
new file mode 100644
index 0000000000..4b3c5a17ae
--- /dev/null
+++ b/runtime/syntax/slpconf.vim
@@ -0,0 +1,273 @@
+" Vim syntax file
+" Language:         RFC 2614 - An API for Service Location configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword slpconfTodo         contained TODO FIXME XXX NOTE
+
+syn region  slpconfComment      display oneline start='^[#;]' end='$'
+                                \ contains=slpconfTodo,@Spell
+
+syn match   slpconfBegin        display '^'
+                                \ nextgroup=slpconfTag,
+                                \ slpconfComment skipwhite
+
+syn keyword slpconfTag          contained net
+                                \ nextgroup=slpconfNetTagDot
+
+syn match   slpconfNetTagDot    contained display '.'
+                                \ nextgroup=slpconfNetTag
+
+syn keyword slpconfNetTag       contained slp
+                                \ nextgroup=slpconfNetSlpTagdot
+
+syn match   slpconfNetSlpTagDot contained display '.'
+                                \ nextgroup=slpconfNetSlpTag
+
+syn keyword slpconfNetSlpTag    contained isDA traceDATraffic traceMsg
+                                \ traceDrop traceReg isBroadcastOnly
+                                \ passiveDADetection securityEnabled
+                                \ nextgroup=slpconfBooleanEq,slpconfBooleanHome
+                                \ skipwhite
+
+syn match   slpconfBooleanHome  contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfBooleanEq skipwhite
+
+syn match   slpconfBooleanEq    contained display '='
+                                \ nextgroup=slpconfBoolean skipwhite
+
+syn keyword slpconfBoolean      contained true false TRUE FALSE
+
+syn keyword slpconfNetSlpTag    contained DAHeartBeat multicastTTL
+                                \ DAActiveDiscoveryInterval
+                                \ multicastMaximumWait multicastTimeouts
+                                \ randomWaitBound MTU maxResults
+                                \ nextgroup=slpconfIntegerEq,slpconfIntegerHome
+                                \ skipwhite
+
+syn match   slpconfIntegerHome  contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfIntegerEq skipwhite
+
+syn match   slpconfIntegerEq    contained display '='
+                                \ nextgroup=slpconfInteger skipwhite
+
+syn match   slpconfInteger      contained display '\<\d\+\>'
+
+syn keyword slpconfNetSlpTag    contained DAAttributes SAAttributes
+                                \ nextgroup=slpconfAttrEq,slpconfAttrHome
+                                \ skipwhite
+
+syn match   slpconfAttrHome     contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfAttrEq skipwhite
+
+syn match   slpconfAttrEq       contained display '='
+                                \ nextgroup=slpconfAttrBegin skipwhite
+
+syn match   slpconfAttrBegin    contained display '('
+                                \ nextgroup=slpconfAttrTag skipwhite
+
+syn match   slpconfAttrTag      contained display
+                                \ '[^* \t_(),\\!<=>~[:cntrl:]]\+'
+                                \ nextgroup=slpconfAttrTagEq skipwhite
+
+syn match   slpconfAttrTagEq    contained display '='
+                                \ nextgroup=@slpconfAttrValue skipwhite
+
+syn cluster slpconfAttrValueCon contains=slpconfAttrValueSep,slpconfAttrEnd
+
+syn cluster slpconfAttrValue    contains=slpconfAttrIValue,slpconfAttrSValue,
+                                \ slpconfAttrBValue,slpconfAttrSSValue
+
+syn match   slpconfAttrSValue   contained display '[^ (),\\!<=>~[:cntrl:]]\+'
+                                \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn match   slpconfAttrSSValue  contained display '\\FF\%(\\\x\x\)\+'
+                                \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn match   slpconfAttrIValue   contained display '[-]\=\d\+\>'
+                                \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn keyword slpconfAttrBValue   contained true false
+                                \ nextgroup=@slpconfAttrValueCon skipwhite
+
+syn match   slpconfAttrValueSep contained display ','
+                                \ nextgroup=@slpconfAttrValue skipwhite
+
+syn match   slpconfAttrEnd      contained display ')'
+                                \ nextgroup=slpconfAttrSep skipwhite
+
+syn match   slpconfAttrSep      contained display ','
+                                \ nextgroup=slpconfAttrBegin skipwhite
+
+syn keyword slpconfNetSlpTag    contained useScopes typeHint
+                                \ nextgroup=slpconfStringsEq,slpconfStringsHome
+                                \ skipwhite
+
+syn match   slpconfStringsHome  contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfStringsEq skipwhite
+
+syn match   slpconfStringsEq    contained display '='
+                                \ nextgroup=slpconfStrings skipwhite
+
+syn match   slpconfStrings      contained display
+                                \ '\%([[:digit:][:alpha:]]\|[!-+./:-@[-`{-~-]\|\\\x\x\)\+'
+                                \ nextgroup=slpconfStringsSep skipwhite
+
+syn match   slpconfStringsSep   contained display ','
+                                \ nextgroup=slpconfStrings skipwhite
+
+syn keyword slpconfNetSlpTag    contained DAAddresses
+                                \ nextgroup=slpconfAddressesEq,slpconfAddrsHome
+                                \ skipwhite
+
+syn match   slpconfAddrsHome    contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfAddressesEq skipwhite
+
+syn match   slpconfAddressesEq  contained display '='
+                                \ nextgroup=@slpconfAddresses skipwhite
+
+syn cluster slpconfAddresses    contains=slpconfFQDNs,slpconfHostnumbers
+
+syn match   slpconfFQDNs        contained display
+                                \ '\a[[:alnum:]-]*[[:alnum:]]\|\a'
+                                \ nextgroup=slpconfAddressesSep skipwhite
+
+syn match   slpconfHostnumbers  contained display
+                                \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfAddressesSep skipwhite
+
+syn match   slpconfAddressesSep contained display ','
+                                \ nextgroup=@slpconfAddresses skipwhite
+
+syn keyword slpconfNetSlpTag    contained serializedRegURL
+                                \ nextgroup=slpconfStringEq,slpconfStringHome
+                                \ skipwhite
+
+syn match   slpconfStringHome   contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfStringEq skipwhite
+
+syn match   slpconfStringEq     contained display '='
+                                \ nextgroup=slpconfString skipwhite
+
+syn match   slpconfString       contained display
+                                \ '\%([!-+./:-@[-`{-~-]\|\\\x\x\)\+\|[[:digit:][:alpha:]]'
+
+syn keyword slpconfNetSlpTag    contained multicastTimeouts DADiscoveryTimeouts
+                                \ datagramTimeouts
+                                \ nextgroup=slpconfIntegersEq,
+                                \ slpconfIntegersHome skipwhite
+
+syn match   slpconfIntegersHome contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfIntegersEq skipwhite
+
+syn match   slpconfIntegersEq   contained display '='
+                                \ nextgroup=slpconfIntegers skipwhite
+
+syn match   slpconfIntegers     contained display '\<\d\+\>'
+                                \ nextgroup=slpconfIntegersSep skipwhite
+
+syn match   slpconfIntegersSep  contained display ','
+                                \ nextgroup=slpconfIntegers skipwhite
+
+syn keyword slpconfNetSlpTag    contained interfaces
+                                \ nextgroup=slpconfHostnumsEq,
+                                \ slpconfHostnumsHome skipwhite
+
+syn match   slpconfHostnumsHome contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfHostnumsEq skipwhite
+
+syn match   slpconfHostnumsEq   contained display '='
+                                \ nextgroup=slpconfOHostnumbers skipwhite
+
+syn match   slpconfOHostnumbers contained display
+                                \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfHostnumsSep skipwhite
+
+syn match   slpconfHostnumsSep  contained display ','
+                                \ nextgroup=slpconfOHostnumbers skipwhite
+
+syn keyword slpconfNetSlpTag    contained locale
+                                \ nextgroup=slpconfLocaleEq,slpconfLocaleHome
+                                \ skipwhite
+
+syn match   slpconfLocaleHome   contained display
+                                \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}'
+                                \ nextgroup=slpconfLocaleEq skipwhite
+
+syn match   slpconfLocaleEq     contained display '='
+                                \ nextgroup=slpconfLocale skipwhite
+
+syn match   slpconfLocale       contained display '\a\{1,8}\%(-\a\{1,8}\)\='
+
+hi def link slpconfTodo         Todo
+hi def link slpconfComment      Comment
+hi def link slpconfTag          Identifier
+hi def link slpconfDelimiter    Delimiter
+hi def link slpconfNetTagDot    slpconfDelimiter
+hi def link slpconfNetTag       slpconfTag
+hi def link slpconfNetSlpTagDot slpconfNetTagDot
+hi def link slpconfNetSlpTag    slpconfTag
+hi def link slpconfHome         Special
+hi def link slpconfBooleanHome  slpconfHome
+hi def link slpconfEq           Operator
+hi def link slpconfBooleanEq    slpconfEq
+hi def link slpconfBoolean      Boolean
+hi def link slpconfIntegerHome  slpconfHome
+hi def link slpconfIntegerEq    slpconfEq
+hi def link slpconfInteger      Number
+hi def link slpconfAttrHome     slpconfHome
+hi def link slpconfAttrEq       slpconfEq
+hi def link slpconfAttrBegin    slpconfDelimiter
+hi def link slpconfAttrTag      slpconfTag
+hi def link slpconfAttrTagEq    slpconfEq
+hi def link slpconfAttrIValue   slpconfInteger
+hi def link slpconfAttrSValue   slpconfString
+hi def link slpconfAttrBValue   slpconfBoolean
+hi def link slpconfAttrSSValue  slpconfString
+hi def link slpconfSeparator    slpconfDelimiter
+hi def link slpconfAttrValueSep slpconfSeparator
+hi def link slpconfAttrEnd      slpconfAttrBegin
+hi def link slpconfAttrSep      slpconfSeparator
+hi def link slpconfStringsHome  slpconfHome
+hi def link slpconfStringsEq    slpconfEq
+hi def link slpconfStrings      slpconfString
+hi def link slpconfStringsSep   slpconfSeparator
+hi def link slpconfAddrsHome    slpconfHome
+hi def link slpconfAddressesEq  slpconfEq
+hi def link slpconfFQDNs        String
+hi def link slpconfHostnumbers  Number
+hi def link slpconfAddressesSep slpconfSeparator
+hi def link slpconfStringHome   slpconfHome
+hi def link slpconfStringEq     slpconfEq
+hi def link slpconfString       String
+hi def link slpconfIntegersHome slpconfHome
+hi def link slpconfIntegersEq   slpconfEq
+hi def link slpconfIntegers     slpconfInteger
+hi def link slpconfIntegersSep  slpconfSeparator
+hi def link slpconfHostnumsHome slpconfHome
+hi def link slpconfHostnumsEq   slpconfEq
+hi def link slpconfOHostnumbers slpconfHostnumbers
+hi def link slpconfHostnumsSep  slpconfSeparator
+hi def link slpconfLocaleHome   slpconfHome
+hi def link slpconfLocaleEq     slpconfEq
+hi def link slpconfLocale       slpconfString
+
+let b:current_syntax = "slpconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/slpreg.vim b/runtime/syntax/slpreg.vim
new file mode 100644
index 0000000000..c4e16a9efa
--- /dev/null
+++ b/runtime/syntax/slpreg.vim
@@ -0,0 +1,122 @@
+" Vim syntax file
+" Language:         RFC 2614 - An API for Service Location registration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword slpregTodo          contained TODO FIXME XXX NOTE
+
+syn region  slpregComment       display oneline start='^[#;]' end='$'
+                                \ contains=slpregTodo,@Spell
+
+syn match   slpregBegin         display '^'
+                                \ nextgroup=slpregServiceURL,
+                                \ slpregComment
+
+syn match   slpregServiceURL    contained display 'service:'
+                                \ nextgroup=slpregServiceType
+
+syn match   slpregServiceType   contained display '\a[[:alpha:][:digit:]+-]*\%(\.\a[[:alpha:][:digit:]+-]*\)\=\%(:\a[[:alpha:][:digit:]+-]*\)\='
+                                \ nextgroup=slpregServiceSAPCol
+
+syn match   slpregServiceSAPCol contained display ':'
+                                \ nextgroup=slpregSAP
+
+syn match   slpregSAP           contained '[^,]\+'
+                                \ nextgroup=slpregLangSep
+"syn match   slpregSAP           contained display '\%(//\%(\%([[:alpha:][:digit:]$-_.~!*\'(),+;&=]*@\)\=\%([[:alnum:]][[:alnum:]-]*[[:alnum:]]\|[[:alnum:]]\.\)*\%(\a[[:alnum:]-]*[[:alnum:]]\|\a\)\%(:\d\+\)\=\)\=\|/at/\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}:\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}\|/ipx/\x\{8}:\x\{12}:\x\{4}\)\%(/\%([[:alpha:][:digit:]$-_.~!*\'()+;?:@&=+]\|\\\x\x\)*\)*\%(;[^()\\!<=>~[:cntrl:]* \t_]\+\%(=[^()\\!<=>~[:cntrl:] ]\+\)\=\)*'
+
+syn match   slpregLangSep       contained display ','
+                                \ nextgroup=slpregLang
+
+syn match   slpregLang          contained display '\a\{1,8}\%(-\a\{1,8\}\)\='
+                                \ nextgroup=slpregLTimeSep
+
+syn match   slpregLTimeSep      contained display ','
+                                \ nextgroup=slpregLTime
+
+syn match   slpregLTime         contained display '\d\{1,5}'
+                                \ nextgroup=slpregType,slpregUNewline
+
+syn match   slpregType          contained display '\a[[:alpha:][:digit:]+-]*'
+                                \ nextgroup=slpregUNewLine
+
+syn match   slpregUNewLine      contained '\s*\n'
+                                \ nextgroup=slpregScopes,slpregAttrList skipnl
+
+syn keyword slpregScopes        contained scopes
+                                \ nextgroup=slpregScopesEq
+
+syn match   slpregScopesEq      contained '=' nextgroup=slpregScopeName
+
+syn match   slpregScopeName     contained '[^(),\\!<=>[:cntrl:];*+ ]\+'
+                                \ nextgroup=slpregScopeNameSep,
+                                \ slpregScopeNewline
+
+syn match   slpregScopeNameSep  contained ','
+                                \ nextgroup=slpregScopeName
+
+syn match   slpregScopeNewline  contained '\s*\n'
+                                \ nextgroup=slpregAttribute skipnl
+
+syn match   slpregAttribute     contained '[^(),\\!<=>[:cntrl:]* \t_]\+'
+                                \ nextgroup=slpregAttributeEq,
+                                \ slpregScopeNewline
+
+syn match   slpregAttributeEq   contained '='
+                                \ nextgroup=@slpregAttrValue
+
+syn cluster slpregAttrValueCon  contains=slpregAttribute,slpregAttrValueSep
+
+syn cluster slpregAttrValue     contains=slpregAttrIValue,slpregAttrSValue,
+                                \ slpregAttrBValue,slpregAttrSSValue
+
+syn match   slpregAttrSValue    contained display '[^(),\\!<=>~[:cntrl:]]\+'
+                                \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn match   slpregAttrSSValue   contained display '\\FF\%(\\\x\x\)\+'
+                                \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn match   slpregAttrIValue    contained display '[-]\=\d\+\>'
+                                \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn keyword slpregAttrBValue    contained true false
+                                \ nextgroup=@slpregAttrValueCon skipwhite skipnl
+
+syn match   slpregAttrValueSep  contained display ','
+                                \ nextgroup=@slpregAttrValue skipwhite skipnl
+
+hi def link slpregTodo          Todo
+hi def link slpregComment       Comment
+hi def link slpregServiceURL    Type
+hi def link slpregServiceType   slpregServiceURL
+hi def link slpregServiceSAPCol slpregServiceURL
+hi def link slpregSAP           slpregServiceURL
+hi def link slpregDelimiter     Delimiter
+hi def link slpregLangSep       slpregDelimiter
+hi def link slpregLang          String
+hi def link slpregLTimeSep      slpregDelimiter
+hi def link slpregLTime         Number
+hi def link slpregType          Type
+hi def link slpregScopes        Identifier
+hi def link slpregScopesEq      Operator
+hi def link slpregScopeName     String
+hi def link slpregScopeNameSep  slpregDelimiter
+hi def link slpregAttribute     Identifier
+hi def link slpregAttributeEq   Operator
+hi def link slpregAttrSValue    String
+hi def link slpregAttrSSValue   slpregAttrSValue
+hi def link slpregAttrIValue    Number
+hi def link slpregAttrBValue    Boolean
+hi def link slpregAttrValueSep  slpregDelimiter
+
+let b:current_syntax = "slpreg"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/slpspi.vim b/runtime/syntax/slpspi.vim
new file mode 100644
index 0000000000..e6d0c154a0
--- /dev/null
+++ b/runtime/syntax/slpspi.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language:         RFC 2614 - An API for Service Location SPI file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword slpspiTodo          contained TODO FIXME XXX NOTE
+
+syn region  slpspiComment       display oneline start='^[#;]' end='$'
+                                \ contains=slpspiTodo,@Spell
+
+syn match   slpspiBegin         display '^'
+                                \ nextgroup=slpspiKeyType,
+                                \ slpspiComment skipwhite
+
+syn keyword slpspiKeyType       contained PRIVATE PUBLIC
+                                \ nextgroup=slpspiString skipwhite
+
+syn match   slpspiString        contained '\S\+'
+                                \ nextgroup=slpspiKeyFile skipwhite
+
+syn match   slpspiKeyFile       contained '\S\+'
+
+hi def link slpspiTodo          Todo
+hi def link slpspiComment       Comment
+hi def link slpspiKeyType       Type
+hi def link slpspiString        Identifier
+hi def link slpspiKeyFile       String
+
+let b:current_syntax = "slpspi"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/sudoers.vim b/runtime/syntax/sudoers.vim
index e197ca2c70..81d808fef3 100644
--- a/runtime/syntax/sudoers.vim
+++ b/runtime/syntax/sudoers.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         sudoers(5) configuration files
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -23,7 +23,7 @@ syn cluster sudoersCmndSpecList       contains=sudoersUserRunasBegin,sudoersPASS
 
 syn keyword sudoersTodo               contained TODO FIXME XXX NOTE
 
-syn region  sudoersComment            matchgroup=sudoersComment start='#' end='$' contains=sudoersTodo
+syn region  sudoersComment            display oneline start='#' end='$' contains=sudoersTodo
 
 syn keyword sudoersAlias              User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
 syn keyword sudoersAlias              Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
diff --git a/runtime/syntax/terminfo.vim b/runtime/syntax/terminfo.vim
index c83a3a3f46..9fd7845169 100644
--- a/runtime/syntax/terminfo.vim
+++ b/runtime/syntax/terminfo.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         terminfo(5) definition
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -14,7 +14,7 @@ syn match terminfoKeywords      '[,=#|]'
 
 syn keyword terminfoTodo        contained TODO FIXME XXX NOTE
 
-syn region  terminfoComment     matchgroup=terminfoComment start='^#' end='$'
+syn region  terminfoComment     display oneline start='^#' end='$'
                                 \ contains=terminfoTodo,@Spell
 
 syn match   terminfoNumbers     '\<[0-9]\+\>'
diff --git a/runtime/syntax/udevconf.vim b/runtime/syntax/udevconf.vim
new file mode 100644
index 0000000000..487a8acd8f
--- /dev/null
+++ b/runtime/syntax/udevconf.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language:         udev(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword udevconfTodo        contained TODO FIXME XXX NOTE
+
+syn region  udevconfComment     display oneline start='^\s*#' end='$'
+                                \ contains=udevconfTodo,@Spell
+
+syn match   udevconfBegin       display '^'
+                                \ nextgroup=udevconfVariable,udevconfComment
+                                \ skipwhite
+
+syn keyword udevconfVariable    contained udev_root udev_db udev_rules udev_log
+                                \ nextgroup=udevconfVariableEq
+
+syn match   udevconfVariableEq  contained '[[:space:]=]'
+                                \ nextgroup=udevconfString skipwhite
+
+syn region  udevconfString      contained display oneline start=+"+ end=+"+
+
+hi def link udevconfTodo        Todo
+hi def link udevconfComment     Comment
+hi def link udevconfVariable    Identifier
+hi def link udevconfVariableEq  Operator
+hi def link udevconfString      String
+
+let b:current_syntax = "udevconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/udevperm.vim b/runtime/syntax/udevperm.vim
new file mode 100644
index 0000000000..c2029a4f27
--- /dev/null
+++ b/runtime/syntax/udevperm.vim
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language:         udev(8) permissions file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-01
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   udevpermBegin       display '^' nextgroup=udevpermDevice
+
+syn match   udevpermDevice      contained display '[^:]\+'
+                                \ contains=udevpermPattern
+                                \ nextgroup=udevpermUserColon
+
+syn match   udevpermPattern     contained '[*?]'
+syn region  udevpermPattern     contained start='\[!\=' end='\]'
+                                \ contains=udevpermPatRange
+
+syn match   udevpermPatRange    contained '[^[-]-[^]-]'
+
+syn match   udevpermUserColon   contained display ':'
+                                \ nextgroup=udevpermUser
+
+syn match   udevpermUser        contained display '[^:]\+'
+                                \ nextgroup=udevpermGroupColon
+
+syn match   udevpermGroupColon  contained display ':'
+                                \ nextgroup=udevpermGroup
+
+syn match   udevpermGroup       contained display '[^:]\+'
+                                \ nextgroup=udevpermPermColon
+
+syn match   udevpermPermColon   contained display ':'
+                                \ nextgroup=udevpermPerm
+
+syn match   udevpermPerm        contained display '\<0\=\o\+\>'
+                                \ contains=udevpermOctalZero
+
+syn match   udevpermOctalZero   contained display '\<0'
+syn match   udevpermOctalError  contained display '\<0\o*[89]\d*\>'
+
+syn keyword udevpermTodo        contained TODO FIXME XXX NOTE
+
+syn region  udevpermComment     display oneline start='^\s*#' end='$'
+                                \ contains=udevpermTodo,@Spell
+
+hi def link udevpermTodo        Todo
+hi def link udevpermComment     Comment
+hi def link udevpermDevice      String
+hi def link udevpermPattern     SpecialChar
+hi def link udevpermPatRange    udevpermPattern
+hi def link udevpermColon       Normal
+hi def link udevpermUserColon   udevpermColon
+hi def link udevpermUser        Identifier
+hi def link udevpermGroupColon  udevpermColon
+hi def link udevpermGroup       Type
+hi def link udevpermPermColon   udevpermColon
+hi def link udevpermPerm        Number
+hi def link udevpermOctalZero   PreProc
+hi def link udevpermOctalError  Error
+
+let b:current_syntax = "udevperm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/udevrules.vim b/runtime/syntax/udevrules.vim
new file mode 100644
index 0000000000..7deac2ab28
--- /dev/null
+++ b/runtime/syntax/udevrules.vim
@@ -0,0 +1,117 @@
+" Vim syntax file
+" Language:         udev(8) rules file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-07-04
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword udevrulesTodo       contained TODO FIXME XXX NOTE
+
+syn region  udevrulesComment    display oneline start='^\s*#' end='$'
+                                \ contains=udevrulesTodo,@Spell
+
+syn keyword udevrulesRuleKey    BUS KERNEL SUBSYSTEM DRIVER ID RESULT
+                                \ nextgroup=udevrulesRuleEq
+
+syn keyword udevrulesRuleKey    SYSFS nextgroup=udevrulesSysFSPath
+
+syn region  udevrulesSysFSPath  display transparent
+                                \ matchgroup=udevrulesDelimiter start='{'
+                                \ matchgroup=udevrulesDelimiter end='}'
+                                \ contains=udevrulesPath
+                                \ nextgroup=udevrulesRuleEq
+
+syn keyword udevrulesRuleKey    ENV nextgroup=udevrulesEnvVar
+
+syn region  udevrulesEnvVar     display transparent
+                                \ matchgroup=udevrulesDelimiter start='{'
+                                \ matchgroup=udevrulesDelimiter end='}'
+                                \ contains=udevrulesVariable
+                                \ nextgroup=udevrulesRuleEq
+
+syn keyword udevrulesRuleKey    PROGRAM
+                                \ nextgroup=udevrulesEStringEq
+
+syn keyword udevrulesAssignKey  NAME SYMLINK OWNER GROUP
+                                \ nextgroup=udevrulesEStringEq
+
+syn keyword udevrulesAssignKey  MODE
+                                \ nextgroup=udevrulesRuleEq
+
+syn keyword udevrulesAssignKey  OPTIONS
+                                \ nextgroup=udevrulesOptionsEq
+
+syn match   udevrulesPath       contained display '[^}]\+'
+
+syn match   udevrulesVariable   contained display '[^}]\+'
+
+syn match   udevrulesRuleEq     contained '[[:space:]=]'
+                                \ nextgroup=udevrulesString skipwhite
+
+syn match   udevrulesEStringEq  contained '[[:space:]=]'
+                                \ nextgroup=udevrulesEString skipwhite
+
+syn match   udevrulesOptionsEq  contained '[[:space:]=]'
+                                \ nextgroup=udevrulesOptions skipwhite
+
+syn region  udevrulesEString    contained display oneline start=+"+ end=+"+
+                                \ contains=udevrulesStrEscapes
+
+syn match   udevrulesStrEscapes contained '%[nkpMmbcNPe%]'
+
+syn region  udevrulesStrEscapes contained start='%c{' end='}'
+                                \ contains=udevrulesStrNumber
+
+syn region  udevrulesStrEscapes contained start='%s{' end='}'
+                                \ contains=udevrulesPath
+
+syn match   udevrulesStrNumber  contained '\d\++\='
+
+syn region  udevrulesString     contained display oneline start=+"+ end=+"+
+                                \ contains=udevrulesPattern
+
+syn match   udevrulesPattern    contained '[*?]'
+syn region  udevrulesPattern    contained start='\[!\=' end='\]'
+                                \ contains=udevrulesPatRange
+
+syn match   udevrulesPatRange   contained '[^[-]-[^]-]'
+
+syn region  udevrulesOptions    contained display oneline start=+"+ end=+"+
+                                \ contains=udevrulesOption,udevrulesOptionSep
+
+syn keyword udevrulesOption     contained last_rule ignore_device ignore_remove
+                                \ all_partitions
+
+syn match   udevrulesOptionSep  contained ','
+
+hi def link udevrulesTodo       Todo
+hi def link udevrulesComment    Comment
+hi def link udevrulesRuleKey    Keyword
+hi def link udevrulesDelimiter  Delimiter
+hi def link udevrulesAssignKey  Identifier
+hi def link udevrulesPath       Identifier
+hi def link udevrulesVariable   Identifier
+" XXX: setting this to Operator makes for extremely intense highlighting.
+hi def link udevrulesEq         Normal
+hi def link udevrulesRuleEq     udevrulesEq
+hi def link udevrulesEStringEq  udevrulesEq
+hi def link udevrulesOptionsEq  udevrulesEq
+hi def link udevrulesEString    udevrulesString
+hi def link udevrulesStrEscapes SpecialChar
+hi def link udevrulesStrNumber  Number
+hi def link udevrulesString     String
+hi def link udevrulesPattern    SpecialChar
+hi def link udevrulesPatRange   SpecialChar
+hi def link udevrulesOptions    udevrulesString
+hi def link udevrulesOption     Type
+hi def link udevrulesOptionSep  Delimiter
+
+let b:current_syntax = "udevrules"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/updatedb.vim b/runtime/syntax/updatedb.vim
index 91c335d663..e2b7903115 100644
--- a/runtime/syntax/updatedb.vim
+++ b/runtime/syntax/updatedb.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         updatedb.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -23,9 +23,7 @@ syn keyword updatedbName    contained PRUNEFS PRUNEPATHS
 
 syn match   updatedbNameEq  contained display '=' nextgroup=updatedbValue
 
-syn region  updatedbValue   contained display oneline
-                            \ matchgroup=updatedbValue start='"'
-                            \ matchgroup=updatedbValue end='"'
+syn region  updatedbValue   contained display oneline start='"' end='"'
 
 hi def link updatedbTodo    Todo
 hi def link updatedbComment Comment
diff --git a/runtime/syntax/xinetd.vim b/runtime/syntax/xinetd.vim
index d9753ff171..e8e57bebf6 100644
--- a/runtime/syntax/xinetd.vim
+++ b/runtime/syntax/xinetd.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         xinetd.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-06-30
 
 if exists("b:current_syntax")
   finish
diff --git a/runtime/syntax/xmodmap.vim b/runtime/syntax/xmodmap.vim
index cf60c478b4..2b097dfe68 100644
--- a/runtime/syntax/xmodmap.vim
+++ b/runtime/syntax/xmodmap.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         xmodmap(1) definition file
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-29
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,8 +12,8 @@ set cpo&vim
 
 syn keyword xmodmapTodo       contained TODO FIXME XXX NOTE
 
-syn region  xmodmapComment    display oneline matchgroup=xmodmapComment
-                              \ start=/^!/ end=/$/ contains=xmodmapTodo,@Spell
+syn region  xmodmapComment    display oneline start='^!' end='$'
+                              \ contains=xmodmapTodo,@Spell
 
 syn case ignore
 syn match   xmodmapInt        display '\<\d\+\>'
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
index 1be00ee3ef..5a94fb6f4c 100644
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         YAML (YAML Ain't Markup Language)
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-27
+" Latest Revision:  2005-07-04
 
 if exists("b:current_syntax")
   finish
@@ -12,8 +12,8 @@ set cpo&vim
 
 syn keyword yamlTodo            contained TODO FIXME XXX NOTE
 
-syn region  yamlComment         matchgroup=yamlComment start='\%(^\|\s\)#'
-                                \ end='$' contains=yamlTodo,@Spell
+syn region  yamlComment         display oneline start='\%(^\|\s\)#' end='$'
+                                \ contains=yamlTodo,@Spell
 
 syn match   yamlNodeProperty    '!\%(![^\\^%     ]\+\|[^!][^:/   ]*\)'
 
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index e74019fcea..144f956cd8 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -683,7 +683,7 @@ all:	$(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe GvimExt/gvimext.
 
 $(VIM).exe: $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(XPM_OBJ) version.c version.h
 	$(CC) $(CFLAGS)  version.c /Fo$(OUTDIR)/version.obj $(PDB)
-	$(link) $(LINKARGS1) -out:$* $(OBJ) $(GUI_OBJ) $(OLE_OBJ) \
+	$(link) $(LINKARGS1) -out:$(VIM).exe $(OBJ) $(GUI_OBJ) $(OLE_OBJ) \
 		$(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) \
 		$(CSCOPE_OBJ) $(NETBEANS_OBJ) $(XPM_OBJ) \
 		$(OUTDIR)\version.obj $(LINKARGS2)
diff --git a/src/option.c b/src/option.c
index 57d2951d9b..dfe2e2b5af 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2036,7 +2036,7 @@ static struct vimoption
     {"spellcapcheck", "spc", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE|P_RBUF,
 #ifdef FEAT_SYN_HL
 			    (char_u *)&p_spc, PV_SPC,
-			    {(char_u *)"[.?!][])'\" \\t\\n]\\+", (char_u *)0L}
+			    {(char_u *)"[.?!]\\_[\\])'\"	 ]\\+", (char_u *)0L}
 #else
 			    (char_u *)NULL, PV_NONE,
 			    {(char_u *)0L, (char_u *)0L}
@@ -2605,7 +2605,7 @@ static char_u *set_chars_option __ARGS((char_u **varp));
 static char_u *check_clipboard_option __ARGS((void));
 #endif
 #ifdef FEAT_SYN_HL
-static char_u *compile_cap_prog __ARGS((void));
+static char_u *compile_cap_prog __ARGS((buf_T *buf));
 #endif
 static char_u *set_bool_option __ARGS((int opt_idx, char_u *varp, int value, int opt_flags));
 static char_u *set_num_option __ARGS((int opt_idx, char_u *varp, long value, char_u *errbuf, size_t errbuflen, int opt_flags));
@@ -4610,7 +4610,7 @@ didset_options()
 #endif
 #ifdef FEAT_SYN_HL
     (void)spell_check_sps();
-    (void)compile_cap_prog();
+    (void)compile_cap_prog(curbuf);
 #endif
 #if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32)
     (void)opt_strings_flags(p_toolbar, p_toolbar_values, &toolbar_flags, TRUE);
@@ -5774,7 +5774,7 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf,
     /* When 'spellcapcheck' is set compile the regexp program. */
     else if (varp == &(curbuf->b_p_spc))
     {
-	errmsg = compile_cap_prog();
+	errmsg = compile_cap_prog(curbuf);
     }
     /* 'spellsuggest' */
     else if (varp == &p_sps)
@@ -6437,23 +6437,24 @@ check_clipboard_option()
  * Return error message when failed, NULL when OK.
  */
     static char_u *
-compile_cap_prog()
+compile_cap_prog(buf)
+    buf_T	*buf;
 {
-    regprog_T   *rp = curbuf->b_cap_prog;
+    regprog_T   *rp = buf->b_cap_prog;
 
-    if (*curbuf->b_p_spc == NUL)
+    if (*buf->b_p_spc == NUL)
     {
-	curbuf->b_cap_prog = NULL;
+	buf->b_cap_prog = NULL;
 	vim_free(rp);
 	return NULL;
     }
 
     /* Prepend a ^ so that we only match at one column */
-    vim_snprintf((char *)IObuff, IOSIZE, "^%s", curbuf->b_p_spc);
-    curbuf->b_cap_prog = vim_regcomp(IObuff, RE_MAGIC);
-    if (curbuf->b_cap_prog == NULL)
+    vim_snprintf((char *)IObuff, IOSIZE, "^%s", buf->b_p_spc);
+    buf->b_cap_prog = vim_regcomp(IObuff, RE_MAGIC);
+    if (buf->b_cap_prog == NULL)
     {
-	curbuf->b_cap_prog = rp;
+	buf->b_cap_prog = rp;
 	return e_invarg;
     }
 
@@ -8758,6 +8759,7 @@ buf_copy_options(buf, flags)
 	    /* Don't copy 'syntax', it must be set */
 	    buf->b_p_syn = empty_option;
 	    buf->b_p_spc = vim_strsave(p_spc);
+	    (void)compile_cap_prog(buf);
 	    buf->b_p_spf = vim_strsave(p_spf);
 	    buf->b_p_spl = vim_strsave(p_spl);
 #endif
diff --git a/src/po/Make_cyg.mak b/src/po/Make_cyg.mak
new file mode 100644
index 0000000000..f39368f9e4
--- /dev/null
+++ b/src/po/Make_cyg.mak
@@ -0,0 +1,76 @@
+# Makefile for the Vim message translations for Cygwin
+# by Tony Mechelynck <antoine.mechelynck@skynet.be>
+# after Make_ming.mak by
+# Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
+#
+# Read the README_ming.txt file before using it.
+#
+# Use at your own risk but with care, it could even kill your canary.
+#
+
+ifndef VIMRUNTIME
+VIMRUNTIME = ../../runtime
+endif
+
+LANGUAGES =	af ca cs de en_GB es fr ga it ja ko no pl ru sk sv uk vi zh_TW \
+		zh_TW.UTF-8 zh_CN zh_CN.UTF-8
+MOFILES =	af.mo ca.mo cs.mo de.mo en_GB.mo es.mo fr.mo ga.mo it.mo ja.mo \
+		ko.mo no.mo pl.mo ru.mo sk.mo sv.mo uk.mo vi.mo \
+		zh_TW.mo zh_TW.UTF-8.mo zh_CN.mo zh_CN.UTF-8.mo
+
+PACKAGE = vim
+
+# Uncomment one of the lines below or modify it to put the path to your
+# gettex binaries; I use the first
+ifndef GETTEXT_PATH
+#GETTEXT_PATH = C:/gettext.win32/bin/
+#GETTEXT_PATH = C:/gettext-0.10.35-w32/win32/Release/
+GETTEXT_PATH = /bin/
+endif
+
+MSGFMT = $(GETTEXT_PATH)msgfmt
+XGETTEXT = $(GETTEXT_PATH)xgettext
+MSGMERGE = $(GETTEXT_PATH)msgmerge
+
+# MV = move
+# CP = copy
+# RM = del
+# MKD = mkdir
+MV = mv -f
+CP = cp -f
+RM = rm -f
+MKD = mkdir -p
+
+.SUFFIXES:
+.SUFFIXES: .po .mo .pot
+.PHONY: first_time all install clean $(LANGUAGES)
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+all: $(MOFILES)
+
+first_time:
+	$(XGETTEXT) --default-domain=$(LANGUAGE) \
+		--add-comments --keyword=_ --keyword=N_ $(wildcard ../*.c) ../if_perl.xs $(wildcard ../globals.h)
+
+$(LANGUAGES):
+	$(XGETTEXT) --default-domain=$(PACKAGE) \
+		--add-comments --keyword=_ --keyword=N_ $(wildcard ../*.c) ../if_perl.xs $(wildcard ../globals.h)
+	$(MV) $(PACKAGE).po $(PACKAGE).pot
+	$(CP) $@.po $@.po.orig
+	$(MV) $@.po $@.po.old
+	$(MSGMERGE) $@.po.old $(PACKAGE).pot -o $@.po
+	$(RM) $@.po.old
+
+install: $(MOFILES)
+	for TARGET in $(LANGUAGES); do \
+		$(MKD) $(VIMRUNTIME)/lang/$$TARGET/LC_MESSAGES ; \
+		$(CP) $$TARGET.mo $(VIMRUNTIME)/lang/$$TARGET/LC_MESSAGES/$(PACKAGE).mo ; \
+	done
+
+clean:
+	$(RM) *.mo
+	$(RM) *.pot
+
+
diff --git a/src/spell.c b/src/spell.c
index 015a7108b9..f23cf9866a 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -192,7 +192,10 @@
  * <flags>	1 byte	    bitmask of:
  *			    WF_ALLCAP	word must have only capitals
  *			    WF_ONECAP   first char of word must be capital
+ *			    WF_KEEPCAP	keep-case word
+ *			    WF_FIXCAP   keep-case word, all caps not allowed
  *			    WF_RARE	rare word
+ *			    WF_BANNED	bad word
  *			    WF_REGION	<region> follows
  *			    WF_PFX	<prefixID> follows
  *
@@ -241,9 +244,10 @@ typedef long idx_T;
 #define WF_RARE	    0x08	/* rare word */
 #define WF_BANNED   0x10	/* bad word */
 #define WF_PFX	    0x20	/* prefix ID list follows */
+#define WF_FIXCAP   0x40	/* keep-case word, allcap not allowed */
 #define WF_KEEPCAP  0x80	/* keep-case word */
 
-#define WF_CAPMASK (WF_ONECAP | WF_ALLCAP | WF_KEEPCAP)
+#define WF_CAPMASK (WF_ONECAP | WF_ALLCAP | WF_KEEPCAP | WF_FIXCAP)
 
 #define WF_RAREPFX  0x1000000	/* in sl_pidxs: flag for rare postponed
 				   prefix; must be above prefixID (one byte)
@@ -584,14 +588,14 @@ static void find_word __ARGS((matchinf_T *mip, int mode));
 static int valid_word_prefix __ARGS((int totprefcnt, int arridx, int prefid, char_u *word, slang_T *slang));
 static void find_prefix __ARGS((matchinf_T *mip));
 static int fold_more __ARGS((matchinf_T *mip));
-static int spell_valid_case __ARGS((int origflags, int treeflags));
+static int spell_valid_case __ARGS((int wordflags, int treeflags));
 static int no_spell_checking __ARGS((void));
 static void spell_load_lang __ARGS((char_u *lang));
 static char_u *spell_enc __ARGS((void));
 static void int_wordlist_spl __ARGS((char_u *fname));
 static void spell_load_cb __ARGS((char_u *fname, void *cookie));
 static slang_T *spell_load_file __ARGS((char_u *fname, char_u *lang, slang_T *old_lp, int silent));
-static char_u *read_cnt_string __ARGS((FILE *fd, int cnt_bytes, int *errp));
+static char_u *read_cnt_string __ARGS((FILE *fd, int cnt_bytes, int *lenp));
 static int set_sofo __ARGS((slang_T *lp, char_u *from, char_u *to));
 static void set_sal_first __ARGS((slang_T *lp));
 #ifdef FEAT_MBYTE
@@ -603,7 +607,7 @@ static void use_midword __ARGS((slang_T *lp, buf_T *buf));
 static int find_region __ARGS((char_u *rp, char_u *region));
 static int captype __ARGS((char_u *word, char_u *end));
 static void spell_reload_one __ARGS((char_u *fname, int added_word));
-static int set_spell_charflags __ARGS((char_u *flags, char_u *upp));
+static int set_spell_charflags __ARGS((char_u *flags, int cnt, char_u *upp));
 static int set_spell_chartab __ARGS((char_u *fol, char_u *low, char_u *upp));
 static void write_spell_chartab __ARGS((FILE *fd));
 static int spell_casefold __ARGS((char_u *p, int len, char_u *buf, int buflen));
@@ -1293,13 +1297,13 @@ fold_more(mip)
  * case.
  */
     static int
-spell_valid_case(origflags, treeflags)
-    int	    origflags;	    /* flags for the checked word. */
+spell_valid_case(wordflags, treeflags)
+    int	    wordflags;	    /* flags for the checked word. */
     int	    treeflags;	    /* flags for the word in the spell tree */
 {
-    return (origflags == WF_ALLCAP
+    return ((wordflags == WF_ALLCAP && (treeflags & WF_FIXCAP) == 0)
 	    || ((treeflags & (WF_ALLCAP | WF_KEEPCAP)) == 0
-		&& ((treeflags & WF_ONECAP) == 0 || origflags == WF_ONECAP)));
+		&& ((treeflags & WF_ONECAP) == 0 || wordflags == WF_ONECAP)));
 }
 
 /*
@@ -1837,12 +1841,12 @@ formerr:
 
     /* <charflagslen> <charflags> */
     p = read_cnt_string(fd, 1, &cnt);
-    if (cnt == FAIL)
+    if (cnt < 0)
 	goto endFAIL;
 
     /* <fcharslen> <fchars> */
-    fol = read_cnt_string(fd, 2, &cnt);
-    if (cnt == FAIL)
+    fol = read_cnt_string(fd, 2, &ccnt);
+    if (ccnt < 0)
     {
 	vim_free(p);
 	goto endFAIL;
@@ -1850,7 +1854,7 @@ formerr:
 
     /* Set the word-char flags and fill SPELL_ISUPPER() table. */
     if (p != NULL && fol != NULL)
-	i = set_spell_charflags(p, fol);
+	i = set_spell_charflags(p, cnt, fol);
 
     vim_free(p);
     vim_free(fol);
@@ -1861,7 +1865,7 @@ formerr:
 
     /* <midwordlen> <midword> */
     lp->sl_midword = read_cnt_string(fd, 2, &cnt);
-    if (cnt == FAIL)
+    if (cnt < 0)
 	goto endFAIL;
 
     /* <prefcondcnt> <prefcond> ... */
@@ -1912,10 +1916,10 @@ formerr:
     {
 	ftp = &((fromto_T *)gap->ga_data)[gap->ga_len];
 	ftp->ft_from = read_cnt_string(fd, 1, &i);
-	if (i == FAIL)
+	if (i <= 0)
 	    goto endFAIL;
 	ftp->ft_to = read_cnt_string(fd, 1, &i);
-	if (i == FAIL)
+	if (i <= 0)
 	{
 	    vim_free(ftp->ft_from);
 	    goto endFAIL;
@@ -1942,6 +1946,8 @@ formerr:
 	lp->sl_rem_accents = TRUE;
     if (i & SAL_SOFO)
 	lp->sl_sofo = TRUE;
+    else
+	lp->sl_sofo = FALSE;
 
     cnt = (getc(fd) << 8) + getc(fd);		/* <salcount> */
     if (cnt < 0)
@@ -1957,19 +1963,24 @@ formerr:
 
 	/* <salfromlen> <salfrom> */
 	bp = read_cnt_string(fd, 2, &cnt);
-	if (cnt == FAIL)
+	if (cnt < 0)
 	    goto endFAIL;
 
 	/* <saltolen> <salto> */
 	fol = read_cnt_string(fd, 2, &cnt);
-	if (cnt == FAIL)
+	if (cnt < 0)
 	{
 	    vim_free(bp);
 	    goto endFAIL;
 	}
 
 	/* Store the info in lp->sl_sal and/or lp->sl_sal_first. */
-	i = set_sofo(lp, bp, fol);
+	if (bp != NULL && fol != NULL)
+	    i = set_sofo(lp, bp, fol);
+	else if (bp != NULL || fol != NULL)
+	    i = FAIL;	    /* only one of two strings is an error */
+	else
+	    i = OK;
 
 	vim_free(bp);
 	vim_free(fol);
@@ -2036,7 +2047,7 @@ formerr:
 
 	    /* <saltolen> <salto> */
 	    smp->sm_to = read_cnt_string(fd, 1, &ccnt);
-	    if (ccnt == FAIL)
+	    if (ccnt < 0)
 	    {
 		vim_free(smp->sm_lead);
 		goto formerr;
@@ -2052,10 +2063,13 @@ formerr:
 		    smp->sm_oneof_w = NULL;
 		else
 		    smp->sm_oneof_w = mb_str2wide(smp->sm_oneof);
-		smp->sm_to_w = mb_str2wide(smp->sm_to);
+		if (smp->sm_to == NULL)
+		    smp->sm_to_w = NULL;
+		else
+		    smp->sm_to_w = mb_str2wide(smp->sm_to);
 		if (smp->sm_lead_w == NULL
 			|| (smp->sm_oneof_w == NULL && smp->sm_oneof != NULL)
-			|| smp->sm_to_w == NULL)
+			|| (smp->sm_to_w == NULL && smp->sm_to != NULL))
 		{
 		    vim_free(smp->sm_lead);
 		    vim_free(smp->sm_to);
@@ -2074,11 +2088,13 @@ formerr:
 
     /* <maplen> <mapstr> */
     p = read_cnt_string(fd, 2, &cnt);
-    if (cnt == FAIL)
+    if (cnt < 0)
 	goto endFAIL;
-    set_map_str(lp, p);
-    vim_free(p);
-
+    if (p != NULL)
+    {
+	set_map_str(lp, p);
+	vim_free(p);
+    }
 
     /* round 1: <LWORDTREE>
      * round 2: <KWORDTREE>
@@ -2155,13 +2171,13 @@ endOK:
  * Read a length field from "fd" in "cnt_bytes" bytes.
  * Allocate memory, read the string into it and add a NUL at the end.
  * Returns NULL when the count is zero.
- * Sets "*errp" to FAIL when there is an error, OK otherwise.
+ * Sets "*cntp" to -1 when there is an error, length of the result otherwise.
  */
     static char_u *
-read_cnt_string(fd, cnt_bytes, errp)
+read_cnt_string(fd, cnt_bytes, cntp)
     FILE	*fd;
     int		cnt_bytes;
-    int		*errp;
+    int		*cntp;
 {
     int		cnt = 0;
     int		i;
@@ -2173,18 +2189,20 @@ read_cnt_string(fd, cnt_bytes, errp)
     if (cnt < 0)
     {
 	EMSG(_(e_spell_trunc));
-	*errp = FAIL;
+	*cntp = -1;
 	return NULL;
     }
+    *cntp = cnt;
+    if (cnt == 0)
+	return NULL;	    /* nothing to read, return NULL */
 
     /* allocate memory */
     str = alloc((unsigned)cnt + 1);
     if (str == NULL)
     {
-	*errp = FAIL;
+	*cntp = -1;
 	return NULL;
     }
-    *errp = OK;
 
     /* Read the string.  Doesn't check for truncated file. */
     for (i = 0; i < cnt; ++i)
@@ -2512,6 +2530,8 @@ did_set_spelllang(buf)
     char_u	*p;
     int		round;
     char_u	*spf;
+    char_u	*use_region = NULL;
+    int		dont_use_region = FALSE;
 
     ga_init2(&ga, sizeof(langp_T), 2);
     clear_midword(buf);
@@ -2545,7 +2565,15 @@ did_set_spelllang(buf)
 		region = lang + len - 2;
 		len -= 3;
 		lang[len] = NUL;
+
+		/* If the region differs from what was used before then don't
+		 * use it for 'spellfile'. */
+		if (use_region != NULL && STRCMP(region, use_region) != 0)
+		    dont_use_region = TRUE;
+		use_region = region;
 	    }
+	    else
+		dont_use_region = TRUE;
 
 	    /* Check if we loaded this language before. */
 	    for (lp = first_lang; lp != NULL; lp = lp->sl_next)
@@ -2576,7 +2604,15 @@ did_set_spelllang(buf)
 		    c = find_region(lp->sl_regions, region);
 		    if (c == REGION_ALL)
 		    {
-			if (!lp->sl_add)
+			if (lp->sl_add)
+			{
+			    if (*lp->sl_regions != NUL)
+				/* This addition file is for other regions. */
+				region_mask = 0;
+			}
+			else
+			    /* This is probably an error.  Give a warning and
+			     * accept the words anyway. */
 			    smsg((char_u *)
 				    _("Warning: region %s not supported"),
 								      region);
@@ -2585,15 +2621,18 @@ did_set_spelllang(buf)
 			region_mask = 1 << c;
 		}
 
-		if (ga_grow(&ga, 1) == FAIL)
+		if (region_mask != 0)
 		{
-		    ga_clear(&ga);
-		    return e_outofmem;
+		    if (ga_grow(&ga, 1) == FAIL)
+		    {
+			ga_clear(&ga);
+			return e_outofmem;
+		    }
+		    LANGP_ENTRY(ga, ga.ga_len)->lp_slang = lp;
+		    LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask;
+		    ++ga.ga_len;
+		    use_midword(lp, buf);
 		}
-		LANGP_ENTRY(ga, ga.ga_len)->lp_slang = lp;
-		LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask;
-		++ga.ga_len;
-		use_midword(lp, buf);
 	    }
     }
 
@@ -2649,10 +2688,25 @@ did_set_spelllang(buf)
 	}
 	if (lp != NULL && ga_grow(&ga, 1) == OK)
 	{
-	    LANGP_ENTRY(ga, ga.ga_len)->lp_slang = lp;
-	    LANGP_ENTRY(ga, ga.ga_len)->lp_region = REGION_ALL;
-	    ++ga.ga_len;
-	    use_midword(lp, buf);
+	    region_mask = REGION_ALL;
+	    if (use_region != NULL && !dont_use_region)
+	    {
+		/* find region in sl_regions */
+		c = find_region(lp->sl_regions, use_region);
+		if (c != REGION_ALL)
+		    region_mask = 1 << c;
+		else if (*lp->sl_regions != NUL)
+		    /* This spell file is for other regions. */
+		    region_mask = 0;
+	    }
+
+	    if (region_mask != 0)
+	    {
+		LANGP_ENTRY(ga, ga.ga_len)->lp_slang = lp;
+		LANGP_ENTRY(ga, ga.ga_len)->lp_region = region_mask;
+		++ga.ga_len;
+		use_midword(lp, buf);
+	    }
 	}
     }
 
@@ -2697,6 +2751,9 @@ use_midword(lp, buf)
 {
     char_u	*p;
 
+    if (lp->sl_midword == NULL)	    /* there aren't any */
+	return;
+
     for (p = lp->sl_midword; *p != NUL; )
 #ifdef FEAT_MBYTE
 	if (has_mbyte)
@@ -3799,7 +3856,7 @@ spell_read_dic(fname, spin, affile)
 	     * for rare word (if defined). */
 	    if (affile->af_kep != NUL
 		    && vim_strchr(afflist, affile->af_kep) != NULL)
-		flags |= WF_KEEPCAP;
+		flags |= WF_KEEPCAP | WF_FIXCAP;
 	    if (affile->af_rar != NUL
 		    && vim_strchr(afflist, affile->af_rar) != NULL)
 		flags |= WF_RARE;
@@ -4150,6 +4207,9 @@ spell_read_wordfile(fname, spin)
 		    {
 			spin->si_region_count = STRLEN(line) / 2;
 			STRCPY(spin->si_region_name, line);
+
+			/* Adjust the mask for a word valid in all regions. */
+			spin->si_region = (1 << spin->si_region_count) - 1;
 		    }
 		}
 		continue;
@@ -4171,7 +4231,7 @@ spell_read_wordfile(fname, spin)
 	    while (*p != NUL)
 	    {
 		if (*p == '=')		/* keep-case word */
-		    flags |= WF_KEEPCAP;
+		    flags |= WF_KEEPCAP | WF_FIXCAP;
 		else if (*p == '!')	/* Bad, bad, wicked word. */
 		    flags |= WF_BANNED;
 		else if (*p == '?')	/* Rare word. */
@@ -5604,34 +5664,39 @@ set_spell_chartab(fol, low, upp)
  * Set the spell character tables from strings in the .spl file.
  */
     static int
-set_spell_charflags(flags, upp)
+set_spell_charflags(flags, cnt, fol)
     char_u	*flags;
-    char_u	*upp;
+    int		cnt;	    /* length of "flags" */
+    char_u	*fol;
 {
     /* We build the new tables here first, so that we can compare with the
      * previous one. */
     spelltab_T	new_st;
     int		i;
-    char_u	*p = upp;
+    char_u	*p = fol;
     int		c;
 
     clear_spell_chartab(&new_st);
 
-    for (i = 0; flags[i] != NUL; ++i)
+    for (i = 0; i < 128; ++i)
     {
-	new_st.st_isw[i + 128] = (flags[i] & CF_WORD) != 0;
-	new_st.st_isu[i + 128] = (flags[i] & CF_UPPER) != 0;
+	if (i < cnt)
+	{
+	    new_st.st_isw[i + 128] = (flags[i] & CF_WORD) != 0;
+	    new_st.st_isu[i + 128] = (flags[i] & CF_UPPER) != 0;
+	}
 
-	if (*p == NUL)
-	    return FAIL;
+	if (*p != NUL)
+	{
 #ifdef FEAT_MBYTE
-	c = mb_ptr2char_adv(&p);
+	    c = mb_ptr2char_adv(&p);
 #else
-	c = *p++;
+	    c = *p++;
 #endif
-	new_st.st_fold[i + 128] = c;
-	if (i + 128 != c && new_st.st_isu[i + 128] && c < 256)
-	    new_st.st_upper[c] = i + 128;
+	    new_st.st_fold[i + 128] = c;
+	    if (i + 128 != c && new_st.st_isu[i + 128] && c < 256)
+		new_st.st_upper[c] = i + 128;
+	}
     }
 
     return set_spell_finish(&new_st);
@@ -7992,6 +8057,8 @@ suggest_try_soundalike(su)
 		{
 		    byts = lp->lp_slang->sl_kbyts;
 		    idxs = lp->lp_slang->sl_kidxs;
+		    if (byts == NULL)	    /* no keep-case words */
+			continue;
 		}
 
 		depth = 0;
@@ -8836,6 +8903,8 @@ spell_soundfold_sal(slang, inword, res)
 
 		    /* replace string */
 		    s = smp[n].sm_to;
+		    if (s == NULL)
+			s = (char_u *)"";
 		    pf = smp[n].sm_rules;
 		    p0 = (vim_strchr(pf, '<') != NULL) ? 1 : 0;
 		    if (p0 == 1 && z == 0)
@@ -9138,18 +9207,20 @@ spell_soundfold_wsal(slang, inword, res)
 		    if (p0 == 1 && z == 0)
 		    {
 			/* rule with '<' is used */
-			if (reslen > 0 && *ws != NUL && (wres[reslen - 1] == c
+			if (reslen > 0 && ws != NULL && *ws != NUL
+				&& (wres[reslen - 1] == c
 						    || wres[reslen - 1] == *ws))
 			    reslen--;
 			z0 = 1;
 			z = 1;
 			k0 = 0;
-			while (*ws != NUL && word[i + k0] != NUL)
-			{
-			    word[i + k0] = *ws;
-			    k0++;
-			    ws++;
-			}
+			if (ws != NULL)
+			    while (*ws != NUL && word[i + k0] != NUL)
+			    {
+				word[i + k0] = *ws;
+				k0++;
+				ws++;
+			    }
 			if (k > k0)
 			    mch_memmove(word + i + k0, word + i + k,
 				    sizeof(int) * (STRLEN(word + i + k) + 1));
@@ -9162,14 +9233,19 @@ spell_soundfold_wsal(slang, inword, res)
 			/* no '<' rule used */
 			i += k - 1;
 			z = 0;
-			while (*ws != NUL && ws[1] != NUL && reslen < MAXWLEN)
-			{
-			    if (reslen == 0 || wres[reslen - 1] != *ws)
-				wres[reslen++] = *ws;
-			    ws++;
-			}
+			if (ws != NULL)
+			    while (*ws != NUL && ws[1] != NUL
+							  && reslen < MAXWLEN)
+			    {
+				if (reslen == 0 || wres[reslen - 1] != *ws)
+				    wres[reslen++] = *ws;
+				ws++;
+			    }
 			/* new "actual letter" */
-			c = *ws;
+			if (ws == NULL)
+			    c = NUL;
+			else
+			    c = *ws;
 			if (strstr((char *)s, "^^") != NULL)
 			{
 			    if (c != NUL)
@@ -9722,7 +9798,8 @@ dump_word(word, round, flags, lnum)
     else
     {
 	p = word;
-	if (round == 2 && (captype(word, NULL) & WF_KEEPCAP) == 0)
+	if (round == 2 && ((captype(word, NULL) & WF_KEEPCAP) == 0
+						 || (flags & WF_FIXCAP) != 0))
 	    keepcap = TRUE;
     }
 
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak
index cfe2134737..1c9d422e8e 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -24,7 +24,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
 		test38.out test39.out test40.out test41.out test42.out \
 		test43.out test44.out test45.out test46.out test47.out \
 		test48.out test51.out test53.out test54.out test55.out \
-		test56.out test57.out
+		test56.out test57.out test58.out
 
 .SUFFIXES: .in .out
 
@@ -101,3 +101,4 @@ test54.out: test54.in
 test55.out: test55.in
 test56.out: test56.in
 test57.out: test57.in
+test58.out: test58.in
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index 6ca1acc330..1b3c772b46 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -18,7 +18,7 @@ SCRIPTS16 =	test1.out test19.out test20.out test22.out \
 		test35.out test36.out test43.out \
 		test44.out test45.out test46.out test47.out \
 		test48.out test51.out test53.out test54.out \
-		test55.out test56.out test57.out
+		test55.out test56.out test57.out test58.out
 
 SCRIPTS =	test3.out test4.out test5.out test6.out test7.out \
 		test8.out test9.out test11.out test13.out test14.out \
diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak
index 4d3296c07a..a771e6a5fc 100644
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -24,7 +24,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
 		test38.out test39.out test40.out test41.out test42.out \
 		test43.out test44.out test45.out test46.out test47.out \
 		test48.out test51.out test53.out test54.out test55.out \
-		test56.out test57.out
+		test56.out test57.out test58.out
 
 .SUFFIXES: .in .out
 
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index 7df1d5057a..1ca1e8b1b9 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -4,7 +4,7 @@
 # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com>
 #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
 #
-# Last change:  2005 May 18
+# Last change:  2005 Jul 04
 #
 # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX.
 # Edit the lines in the Configuration section below to select.
@@ -58,7 +58,7 @@ SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
 	 test38.out test39.out test40.out test41.out test42.out \
 	 test43.out test44.out test45.out test46.out \
 	 test48.out test51.out test53.out test54.out test55.out \
-	 test56.out
+	 test56.out test57.out test58.out
 
 .IFDEF WANT_GUI
 SCRIPT_GUI = test16.out
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index dc3dccb964..7fa325f847 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -14,7 +14,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
 		test38.out test39.out test40.out test41.out test42.out \
 		test43.out test44.out test45.out test46.out test47.out \
 		test48.out test49.out test51.out test52.out test53.out \
-		test54.out test55.out test56.out test57.out
+		test54.out test55.out test56.out test57.out test58.out
 
 SCRIPTS_GUI = test16.out
 
@@ -46,7 +46,7 @@ test1.out: test1.in
 	-rm -rf X* viminfo
 
 .in.out:
-	-rm -f $*.failed test.ok X* viminfo
+	-rm -rf $*.failed test.ok X* viminfo
 	cp $*.ok test.ok
 	# Sleep a moment to avoid that the xterm title is messed up
 	@-sleep .2
@@ -58,7 +58,8 @@ test1.out: test1.in
 		  fi \
 		else echo $* NO OUTPUT >>test.log; \
 		fi"
-	-rm -rf X* test.ok viminfo
+	# Keep the files to make debugging easier.
+	# -rm -rf X* test.ok viminfo
 
 nolog:
 	-echo Test results: >test.log
diff --git a/src/testdir/test58.in b/src/testdir/test58.in
new file mode 100644
index 0000000000..58275a3f11
--- /dev/null
+++ b/src/testdir/test58.in
@@ -0,0 +1,320 @@
+Tests for spell checking.     vim: set ft=vim :
+
+STARTTEST
+:so small.vim
+:"
+:" First generate a .spl file from a .dic and a .aff file.
+:set enc=latin1
+:/^affstart1/+1,/affend1/-1w Xtest.aff
+:/^dicstart/+1,/dicend/-1w Xtest.dic
+:mkspell Xtest Xtest
+:"
+:" use that spell file
+:set spl=Xtest.latin1.spl
+:set spell
+/^test1:
+]smm:let str = spellbadword()
+:$put =str
+`m:let lst = spellsuggest(str, 4)
+:$put =string(lst)
+`m]smm:let str = spellbadword()
+:$put =str
+`m:let lst = spellsuggest(str, 2)
+:$put =string(lst)
+`m]smm:let str = spellbadword()
+:$put =str
+`m:let lst = spellsuggest(str, 2)
+:$put =string(lst)
+`m]smm:let str = spellbadword()
+:$put =str
+`m:let lst = spellsuggest(str, 2)
+:$put =string(lst)
+`m]smm:let str = spellbadword()
+:$put =str
+`m:let lst = spellsuggest(str, 2)
+:$put =string(lst)
+`m]smm:let str = spellbadword()
+:$put =str
+`m:let lst = spellsuggest(str, 2)
+:$put =string(lst)
+:spelldump
+1GyG:q
+:$put
+:$put =soundfold('goobledygoook')
+:$put =soundfold('kóopërÿnôven')
+:$put =soundfold('oeverloos gezwets edale')
+:"
+:" and now with SAL instead of SOFO items; test automatic reloading
+gg:/^affstart2/+1,/^affend2/-1w! Xtest.aff
+:mkspell! Xtest Xtest
+:$put =soundfold('goobledygoook')
+:$put =soundfold('kóopërÿnôven')
+:$put =soundfold('oeverloos gezwets edale')
+:"
+:" also use an addition file
+gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
+:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
+:set spl=en
+:set spellfile=Xtest.latin1.add
+/^test2:
+]s:let str = spellbadword()
+:$put =str
+:set spl=en_us
+/^test2:
+]smm:let str = spellbadword()
+:$put =str
+`m]s:let str = spellbadword()
+:$put =str
+:set spl=en_gb
+/^test2:
+]smm:let str = spellbadword()
+:$put =str
+`m]s:let str = spellbadword()
+:$put =str
+:set spl=en_nz
+/^test2:
+]smm:let str = spellbadword()
+:$put =str
+`m]s:let str = spellbadword()
+:$put =str
+:set spl=en_ca
+/^test2:
+]smm:let str = spellbadword()
+:$put =str
+`m]s:let str = spellbadword()
+:$put =str
+:"
+gg:/^test output:/,$wq! test.out
+ENDTEST
+
+affstart1
+SET ISO8859-1
+TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
+
+FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
+SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
+SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
+
+MIDWORD	'-
+
+KEP =
+RAR ?
+BAD !
+
+NOSPLITSUGS
+
+PFX I N 1
+PFX I 0 in .
+
+PFX O Y 1
+PFX O 0 out .
+
+SFX S Y 2
+SFX S 0 s [^s]
+SFX S 0 es s
+
+REP 3
+REP g ch
+REP ch g
+REP svp s.v.p.
+
+MAP 9
+MAP aàáâãäå
+MAP eèéêë
+MAP iìíîï
+MAP oòóôõö
+MAP uùúûü
+MAP nñ
+MAP cç
+MAP yÿý
+MAP sß
+affend1
+
+affstart2
+SET ISO8859-1
+TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
+
+FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
+MIDWORD	'-
+
+KEP =
+RAR ?
+BAD !
+
+NOSPLITSUGS
+
+PFX I N 1
+PFX I 0 in .
+
+PFX O Y 1
+PFX O 0 out .
+
+SFX S Y 2
+SFX S 0 s [^s]
+SFX S 0 es s
+
+REP 3
+REP g ch
+REP ch g
+REP svp s.v.p.
+
+MAP 9
+MAP aàáâãäå
+MAP eèéêë
+MAP iìíîï
+MAP oòóôõö
+MAP uùúûü
+MAP nñ
+MAP cç
+MAP yÿý
+MAP sß
+
+SAL AH(AEIOUY)-^         *H
+SAL AR(AEIOUY)-^         *R
+SAL A(HR)^               *
+SAL A^                   *
+SAL AH(AEIOUY)-          H
+SAL AR(AEIOUY)-          R
+SAL A(HR)                _
+SAL À^                   *
+SAL Å^                   *
+SAL BB-                  _
+SAL B                    B
+SAL CQ-                  _
+SAL CIA                  X
+SAL CH                   X
+SAL C(EIY)-              S
+SAL CK                   K
+SAL COUGH^               KF
+SAL CC<                  C
+SAL C                    K
+SAL DG(EIY)              K
+SAL DD-                  _
+SAL D                    T
+SAL É<                   E
+SAL EH(AEIOUY)-^         *H
+SAL ER(AEIOUY)-^         *R
+SAL E(HR)^               *
+SAL ENOUGH^$             *NF
+SAL E^                   *
+SAL EH(AEIOUY)-          H
+SAL ER(AEIOUY)-          R
+SAL E(HR)                _
+SAL FF-                  _
+SAL F                    F
+SAL GN^                  N
+SAL GN$                  N
+SAL GNS$                 NS
+SAL GNED$                N
+SAL GH(AEIOUY)-          K
+SAL GH                   _
+SAL GG9                  K
+SAL G                    K
+SAL H                    H
+SAL IH(AEIOUY)-^         *H
+SAL IR(AEIOUY)-^         *R
+SAL I(HR)^               *
+SAL I^                   *
+SAL ING6                 N
+SAL IH(AEIOUY)-          H
+SAL IR(AEIOUY)-          R
+SAL I(HR)                _
+SAL J                    K
+SAL KN^                  N
+SAL KK-                  _
+SAL K                    K
+SAL LAUGH^               LF
+SAL LL-                  _
+SAL L                    L
+SAL MB$                  M
+SAL MM                   M
+SAL M                    M
+SAL NN-                  _
+SAL N                    N
+SAL OH(AEIOUY)-^         *H
+SAL OR(AEIOUY)-^         *R
+SAL O(HR)^               *
+SAL O^                   *
+SAL OH(AEIOUY)-          H
+SAL OR(AEIOUY)-          R
+SAL O(HR)                _
+SAL PH                   F
+SAL PN^                  N
+SAL PP-                  _
+SAL P                    P
+SAL Q                    K
+SAL RH^                  R
+SAL ROUGH^               RF
+SAL RR-                  _
+SAL R                    R
+SAL SCH(EOU)-            SK
+SAL SC(IEY)-             S
+SAL SH                   X
+SAL SI(AO)-              X
+SAL SS-                  _
+SAL S                    S
+SAL TI(AO)-              X
+SAL TH                   @
+SAL TCH--                _
+SAL TOUGH^               TF
+SAL TT-                  _
+SAL T                    T
+SAL UH(AEIOUY)-^         *H
+SAL UR(AEIOUY)-^         *R
+SAL U(HR)^               *
+SAL U^                   *
+SAL UH(AEIOUY)-          H
+SAL UR(AEIOUY)-          R
+SAL U(HR)                _
+SAL V^                   W
+SAL V                    F
+SAL WR^                  R
+SAL WH^                  W
+SAL W(AEIOU)-            W
+SAL X^                   S
+SAL X                    KS
+SAL Y(AEIOU)-            Y
+SAL ZZ-                  _
+SAL Z                    S
+affend2
+
+dicstart
+123456
+test
+# comment
+wrong
+Comment
+OK
+uk
+put/ISO
+the end
+deol
+déôr
+dicend
+
+addstart
+/regions=usgbnz
+elequint/2
+elekwint/3
+addend
+
+test1:
+inputs	wrong
+comment	wrong
+puts	OK
+ok	wrong
+Ok	wrong
+the end.  test wrong
+déôl
+
+test2:
+elequint test elekwint test elekwent asdf
+
+
+test output:
diff --git a/src/testdir/test58.ok b/src/testdir/test58.ok
new file mode 100644
index 0000000000..6de84842c9
--- /dev/null
+++ b/src/testdir/test58.ok
@@ -0,0 +1,42 @@
+test output:
+inputs
+['input', 'puts', 'outputs', 'put']
+comment
+['Comment']
+ok
+['OK', 'uk']
+Ok
+['OK', 'Uk']
+test
+['test', 'Test']
+déôl
+['deol', 'déôr']
+# file: Xtest.latin1.spl
+Comment
+deol
+déôr
+input
+OK
+output
+outputs
+put
+puts
+test
+the end
+uk
+wrong
+gebletegek
+kepereneven
+everles gesvets etele
+kbltykk
+kprnfn
+*fls kswts tl
+elekwent
+elequint
+elekwint
+elekwint
+elekwent
+elequint
+elekwent
+elequint
+elekwint
diff --git a/src/version.h b/src/version.h
index e168db2841..9656b5a8f3 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 3)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 3, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 4)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 4, compiled "
-- 
GitLab