changeset 389:4fe8e1a7758e v7.0102

updated for version 7.0102
author vimboss
date Mon, 04 Jul 2005 22:49:24 +0000
parents f92bb1845823
children bded5839a32e
files Filelist runtime/compiler/bdf.vim runtime/compiler/gcc.vim runtime/compiler/rst.vim runtime/doc/options.txt runtime/doc/spell.txt runtime/doc/todo.txt runtime/filetype.vim runtime/ftplugin/a2ps.vim runtime/ftplugin/alsaconf.vim runtime/ftplugin/arch.vim runtime/ftplugin/bdf.vim runtime/ftplugin/calendar.vim runtime/ftplugin/conf.vim runtime/ftplugin/context.vim runtime/ftplugin/crm.vim runtime/ftplugin/css.vim runtime/ftplugin/cvsrc.vim runtime/ftplugin/dictconf.vim runtime/ftplugin/dictdconf.vim runtime/ftplugin/dircolors.vim runtime/ftplugin/elinks.vim runtime/ftplugin/eterm.vim runtime/ftplugin/fetchmail.vim runtime/ftplugin/gpg.vim runtime/ftplugin/group.vim runtime/ftplugin/grub.vim runtime/ftplugin/haskell.vim runtime/ftplugin/indent.vim runtime/ftplugin/ld.vim runtime/ftplugin/lftp.vim runtime/ftplugin/libao.vim runtime/ftplugin/limits.vim runtime/ftplugin/loginaccess.vim runtime/ftplugin/logindefs.vim runtime/ftplugin/m4.vim runtime/ftplugin/mailcap.vim runtime/ftplugin/manconf.vim runtime/ftplugin/mf.vim runtime/ftplugin/modconf.vim runtime/ftplugin/mp.vim runtime/ftplugin/mplayerconf.vim runtime/ftplugin/muttrc.vim runtime/ftplugin/nanorc.vim runtime/ftplugin/netrc.vim runtime/ftplugin/pamconf.vim runtime/ftplugin/passwd.vim runtime/ftplugin/pinfo.vim runtime/ftplugin/procmail.vim runtime/ftplugin/prolog.vim runtime/ftplugin/protocols.vim runtime/ftplugin/quake.vim runtime/ftplugin/racc.vim runtime/ftplugin/readline.vim runtime/ftplugin/rnc.vim runtime/ftplugin/rst.vim runtime/ftplugin/screen.vim runtime/ftplugin/sensors.vim runtime/ftplugin/services.vim runtime/ftplugin/setserial.vim runtime/ftplugin/sieve.vim runtime/ftplugin/slpconf.vim runtime/ftplugin/slpreg.vim runtime/ftplugin/slpspi.vim runtime/ftplugin/sshconfig.vim runtime/ftplugin/sudoers.vim runtime/ftplugin/sysctl.vim runtime/ftplugin/terminfo.vim runtime/ftplugin/udevconf.vim runtime/ftplugin/udevperm.vim runtime/ftplugin/udevrules.vim runtime/ftplugin/updatedb.vim runtime/ftplugin/xdefaults.vim runtime/ftplugin/xf86conf.vim runtime/ftplugin/xinetd.vim runtime/ftplugin/xmodmap.vim runtime/ftplugin/yaml.vim runtime/ftplugin/zsh.vim runtime/indent/config.vim runtime/indent/css.vim runtime/indent/dictconf.vim runtime/indent/dictdconf.vim runtime/indent/ld.vim runtime/indent/tcl.vim runtime/spell/fr/fr_FR.diff runtime/syntax/a2ps.vim runtime/syntax/alsaconf.vim runtime/syntax/arch.vim runtime/syntax/calendar.vim runtime/syntax/context.vim runtime/syntax/crm.vim runtime/syntax/cvsrc.vim runtime/syntax/dictconf.vim runtime/syntax/dictdconf.vim runtime/syntax/elinks.vim runtime/syntax/eterm.vim runtime/syntax/group.vim runtime/syntax/indent.vim runtime/syntax/lftp.vim runtime/syntax/libao.vim runtime/syntax/manconf.vim runtime/syntax/mplayerconf.vim runtime/syntax/nanorc.vim runtime/syntax/passwd.vim runtime/syntax/pinfo.vim runtime/syntax/protocols.vim runtime/syntax/racc.vim runtime/syntax/readline.vim runtime/syntax/rnc.vim runtime/syntax/rst.vim runtime/syntax/screen.vim runtime/syntax/sensors.vim runtime/syntax/services.vim runtime/syntax/setserial.vim runtime/syntax/sieve.vim runtime/syntax/slpconf.vim runtime/syntax/slpreg.vim runtime/syntax/slpspi.vim runtime/syntax/sudoers.vim runtime/syntax/terminfo.vim runtime/syntax/udevconf.vim runtime/syntax/udevperm.vim runtime/syntax/udevrules.vim runtime/syntax/updatedb.vim runtime/syntax/xinetd.vim runtime/syntax/xmodmap.vim runtime/syntax/yaml.vim src/Make_mvc.mak src/option.c src/po/Make_cyg.mak src/spell.c src/testdir/Make_amiga.mak src/testdir/Make_dos.mak src/testdir/Make_os2.mak src/testdir/Make_vms.mms src/testdir/Makefile src/testdir/test58.in src/testdir/test58.ok src/version.h
diffstat 139 files changed, 3057 insertions(+), 424 deletions(-) [+]
line wrap: on
line diff
--- 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 \
--- 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%.%#
--- 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,
--- 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,
--- 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 shor
 	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 shor
 	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)
