diff --git a/Filelist b/Filelist
index c591d544aee9edd71bbdc15cfee13125e93d2012..3182ba889f2ab8edb002cb560138e469a2afb23b 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 133e9804085c4dede7340b271ddfbe1484eb1848..77f124c597d713237234a979073a3197b9049352 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 1e64f32833dddc52b3a357c0ff905687abf94565..11f7714da191d04bfaa773325dd0a1116d7d166d 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 f983fe7213c5bbee55f919f83eddb4a37fe33a4d..828f99e350ae5c7f44dc38d3d146682d49b6b4f6 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 300ddb7500dfc1aa8369ea8c852aec1db254649f..6c6a8dc99c304322f73d91d72e987d655d40aeaa 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 46d1b70dae52af613419044e31b8e8187d837fab..5fc1dd82d5656ce416d813d7b59fea7f971c70a9 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 9d0a9669167e55211ad0c3e638cbe49e83834d74..0dc952e34bd9316cd6941422d0a66143576185ad 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 c11c012c31014e15aeb2a951d97ecebf292f17dd..44d8ce794b72ed285c3589d95a4a44d177e19784 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 0000000000000000000000000000000000000000..e590c98067c5e311992a293613bf5da76bcfaba8
--- /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 fd96e82f929f89bb3a32f0cd101f703e35cb070a..c0e13a7e9a7b0bf07c7fb107b0f0354db96f1014 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 0102e9a5d4f0dbb5a07cef876715926e7c15faf7..9433f100931415d09f30bfb3e01872fd405f7eea 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 a303d85e348167b9db16647e1d25293fe66167ac..92ee66bfc44b2a0bf97d7acb7db75e7b9bd8dc2c 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 f71bfe4ee3d672e09f6334ad7e19b426ddb98b2a..c786203dbed66f96f64b16010f957f937dfcd17f 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 dce5e65b5435f2935326509cfc25506c0796d65a..6087c21928316205b0d1f6c9f01d560bde8fefc3 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 8868319d905b133493cde0da4b313744e0001b36..10be14cb0ecf23fcafe301fdbbce9a41618abfec 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 12b41bf902a176675590d36789db34c2f4a3e8c8..71ae83f1864175a3209b99c3170603f790217d7b 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 417590c4581aa5bda86aa8d7320ba6f27c6e3ebb..d9d90055362719a25186c93bd9c7c1928b878423 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 686fddf0e51ab860e49edf1e6df8c8c88b60cbd0..beb222fd7c9c03e39bc9e3c6f0750d9299143d4e 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 0000000000000000000000000000000000000000..b818ff1d10158cb9a35957062b030279c5093395
--- /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 0000000000000000000000000000000000000000..68111b12f02a44d8a2ded8572acc00de926e99ed
--- /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 2062c38bf0591f8728280652fc0942343490dd12..4bda7ea8e97741ef2846b968704b224f3c83e686 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 ab81f1d4c95241eb3ad4ae0c06b7c92ba5b89119..ac1642dcad57ccc1e83860d7cfdeea3cc60ae1c2 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 22725ef15accb3be12f8750ecf3d3cb414fa729d..257a4154c72e7490e04e03cac162eb4ec906491e 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 d8985c38276b039cd4cfbb4389a2afe6c43c62be..e9f195f41d978547b95924de9b7bbea3ca20e27a 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 a3f7b2689e543859d8ab7ca94edebe73c98d5785..b68424451445206583b221014f8f1d8392a57790 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 0000000000000000000000000000000000000000..443c4eb95b249dbbbe9f502fc35024fb9b02bf43
--- /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 a29b7818a560dc302bb3e038a72fc1fc0d3ef37f..6230ec3eebd591c497107a16ed1fefa9146476fa 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 242875b36ac900b825f6beb42fc4a6f93b02f499..141e90ae910a5bdcbfab125afa48fe9c738115ff 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 64f0fde6afc3147aec70cbfc30a490e63d77e666..8266e937c289eae029b01a1ff9565fca0f2c0ffd 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 d4b6bbc1487bbc30905e1c4c6fd9442f98bc47ff..f8ba5896c3ca565cdf419a8af5fc2c0c620a4b51 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 e94ebc742e2f30f7e0441d743ecfb62f679cb55f..8b26e55064a2bc66d61fab737f6d4ec892c8950b 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 c38ac95621be85837764cb549b563322f6b99b77..83a00f3fa50a455c21db8444147fc8b4a16a6ee0 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 120753500883886222e0775ba9f0a8d3cb014e43..586372303d57c68c1d7736d796bc7b92de446967 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 404a36dd0097287a9c34ba5be7be16268357bafc..616ff0b6cb11e8dfd83d25bd3ce11a116649fb5d 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 26486bcd82f985e9d5fe120305cd7188091f63a5..e51a38318dfbda283c07297e0835046fecd806db 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 8f971e84c12c8f0aa2fd5f0f725280880b03c34d..1754fd0678c2b1a146e46d0f5bccb1707c104bf5 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 208c9f55a4f07d2d04ef7033cc72fb5c636377c6..ec1143f9f9127492152c68685f1df6c66187bc54 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 0000000000000000000000000000000000000000..ac4b1fae25bb984e4f4694de7db80c70d0dfae96
--- /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 b066d531e3a481cd4f18256011417a42d1ac83e7..d9c9c90bd5bee8f981c791ae239e9e875d9aed6b 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 26ed0e7aced87c943ab9facd4141b2b57f91b51b..a33a8f65ef4addc86db9b453d8fc17e9dbfff1d5 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 3385565b3952b9e2009518587abc568e5b3385ee..aad8d9519fa945378ab089fac63976d9f9314699 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 631b9131b613a0ac8df83bbf196ebcc53b3d821d..15ff201098da5cb5a504768202e3a72d27cf9bf9 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 62017e90f05a93c6a1dd4a1f0d4e9bf388c7da63..184d6e53edcc000efee00db0fbd49f40c61d7e1d 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 0000000000000000000000000000000000000000..539ee024361b723c56c1da45aa52fad42bd30ccc
--- /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 d156ef8021f194e697a92d38b1ab4fac4021a681..206dfd08f90573bebfafa2a0aceda37127b3a231 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 0332f7e09c9e5f448905d9b18ee9b74ab2edd545..860c0d029e87eee8080c067a8677ee50bdcc6d02 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 0000000000000000000000000000000000000000..3b08ae4fc5f4da181820f4d72270bf68e0b36288
--- /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 117a2e2f3a98e4661c61411c2875627d8e238491..f56467f320c0a9c0864269dc683fde3336678d31 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 95d806783a5ef42f7e484d2b35a1f58c61c37a70..f3edc369cd25aee28655bb1376cb90e86401f20f 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 e5ab76d4ef8fe11100df87deae2f8be9b9f01e46..eebbdab0024ff9527cceb27b88264a795ed50084 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 0000000000000000000000000000000000000000..2e04d8591cb50de1112b083bc1107bfd7966052f
--- /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 f750aef1a6790bcd4273e02ce862db20e5e509a7..e658eb0b5fa53448a040bae1d2997de48a9b70be 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 461d3a4c5e363c1087886cc7df0257f10a4a2506..6969080bd3a34bbb7ffaa32ee241772b3d94dc8b 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 29bbe39b1979d25c90624d6b77ada79ec0903d5b..bf29a41d01c0605cd7475dc5ed568eb16de2676c 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 713f387f3a5aa01171d873a31eeb0c744c9418aa..ca875b8b3577bd4bbca4bb2471c3c6327396bcad 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 6414c84a85e98453cd58608021eb6d10e4a4e45b..7c297b8f6d18d264d1a12081522ca35e89123182 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 cd803fdb5c58ed2f3e62c4da81d1a3f5c06d1aba..03b9b98267b13810baf214b64d0b36d017ee59e8 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 0000000000000000000000000000000000000000..d675cd911ab0daab7c197c111fcf006ba2ff0cb6
--- /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 0000000000000000000000000000000000000000..de7d15e0a8bd646b8a5189a1a6841080e98b64b3
--- /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 0000000000000000000000000000000000000000..ea0cb964e0dc9070f37a26f16c58c645b67ebf8a
--- /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 97d235bc46ecc20fc64fcd5bfcaa8b0bc7261e20..39b5d7673e20c369ed2d731e3ae418de1a408660 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 0000000000000000000000000000000000000000..dea5dfd23991f7a24e7e1db9ccb3975745ed64f9
--- /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 0000000000000000000000000000000000000000..71e865bf00384e6994fd5ecf0c1553dba8d13311
--- /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 0000000000000000000000000000000000000000..181a7ece75ebcb8f7cdf37cfce1e213f5c7e7954
--- /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 456a09d35372a8510d18f1d5548cbcff5743f469..f02bc7a89356743a479e54540d2e6562516a38ed 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 c76bfa993e5aff75518da3a69dfb47948ccc374c..30c1f5c0a5a384044e2ccece6836dc9b3aeae2fb 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 50939d74ddcccfd36e1f73c157e893e648c80f95..90618f97b75bfe3fc1a89926754733e1907619d1 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 df4af34af71a694198cac43f8ac5078a08e6a9dc..822cac49963c9fcf14cb45a7e2294c482f232471 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 0000000000000000000000000000000000000000..b7a7f840f2eff1e583c06ceb09c6da02cc9b8e62
--- /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 0000000000000000000000000000000000000000..584a4e78f0d876284bf870a1b58564b9690a7bc4
--- /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 0000000000000000000000000000000000000000..29c02b0da2ae7583639d684ff8a78e5949697a74
--- /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 ce818e811faafdeb3cd28441f3ce9a7c2f9d29ab..20354628d1106325c9ca37e8ceb5966d56124d19 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 fc04c310d654ae65896b612836fbf4b0db3845db..e65cfdd264bf6066a5631405f94ec7a955d3b64b 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 11eb5d914a6d4e138c97ffc116453b523bac0995..2973dcd7bb70b8dbc1e9b8ff6caf33b765e1f1da 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 271b307d1e46e0c62a1309949a1875b904a1f793..b789a9da424fd724804c78f2d83725bf9f9c3945 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 37d00274057c03c5c3872f5214728b7b264fc436..c9bdec4930eee185dcfddec30ea63da883175def 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 89c7e4ae0afefbde44d287c39275a9de70123334..0b77f67c1bd72e6679c283860d8c87854ba9913a 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 00dce30879a7e8d8b365673ee0e9d9b118ec5235..cd82fa4f2324dcf13cf70447d96169dcc03f2bf9 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 3789a507fcb6f1d7113df3eeb2fbb16de2b51e9f..cb2023d7dc5895a56056defa18555018563035d0 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 ee4288cf7cb40b8dfaf78913df0b4ba3f312c27f..b0560b473d83f57864e298083ec6807ff90870b5 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 0000000000000000000000000000000000000000..dcaf1e152056cedd840c7f4c1564d05d7e7cc7d4
--- /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 0000000000000000000000000000000000000000..f8f567064a3be0bdb433a0085b0f476ae8f0ae22
--- /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 8b7c03fce511ce8c77c01b2314f03af5208950c6..440b106f1201c985df88f671a9d4c96ba96d6489 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 83e7719cb7f6883de7a09f26b0c31ffda51e3739..546b60daf8a49357470fbccd4aae0c5fa0e6ed92 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 b00f3b7a45b0ee2a31d08c07dbf75f8d67aa5e28..8233e5c44c4ae570b0f543e665da402cb0845f40 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 0000000000000000000000000000000000000000..a5594439dee8d028b6e2e8455dd1539a7f29c391
--- /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 0e3362a1a35cc1ae4b8a760bb7e3d9eed90f3fa1..f2bda1894b0d3d8e55128e2a28d712ccda0efb7f 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 663cca84c1717595541620a5ddc68dd33b4f19e3..b9789d26038c7c2b68d688c2f3cdba2b03bb637a 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 502ac7051eaea44fbeda4d9d1c527b00ed22e96a..c47ef32e00a25c7125563eaf7a41c6b208ab24dd 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 4649b6c8f2a49d28baec95d7037c95af1e7f897f..1b3d2446fb1a10eb3c055d59eb34ec88a4ed0e62 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 fdb15046e2421c64832600769bde5baf79f0cdcd..35d9e50c589364da0398590bfd6c7e36a3b8fb50 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 f93ca63a58fe3c617831df98f22d5c7bf0ae9117..d901ae1fd24cad437c796bf69fe5a211d37de7ed 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 0000000000000000000000000000000000000000..21474fa06514a98c4350ec2798d2cfb8243c8c1b
--- /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 0000000000000000000000000000000000000000..5651d7c777762f4e7f1ccc4b25f03ffdfe0a8039
--- /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 20dff83233f38648e6d08ac55cc1e231190d3aee..dea04babf6a0a406f243bd06448954926f9d8957 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 d24e08a2a42e52199e5316e315c6b5cf589a4c63..8bc436705f38ee7fc3674d1f83fcf901bad581c9 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 0000000000000000000000000000000000000000..9b3e5002233b74cfadff44b9e340723146e5066c
--- /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 8d822ea474ccd1dc62b5cd8c8cde168e37fd884e..9310c4914f70fdf73a3ca8f92fe70eb07fb714be 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 0aab71eb28357274ac7485188a76a76b23a9ce63..9b346a1394e14e8bf915e77d61b3a0dde4e92ba2 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 f4ce623a0c01407246420867a0d84c60f5489ad4..fdf85940b80642dc3768280a7a504337523b32be 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 0000000000000000000000000000000000000000..cdf89b9b3ea78f401dbf3347a64456047013cc49
--- /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 856d8ce19420d36b6deed4523cbc1aa930587c46..90592060e48d6d735bc776efbbac10c5765c127c 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 0000000000000000000000000000000000000000..c13b30b7a4d70cce9749f6e514d320386db202dc
--- /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 0000000000000000000000000000000000000000..ffb979f71c876858a7ba2bb41acf2a7b5e721eff
--- /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 dc76e9fbf2711d6c33e9ee00a91866cbbffdb424..88d490cc24779bb67572360b1cb89a6d041881d5 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 0000000000000000000000000000000000000000..ab586bcff7799c15842d0d6d4eae3cfa8a956036
--- /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 064489564d6af2459995953e6bbd1ee2c611f98c..a8a8c055de543535454291b8e49606d605388915 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 cc4d86d62637426f723a24c10a44db1f4a5ae396..cd7b10f4a8dea74132d4c7dfba49625d877d564a 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 99f7f19fa7f19598526fb0bd3b39460019db325d..3758ec5b8ed1a2073f0518e8b5a1672a144fcd5a 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 a1b4429cdec72441353bfc60c262d86df4efb120..2336783f560b9a424a172b9327db60a9ae7e46fb 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 553d1d517d93e9eef4153038b6d634330c911dff..1baaa5b16157dc4ddf110b4559d7b13cfe0a696f 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 0000000000000000000000000000000000000000..41c13e80076baa5ad5b3d20d4407e7a6dd0f7719
--- /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 0000000000000000000000000000000000000000..a2db7b1ac355ae67ec1dda6c5eab535cb8ac5093
--- /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 0000000000000000000000000000000000000000..6d410f57b3fd5863a1bc7c9e5700fa5956d0135b
--- /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 1ce67137c1c4b9378874ddfa496e7d5f8cb05e8e..fa369fc7371313a6752c3a71f63fc6b37597a860 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 0000000000000000000000000000000000000000..4b3c5a17ae2f62677c7f0802c10150a09afc86cf
--- /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 0000000000000000000000000000000000000000..c4e16a9efa601d4445744fc8d32d92db1fcbe831
--- /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 0000000000000000000000000000000000000000..e6d0c154a05acd01cbc0ef516f064d9c7b187c47
--- /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 e197ca2c70e2725bf40bff6fc31ccc27cca48802..81d808fef33d4c5ed59eeae3dd7233ca2e93137a 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 c83a3a3f46d14b0bc6ae4e6381e11c777c9436f0..9fd7845169e7c41c2b3be8130d9d0ff535a0c463 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 0000000000000000000000000000000000000000..487a8acd8ff9987ae3a30e57117ed34365ea0fcf
--- /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 0000000000000000000000000000000000000000..c2029a4f276ca3c2279487d018e44be2952ed983
--- /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 0000000000000000000000000000000000000000..7deac2ab28579d264caef66ff034d74750e18ec4
--- /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 91c335d663da7aa5c49d04bbef0572d972aa588a..e2b79031156b5d113f7e7f5ffa69314ae5215faf 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 d9753ff171b3018c5e1006201cadfaa624b6807d..e8e57bebf696e2d7a0a9eb0a622e039cf8feb553 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 cf60c478b489339c7dd0778d98ed69ef3a580a91..2b097dfe6820c639ec1763b8a3048000b114ad30 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 1be00ee3ef9b3e88b45cdecb37dca85f6711ff9d..5a94fb6f4ce2a56511a0cc10c70a7020e535ac2e 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 e74019fcea1fd0f322fd38d2542cc05b91f547e2..144f956cd85b326172039c006d10612970671797 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 57d2951d9b1f395ecd56dcb7982b0578402feeb6..dfe2e2b5af6a8cfb424a6ef958b105ada179ea6e 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 0000000000000000000000000000000000000000..f39368f9e4715d9a62f110d2ca2be995774461ea
--- /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 015a7108b9ddaa1ea9aeb8c75cd77cd5cba6c235..f23cf9866a95991f281dc87d41a76c14c44e2aaa 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 cfe2134737b91a60e0de537db04c48b644eb951a..1c9d422e8ee7ae2f7ba35f6f166351b40b43e1c5 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 6ca1acc3300582315a69a9be4237a64beefe2699..1b3c772b4676bdfccc0a88c6d6e1fd7d41e4e6ee 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 4d3296c07ad7b592f8bc8e91f02432b2412c6f26..a771e6a5fc88e6b894410d19ba75d27515d8535f 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 7df1d5057adffebe5aff3ce33cd6d4079bd8b8a7..1ca1e8b1b99f4bcb6927d6b53079ae82c0b96dfe 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 dc3dccb9640828c12a59e466bf47b9383dd35b48..7fa325f847007220668d1204e9ec82540b802814 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 0000000000000000000000000000000000000000..58275a3f11c73b1bba2ea2079bddfa14b68b8355
--- /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 0000000000000000000000000000000000000000..6de84842c9bd23519eb1b473a5180378f3cd6b44
--- /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 e168db28414f2fb69ba6e4def8e64256f5c13787..9656b5a8f34a4ceeed136841fe8d20cc274ca575 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 "