--- 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 lan
 
 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 c
 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
--- 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
--- 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 gr
 " 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		set
 " 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 l
 " 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 
 " 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		set
 " 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 
 " 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 
 " 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.
 " 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')
 
new file mode 100644
--- /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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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'
--- 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
--- 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(\)\='
--- 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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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
--- 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
--- 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
--- 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
--- 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
new file mode 100644
--- /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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
new file mode 100644
--- /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
--- 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
+
--- 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
--- 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
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
 
-runtime! ftplugin/mf.vim ftplugin/mf_*.vim ftplugin/mf/*.vim
+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
--- 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
--- 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\>'
new file mode 100644
--- /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
--- 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
--- 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
new file mode 100644
--- /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
--- 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
--- 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\>'
--- 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
new file mode 100644
--- /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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
new file mode 100644
--- /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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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
new file mode 100644
--- /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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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
--- 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
--- 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
--- 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
new file mode 100644
--- /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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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 '\\\@!'?
 
--- 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
+  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(lnum)
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
 
-  if substitute(getline(lnum), '/\*.*', '', 'e') =~ '{\(.*}\)\@!'
-    let ind = ind + &sw
-  endif
-
-  if getline(v:lnum) =~ '^\s*}'
-    let ind = ind - &sw
+  let pline = getline(pnum)
+  if pline =~ '}\s*$'
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
   endif
 
   return ind
new file mode 100644
--- /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#
new file mode 100644
--- /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#
--- 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
--- 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
+
+  let pline = getline(pnum)
+  if pline =~ '}\s*$'
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
   endif
 
-  let pnum = s:prevnonblanknoncomment(pnum - 1)
-  if pnum > 0 && getline(pnum) =~ '\\$'
-    let ind -= &sw
-  endif
-
-  return ind - s:count_braces(v:lnum, 0) * &sw
+  return ind
 endfunction
--- 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
new file mode 100644
--- /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
--- 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 '[+?!-]'
 
--- 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 match   argBegin    display '^' nextgroup=archKeyword,archComment
 
-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 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"
--- 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
--- 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
 
--- 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 ac
 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:]]\+:'
 
--- 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\+\>'
 
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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
 
--- 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    contai
 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
 
new file mode 100644
--- /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
--- 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
--- 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
 
--- 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
new file mode 100644
--- /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
--- 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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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_BR
                                   \ 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\+\>'
new file mode 100644
--- /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
--- 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 '\
 
 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,
--- 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
--- 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
 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 '[{},()]'
 
--- 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             cont
 
 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,
--- 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*}\)'
 
new file mode 100644
--- /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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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 '\
 
 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
new file mode 100644
--- /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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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       co
 
 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
--- 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]\+\>'
new file mode 100644
--- /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
new file mode 100644
--- /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
new file mode 100644
--- /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
--- 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 PR
 
 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
--- 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
--- 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\+\>'
--- 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    '!\%(![^\\^%     ]\+\|[^!][^:/   ]*\)'
 
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -683,7 +683,7 @@ all:	$(VIM).exe vimrun.exe install.exe u
 
 $(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)
--- 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((
 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
     /* 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;
-
-    if (*curbuf->b_p_spc == NUL)
-    {
-	curbuf->b_cap_prog = NULL;
+    regprog_T   *rp = buf->b_cap_prog;
+
+    if (*buf->b_p_spc == NUL)
+    {
+	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)
-    {
-	curbuf->b_cap_prog = rp;
+    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)
+    {
+	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
new file mode 100644
--- /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
+
+
--- 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
 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 
 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)
-    {
-	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;
+    for (i = 0; i < 128; ++i)
+    {
+	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)
+	{
 #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;
     }
 
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -24,7 +24,7 @@ SCRIPTS = test1.out test3.out test4.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
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -18,7 +18,7 @@ SCRIPTS16 =	test1.out test19.out test20.
 		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 \
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -24,7 +24,7 @@ SCRIPTS = test1.out test3.out test4.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
 
--- 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
 	 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
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -14,7 +14,7 @@ SCRIPTS = test1.out test2.out test3.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
new file mode 100644
--- /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:
new file mode 100644
--- /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
--- 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 "