changeset 375:f14cbd913415 v7.0097

updated for version 7.0097
author vimboss
date Wed, 29 Jun 2005 22:40:58 +0000
parents 575dacb554d8
children d2bc505a6d91
files runtime/compiler/bdf.vim runtime/compiler/gcc.vim runtime/compiler/rst.vim runtime/doc/eval.txt runtime/doc/spell.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/version7.txt runtime/filetype.vim runtime/ftplugin/alsaconf.vim runtime/ftplugin/arch.vim runtime/ftplugin/automake.vim runtime/ftplugin/bdf.vim runtime/ftplugin/calendar.vim runtime/ftplugin/changelog.vim runtime/ftplugin/conf.vim runtime/ftplugin/context.vim runtime/ftplugin/crm.vim runtime/ftplugin/css.vim runtime/ftplugin/cvsrc.vim runtime/ftplugin/dircolors.vim runtime/ftplugin/elinks.vim runtime/ftplugin/eterm.vim runtime/ftplugin/fetchmail.vim runtime/ftplugin/gpg.vim runtime/ftplugin/grub.vim runtime/ftplugin/haskell.vim runtime/ftplugin/help.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/modconf.vim runtime/ftplugin/mplayerconf.vim runtime/ftplugin/muttrc.vim runtime/ftplugin/netrc.vim runtime/ftplugin/pamconf.vim runtime/ftplugin/pinfo.vim runtime/ftplugin/procmail.vim runtime/ftplugin/prolog.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/sieve.vim runtime/ftplugin/sshconfig.vim runtime/ftplugin/sudoers.vim runtime/ftplugin/sysctl.vim runtime/ftplugin/terminfo.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/automake.vim runtime/indent/config.vim runtime/indent/css.vim runtime/indent/docbk.vim runtime/indent/eterm.vim runtime/indent/ld.vim runtime/indent/make.vim runtime/indent/readline.vim runtime/indent/rst.vim runtime/indent/sh.vim runtime/indent/tcl.vim runtime/indent/xf86conf.vim runtime/indent/xinetd.vim runtime/indent/yacc.vim runtime/indent/zsh.vim runtime/syntax/alsaconf.vim runtime/syntax/arch.vim runtime/syntax/bdf.vim runtime/syntax/calendar.vim runtime/syntax/context.vim runtime/syntax/crm.vim runtime/syntax/cvsrc.vim runtime/syntax/dircolors.vim runtime/syntax/elinks.vim runtime/syntax/eterm.vim runtime/syntax/fetchmail.vim runtime/syntax/gpg.vim runtime/syntax/grub.vim runtime/syntax/indent.vim runtime/syntax/ld.vim runtime/syntax/lftp.vim runtime/syntax/libao.vim runtime/syntax/limits.vim runtime/syntax/loginaccess.vim runtime/syntax/logindefs.vim runtime/syntax/modconf.vim runtime/syntax/mplayerconf.vim runtime/syntax/netrc.vim runtime/syntax/pamconf.vim runtime/syntax/pinfo.vim runtime/syntax/quake.vim runtime/syntax/racc.vim runtime/syntax/readline.vim runtime/syntax/rnc.vim runtime/syntax/rst.vim runtime/syntax/screen.vim runtime/syntax/sieve.vim runtime/syntax/sudoers.vim runtime/syntax/sysctl.vim runtime/syntax/terminfo.vim runtime/syntax/updatedb.vim runtime/syntax/xinetd.vim runtime/syntax/xmodmap.vim runtime/syntax/yaml.vim src/fileio.c src/misc1.c src/spell.c src/spell/he_IL.diff src/spell/nl_NL.diff src/version.h
diffstat 123 files changed, 6549 insertions(+), 3341 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/compiler/bdf.vim
+++ b/runtime/compiler/bdf.vim
@@ -1,16 +1,14 @@
 " Vim compiler file
-" Compiler:	    BDF to PCF Conversion
-" Maintainer:	    Nikolai Weibull <sourc@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/compiler/pcp/bdf/
-" Latest Revision:  2004-05-22
-" arch-tag:	    2e2f3a55-199b-468c-aa2e-d6b1a7b87806
+" Compiler:         BDF to PCF Conversion
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
 if exists("current_compiler")
   finish
 endif
 let current_compiler = "bdf"
 
-if exists(":CompilerSet") != 2          " older Vim always used :setlocal
+if exists(":CompilerSet") != 2
   command -nargs=* CompilerSet setlocal <args>
 endif
 
@@ -26,5 +24,3 @@ CompilerSet errorformat=%ABDF\ %trror\ o
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
-
-" vim: set sts=2 sw=2:
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/gcc.vim
@@ -0,0 +1,30 @@
+" Vim compiler file
+" Compiler:         GNU C Compiler
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("current_compiler")
+  finish
+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=
+      \%*[^\"]\"%f\"%*\\D%l:\ %m,
+      \\"%f\"%*\\D%l:\ %m,
+      \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
+      \%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
+      \%f:%l:\ %m,
+      \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
+      \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
+      \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
+      \%DMaking\ %*\\a\ in\ %f
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/compiler/rst.vim
+++ b/runtime/compiler/rst.vim
@@ -1,16 +1,14 @@
 " Vim compiler file
-" Compiler:	    reStructuredText Documentation Format
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/compiler/pcp/rst/
-" Latest Revision:  2004-05-22
-" arch-tag:	    ac64a95a-5d45-493d-a9f9-f96fc8568657
+" Compiler:         reStructuredText Documentation Format
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
 if exists("current_compiler")
   finish
 endif
 let current_compiler = "rst"
 
-if exists(":CompilerSet") != 2          " older Vim always used :setlocal
+if exists(":CompilerSet") != 2
   command -nargs=* CompilerSet setlocal <args>
 endif
 
@@ -29,5 +27,3 @@ CompilerSet errorformat=
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
-
-" vim: set sts=2 sw=2:
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jun 28
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jun 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3781,8 +3781,8 @@ sort({list} [, {func}])					*sort()* *E7
 soundfold({word})
 		Return the sound-folded equivalent of {word}.  Uses the first
 		language in 'spellang' for the current window that supports
-		soundfolding.  When no sound folding is possible the {word}
-		is returned unmodified.
+		soundfolding.  'spell' must be set.  When no sound folding is
+		possible the {word} is returned unmodified.
 		This can be used for making spelling suggestions.  Note that
 		the method can be quite slow.
 
@@ -3808,8 +3808,8 @@ spellsuggest({word} [, {max}])
 		first entry, thus this can be used to check spelling.
 
 		The spelling information for the current window is used.  The
-		'spell' option must be set and the value of 'spelllang' is
-		used.
+		'spell' option must be set and the values of 'spelllang' and
+		'spellsuggest' are used.
 
 
 split({expr} [, {pattern} [, {keepempty}]])			*split()*
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 28
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -706,7 +706,8 @@ Example:
 	SAL C                    K ~
 	SAL K                    K ~
 
-TODO: explain how it works.
+An explantion how it works can be found in the Aspell manual:
+http://aspell.net/man-html/Phonetic-Code.html.
 
 There are a few special items:
 
@@ -716,4 +717,32 @@ There are a few special items:
 
 "1" has the same meaning as "true".  Any other value means "false".
 
+
+SIMPLE SOUNDFOLDING		*spell-affix-SOFOFROM* *spell-affix-SOFOTO*
+
+The SAL mechanism is complex and slow.  A simpler mechanism is mapping all
+characters to another character, mapping similar sounding characters to the
+same character.  At the same time this does case folding.  You can not have
+SAL items at the same time.
+
+There are two items required: one to speficy the characters that are mapped
+and one that specifies the characters they are mapped to.  They must have
+exactly the same number of characters.  Example:
+
+    SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ~
+    SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkes ~
+
+In the example all vowels are mapped to the same character 'e'.  Another
+method is to leave out all vowels.  Some characters that sound nearly the same
+and are often mixed up, such as 'm' and 'n', are mapped to the same character.
+Don't do this too much, all words will start looking alike.
+
+Characters that do not appear in SOFOFROM will be left out, except that all
+white space is replaced by one space.  Sequences of the same character in
+SOFOFROM are replaced by one.
+
+You can use the |soundfold()| function to try out the results.  Or set the
+'verbose' option to see the score in the output of the |z?| command.
+
+
  vim:tw=78:sw=4:ts=8:ft=help:norl:
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2415,6 +2415,8 @@ 90.5	usr_90.txt	/*90.5*
 :spelld	spell.txt	/*:spelld*
 :spelldump	spell.txt	/*:spelldump*
 :spellgood	spell.txt	/*:spellgood*
+:spellr	spell.txt	/*:spellr*
+:spellrepall	spell.txt	/*:spellrepall*
 :spellw	spell.txt	/*:spellw*
 :spellwrong	spell.txt	/*:spellwrong*
 :split	windows.txt	/*:split*
@@ -3710,6 +3712,8 @@ E749	eval.txt	/*E749*
 E75	vi_diff.txt	/*E75*
 E750	repeat.txt	/*E750*
 E751	spell.txt	/*E751*
+E752	spell.txt	/*E752*
+E753	spell.txt	/*E753*
 E754	spell.txt	/*E754*
 E756	spell.txt	/*E756*
 E758	spell.txt	/*E758*
@@ -5141,6 +5145,7 @@ hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -6253,6 +6258,7 @@ sniff-compiling	if_sniff.txt	/*sniff-com
 sniff-intro	if_sniff.txt	/*sniff-intro*
 sort()	eval.txt	/*sort()*
 sorting	change.txt	/*sorting*
+soundfold()	eval.txt	/*soundfold()*
 space	intro.txt	/*space*
 spec-customizing	pi_spec.txt	/*spec-customizing*
 spec-how-to-use-it	pi_spec.txt	/*spec-how-to-use-it*
@@ -6275,6 +6281,8 @@ spell-affix-RAR	spell.txt	/*spell-affix-
 spell-affix-REP	spell.txt	/*spell-affix-REP*
 spell-affix-SAL	spell.txt	/*spell-affix-SAL*
 spell-affix-SFX	spell.txt	/*spell-affix-SFX*
+spell-affix-SOFOFROM	spell.txt	/*spell-affix-SOFOFROM*
+spell-affix-SOFOTO	spell.txt	/*spell-affix-SOFOTO*
 spell-affix-UPP	spell.txt	/*spell-affix-UPP*
 spell-affix-chars	spell.txt	/*spell-affix-chars*
 spell-affix-mbyte	spell.txt	/*spell-affix-mbyte*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jun 28
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jun 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,8 +30,6 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-send fixes for ccmalloc port to FreeBSD.
-
 Add extra list of file locations.  Can be used with:
     :ltag	      list of matching tags, like :tselect
 
@@ -99,13 +97,9 @@ Awaiting response:
 PLANNED FOR VERSION 7.0:
 
 -   Add SPELLCHECKER, with support for many languages.
-    - Spell checking code todo's:
-	- Code for making suggestions:
-	  - Hebrew: also use prefixes for suggestions.  See message from
-	    Kaminsky (June 20) for ideas.
-	  - Simple and fast sound-a-like: mapping list for first char and rest
-		    vowel as first char: *
-		    remove other vowels
+  - Spell checking code todo's:
+    - Dutch: badword "voorjaarsconferentie"; "najaarsconferentie" gets zero
+      soundfold score.
     - Proofread and cleanup spell help.
     - Use "engspchk" from Charles Campbell for ideas (commands, rare words).
     - Make "en-rare" spell file?  Ask Charles Campbell.
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Jun 25
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Jun 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -305,6 +305,7 @@ Options: ~
 			(idea by Hugo Haas)
 'spell'			switch spell checking on/off
 'spelllang'		languages to check spelling for
+'spellsuggest'		methods for spell suggestions
 'verbosefile'		Log messages in a file.
 
 
@@ -377,7 +378,10 @@ New functions: ~
 |reverse()|		reverse the order of a List
 |setqflist()|		create a quickfix list (Yegappan Lakshmanan)
 |sort()|		sort a List
+|soundfold()|		get the sound-a-like equivalent of a word
 |split()|		split a String into a List
+|spellbadword()|	get a badly spelled word
+|spellsuggest()|	get suggestions for correct spelling
 |string()|		String representation of a List or Dictionary
 |system()|		Filters {input} through a shell command.
 |taglist()|		Get list of matching tags. (Yegappan Lakshmanan)
@@ -435,6 +439,8 @@ Sive syntax file. (Nikolai Weibull)
 
 Pascal indent file. (Neil Carter)
 
+Many filetype plugins and others from Nikolai Weibull.
+
 Moved all the indent settings from the filetype plugin to the indent file.
 Implemented b:undo_indent to undo indent settings when setting 'filetype' to a
 different value.
@@ -1146,4 +1152,11 @@ It was possible to define a function wit
 
 CTRL-W F and "gf" didn't use the same method to get the file name.
 
+When reporting a conversion error the line number of the last error could be
+given.  Now report the first encountered error.
+
+When using ":e ++enc=name file" and iconv() was used for conversion an error
+caused a fallback to no conversion.  Now replace a character with '?' and
+continue.
+
  vim:tw=78:ts=8:ft=help:norl:
--- 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 17
+" Last Change:	2005 Jun 29
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -194,6 +194,9 @@ au BufNewFile,BufRead *.atl,*.as		setf a
 " Automake
 au BufNewFile,BufRead [mM]akefile.am		setf automake
 
+" Autotest .at files are actually m4
+au BufNewFile,BufRead *.at			setf m4
+
 " Avenue
 au BufNewFile,BufRead *.ave			setf ave
 
@@ -733,12 +736,18 @@ au BufNewFile,BufRead *.ace,*.ACE		setf 
 " Latte
 au BufNewFile,BufRead *.latte,*.lte		setf latte
 
+" Limits
+au BufNewFile,BufRead /etc/limits		setf limits
+
 " LambdaProlog (*.mod too, see Modsim)
 au BufNewFile,BufRead *.sig			setf lprolog
 
 " LDAP LDIF
 au BufNewFile,BufRead *.ldif			setf ldif
 
+" Ld loader
+au BufNewFile,BufRead *.ld			setf ld
+
 " Lex
 au BufNewFile,BufRead *.lex,*.l			setf lex
 
@@ -761,9 +770,18 @@ else
   au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp
 endif
 
+" SBCL implementation of Common Lisp
+au BufNewFile,BufRead sbclrc,.sbclrc		setf lisp
+
 " Lite
 au BufNewFile,BufRead *.lite,*.lt		setf lite
 
+" Login access
+au BufNewFile,BufRead /etc/login.access		setf loginaccess
+
+" Login defs
+au BufNewFile,BufRead /etc/login.defs		setf logindefs
+
 " Logtalk
 au BufNewFile,BufRead *.lgt			setf logtalk
 
@@ -990,6 +1008,9 @@ au BufNewFile,BufRead *.ora			setf ora
 " Packet filter conf
 au BufNewFile,BufRead pf.conf			setf pf
 
+" Pam conf
+au BufNewFile,BufRead /etc/pam.conf		setf pamconf
+
 " PApp
 au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
 
@@ -1535,6 +1556,9 @@ au BufNewFile,BufRead *.stp			setf stp
 " Standard ML
 au BufNewFile,BufRead *.sml			setf sml
 
+" Sysctl
+au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
+
 " Sudoers
 au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
 
@@ -1593,12 +1617,15 @@ au BufNewFile,BufRead *.uit,*.uil		setf 
 " UnrealScript
 au BufNewFile,BufRead *.uc			setf uc
 
+" Updatedb
+au BufNewFile,BufRead /etc/updatedb.conf	setf updatedb
+
 " Verilog HDL
 au BufNewFile,BufRead *.v			setf verilog
 
 " VHDL
 au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
-au BufNewFile,BufRead *.vhdl_[0-9]*  		call s:StarSetf('vhdl')
+au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
 
 " Vim script
 au BufNewFile,BufRead *.vim,.exrc,_exrc		setf vim
@@ -1673,6 +1700,9 @@ au BufNewFile,BufRead XF86Config
 " Xorg config
 au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86c_xfree86_version = 4 | setf xf86conf
 
+" Xinetd conf
+au BufNewFile,BufRead /etc/xinetd.conf		setf xinetd
+
 " XS Perl extension interface language
 au BufNewFile,BufRead *.xs			setf xs
 
@@ -1709,7 +1739,23 @@ au BufNewFile,BufRead *.xsd			setf xsd
 au BufNewFile,BufRead *.xsl,*.xslt		setf xslt
 
 " Yacc
-au BufNewFile,BufRead *.y,*.yy			setf yacc
+au BufNewFile,BufRead *.yy			setf yacc
+
+" Yacc or racc
+au BufNewFile,BufRead *.y			call s:FTy()
+
+fun! s:FTy()
+  let n = 1
+  while n < 10
+    if getline(n) =~ '^\s*\(#\|class\>\)'
+      setf racc
+      return
+    endif
+    let n = n + 1
+  endwhile
+  setf yacc
+endfun
+
 
 " Yaml
 au BufNewFile,BufRead *.yaml,*.yml		setf yaml
@@ -1794,6 +1840,9 @@ au BufNewFile,BufRead muttrc*,Muttrc*		c
 " Nroff macros
 au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
 
+" Pam conf
+au BufNewFile,BufRead /etc/pam.d/*		call s:StarSetf('pamconf')
+
 " Printcap and Termcap
 au BufNewFile,BufRead *printcap*
 	\ if !did_filetype()
@@ -1825,6 +1874,9 @@ au BufNewFile,BufRead XF86Config*
 " X11 xmodmap
 au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
 
+" Xinetd conf
+au BufNewFile,BufRead /etc/xinetd.d/*		call s:StarSetf('xinetd')
+
 " Z-Shell script
 au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
 
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/alsaconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         alsaconf(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/arch.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         GNU Arch inventory file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
--- a/runtime/ftplugin/automake.vim
+++ b/runtime/ftplugin/automake.vim
@@ -1,11 +1,10 @@
 " Vim filetype plugin file
-" Langugage:	    Automake
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/ftplugin/pcp/automake/
-" Latest Revision:  2004-05-22
-" arch-tag:	    3a78b0cd-27b2-410a-8e7b-51a1717c2a5b
+" Language:         Automake
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-22
 
-" Same as makefile filetype plugin for now.
+if exists("b:did_ftplugin")
+  finish
+endif
+
 runtime! ftplugin/make.vim ftplugin/make_*.vim ftplugin/make/*.vim
-
-" vim: set sts=2 sw=2:
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/bdf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         BDF font definition
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-22
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=b:COMMENT commentstring=COMMENT\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/calendar.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         calendar(1) input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=s1:/*,mb:*,ex:*/ commentstring& include&
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -1,24 +1,22 @@
 " Vim filetype plugin file
-" Language:	    generic Changelog file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/ftplugin/pcp/changelog/
-" Latest Revision:  2004-04-25
-" arch-tag:	    b00e2974-c559-4477-b7b2-3ef3f4061bdb
+" Language:         generic Changelog file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 " Variables:
 "   g:changelog_timeformat -
-"	description: the timeformat used in ChangeLog entries.
-"	default: "%Y-%m-%d".
+"       description: the timeformat used in ChangeLog entries.
+"       default: "%Y-%m-%d".
 "   g:changelog_username -
-"	description: the username to use in ChangeLog entries
-"	default: try to deduce it from environment variables and system	files.
+"       description: the username to use in ChangeLog entries
+"       default: try to deduce it from environment variables and system files.
 " Local Mappings:
 "   <Leader>o -
-"	adds a new changelog entry for the current user for the current date.
+"       adds a new changelog entry for the current user for the current date.
 " Global Mappings:
 "   <Leader>o -
-"	switches to the ChangeLog buffer opened for the current directory, or
-"	opens it in a new buffer if it exists in the current directory.  Then
-"	it does the same as the local <Leader>o described above.
+"       switches to the ChangeLog buffer opened for the current directory, or
+"       opens it in a new buffer if it exists in the current directory.  Then
+"       it does the same as the local <Leader>o described above.
 " Notes:
 "   run 'runtime ftplugin/changelog.vim' to enable the global mapping for
 "   changelog files.
@@ -28,16 +26,13 @@
 
 " If 'filetype' isn't "changelog", we must have been to add ChangeLog opener
 if &filetype == "changelog"
-  " 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
 
-  let cpo_save = &cpo
-  set cpo-=C
+  let s:cpo_save = &cpo
+  set cpo&vim
 
   " The format of the date-time field (should have been called dateformat)
   if !exists("g:changelog_timeformat")
@@ -55,56 +50,56 @@ if &filetype == "changelog"
       " Get the users login name
       let login = system('whoami')
       if v:shell_error
-	let login = 'unknown'
+        let login = 'unknown'
       else
-	let newline = stridx(login, "\n")
-	if newline != -1
-	  let login = strpart(login, 0, newline)
-	endif
+        let newline = stridx(login, "\n")
+        if newline != -1
+          let login = strpart(login, 0, newline)
+        endif
       endif
 
       " Try to full name from gecos field in /etc/passwd
       if filereadable('/etc/passwd')
-	let name = substitute(
-	      \system('cat /etc/passwd | grep ^`whoami`'),
-	      \'^\%([^:]*:\)\{4}\([^:]*\):.*$', '\1', '')
+        let name = substitute(
+              \system('cat /etc/passwd | grep ^`whoami`'),
+              \'^\%([^:]*:\)\{4}\([^:]*\):.*$', '\1', '')
       endif
 
       " If there is no such file, or there was some other problem try
       " others
       if !filereadable('/etc/passwd') || v:shell_error
-	" Maybe the environment has something of interest
-	if exists("$NAME")
-	  let name = $NAME
-	else
-	  " No? well, use the login name and capitalize first
-	  " character
-	  let name = toupper(login[0]) . strpart(login, 1)
-	endif
+        " Maybe the environment has something of interest
+        if exists("$NAME")
+          let name = $NAME
+        else
+          " No? well, use the login name and capitalize first
+          " character
+          let name = toupper(login[0]) . strpart(login, 1)
+        endif
       endif
 
       " Only keep stuff before the first comma
       let comma = stridx(name, ',')
       if comma != -1
-	let name = strpart(name, 0, comma)
+        let name = strpart(name, 0, comma)
       endif
 
       " And substitute & in the real name with the login of our user
       let amp = stridx(name, '&')
       if amp != -1
-	let name = strpart(name, 0, amp) . toupper(login[0]) .
-	      \strpart(login, 1) . strpart(name, amp + 1)
+        let name = strpart(name, 0, amp) . toupper(login[0]) .
+              \strpart(login, 1) . strpart(name, amp + 1)
       endif
 
       " Get our hostname
       let hostname = system("hostname")
       if v:shell_error
-	let hostname = 'unknownhost'
+        let hostname = 'unknownhost'
       else
-	let newline = stridx(hostname, "\n")
-	if newline != -1
-	  let hostname = strpart(hostname, 0, newline)
-	endif
+        let newline = stridx(hostname, "\n")
+        if newline != -1
+          let hostname = strpart(hostname, 0, newline)
+        endif
       endif
 
       " And finally set the username
@@ -134,15 +129,15 @@ if &filetype == "changelog"
     while i != -1
       let char = str[i + 1]
       if char == '%'
-	let middle = '%'
+        let middle = '%'
       elseif char == 'd'
-	let middle = a:date
+        let middle = a:date
       elseif char == 'u'
-	let middle = a:user
+        let middle = a:user
       elseif char == 'c'
-	let middle = '{cursor}'
+        let middle = '{cursor}'
       else
-	let middle = char
+        let middle = char
       endif
       let str = strpart(str, 0, i) . middle . strpart(str, i + 2)
       let i = stridx(str, '%')
@@ -169,17 +164,17 @@ if &filetype == "changelog"
     " Look for an entry for today by our user
     let date = strftime(g:changelog_timeformat)
     let search = s:substitute_items(g:changelog_date_entry_search, date,
-	  \g:changelog_username)
+          \g:changelog_username)
     if search(search) > 0
       " Ok, now we look for the end of the date-entry, and add an entry
       let pos = nextnonblank(line('.') + 1)
       let line = getline(pos)
       while line =~ '^\s\+\S\+'
-	let pos = pos + 1
-	let line = getline(pos)
+        let pos = pos + 1
+        let line = getline(pos)
       endwhile
       let insert = s:substitute_items(g:changelog_new_entry_format,
-	    \'', '')
+            \'', '')
       execute "normal! ".(pos - 1)."Go".insert
       execute pos
     else
@@ -188,18 +183,18 @@ if &filetype == "changelog"
 
       " No entry today, so create a date-user header and insert an entry
       let todays_entry = s:substitute_items(g:changelog_new_date_format,
-	    \date, g:changelog_username)
+            \date, g:changelog_username)
       " Make sure we have a cursor positioning
       if stridx(todays_entry, '{cursor}') == -1
-	let todays_entry = todays_entry.'{cursor}'
+        let todays_entry = todays_entry.'{cursor}'
       endif
 
       " Now do the work
       execute "normal! i".todays_entry
       if remove_empty
-	while getline('$') == ''
-	  $delete
-	endwhile
+        while getline('$') == ''
+          $delete
+        endwhile
       endif
 
       1
@@ -216,7 +211,7 @@ if &filetype == "changelog"
     command! -nargs=0 NewChangelogEntry call s:new_changelog_entry()
   endif
 
-  let b:undo_ftplugin = "setl com< tw< fo< et<"
+  let b:undo_ftplugin = "setl com< tw< fo< et< ai<"
 
   if &textwidth == 0
     setlocal textwidth=78
@@ -224,9 +219,10 @@ if &filetype == "changelog"
   setlocal comments=
   setlocal formatoptions+=t
   setlocal noexpandtab
-  " setlocal autoindent     now in indent file
+  setlocal autoindent
 
-  let &cpo = cpo_save
+  let &cpo = s:cpo_save
+  unlet s:cpo_save
 else
   " Add the Changelog opening mapping
   nmap <silent> <Leader>o :call <SID>open_changelog()<CR>
@@ -234,23 +230,21 @@ else
   function! s:open_changelog()
     if filereadable('ChangeLog')
       if bufloaded('ChangeLog')
-	let buf = bufnr('ChangeLog')
-	execute "normal! \<C-W>t"
-	while winbufnr(winnr()) != buf
-	  execute "normal! \<C-W>w"
-	endwhile
+        let buf = bufnr('ChangeLog')
+        execute "normal! \<C-W>t"
+        while winbufnr(winnr()) != buf
+          execute "normal! \<C-W>w"
+        endwhile
       else
-	split ChangeLog
+        split ChangeLog
       endif
 
       if exists("g:mapleader")
-	execute "normal " . g:mapleader . "o"
+        execute "normal " . g:mapleader . "o"
       else
-	execute "normal \\o"
+        execute "normal \\o"
       endif
       startinsert!
     endif
   endfunction
 endif
-
-" vim: set sts=2 sw=2:
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/conf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         generic configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/context.vim
@@ -0,0 +1,36 @@
+" Vim filetype plugin file
+" Language:         ConTeXt typesetting engine
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let b:undo_ftplugin = "setl com< cms< def< inc< sua<"
+
+setlocal comments=:%,b:%D,b:%C,b:%M commentstring=%\ %s
+
+let &l:define='\\\%([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\='
+        \ .     'def\|\\font\|\\\%(future\)\=let'
+        \ . '\|\\new\%(count\|dimen\|skip\|muskip\|box\|toks\|read\|write'
+        \ .     '\|fam\|insert\|if\)'
+
+let &l:include = '^\s*\%(input\|component\)'
+
+setlocal suffixesadd=.tex
+
+if exists("loaded_matchit")
+  let b:match_ignorecase = 0
+  let b:match_skip = 'r:\\\@<!\%(\\\\\)*%'
+  let b:match_words = '(:),\[:],{:},\\(:\\),\\\[:\\],' .
+        \ '\\start\(\a\+\):\\stop\1'
+endif " exists("loaded_matchit")
+
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/crm.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         CRM114
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
--- a/runtime/ftplugin/css.vim
+++ b/runtime/ftplugin/css.vim
@@ -1,20 +1,15 @@
 " Vim filetype plugin file
-" Language:	    CSS
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/ftplugin/pcp/css/
-" Latest Revision:  2004-04-25
-" arch-tag:	    5fa7c74f-bf1a-47c4-b06f-6efe8f48db3b
+" Language:         CSS
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" 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
 
-let b:undo_ftplugin = "setl com<"
+let b:undo_ftplugin = "setl com< cms< inc<"
 
-setlocal comments=s1:/*,mb:*,ex:*/
+setlocal comments=s1:/*,mb:*,ex:*/ commentstring&
 
-" vim: set sts=2 sw=2:
+let &l:include = '^\s*@import\s\+\%(url(\)\='
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/cvsrc.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         cvs(1) RC file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments= commentstring=
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/dircolors.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         dircolors(1) input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/elinks.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         elinks(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/eterm.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         eterm(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=:# commentstring=#\ %s include=^\\s*include
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/fetchmail.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         fetchmail(1) RC File
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/gpg.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         gpg(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/grub.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         grub(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/haskell.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Haskell
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_plugin = "setl com< cms<"
+
+setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/help.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Vim help file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_plugin = "setl fo< tw<"
+
+setlocal formatoptions+=tcroql textwidth=78
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/indent.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         indent(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com<"
+
+setlocal comments=s1:/*,mb:*,ex:*/
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/ld.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         ld(1) script
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=s1:/*,mb:*,ex:*/ commentstring=/*%s*/ include=^\\s*INCLUDE
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/lftp.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         lftp(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/libao.vim
@@ -0,0 +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
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/limits.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         limits(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/loginaccess.vim
@@ -0,0 +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
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/logindefs.vim
@@ -0,0 +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
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/m4.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         m4
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:#,:dnl commentstring=dnl\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/mailcap.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Mailcap configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+set comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/modconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         modules.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=:# commentstring=#\ %s include=^\\s*include
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/mplayerconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         mplayer(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=:# commentstring=#\ %s include=^\\s*include
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/muttrc.vim
@@ -0,0 +1,15 @@
+" Vim filetype plugin file
+" Language:         mutt RC File
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=:# commentstring=#\ %s
+
+let &l:include = '^\s*source\>'
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/netrc.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         netrc(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments= commentstring=
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/pamconf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         pam(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/pinfo.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         pinfo(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/procmail.vim
@@ -0,0 +1,15 @@
+" Vim filetype plugin file
+" Language:         procmail(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=:# commentstring=#\ %s
+
+let &l:include = '^\s*INCLUDERC\>'
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/prolog.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Prolog
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=s1:/*,mb:*,ex:*/,:% commentstring=%\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/quake.vim
@@ -0,0 +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
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:// commentstring=//\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/racc.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Racc input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/readline.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         readline(3) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/rnc.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Relax NG compact syntax
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
--- a/runtime/ftplugin/rst.vim
+++ b/runtime/ftplugin/rst.vim
@@ -1,23 +1,13 @@
 " Vim filetype plugin file
-" Language:	    reStructuredText Documentation Format
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/ftplugin/pcp/rst/
-" Latest Revision:  2004-04-25
-" arch-tag:	    618bf504-81ba-4518-bad2-43ba2b844a26
+" Language:         reStructuredText documentation format
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" 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
 
-let b:undo_ftplugin = "setl com< cms<"
+let b:undo_ftplugin = "setl com< cms< et<"
 
-setlocal comments=fb:..
-setlocal commentstring=..\ %s
-setlocal expandtab
-setlocal sts=2 sw=2
-
-" vim: set sts=2 sw=2:
+setlocal comments=fb:.. commentstring=..\ %s expandtab
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/screen.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         screen(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/sieve.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Sieve filtering language input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/sshconfig.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         OpenSSH client configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/sudoers.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         sudoers(5) configuration files
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/sysctl.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         sysctl.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_plugin = "setl com< cms<"
+
+setlocal comments=:;,:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/terminfo.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         terminfo(5) definition
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/updatedb.vim
@@ -0,0 +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
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_plugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/xdefaults.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         X resources files like ~/.Xdefaults (xrdb)
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=s1:/*,mb:*,ex:*/,:! commentstring& inc&
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/xf86conf.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         XFree86 Configuration File
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:# commentstring=#\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/xinetd.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         xinetd.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< inc<"
+
+setlocal comments=:# commentstring=#\ %s include=^\\s*include
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/xmodmap.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         xmodmap(1) definition file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=:! commentstring=!\ %s
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/yaml.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         YAML (YAML Ain't Markup Language)
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms< et<"
+
+setlocal comments=:# commentstring=#\ %s expandtab
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/zsh.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language:         Zsh shell script
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl com< cms<"
+
+setlocal comments=b:# commentstring=#\ %s
--- a/runtime/indent/automake.vim
+++ b/runtime/indent/automake.vim
@@ -1,11 +1,11 @@
 " Vim indent file
-" Language:	    automake
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/automake/
-" Latest Revision:  2004-04-25
-" arch-tag:	    9a2af48c-48d4-4bae-82c3-c801bc9d1976
+" Language:         automake
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_indent")
+  finish
+endif
 
 " same as makefile indenting for now.
-source <sfile>:p:h/make.vim
-
-" vim: set sts=2 sw=2:
+runtime! indent/make.vim
--- a/runtime/indent/config.vim
+++ b/runtime/indent/config.vim
@@ -1,18 +1,17 @@
 " Vim indent file
-" Language:	    Autoconf configure.{ac,in} file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/config/
-" Latest Revision:  2004-04-25
-" arch-tag:	    7779c341-796f-408e-80e4-a55c26b519a4
-" TODO:		    how about nested [()]'s in one line
-"		    what's wrong with '\\\@!'?
+" 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
+" TODO:             how about nested [()]'s in one line
+"                   what's wrong with '\\\@!'?
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
 
-source <sfile>:p:h/sh.vim       " will set b:did_indent
+runtime! indent/sh.vim          " will set b:did_indent
 
 setlocal indentexpr=GetConfigIndent()
 setlocal indentkeys=!^F,o,O,=then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done
--- a/runtime/indent/css.vim
+++ b/runtime/indent/css.vim
@@ -1,79 +1,54 @@
 " Vim indent file
-" Language:	    CSS
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/css/
-" Latest Revision:  2004-04-25
-" arch-tag:	    ccfd77a0-1c9a-43f7-a407-bbe704541442
+" Language:         CSS
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetCSSIndent()
-setlocal indentkeys-=:,0# indentkeys-=e
+setlocal indentkeys=0{,0},!^F,o,O
 
-" Only define the function once.
 if exists("*GetCSSIndent")
   finish
 endif
 
-function! s:LookupLine(lnum)
-  " find a non-blank line above the current line
+function s:LookupLine(lnum)
   let lnum = prevnonblank(a:lnum - 1)
+  while lnum > 0
+    let line = getline(lnum)
 
+    if line =~ '\*/'
+      while lnum > 0 && line !~ '/\*'
+        let lnum -= 1
+        let line = getline(lnum)
+      endwhile
+    endif
+
+    if line !~ '^\s*/\*'
+      return lnum
+    end
+  endwhile
+  return lnum
+endfunction
+
+function GetCSSIndent()
+  let lnum = prevnonblank(v:lnum - 1)
   if lnum == 0
     return 0
   endif
 
-  let line = getline(lnum)
-
-  " if the line has an end comment sequence we need to find a line
-  " that isn't affected by the comment.
-  if line =~ '\*/'
-    while line !~ '/\*'
-      let lnum = lnum - 1
-      let line = getline(lnum)
-    endwhile
-  endif
-
-  " if the line we found only contained the comment and whitespace
-  " we need to find another line to use...
-  if line =~ '^\s*/\*'
-    return s:LookupLine(lnum)
-  else
-    return lnum
-  endif
-endfunction
-
-function GetCSSIndent()
-  let lnum = s:LookupLine(v:lnum)
-
-  if lnum == 0
-    return 0
-  endif
-
-  " remove commented stuff from line
-  let line = substitute(getline(lnum), '/\*.\*/', '', 'eg')
-
   let ind = indent(lnum)
 
-  " check for opening brace on the previous line
-  " skip if it also contains a closing brace...
-  if line =~ '{\(.*}\)\@!'
+  if substitute(getline(lnum), '/\*.*', '', 'e') =~ '{\(.*}\)\@!'
     let ind = ind + &sw
   endif
 
-  let line = getline(v:lnum)
-
-  " check for closing brace first on current line
-  if line =~ '^\s*}'
-    let ind	= ind - &sw
+  if getline(v:lnum) =~ '^\s*}'
+    let ind = ind - &sw
   endif
 
   return ind
 endfunction
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/docbk.vim
+++ b/runtime/indent/docbk.vim
@@ -1,12 +1,10 @@
 " Vim indent file
-" Language:	    DocBook Documentation Format
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/docbk/
-" Latest Revision:  2004-05-22
-" arch-tag:	    3d073af7-1d69-42a2-99ad-9a49a21eb28f
+" Language:         DocBook Documentation Format
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
 if exists("b:did_indent")
-    finish
+  finish
 endif
 
 " Same as XML indenting for now.
@@ -15,5 +13,3 @@ runtime! indent/xml.vim
 if exists('*XmlIndentGet')
   setlocal indentexpr=XmlIndentGet(v:lnum,0)
 endif
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/eterm.vim
+++ b/runtime/indent/eterm.vim
@@ -1,49 +1,35 @@
 " Vim indent file
-" Language:	    Eterm configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/eterm/
-" Latest Revision:  2004-04-25
-" arch-tag:	    a22a92b1-c59f-4f47-8207-b21db6549b21
+" Language:         Eterm configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetEtermIndent()
 setlocal indentkeys=!^F,o,O,=end
 
-" Only define the function once.
 if exists("*GetEtermIndent")
   finish
 endif
 
 function GetEtermIndent()
-  " Find a non-blank line above the current line.
   let lnum = prevnonblank(v:lnum - 1)
-
-  " Hit the start of the file, use zero indent.
   if lnum == 0
     return 0
   endif
 
-  let line = getline(lnum)
   let ind = indent(lnum)
 
-  if line =~ '^\s*begin\>'
+  if getline(lnum) =~ '^\s*begin\>'
     let ind = ind + &sw
   endif
 
-  let line = getline(v:lnum)
-
-  " Check for closing brace on current line
-  if line =~ '^\s*end\>'
+  if getline(v:lnum) =~ '^\s*end\>'
     let ind = ind - &sw
   endif
 
   return ind
 endfunction
-
-" vim: set sts=2 sw=2:
--- 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-28
+" Latest Revision:  2005-06-29
 
 if exists("b:did_indent")
   finish
--- a/runtime/indent/make.vim
+++ b/runtime/indent/make.vim
@@ -1,21 +1,16 @@
 " Vim indent file
-" Language:	    Makefile
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/make/
-" Latest Revision:  2004-04-25
-" arch-tag:	    b539e147-a05c-4860-98af-1d2436db2f4b
+" Language:         Makefile
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetMakeIndent()
 setlocal indentkeys=!^F,o,O
 
-" Only define the function once.
 if exists("*GetMakeIndent")
   finish
 endif
@@ -23,35 +18,28 @@ endif
 function s:GetStringWidth(line, str)
   let end = matchend(a:line, a:str)
   let width = 0
-  let i = 0
-  while i < end
-    if a:line[i] != "\t"
-      let width = width + 1
+  for c in a:line
+    if c == "\t"
+      let width += &ts - (width % &ts)
     else
-      let width = width + &ts - (width % &ts)
+      let width += 1
     endif
-    let i = i + 1
-  endwhile
+  endfor
   return width
 endfunction
 
 function GetMakeIndent()
-  if v:lnum == 1
+  let lnum = v:lnum - 1
+  if lnum == 0
     return 0
   endif
 
-  let ind = indent(v:lnum - 1)
-  let line = getline(v:lnum - 1)
-
+  let line = getline(lnum)
   if line == ''
-    let ind = 0
-  elseif line =~ '^[^ \t#:][^#:]*:\{1,2}\([^=:]\|$\)'
-    let ind = ind + &ts
-  elseif line =~ '^\s*\h\w*\s*=\s*.\+\\$'
-    let ind = s:GetStringWidth(line, '=\s*')
+    return 0
+  elseif line =~ '^[^ \t#:][^#:]*:\{1,2}\%([^=:]\|$\)'
+    return indent(lnum) + &ts
+  elseif line =~ '^\s*\h\w*\s*+\==\s*.\+\\$'
+    return s:GetStringWidth(line, '+\==\s*')
   endif
-
-  return ind
 endfunction
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/readline.vim
+++ b/runtime/indent/readline.vim
@@ -1,48 +1,35 @@
 " Vim indent file
-" Language:	    readline configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/readline/
-" Latest Revision:  2004-04-25
-" arch-tag:	    ee681235-3abf-4a42-8587-edabd409a980
+" Language:         readline configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetReadlineIndent()
 setlocal indentkeys=!^F,o,O,=$else,=$endif
 
-" Only define the function once.
 if exists("*GetReadlineIndent")
   finish
 endif
 
 function GetReadlineIndent()
   let lnum = prevnonblank(v:lnum - 1)
-
   if lnum == 0
     return 0
   endif
 
-  let line = getline(lnum)
   let ind = indent(lnum)
 
-  " increase indent if previous line started with $if or $else
-  if  line =~ '^\s*$\(if\|else\)\>'
+  if getline(lnum) =~ '^\s*$\(if\|else\)\>'
     let ind = ind + &sw
   endif
 
-  let line = getline(v:lnum)
-
-  " decrease indent if this line starts with $else or $endif
-  if line =~ '^\s*$\(else\|endif\)\>'
+  if getline(v:lnum) =~ '^\s*$\(else\|endif\)\>'
     let ind = ind - &sw
   endif
 
   return ind
 endfunction
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/rst.vim
+++ b/runtime/indent/rst.vim
@@ -1,28 +1,22 @@
 " Vim indent file
-" Language:	    reStructuredText Documentation Format
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/rst/
-" Latest Revision:  2004-04-25
-" arch-tag:	    3fe10f75-24d0-4d94-a924-0ce945958104
+" Language:         reStructuredText Documentation Format
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetRSTIndent()
-setlocal indentkeys-=:,0# indentkeys-=e
+setlocal indentkeys=!^F,o,O
 
-" Only define the function once.
 if exists("*GetRSTIndent")
   finish
 endif
 
 function GetRSTIndent()
   let lnum = prevnonblank(v:lnum - 1)
-
   if lnum == 0
     return 0
   endif
@@ -46,7 +40,7 @@ function GetRSTIndent()
       let ind = ind - 2
     elseif line =~ '^\s*\d\+\.\s'
       let ind = ind - matchend(substitute(line, '^\s*', '', ''),
-	    \ '\d\+\.\s\+')
+            \ '\d\+\.\s\+')
     elseif line =~ '^\s*\.\.'
       let ind = ind - 3
     else
@@ -56,5 +50,3 @@ function GetRSTIndent()
 
   return ind
 endfunction
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -1,33 +1,26 @@
 " Vim indent file
-" Language:	    Shell Script
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/sh/
-" Latest Revision:  2004-04-25
-" arch-tag:	    431c7fc1-12a6-4d71-9636-1498ef56b038
+" Language:         Shell Script
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetShIndent()
 setlocal indentkeys+==then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done
 setlocal indentkeys-=:,0#
 
-" Only define the function once.
 if exists("*GetShIndent")
   finish
 endif
 
-set cpoptions-=C
+let s:cpo_save = &cpo
+set cpo&vim
 
 function GetShIndent()
-  " Find a non-blank line above the current line.
   let lnum = prevnonblank(v:lnum - 1)
-
-  " Hit the start of the file, use zero indent.
   if lnum == 0
     return 0
   endif
@@ -37,8 +30,8 @@ function GetShIndent()
   let ind = indent(lnum)
   let line = getline(lnum)
   if line =~ '^\s*\(if\|then\|do\|else\|elif\|case\|while\|until\|for\)\>'
-	\ || line =~ '^\s*\<\h\w*\>\s*()\s*{'
-	\ || line =~ '^\s*{'
+        \ || line =~ '^\s*\<\k\+\>\s*()\s*{'
+        \ || line =~ '^\s*{'
     if line !~ '\(esac\|fi\|done\)\>\s*$' && line !~ '}\s*$'
       let ind = ind + &sw
     endif
@@ -48,11 +41,12 @@ function GetShIndent()
   " Retain the indentation level if line matches fin (for find)
   let line = getline(v:lnum)
   if (line =~ '^\s*\(then\|do\|else\|elif\|esac\|fi\|done\)\>' || line =~ '^\s*}')
-	\ && line !~ '^\s*fi[ln]\>'
+        \ && line !~ '^\s*fi[ln]\>'
     let ind = ind - &sw
   endif
 
   return ind
 endfunction
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/indent/tcl.vim
+++ b/runtime/indent/tcl.vim
@@ -1,27 +1,21 @@
 " Vim indent file
-" Language:	    Tcl
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/tcl/
-" Latest Revision:  2004-05-21
-" arch-tag:	    64fab1fa-d670-40ab-a191-55678f20ceb0
+" Language:         Tcl
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetTclIndent()
-setlocal indentkeys-=:,0#
-setlocal indentkeys+=0]
+setlocal indentkeys=0{,0},!^F,o,O,0]
 
-" only define the function once.
 if exists("*GetTclIndent")
   finish
 endif
 
-function s:PrevNonBlankNonComment(lnum)
+function s:prevnonblanknoncomment(lnum)
   let lnum = prevnonblank(a:lnum)
   while lnum > 0
     let line = getline(lnum)
@@ -33,91 +27,44 @@ function s:PrevNonBlankNonComment(lnum)
   return lnum
 endfunction
 
-function! GetTclIndent()
-  let lnum = s:PrevNonBlankNonComment(v:lnum - 1)
+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, 1), 'name') !~ 'tcl\%(Comment\|String\)'
+      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
 
-  if lnum == 0
+function GetTclIndent()
+  let pnum = s:prevnonblanknoncomment(v:lnum - 1)
+  if pnum == 0
     return 0
   endif
 
-  let line = getline(lnum)
-  let ind = indent(lnum)
-
-  " TODO: Possible improvement, check that 'begin' and 'end' aren't inside a
-  " comment or string.  This will mess it up.  As I am pressed for time and
-  " stuff like this is unlikely to happen I won't deal with it in this
-  " version.
-  let open = 0
-  let begin = match(line, '{', 0)
-  while begin > -1
-    let end = match(line, '}', begin + 1)
-    if end < 0
-      let open = open + 1
-    else
-      let tmp = match(line, '{', begin + 1)
-      if tmp != -1 && tmp < end
-	let open = open + 1
-      endif
-    endif
-    let begin = match(line, '{', begin + 1)
-  endwhile
-
-  let begin = match(line, '[', 0)
-  while begin > -1
-    let end = match(line, ']', begin + 1)
-    if end < 0
-      let open = open + 1
-    else
-      let tmp = match(line, '{', begin + 1)
-      if tmp != -1 && tmp < end
-	let open = open + 1
-      endif
-    endif
-    let begin = match(line, '{', begin + 1)
-  endwhile
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+  if getline(pnum) =~ '\\$'
+    let ind += &sw
+  endif
 
-  let close = 0
-  let prev = 0
-  let end = matchend(line, '^\s*}.*}', prev)
-  while end > -1
-    let begin = match(line, '{', prev + 1)
-    if begin < 0 || begin > prev
-      let close = close + 1
-    endif
-    let prev = end
-    let end = match(line, '}', prev + 1)
-  endwhile
-
-  let prev = 0
-  let end = match(line, ']', prev)
-  while end > -1
-    let begin = match(line, '[', prev + 1)
-    if begin < 0 || begin > prev
-      let close = close + 1
-    endif
-    let prev = end
-    let end = match(line, ']', prev + 1)
-  endwhile
+  let pnum = s:prevnonblanknoncomment(pnum - 1)
+  if pnum > 0 && getline(pnum) =~ '\\$'
+    let ind -= &sw
+  endif
 
-  let ind = ind + (open - close) * &sw
-
-  let line = getline(v:lnum)
-
-  let close = 0
-  let prev = 0
-  let end = match(line, '}', prev)
-  while end > -1
-    let begin = match(line, '{', prev + 1)
-    if begin < 0 || begin > prev
-      let close = close + 1
-    endif
-    let prev = end
-    let end = match(line, '}', prev + 1)
-  endwhile
-
-  let ind = ind - close * &sw
-
-  return ind >= 0 ? ind : 0
+  return ind - s:count_braces(v:lnum, 0) * &sw
 endfunction
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/xf86conf.vim
+++ b/runtime/indent/xf86conf.vim
@@ -1,21 +1,16 @@
 " Vim indent file
-" Language:	    XFree86 Configuration File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/xf86conf/
-" Latest Revision:  2004-04-25
-" arch-tag:	    8a42f7b6-5088-49cf-b15b-07696a91c015
+" Language:         XFree86 Configuration File
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-" Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
-
 let b:did_indent = 1
 
 setlocal indentexpr=GetXF86ConfIndent()
 setlocal indentkeys=!^F,o,O,=End
 
-" Only define the function once.
 if exists("*GetXF86ConfIndent")
   finish
 endif
@@ -28,15 +23,14 @@ function GetXF86ConfIndent()
   endif
 
   let ind = indent(lnum)
-  let line = getline(lnum)
 
-  if line =~? '^\s*\(Sub\)\=Section'
+  if getline(lnum) =~? '^\s*\(Sub\)\=Section\>'
     let ind = ind + &sw
-  elseif getline(v:lnum) =~? '^\s*End'
+  endif
+
+  if getline(v:lnum) =~? '^\s*End\>'
     let ind = ind - &sw
   endif
 
   return ind
 endfunction
-
-" vim: set sts=2 sw=2:
new file mode 100644
--- /dev/null
+++ b/runtime/indent/xinetd.vim
@@ -0,0 +1,49 @@
+" Vim indent file
+" Language:         xinetd.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-28
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetXinetdIndent()
+setlocal indentkeys=0{,0},!^F,o,O
+
+if exists("*GetXinetdIndent")
+  finish
+endif
+
+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') !~ 'ld\%(Comment\|String\)'
+      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 GetXinetdIndent()
+  let pnum = prevnonblank(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
+endfunction
--- a/runtime/indent/yacc.vim
+++ b/runtime/indent/yacc.vim
@@ -1,9 +1,7 @@
 " Vim indent file
-" Language:	    YACC input file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/yacc/
-" Latest Revision:  2004-04-25
-" arch-tag:	    629aa719-8fe4-4787-adb7-ae94ca801610
+" Language:         YACC input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -40,5 +38,3 @@ function GetYaccIndent()
 
   return ind
 endfunction
-
-" vim: set sts=2 sw=2:
--- a/runtime/indent/zsh.vim
+++ b/runtime/indent/zsh.vim
@@ -1,11 +1,11 @@
 " Vim indent file
-" Language:	    Zsh Shell Script
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/indent/pcp/zsh/
-" Latest Revision:  2004-05-22
-" arch-tag:	    e566f55f-d8c0-4c60-b4b3-60c0dbd6dea1
+" Language:         Zsh Shell Script
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:did_indent")
+  finish
+endif
 
 " Same as sh indenting for now.
 runtime! indent/sh.vim
-
-" vim: set sts=2 sw=2:
--- a/runtime/syntax/alsaconf.vim
+++ b/runtime/syntax/alsaconf.vim
@@ -1,72 +1,51 @@
 " Vim syntax file
-" Language:	    ALSA configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/
-" Latest Revision:  2004-09-10
-" arch-tag:	    3e06fe53-28d5-44a1-871d-279f22e7aed4
+" Language:         alsaconf(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" todo
-syn keyword alsoconfTodo      contained FIXME TODO XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" comments
-syn region  alsaconfComment   matchgroup=alsaconfComment start="#" end="$"
-			      \ contains=alsaconfTodo
+syn keyword alsoconfTodo        contained FIXME TODO XXX NOTE
 
-" special characters
-syn match   alsaconfSpecialChar	contained "\\[ntvbrf]"
-syn match   alsaconfSpecialChar	contained "\\\o\+"
+syn region  alsaconfComment     matchgroup=alsaconfComment
+                                \ start='#' end='$'
+                                \ contains=alsaconfTodo,@Spell
 
-" strings
-syn region  alsaconfString    matchgroup=alsaconfString start=+"+ skip=+\\$+
-			      \ end=+"+ end=+$+ contains=alsaconfSpecialChar
-
-" preprocessor special
-syn match   alsaconfSpecial   contained "confdir:"
+syn match   alsaconfSpecialChar contained display '\\[ntvbrf]'
+syn match   alsaconfSpecialChar contained display '\\\o\+'
 
-" preprocessor
-syn region  alsaconfPreProc   matchgroup=alsaconfPreProc start="<" end=">"
-			      \ contains=alsaconfSpecial
+syn region  alsaconfString      matchgroup=alsaconfString
+                                \ start=+"+ skip=+\\$+ end=+"+ end=+$+
+                                \ contains=alsaconfSpecialChar
 
-" modes
-syn match   alsaconfMode      "[+?!-]"
+syn match   alsaconfSpecial     contained display 'confdir:'
 
-" keywords
-syn keyword alsaconfKeyword   card default device errors files func strings
-syn keyword alsaconfKeyword   subdevice type vars
+syn region  alsaconfPreProc     matchgroup=alsaconfPreProc start='<' end='>'
+                                \ contains=alsaconfSpecial
+
+syn match   alsaconfMode        display '[+?!-]'
 
-" variables
-syn match   alsaconfVariables "@\(hooks\|func\|args\)"
+syn keyword alsaconfKeyword     card default device errors files func strings
+syn keyword alsaconfKeyword     subdevice type vars
+
+syn match   alsaconfVariables   display '@\(hooks\|func\|args\)'
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_alsaconf_syn_inits")
-  if version < 508
-    let did_dircolors_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink alsoconfTodo	      Todo
-  HiLink alsaconfComment      Comment
-  HiLink alsaconfSpecialChar  SpecialChar
-  HiLink alsaconfString	      String
-  HiLink alsaconfSpecial      Special
-  HiLink alsaconfPreProc      PreProc
-  HiLink alsaconfMode	      Special
-  HiLink alsaconfKeyword      Keyword
-  HiLink alsaconfVariables    Identifier
-
-  delcommand HiLink
-endif
+hi def link alsoconfTodo        Todo
+hi def link alsaconfComment     Comment
+hi def link alsaconfSpecialChar SpecialChar
+hi def link alsaconfString      String
+hi def link alsaconfSpecial     Special
+hi def link alsaconfPreProc     PreProc
+hi def link alsaconfMode        Special
+hi def link alsaconfKeyword     Keyword
+hi def link alsaconfVariables   Identifier
 
 let b:current_syntax = "alsaconf"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/arch.vim
+++ b/runtime/syntax/arch.vim
@@ -1,60 +1,35 @@
 " Vim syntax file
-" Language:	    GNU Arch inventory file.
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/arch/
-" Latest Revision:  2004-05-22
-" arch-tag:	    529d60c4-53d8-4d3a-80d6-54ada86d9932
+" Language:         GNU Arch inventory file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk @,48-57,_,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
 
-" Todo
-syn keyword archTodo	  TODO FIXME XXX NOTE
+syn keyword archTodo    TODO FIXME XXX NOTE
 
-" Comment
-syn region  archComment  matchgroup=archComment start='^\%(#\|\s\)' end='$' contains=archTodo
-
-" Keywords
-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 region  archComment display matchgroup=archComment
+                        \ start='^\%(#\|\s\)' end='$' contains=archTodo,@Spell
 
-" Regexes
-syn match   archRegex    contained '\s*\zs.*'
+syn keyword archKeyword implicit tagline explicit names
+syn keyword archKeyword untagged-source
+syn keyword archKeyword exclude junk backup precious unrecognized source
+                        \ skipwhite nextgroup=archRegex
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_arch_syn_inits")
-  if version < 508
-    let did_arch_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn match   archRegex   contained '\s*\zs.*'
 
-  HiLink archTodo     Todo
-  HiLink archComment  Comment
-  HiLink archKeyword  Keyword
-  HiLink archRegex    String
-
-  delcommand HiLink
-endif
+hi def link archTodo    Todo
+hi def link archComment Comment
+hi def link archKeyword Keyword
+hi def link archRegex   String
 
 let b:current_syntax = "arch"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/bdf.vim
+++ b/runtime/syntax/bdf.vim
@@ -1,86 +1,97 @@
 " Vim syntax file
-" Language:	    BDF Font definition
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/bdf/
-" Latest Revision:  2004-05-06
-" arch-tag:	    b696b6ba-af24-41ba-b4eb-d248495eca68
+" Language:         BDF font definition
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" numbers
-syn match   bdfNumber	    display "\<\(\x\+\|\d\+\.\d\+\)\>"
+let s:cpo_save = &cpo
+set cpo&vim
 
-" comments
-syn region  bdfComment	    start="^COMMENT\>" end="$" contains=bdfTodo
+syn region  bdfFontDefinition transparent matchgroup=bdfKeyword
+                              \ start='^STARTFONT\>' end='^ENDFONT\>'
+                              \ contains=bdfComment,bdfFont,bdfSize,
+                              \ bdfBoundingBox,bdfProperties,bdfChars,bdfChar
+
+syn match   bdfNumber         contained display
+                              \ '\<\%(\x\+\|[+-]\=\d\+\%(\.\d\+\)*\)'
+
+syn keyword bdfTodo           contained FIXME TODO XXX NOTE
 
-" todo
-syn keyword bdfTodo	    contained TODO FIXME XXX NOTE
+syn region  bdfComment        contained start='^COMMENT\>' end='$'
+                              \ contains=bdfTodo,@Spell
+
+syn region  bdfFont           contained matchgroup=bdfKeyword
+                              \ start='^FONT\>' end='$'
+
+syn region  bdfSize           contained transparent matchgroup=bdfKeyword
+                              \ start='^SIZE\>' end='$' contains=bdfNumber
 
-" strings
-syn region  bdfString	    start=+"+ skip=+""+ end=+"+
+syn region  bdfBoundingBox    contained transparent matchgroup=bdfKeyword
+                              \ start='^FONTBOUNDINGBOX' end='$'
+                              \ contains=bdfNumber
 
-" properties
-syn keyword bdfProperties   contained FONT SIZE FONTBOUNDINGBOX CHARS
+syn region  bdfProperties     contained transparent matchgroup=bdfKeyword
+                              \ start='^STARTPROPERTIES' end='^ENDPROPERTIES'
+                              \ contains=bdfNumber,bdfString,bdfProperty,
+                              \ bdfXProperty
 
-" X11 properties
-syn keyword bdfXProperties  contained FONT_ASCENT FONT_DESCENT DEFAULT_CHAR
-syn keyword bdfXProperties  contained FONTNAME_REGISTRY FOUNDRY FAMILY_NAME
-syn keyword bdfXProperties  contained WEIGHT_NAME SLANT SETWIDTH_NAME PIXEL_SIZE
-syn keyword bdfXProperties  contained POINT_SIZE RESOLUTION_X RESOLUTION_Y SPACING
-syn keyword bdfXProperties  contained CHARSET_REGISTRY CHARSET_ENCODING COPYRIGHT
-syn keyword bdfXProperties  contained ADD_STYLE_NAME WEIGHT RESOLUTION X_HEIGHT
-syn keyword bdfXProperties  contained QUAD_WIDTH FONT AVERAGE_WIDTH
+syn keyword bdfProperty       contained FONT_ASCENT FONT_DESCENT DEFAULT_CHAR
+syn match   bdfProperty       contained '^\S\+'
 
-syn region  bdfDefinition   transparent matchgroup=bdfDelim start="^STARTPROPERTIES\>" end="^ENDPROPERTIES\>" contains=bdfXProperties,bdfNumber,bdfString
+syn keyword bdfXProperty      contained FONT_ASCENT FONT_DESCENT DEFAULT_CHAR
+                              \ FONTNAME_REGISTRY FOUNDRY FAMILY_NAME
+                              \ WEIGHT_NAME SLANT SETWIDTH_NAME PIXEL_SIZE
+                              \ POINT_SIZE RESOLUTION_X RESOLUTION_Y SPACING
+                              \ CHARSET_REGISTRY CHARSET_ENCODING COPYRIGHT
+                              \ ADD_STYLE_NAME WEIGHT RESOLUTION X_HEIGHT
+                              \ QUAD_WIDTH FONT AVERAGE_WIDTH
+
+syn region  bdfString         contained start=+"+ skip=+""+ end=+"+
+
+syn region  bdfChars          contained display transparent
+                              \ matchgroup=bdfKeyword start='^CHARS' end='$'
+                              \ contains=bdfNumber
 
-" characters
-syn keyword bdfCharProperties contained ENCODING SWIDTH DWIDTH BBX ATTRIBUTES BITMAP
+syn region  bdfChar           transparent matchgroup=bdfKeyword
+                              \ start='^STARTCHAR' end='^ENDCHAR'
+                              \ contains=bdfEncoding,bdfWidth,bdfAttributes,
+                              \ bdfBitmap
 
-syn match   bdfCharName	    contained display "\<[0-9a-zA-Z]\{1,14}\>"
-syn match   bdfCharNameError contained display "\<[0-9a-zA-Z]\{15,}\>"
+syn region  bdfEncoding       contained transparent matchgroup=bdfKeyword
+                              \ start='^ENCODING' end='$' contains=bdfNumber
 
-syn region  bdfStartChar    transparent matchgroup=bdfDelim start="\<STARTCHAR\>" end="$" contains=bdfCharName,bdfCharNameError
+syn region  bdfWidth          contained transparent matchgroup=bdfKeyword
+                              \ start='^SWIDTH\|DWIDTH\|BBX' end='$'
+                              \ contains=bdfNumber
 
-syn region  bdfCharDefinition transparent start="^STARTCHAR\>" matchgroup=bdfDelim end="^ENDCHAR\>" contains=bdfCharProperties,bdfNumber,bdfStartChar
+syn region  bdfAttributes     contained transparent matchgroup=bdfKeyword
+                              \ start='^ATTRIBUTES' end='$'
 
-" font
-syn region  bdfFontDefinition transparent matchgroup=bdfDelim start="^STARTFONT\>" end="^ENDFONT\>" contains=bdfProperties,bdfDefinition,bdfCharDefinition,bdfNumber,bdfComment
+syn keyword bdfBitmap         contained BITMAP
 
 if exists("bdf_minlines")
   let b:bdf_minlines = bdf_minlines
 else
-  let b:bdf_minlines = 50
+  let b:bdf_minlines = 30
 endif
-exec "syn sync minlines=" . b:bdf_minlines
+exec "syn sync ccomment bdfChar minlines=" . b:bdf_minlines
+
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_bdf_syn_inits")
-  if version < 508
-    let did_bdf_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink bdfComment		Comment
-  HiLink bdfTodo		Todo
-  HiLink bdfNumber		Number
-  HiLink bdfString		String
-  HiLink bdfProperties	Keyword
-  HiLink bdfXProperties	Keyword
-  HiLink bdfCharProperties	Structure
-  HiLink bdfDelim		Delimiter
-  HiLink bdfCharName		String
-  HiLink bdfCharNameError	Error
-  delcommand HiLink
-endif
+hi def link bdfKeyword        Keyword
+hi def link bdfNumber         Number
+hi def link bdfTodo           Todo
+hi def link bdfComment        Comment
+hi def link bdfFont           String
+hi def link bdfProperty       Identifier
+hi def link bdfXProperty      Identifier
+hi def link bdfString         String
+hi def link bdfChars          Keyword
+hi def link bdfBitmap         Keyword
 
 let b:current_syntax = "bdf"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/calendar.vim
+++ b/runtime/syntax/calendar.vim
@@ -1,104 +1,111 @@
 " Vim syntax file
-" Language:	    calendar(1) file.
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/calendar/
-" Latest Revision:  2004-05-06
-" arch-tag:	    d714127d-469d-43bd-9c79-c2a46ec54535
+" Language:         calendar(1) input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Todo
-syn keyword calendarTodo	contained TODO FIXME XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" Comments
-syn region  calendarComment	matchgroup=calendarComment start='/\*' end='\*/' contains=calendarTodo
+syn keyword calendarTodo          contained TODO FIXME XXX NOTE
 
-" Strings
-syn region  calendarCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=calendarSpecial
-syn match   calendarSpecial	display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)'
-syn match   calendarSpecial	display contained "\\\(u\x\{4}\|U\x\{8}\)"
+syn region  calendarComment       matchgroup=calendarComment
+                                  \ start='/\*' end='\*/'
+                                  \ contains=calendarTodo,@Spell
 
-" cpp(1) Preprocessor directives (adapted from syntax/c.vim)
+syn region  calendarCppString     start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl
+                                  \ end=+"+ end='$' contains=calendarSpecial
+syn match   calendarSpecial       display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)'
+syn match   calendarSpecial       display contained "\\\(u\x\{4}\|U\x\{8}\)"
 
-syn region  calendarPreCondit	start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>' skip='\\$' end='$' contains=calendarComment,calendarCppString
-syn match   calendarPreCondit	display '^\s*#\s*\%(else\|endif\)\>'
-syn region  calendarCppOut	start='^\s*#\s*if\s\+0\+' end='.\@=\|$' contains=calendarCppOut2
-syn region  calendarCppOut2	contained start='0' end='^\s*#\s*\%(endif\|else\|elif\)\>' contains=calendarSpaceError,calendarCppSkip
-syn region  calendarCppSkip	contained start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>' skip='\\$' end='^\s*#\s*endif\>' contains=calendarSpaceError,calendarCppSkip
-syn region  calendarIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
-syn match   calendarIncluded	display contained '<[^>]*>'
-syn match   calendarInclude	display '^\s*#\s*include\>\s*["<]' contains=calendarIncluded
-syn cluster calendarPreProcGroup    contains=calendarPreCondit,calendarIncluded,calendarInclude,calendarDefine,calendarCppOut,calendarCppOut2,calendarCppSkip,calendarString,calendarSpecial,calendarTodo
-syn region  calendarDefine	start='^\s*#\s*\%(define\|undef\)\>' skip='\\$' end='$' contains=ALLBUT,@calendarPreProcGroup
-syn region  calendarPreProc	start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>' skip='\\$' end='$' keepend contains=ALLBUT,@calendarPreProcGroup
+syn region  calendarPreCondit     start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>'
+                                  \ skip='\\$' end='$'
+                                  \ contains=calendarComment,calendarCppString
+syn match   calendarPreCondit     display '^\s*#\s*\%(else\|endif\)\>'
+syn region  calendarCppOut        start='^\s*#\s*if\s\+0\+' end='.\@=\|$'
+                                  \ contains=calendarCppOut2
+syn region  calendarCppOut2       contained start='0'
+                                  \ end='^\s*#\s*\%(endif\|else\|elif\)\>'
+                                  \ contains=calendarSpaceError,calendarCppSkip
+syn region  calendarCppSkip       contained
+                                  \ start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>'
+                                  \ skip='\\$' end='^\s*#\s*endif\>'
+                                  \ contains=calendarSpaceError,calendarCppSkip
+syn region  calendarIncluded      display contained start=+"+ skip=+\\\\\|\\"+
+                                  \ end=+"+
+syn match   calendarIncluded      display contained '<[^>]*>'
+syn match   calendarInclude       display '^\s*#\s*include\>\s*["<]'
+                                  \ contains=calendarIncluded
+syn cluster calendarPreProcGroup  contains=calendarPreCondit,calendarIncluded,
+                                  \ calendarInclude,calendarDefine,
+                                  \ calendarCppOut,calendarCppOut2,
+                                  \ calendarCppSkip,calendarString,
+                                  \ calendarSpecial,calendarTodo
+syn region  calendarDefine        start='^\s*#\s*\%(define\|undef\)\>'
+                                  \ skip='\\$' end='$'
+                                  \ contains=ALLBUT,@calendarPreProcGroup
+syn region  calendarPreProc       start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>'
+                                  \ skip='\\$' end='$' keepend
+                                  \ contains=ALLBUT,@calendarPreProcGroup
 
-" Keywords
-syn keyword calendarKeyword	CHARSET BODUN LANG
+syn keyword calendarKeyword       CHARSET BODUN LANG
 syn case ignore
-syn keyword calendarKeyword	Easter Pashka
-syn case match
-
-" Dates
-syn case ignore
-syn match   calendarNumber	'\<\d\+\>'
-syn keyword calendarMonth	Jan[uary] Feb[ruary] Mar[ch] Apr[il] May Jun[e]
-syn keyword calendarMonth	Jul[y] Aug[ust] Sep[tember] Oct[ober]
-syn keyword calendarMonth	Nov[ember] Dec[ember]
-syn match   calendarMonth	'\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.'
-syn keyword calendarWeekday	Mon[day] Tue[sday] Wed[nesday] Thu[rsday]
-syn keyword calendarWeekday	Fri[day] Sat[urday] Sun[day]
-syn match   calendarWeekday	'\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.' nextgroup=calendarWeekdayMod
-syn match   calendarWeekdayMod	'[+-]\d\+\>'
+syn keyword calendarKeyword       Easter Pashka
 syn case match
 
-" Times
-syn match   calendarTime	'\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\='
-syn match   calendarTime	'\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]'
+syn case ignore
+syn match   calendarNumber        display '\<\d\+\>'
+syn keyword calendarMonth         Jan[uary] Feb[ruary] Mar[ch] Apr[il] May
+                                  \ Jun[e] Jul[y] Aug[ust] Sep[tember]
+                                  \ Oct[ober] Nov[ember] Dec[ember]
+syn match   calendarMonth         display '\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.'
+syn keyword calendarWeekday       Mon[day] Tue[sday] Wed[nesday] Thu[rsday]
+syn keyword calendarWeekday       Fri[day] Sat[urday] Sun[day]
+syn match   calendarWeekday       display '\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.'
+                                  \ nextgroup=calendarWeekdayMod
+syn match   calendarWeekdayMod    display '[+-]\d\+\>'
+syn case match
 
-" Variables
-syn match calendarVariable	'\*'
+syn match   calendarTime          display '\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\='
+syn match   calendarTime          display '\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]'
+
+syn match calendarVariable        '\*'
 
-let b:c_minlines = 50		" #if 0 constructs can be long
+if exists("c_minlines")
+  let b:c_minlines = c_minlines
+else
+  if !exists("c_no_if0")
+    let b:c_minlines = 50       " #if 0 constructs can be long
+  else
+    let b:c_minlines = 15       " mostly for () constructs
+  endif
+endif
 exec "syn sync ccomment calendarComment minlines=" . b:c_minlines
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_calendar_syn_inits")
-  if version < 508
-    let did_calendar_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink calendarTodo		Todo
-  HiLink calendarComment	Comment
-  HiLink calendarCppString	String
-  HiLink calendarSpecial	SpecialChar
-  HiLink calendarPreCondit	PreCondit
-  HiLink calendarCppOut	Comment
-  HiLink calendarCppOut2	calendarCppOut
-  HiLink calendarCppSkip	calendarCppOut
-  HiLink calendarIncluded	String
-  HiLink calendarInclude	Include
-  HiLink calendarDefine	Macro
-  HiLink calendarPreProc	PreProc
-  HiLink calendarKeyword	Keyword
-  HiLink calendarNumber	Number
-  HiLink calendarMonth	String
-  HiLink calendarWeekday	String
-  HiLink calendarWeekdayMod	Special
-  HiLink calendarTime		Number
-  HiLink calendarVariable	Identifier
-
-  delcommand HiLink
-endif
+hi def link calendarTodo          Todo
+hi def link calendarComment       Comment
+hi def link calendarCppString     String
+hi def link calendarSpecial       SpecialChar
+hi def link calendarPreCondit     PreCondit
+hi def link calendarCppOut        Comment
+hi def link calendarCppOut2       calendarCppOut
+hi def link calendarCppSkip       calendarCppOut
+hi def link calendarIncluded      String
+hi def link calendarInclude       Include
+hi def link calendarDefine        Macro
+hi def link calendarPreProc       PreProc
+hi def link calendarKeyword       Keyword
+hi def link calendarNumber        Number
+hi def link calendarMonth         String
+hi def link calendarWeekday       String
+hi def link calendarWeekdayMod    Special
+hi def link calendarTime          Number
+hi def link calendarVariable      Identifier
 
 let b:current_syntax = "calendar"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/context.vim
@@ -0,0 +1,104 @@
+" Vim syntax file
+" Language:         ConTeXt typesetting engine
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+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 match   contextStatement  display '\\[a-zA-Z@]\+' contains=@NoSpell
+
+syn match   contextBlockDelim display '\\\%(start\|stop\)\a\+'
+                              \ contains=@NoSpell
+
+syn match   contextDelimiter  '[][{}]'
+
+syn match   contextEscaped    display '\\\_[\{}|&%$ ]'
+syn region  contextEscaped    display matchgroup=contextPreProc
+                              \ start='\\type\z(\A\)' end='\z1'
+syn region  contextEscaped    display matchgroup=contextPreProc
+                              \ start='\\type\={' end='}'
+syn region  contextEscaped    display matchgroup=contextPreProc
+                              \ start='\\type\=<<' end='>>'
+syn region  contextEscaped    matchgroup=contextPreProc
+                              \ start='\\start\z(\a*\%(typing\|typen\)\)'
+                              \ end='\\stop\z1'
+syn region  contextEscaped    display matchgroup=contextPreProc
+                              \ start='\\\h\+Type{' end='}'
+syn region  contextEscaped    display matchgroup=contextPreProc
+                              \ start='\\Typed\h\+{' end='}'
+
+"syn region  contextMath       matchgroup=contextMath start='\$' end='\$'
+"                              \ contains=contextStatement
+
+syn match   contextBuiltin    '\\\%(newif\|def\|gdef\|global\|let\|glet\|bgroup\)\>'
+                              \ contains=@NoSpell
+syn match   contextBuiltin    '\\\%(begingroup\|egroup\|endgroup\|long\|catcode\)\>'
+                              \ contains=@NoSpell
+syn match   contextBuiltin    '\\\%(unprotect\|unexpanded\|if\|else\|fi\|ifx\)\>'
+                              \ contains=@NoSpell
+syn match   contextBuiltin    '\\\%(futurelet\|protect\)\>' contains=@NoSpell
+syn match   contextBuiltin    '\\\%([lr]q\)\>' contains=@NoSpell
+
+syn match   contextPreProc    '^\s*\\\%(start\|stop\)\=\%(component\|environment\|project\|product\).*$'
+                              \ contains=@NoSpell
+syn match   contextPreProc    '^\s*\\input\s\+.*$' contains=@NoSpell
+
+syn match   contextSectioning '\\chapter\>' contains=@NoSpell
+syn match   contextSectioning '\\\%(sub\)*section\>' contains=@NoSpell
+
+syn match   contextSpecial    '\\crlf\>\|\\par\>\|-\{2,3}\||[<>/]\=|'
+                              \ contains=@NoSpell
+syn match   contextSpecial    '\\[`'"]'
+syn match   contextSpecial    +\\char\%(\d\{1,3}\|'\o\{1,3}\|"\x\{1,2}\)\>+
+                              \ contains=@NoSpell
+syn match   contextSpecial    '\^\^.'
+syn match   contextSpecial    '`\%(\\.\|\^\^.\|.\)'
+
+syn match   contextStyle      '\\\%(em\|tt\|rm\|ss\|hw\|cg\)\>'
+                              \ contains=@NoSpell
+syn match   contextFont       '\\\%(CAP\|Cap\|cap\|Caps\|kap\|nocap\)\>'
+                              \ contains=@NoSpell
+syn match   contextFont       '\\\%(Word\|WORD\|Words\|WORDS\)\>'
+                              \ contains=@NoSpell
+syn match   contextFont       '\\\%(vi\{1,3}\|ix\|xi\{0,2}\)\>'
+                              \ contains=@NoSpell
+syn match   contextFont       '\\\%(tf[abcdx]\|bfx\|[is]lx\)\>'
+                              \ contains=@NoSpell
+syn match   contextFont       '\\\%(b[fsi]\|s[cl]\|it\|os\|mf\)\>'
+                              \ contains=@NoSpell
+
+syn match   contextDimension  '[+-]\=\s*\%(\d\+\%([.,]\d*\)\=\|[.,]\d\+\)\s*\%(true\)\=\s*\%(p[tc]\|in\|bp\|c[mc]\|mm\|dd\|sp\|e[mx]\)\>'
+                              \ contains=@NoSpell
+
+hi def link contextTodo       Todo
+hi def link contextComment    Comment
+hi def link contextEscaped    Special
+hi def link contextStatement  Identifier
+hi def link contextMath       String
+hi def link contextBlockDelim Keyword
+hi def link contextBuiltin    Keyword
+hi def link contextDelimiter  Delimiter
+hi def link contextPreProc    PreProc
+hi def link contextSectioning PreProc
+hi def link contextSpecial    Special
+hi def link contextStyle      contextType
+hi def link contextFont       contextType
+hi def link contextType       Type
+hi def link contextDimension  Number
+
+let b:current_syntax = "context"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/crm.vim
+++ b/runtime/syntax/crm.vim
@@ -1,61 +1,42 @@
 " Vim syntax file
-" Language:	    CRM114
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/crm/
-" Latest Revision:  2004-05-22
-" arch-tag:	    a3d3eaaf-4700-44ff-b332-f6c42c036883
+" Language:         CRM114
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Todo
-syn keyword crmTodo	    contained TODO FIXME XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" Comments
-syn region  crmComment	    matchgroup=crmComment start='#' end='$' end='\\#' contains=crmTodo
-
-" Variables
-syn match   crmVariable    ':[*#@]:[^:]\{-1,}:'
+syn keyword crmTodo       contained TODO FIXME XXX NOTE
 
-" Special Characters
-syn match   crmSpecial	    '\\\%(x\x\x\|o\o\o\o\|[]nrtabvf0>)};/\\]\)'
+syn region  crmComment    matchgroup=crmComment start='#' end='$' end='\\#'
+                          \ contains=crmTodo,@Spell
 
-" Statements
-syn keyword crmStatement    insert noop accept alius alter classify eval exit
-syn keyword crmStatement    fail fault goto hash intersect isolate input learn
-syn keyword crmStatement    liaf match output syscall trap union window
+syn match   crmVariable   display ':[*#@]:[^:]\{-1,}:'
 
-" Regexes
-syn region   crmRegex	    matchgroup=crmRegex start='/' skip='\\/' end='/' contains=crmVariable
+syn match   crmSpecial    display '\\\%(x\x\x\|o\o\o\o\|[]nrtabvf0>)};/\\]\)'
 
-" Labels
-syn match   crmLabel	    '^\s*:[[:graph:]]\+:'
+syn keyword crmStatement  insert noop accept alius alter classify eval exit
+syn keyword crmStatement  fail fault goto hash intersect isolate input learn
+syn keyword crmStatement  liaf match output syscall trap union window
+
+syn region  crmRegex      matchgroup=crmRegex start='/' skip='\\/' end='/'
+                          \ contains=crmVariable
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_crm_syn_inits")
-  if version < 508
-    let did_crm_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn match   crmLabel      display '^\s*:[[:graph:]]\+:'
 
-  HiLink crmTodo	Todo
-  HiLink crmComment	Comment
-  HiLink crmVariable	Identifier
-  HiLink crmSpecial	SpecialChar
-  HiLink crmStatement	Statement
-  HiLink crmRegex	String
-  HiLink crmLabel	Label
-
-  delcommand HiLink
-endif
+hi def link crmTodo       Todo
+hi def link crmComment    Comment
+hi def link crmVariable   Identifier
+hi def link crmSpecial    SpecialChar
+hi def link crmStatement  Statement
+hi def link crmRegex      String
+hi def link crmLabel      Label
 
 let b:current_syntax = "crm"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/cvsrc.vim
+++ b/runtime/syntax/cvsrc.vim
@@ -1,49 +1,39 @@
 " Vim syntax file
-" Language:	    CVS RC File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/syntax/pcp/cvsrc/
-" Latest Revision:  2004-05-06
-" arch-tag:	    1910f2a8-66f4-4dde-9d1a-297566934535
+" Language:         cvs(1) RC file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" strings
-syn region  cvsrcString	    start=+"+ skip=+\\\\\|\\\\"+ end=+"\|$+
-syn region  cvsrcString	    start=+'+ skip=+\\\\\|\\\\'+ end=+'\|$+
-
-" numbers
-syn match   cvsrcNumber	    "\<\d\+\>"
+let s:cpo_save = &cpo
+set cpo&vim
 
-" commands
-syn match   cvsrcBegin	    "^" nextgroup=cvsrcCommand skipwhite
+syn region  cvsrcString   display start=+"+ skip=+\\\\\|\\\\"+ end=+"\|$+
+syn region  cvsrcString   display start=+'+ skip=+\\\\\|\\\\'+ end=+'\|$+
 
-syn region  cvsrcCommand    contained transparent matchgroup=cvsrcCommand start="add\|admin\|checkout\|commit\|cvs\|diff\|export\|history\|import\|init\|log\|rdiff\|release\|remove\|rtag\|status\|tag\|update" end="$" contains=cvsrcOption,cvsrcString,cvsrcNumber keepend
+syn match   cvsrcNumber   display '\<\d\+\>'
 
-" options
-syn match   cvsrcOption	    "-\a\+"
+syn match   cvsrcBegin    display '^' nextgroup=cvsrcCommand skipwhite
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_cvsrc_syn_inits")
-  if version < 508
-    let did_cvsrc_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn region  cvsrcCommand  contained transparent matchgroup=cvsrcCommand
+                          \ start='add\|admin\|checkout\|commit\|cvs\|diff'
+                          \ start='export\|history\|import\|init\|log'
+                          \ start='rdiff\|release\|remove\|rtag\|status\|tag'
+                          \ start='update'
+                          \ end='$'
+                          \ contains=cvsrcOption,cvsrcString,cvsrcNumber
+                          \ keepend
 
-  HiLink cvsrcString	String
-  HiLink cvsrcNumber	Number
-  HiLink cvsrcCommand	Keyword
-  HiLink cvsrcOption	Identifier
-  delcommand HiLink
-endif
+syn match   cvsrcOption   contained display '-\a\+'
+
+hi def link cvsrcString   String
+hi def link cvsrcNumber   Number
+hi def link cvsrcCommand  Keyword
+hi def link cvsrcOption   Identifier
 
 let b:current_syntax = "cvsrc"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/dircolors.vim
+++ b/runtime/syntax/dircolors.vim
@@ -1,106 +1,746 @@
 " Vim syntax file
-" Language:	    dircolors(1) input file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/dircolors/
-" Latest Revision:  2004-05-22
-" arch-tag:	    995e2983-2a7a-4f1e-b00d-3fdf8e076b40
-" Color definition coloring implemented my Mikolaj Machowski <mikmach@wp.pl>
+" Language:         dircolors(1) input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" todo
-syn keyword dircolorsTodo	contained FIXME TODO XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" comments
-syn region  dircolorsComment	start="#" end="$" contains=dircolorsTodo
+syn keyword dircolorsTodo       contained FIXME TODO XXX NOTE
+
+syn region  dircolorsComment    start='#' end='$' contains=dircolorsTodo,@Spell
 
-" numbers
-syn match   dircolorsNumber	"\<\d\+\>"
+syn keyword dircolorsKeyword    TERM LEFT LEFTCODE RIGHT RIGHTCODE END ENDCODE
 
-" keywords
-syn keyword dircolorsKeyword	TERM NORMAL NORM FILE DIR LNK LINK SYMLINK
-syn keyword dircolorsKeyword	ORPHAN MISSING FIFO PIPE SOCK BLK BLOCK CHR
-syn keyword dircolorsKeyword	CHAR DOOR EXEC LEFT LEFTCODE RIGHT RIGHTCODE
-syn keyword dircolorsKeyword	END ENDCODE
+syn keyword dircolorsKeyword    NORMAL NORM FILE DIR LNK LINK SYMLINK ORPHAN
+                                \ MISSING FIFO PIPE SOCK BLK BLOCK CHR CHAR
+                                \ DOOR EXEC
+                                \ nextgroup=@dircolorsColors skipwhite
+
 if exists("dircolors_is_slackware")
-  syn keyword	dircolorsKeyword    COLOR OPTIONS EIGHTBIT
+  syn keyword dircolorsKeyword  COLOR OPTIONS EIGHTBIT
 endif
 
-" extensions
-syn match   dircolorsExtension	"^\s*\zs[.*]\S\+"
+syn match   dircolorsExtension  '^\s*\zs[.*]\S\+'
+                                \ nextgroup=@dircolorsColors skipwhite
+
+if &t_Co == 8 || &t_Co == 16
+  syn cluster dircolorsColors   contains=dircolorsBold,dircolorsUnderline,
+                                \ dircolorsBlink,dircolorsReverse,
+                                \ dircolorsInvisible,dircolorsBlack,
+                                \ dircolorsRed,dircolorsGreen,dircolorsYellow,
+                                \ dircolorsBlue,dircolorsMagenta,dircolorsCyan,
+                                \ dircolorsWhite,dircolorsBGBlack,
+                                \ dircolorsBGRed,dircolorsBGGreen,
+                                \ dircolorsBGYellow,dircolorsBGBlue,
+                                \ dircolorsBGMagenta,dircolorsBGCyan,
+                                \ dircolorsBGWhite
 
-" colors
-syn match dircolors01 "\<01\>"
-syn match dircolors04 "\<04\>"
-syn match dircolors05 "\<05\>"
-syn match dircolors07 "\<07\>"
-syn match dircolors08 "\<08\>"
-syn match dircolors30 "\<30\>"
-syn match dircolors31 "\<31\>"
-syn match dircolors32 "\<32\>"
-syn match dircolors33 "\<33\>"
-syn match dircolors34 "\<34\>"
-syn match dircolors35 "\<35\>"
-syn match dircolors36 "\<36\>"
-syn match dircolors37 "\<37\>"
-syn match dircolors40 "\<40\>"
-syn match dircolors41 "\<41\>"
-syn match dircolors42 "\<42\>"
-syn match dircolors43 "\<43\>"
-syn match dircolors44 "\<44\>"
-syn match dircolors45 "\<45\>"
-syn match dircolors46 "\<46\>"
-syn match dircolors47 "\<47\>"
+  syn match dircolorsBold       contained '\<01\>'
+  syn match dircolorsUnderline  contained '\<04\>'
+  syn match dircolorsBlink      contained '\<05\>'
+  syn match dircolorsReverse    contained '\<07\>'
+  syn match dircolorsInvisible  contained '\<08\>'
+  syn match dircolorsBlack      contained '\<30\>'
+  syn match dircolorsRed        contained '\<31\>'
+  syn match dircolorsGreen      contained '\<32\>'
+  syn match dircolorsYellow     contained '\<33\>'
+  syn match dircolorsBlue       contained '\<34\>'
+  syn match dircolorsMagenta    contained '\<35\>'
+  syn match dircolorsCyan       contained '\<36\>'
+  syn match dircolorsWhite      contained '\<37\>'
+  syn match dircolorsBGBlack    contained '\<40\>'
+  syn match dircolorsBGRed      contained '\<41\>'
+  syn match dircolorsBGGreen    contained '\<42\>'
+  syn match dircolorsBGYellow   contained '\<43\>'
+  syn match dircolorsBGBlue     contained '\<44\>'
+  syn match dircolorsBGMagenta  contained '\<45\>'
+  syn match dircolorsBGCyan     contained '\<46\>'
+  syn match dircolorsBGWhite    contained '\<47\>'
+elseif &t_Co == 256
+  syn cluster dircolorsColors   contains=dircolorsColor1,dircolorsColor2,
+                                \ dircolorsColor3,dircolorsColor4,
+                                \ dircolorsColor5,dircolorsColor6,
+                                \ dircolorsColor7,dircolorsColor8,
+                                \ dircolorsColor9,dircolorsColor10,
+                                \ dircolorsColor11,dircolorsColor12,
+                                \ dircolorsColor13,dircolorsColor14,
+                                \ dircolorsColor15,dircolorsColor16,
+                                \ dircolorsColor17,dircolorsColor18,
+                                \ dircolorsColor19,dircolorsColor20,
+                                \ dircolorsColor21,dircolorsColor22,
+                                \ dircolorsColor23,dircolorsColor24,
+                                \ dircolorsColor25,dircolorsColor26,
+                                \ dircolorsColor27,dircolorsColor28,
+                                \ dircolorsColor29,dircolorsColor30,
+                                \ dircolorsColor31,dircolorsColor32,
+                                \ dircolorsColor33,dircolorsColor34,
+                                \ dircolorsColor35,dircolorsColor36,
+                                \ dircolorsColor37,dircolorsColor38,
+                                \ dircolorsColor39,dircolorsColor40,
+                                \ dircolorsColor41,dircolorsColor42,
+                                \ dircolorsColor43,dircolorsColor44,
+                                \ dircolorsColor45,dircolorsColor46,
+                                \ dircolorsColor47,dircolorsColor48,
+                                \ dircolorsColor49,dircolorsColor50,
+                                \ dircolorsColor51,dircolorsColor52,
+                                \ dircolorsColor53,dircolorsColor54,
+                                \ dircolorsColor55,dircolorsColor56,
+                                \ dircolorsColor57,dircolorsColor58,
+                                \ dircolorsColor59,dircolorsColor60,
+                                \ dircolorsColor61,dircolorsColor62,
+                                \ dircolorsColor63,dircolorsColor64,
+                                \ dircolorsColor65,dircolorsColor66,
+                                \ dircolorsColor67,dircolorsColor68,
+                                \ dircolorsColor69,dircolorsColor70,
+                                \ dircolorsColor71,dircolorsColor72,
+                                \ dircolorsColor73,dircolorsColor74,
+                                \ dircolorsColor75,dircolorsColor76,
+                                \ dircolorsColor77,dircolorsColor78,
+                                \ dircolorsColor79,dircolorsColor80,
+                                \ dircolorsColor81,dircolorsColor82,
+                                \ dircolorsColor83,dircolorsColor84,
+                                \ dircolorsColor85,dircolorsColor86,
+                                \ dircolorsColor87,dircolorsColor88,
+                                \ dircolorsColor89,dircolorsColor90,
+                                \ dircolorsColor91,dircolorsColor92,
+                                \ dircolorsColor93,dircolorsColor94,
+                                \ dircolorsColor95,dircolorsColor96,
+                                \ dircolorsColor97,dircolorsColor98,
+                                \ dircolorsColor99,dircolorsColor100,
+                                \ dircolorsColor101,dircolorsColor102,
+                                \ dircolorsColor103,dircolorsColor104,
+                                \ dircolorsColor105,dircolorsColor106,
+                                \ dircolorsColor107,dircolorsColor108,
+                                \ dircolorsColor109,dircolorsColor110,
+                                \ dircolorsColor111,dircolorsColor112,
+                                \ dircolorsColor113,dircolorsColor114,
+                                \ dircolorsColor115,dircolorsColor116,
+                                \ dircolorsColor117,dircolorsColor118,
+                                \ dircolorsColor119,dircolorsColor120,
+                                \ dircolorsColor121,dircolorsColor122,
+                                \ dircolorsColor123,dircolorsColor124,
+                                \ dircolorsColor125,dircolorsColor126,
+                                \ dircolorsColor127,dircolorsColor128,
+                                \ dircolorsColor129,dircolorsColor130,
+                                \ dircolorsColor131,dircolorsColor132,
+                                \ dircolorsColor133,dircolorsColor134,
+                                \ dircolorsColor135,dircolorsColor136,
+                                \ dircolorsColor137,dircolorsColor138,
+                                \ dircolorsColor139,dircolorsColor140,
+                                \ dircolorsColor141,dircolorsColor142,
+                                \ dircolorsColor143,dircolorsColor144,
+                                \ dircolorsColor145,dircolorsColor146,
+                                \ dircolorsColor147,dircolorsColor148,
+                                \ dircolorsColor149,dircolorsColor150,
+                                \ dircolorsColor151,dircolorsColor152,
+                                \ dircolorsColor153,dircolorsColor154,
+                                \ dircolorsColor155,dircolorsColor156,
+                                \ dircolorsColor157,dircolorsColor158,
+                                \ dircolorsColor159,dircolorsColor160,
+                                \ dircolorsColor161,dircolorsColor162,
+                                \ dircolorsColor163,dircolorsColor164,
+                                \ dircolorsColor165,dircolorsColor166,
+                                \ dircolorsColor167,dircolorsColor168,
+                                \ dircolorsColor169,dircolorsColor170,
+                                \ dircolorsColor171,dircolorsColor172,
+                                \ dircolorsColor173,dircolorsColor174,
+                                \ dircolorsColor175,dircolorsColor176,
+                                \ dircolorsColor177,dircolorsColor178,
+                                \ dircolorsColor179,dircolorsColor180,
+                                \ dircolorsColor181,dircolorsColor182,
+                                \ dircolorsColor183,dircolorsColor184,
+                                \ dircolorsColor185,dircolorsColor186,
+                                \ dircolorsColor187,dircolorsColor188,
+                                \ dircolorsColor189,dircolorsColor190,
+                                \ dircolorsColor191,dircolorsColor192,
+                                \ dircolorsColor193,dircolorsColor194,
+                                \ dircolorsColor195,dircolorsColor196,
+                                \ dircolorsColor197,dircolorsColor198,
+                                \ dircolorsColor199,dircolorsColor200,
+                                \ dircolorsColor201,dircolorsColor202,
+                                \ dircolorsColor203,dircolorsColor204,
+                                \ dircolorsColor205,dircolorsColor206,
+                                \ dircolorsColor207,dircolorsColor208,
+                                \ dircolorsColor209,dircolorsColor210,
+                                \ dircolorsColor211,dircolorsColor212,
+                                \ dircolorsColor213,dircolorsColor214,
+                                \ dircolorsColor215,dircolorsColor216,
+                                \ dircolorsColor217,dircolorsColor218,
+                                \ dircolorsColor219,dircolorsColor220,
+                                \ dircolorsColor221,dircolorsColor222,
+                                \ dircolorsColor223,dircolorsColor224,
+                                \ dircolorsColor225,dircolorsColor226,
+                                \ dircolorsColor227,dircolorsColor228,
+                                \ dircolorsColor229,dircolorsColor230,
+                                \ dircolorsColor231,dircolorsColor232,
+                                \ dircolorsColor233,dircolorsColor234,
+                                \ dircolorsColor235,dircolorsColor236,
+                                \ dircolorsColor237,dircolorsColor238,
+                                \ dircolorsColor239,dircolorsColor240,
+                                \ dircolorsColor241,dircolorsColor242,
+                                \ dircolorsColor243,dircolorsColor244,
+                                \ dircolorsColor245,dircolorsColor246,
+                                \ dircolorsColor247,dircolorsColor248,
+                                \ dircolorsColor249,dircolorsColor250,
+                                \ dircolorsColor251,dircolorsColor252,
+                                \ dircolorsColor253,dircolorsColor254,
+                                \ dircolorsColor255
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_dircolors_syn_inits")
-  if version < 508
-    let did_dircolors_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-    command -nargs=+ HiDef hi <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-    command -nargs=+ HiDef hi def <args>
-  endif
+  syn match dircolorsColor1     contained '\<1\>'
+  syn match dircolorsColor2     contained '\<2\>'
+  syn match dircolorsColor3     contained '\<3\>'
+  syn match dircolorsColor4     contained '\<4\>'
+  syn match dircolorsColor5     contained '\<5\>'
+  syn match dircolorsColor6     contained '\<6\>'
+  syn match dircolorsColor7     contained '\<7\>'
+  syn match dircolorsColor8     contained '\<8\>'
+  syn match dircolorsColor9     contained '\<9\>'
+  syn match dircolorsColor10    contained '\<10\>'
+  syn match dircolorsColor11    contained '\<11\>'
+  syn match dircolorsColor12    contained '\<12\>'
+  syn match dircolorsColor13    contained '\<13\>'
+  syn match dircolorsColor14    contained '\<14\>'
+  syn match dircolorsColor15    contained '\<15\>'
+  syn match dircolorsColor16    contained '\<16\>'
+  syn match dircolorsColor17    contained '\<17\>'
+  syn match dircolorsColor18    contained '\<18\>'
+  syn match dircolorsColor19    contained '\<19\>'
+  syn match dircolorsColor20    contained '\<20\>'
+  syn match dircolorsColor21    contained '\<21\>'
+  syn match dircolorsColor22    contained '\<22\>'
+  syn match dircolorsColor23    contained '\<23\>'
+  syn match dircolorsColor24    contained '\<24\>'
+  syn match dircolorsColor25    contained '\<25\>'
+  syn match dircolorsColor26    contained '\<26\>'
+  syn match dircolorsColor27    contained '\<27\>'
+  syn match dircolorsColor28    contained '\<28\>'
+  syn match dircolorsColor29    contained '\<29\>'
+  syn match dircolorsColor30    contained '\<30\>'
+  syn match dircolorsColor31    contained '\<31\>'
+  syn match dircolorsColor32    contained '\<32\>'
+  syn match dircolorsColor33    contained '\<33\>'
+  syn match dircolorsColor34    contained '\<34\>'
+  syn match dircolorsColor35    contained '\<35\>'
+  syn match dircolorsColor36    contained '\<36\>'
+  syn match dircolorsColor37    contained '\<37\>'
+  syn match dircolorsColor38    contained '\<38\>'
+  syn match dircolorsColor39    contained '\<39\>'
+  syn match dircolorsColor40    contained '\<40\>'
+  syn match dircolorsColor41    contained '\<41\>'
+  syn match dircolorsColor42    contained '\<42\>'
+  syn match dircolorsColor43    contained '\<43\>'
+  syn match dircolorsColor44    contained '\<44\>'
+  syn match dircolorsColor45    contained '\<45\>'
+  syn match dircolorsColor46    contained '\<46\>'
+  syn match dircolorsColor47    contained '\<47\>'
+  syn match dircolorsColor48    contained '\<48\>'
+  syn match dircolorsColor49    contained '\<49\>'
+  syn match dircolorsColor50    contained '\<50\>'
+  syn match dircolorsColor51    contained '\<51\>'
+  syn match dircolorsColor52    contained '\<52\>'
+  syn match dircolorsColor53    contained '\<53\>'
+  syn match dircolorsColor54    contained '\<54\>'
+  syn match dircolorsColor55    contained '\<55\>'
+  syn match dircolorsColor56    contained '\<56\>'
+  syn match dircolorsColor57    contained '\<57\>'
+  syn match dircolorsColor58    contained '\<58\>'
+  syn match dircolorsColor59    contained '\<59\>'
+  syn match dircolorsColor60    contained '\<60\>'
+  syn match dircolorsColor61    contained '\<61\>'
+  syn match dircolorsColor62    contained '\<62\>'
+  syn match dircolorsColor63    contained '\<63\>'
+  syn match dircolorsColor64    contained '\<64\>'
+  syn match dircolorsColor65    contained '\<65\>'
+  syn match dircolorsColor66    contained '\<66\>'
+  syn match dircolorsColor67    contained '\<67\>'
+  syn match dircolorsColor68    contained '\<68\>'
+  syn match dircolorsColor69    contained '\<69\>'
+  syn match dircolorsColor70    contained '\<70\>'
+  syn match dircolorsColor71    contained '\<71\>'
+  syn match dircolorsColor72    contained '\<72\>'
+  syn match dircolorsColor73    contained '\<73\>'
+  syn match dircolorsColor74    contained '\<74\>'
+  syn match dircolorsColor75    contained '\<75\>'
+  syn match dircolorsColor76    contained '\<76\>'
+  syn match dircolorsColor77    contained '\<77\>'
+  syn match dircolorsColor78    contained '\<78\>'
+  syn match dircolorsColor79    contained '\<79\>'
+  syn match dircolorsColor80    contained '\<80\>'
+  syn match dircolorsColor81    contained '\<81\>'
+  syn match dircolorsColor82    contained '\<82\>'
+  syn match dircolorsColor83    contained '\<83\>'
+  syn match dircolorsColor84    contained '\<84\>'
+  syn match dircolorsColor85    contained '\<85\>'
+  syn match dircolorsColor86    contained '\<86\>'
+  syn match dircolorsColor87    contained '\<87\>'
+  syn match dircolorsColor88    contained '\<88\>'
+  syn match dircolorsColor89    contained '\<89\>'
+  syn match dircolorsColor90    contained '\<90\>'
+  syn match dircolorsColor91    contained '\<91\>'
+  syn match dircolorsColor92    contained '\<92\>'
+  syn match dircolorsColor93    contained '\<93\>'
+  syn match dircolorsColor94    contained '\<94\>'
+  syn match dircolorsColor95    contained '\<95\>'
+  syn match dircolorsColor96    contained '\<96\>'
+  syn match dircolorsColor97    contained '\<97\>'
+  syn match dircolorsColor98    contained '\<98\>'
+  syn match dircolorsColor99    contained '\<99\>'
+  syn match dircolorsColor100   contained '\<100\>'
+  syn match dircolorsColor101   contained '\<101\>'
+  syn match dircolorsColor102   contained '\<102\>'
+  syn match dircolorsColor103   contained '\<103\>'
+  syn match dircolorsColor104   contained '\<104\>'
+  syn match dircolorsColor105   contained '\<105\>'
+  syn match dircolorsColor106   contained '\<106\>'
+  syn match dircolorsColor107   contained '\<107\>'
+  syn match dircolorsColor108   contained '\<108\>'
+  syn match dircolorsColor109   contained '\<109\>'
+  syn match dircolorsColor110   contained '\<110\>'
+  syn match dircolorsColor111   contained '\<111\>'
+  syn match dircolorsColor112   contained '\<112\>'
+  syn match dircolorsColor113   contained '\<113\>'
+  syn match dircolorsColor114   contained '\<114\>'
+  syn match dircolorsColor115   contained '\<115\>'
+  syn match dircolorsColor116   contained '\<116\>'
+  syn match dircolorsColor117   contained '\<117\>'
+  syn match dircolorsColor118   contained '\<118\>'
+  syn match dircolorsColor119   contained '\<119\>'
+  syn match dircolorsColor120   contained '\<120\>'
+  syn match dircolorsColor121   contained '\<121\>'
+  syn match dircolorsColor122   contained '\<122\>'
+  syn match dircolorsColor123   contained '\<123\>'
+  syn match dircolorsColor124   contained '\<124\>'
+  syn match dircolorsColor125   contained '\<125\>'
+  syn match dircolorsColor126   contained '\<126\>'
+  syn match dircolorsColor127   contained '\<127\>'
+  syn match dircolorsColor128   contained '\<128\>'
+  syn match dircolorsColor129   contained '\<129\>'
+  syn match dircolorsColor130   contained '\<130\>'
+  syn match dircolorsColor131   contained '\<131\>'
+  syn match dircolorsColor132   contained '\<132\>'
+  syn match dircolorsColor133   contained '\<133\>'
+  syn match dircolorsColor134   contained '\<134\>'
+  syn match dircolorsColor135   contained '\<135\>'
+  syn match dircolorsColor136   contained '\<136\>'
+  syn match dircolorsColor137   contained '\<137\>'
+  syn match dircolorsColor138   contained '\<138\>'
+  syn match dircolorsColor139   contained '\<139\>'
+  syn match dircolorsColor140   contained '\<140\>'
+  syn match dircolorsColor141   contained '\<141\>'
+  syn match dircolorsColor142   contained '\<142\>'
+  syn match dircolorsColor143   contained '\<143\>'
+  syn match dircolorsColor144   contained '\<144\>'
+  syn match dircolorsColor145   contained '\<145\>'
+  syn match dircolorsColor146   contained '\<146\>'
+  syn match dircolorsColor147   contained '\<147\>'
+  syn match dircolorsColor148   contained '\<148\>'
+  syn match dircolorsColor149   contained '\<149\>'
+  syn match dircolorsColor150   contained '\<150\>'
+  syn match dircolorsColor151   contained '\<151\>'
+  syn match dircolorsColor152   contained '\<152\>'
+  syn match dircolorsColor153   contained '\<153\>'
+  syn match dircolorsColor154   contained '\<154\>'
+  syn match dircolorsColor155   contained '\<155\>'
+  syn match dircolorsColor156   contained '\<156\>'
+  syn match dircolorsColor157   contained '\<157\>'
+  syn match dircolorsColor158   contained '\<158\>'
+  syn match dircolorsColor159   contained '\<159\>'
+  syn match dircolorsColor160   contained '\<160\>'
+  syn match dircolorsColor161   contained '\<161\>'
+  syn match dircolorsColor162   contained '\<162\>'
+  syn match dircolorsColor163   contained '\<163\>'
+  syn match dircolorsColor164   contained '\<164\>'
+  syn match dircolorsColor165   contained '\<165\>'
+  syn match dircolorsColor166   contained '\<166\>'
+  syn match dircolorsColor167   contained '\<167\>'
+  syn match dircolorsColor168   contained '\<168\>'
+  syn match dircolorsColor169   contained '\<169\>'
+  syn match dircolorsColor170   contained '\<170\>'
+  syn match dircolorsColor171   contained '\<171\>'
+  syn match dircolorsColor172   contained '\<172\>'
+  syn match dircolorsColor173   contained '\<173\>'
+  syn match dircolorsColor174   contained '\<174\>'
+  syn match dircolorsColor175   contained '\<175\>'
+  syn match dircolorsColor176   contained '\<176\>'
+  syn match dircolorsColor177   contained '\<177\>'
+  syn match dircolorsColor178   contained '\<178\>'
+  syn match dircolorsColor179   contained '\<179\>'
+  syn match dircolorsColor180   contained '\<180\>'
+  syn match dircolorsColor181   contained '\<181\>'
+  syn match dircolorsColor182   contained '\<182\>'
+  syn match dircolorsColor183   contained '\<183\>'
+  syn match dircolorsColor184   contained '\<184\>'
+  syn match dircolorsColor185   contained '\<185\>'
+  syn match dircolorsColor186   contained '\<186\>'
+  syn match dircolorsColor187   contained '\<187\>'
+  syn match dircolorsColor188   contained '\<188\>'
+  syn match dircolorsColor189   contained '\<189\>'
+  syn match dircolorsColor190   contained '\<190\>'
+  syn match dircolorsColor191   contained '\<191\>'
+  syn match dircolorsColor192   contained '\<192\>'
+  syn match dircolorsColor193   contained '\<193\>'
+  syn match dircolorsColor194   contained '\<194\>'
+  syn match dircolorsColor195   contained '\<195\>'
+  syn match dircolorsColor196   contained '\<196\>'
+  syn match dircolorsColor197   contained '\<197\>'
+  syn match dircolorsColor198   contained '\<198\>'
+  syn match dircolorsColor199   contained '\<199\>'
+  syn match dircolorsColor200   contained '\<200\>'
+  syn match dircolorsColor201   contained '\<201\>'
+  syn match dircolorsColor202   contained '\<202\>'
+  syn match dircolorsColor203   contained '\<203\>'
+  syn match dircolorsColor204   contained '\<204\>'
+  syn match dircolorsColor205   contained '\<205\>'
+  syn match dircolorsColor206   contained '\<206\>'
+  syn match dircolorsColor207   contained '\<207\>'
+  syn match dircolorsColor208   contained '\<208\>'
+  syn match dircolorsColor209   contained '\<209\>'
+  syn match dircolorsColor210   contained '\<210\>'
+  syn match dircolorsColor211   contained '\<211\>'
+  syn match dircolorsColor212   contained '\<212\>'
+  syn match dircolorsColor213   contained '\<213\>'
+  syn match dircolorsColor214   contained '\<214\>'
+  syn match dircolorsColor215   contained '\<215\>'
+  syn match dircolorsColor216   contained '\<216\>'
+  syn match dircolorsColor217   contained '\<217\>'
+  syn match dircolorsColor218   contained '\<218\>'
+  syn match dircolorsColor219   contained '\<219\>'
+  syn match dircolorsColor220   contained '\<220\>'
+  syn match dircolorsColor221   contained '\<221\>'
+  syn match dircolorsColor222   contained '\<222\>'
+  syn match dircolorsColor223   contained '\<223\>'
+  syn match dircolorsColor224   contained '\<224\>'
+  syn match dircolorsColor225   contained '\<225\>'
+  syn match dircolorsColor226   contained '\<226\>'
+  syn match dircolorsColor227   contained '\<227\>'
+  syn match dircolorsColor228   contained '\<228\>'
+  syn match dircolorsColor229   contained '\<229\>'
+  syn match dircolorsColor230   contained '\<230\>'
+  syn match dircolorsColor231   contained '\<231\>'
+  syn match dircolorsColor232   contained '\<232\>'
+  syn match dircolorsColor233   contained '\<233\>'
+  syn match dircolorsColor234   contained '\<234\>'
+  syn match dircolorsColor235   contained '\<235\>'
+  syn match dircolorsColor236   contained '\<236\>'
+  syn match dircolorsColor237   contained '\<237\>'
+  syn match dircolorsColor238   contained '\<238\>'
+  syn match dircolorsColor239   contained '\<239\>'
+  syn match dircolorsColor240   contained '\<240\>'
+  syn match dircolorsColor241   contained '\<241\>'
+  syn match dircolorsColor242   contained '\<242\>'
+  syn match dircolorsColor243   contained '\<243\>'
+  syn match dircolorsColor244   contained '\<244\>'
+  syn match dircolorsColor245   contained '\<245\>'
+  syn match dircolorsColor246   contained '\<246\>'
+  syn match dircolorsColor247   contained '\<247\>'
+  syn match dircolorsColor248   contained '\<248\>'
+  syn match dircolorsColor249   contained '\<249\>'
+  syn match dircolorsColor250   contained '\<250\>'
+  syn match dircolorsColor251   contained '\<251\>'
+  syn match dircolorsColor252   contained '\<252\>'
+  syn match dircolorsColor253   contained '\<253\>'
+  syn match dircolorsColor254   contained '\<254\>'
+  syn match dircolorsColor255   contained '\<255\>'
+else
+  syn cluster dircolorsColors   contains=dircolorsNumber
+  syn match   dircolorsNumber   '\<\d\+\>'
+endif
 
-  HiLink dircolorsTodo	Todo
-  HiLink dircolorsComment	Comment
-  HiLink dircolorsNumber	Number
-  HiLink dircolorsKeyword	Keyword
-  HiLink dircolorsExtension	Keyword
+hi def link dircolorsTodo       Todo
+hi def link dircolorsComment    Comment
+hi def link dircolorsKeyword    Keyword
+hi def link dircolorsExtension  Keyword
 
-  HiDef dircolors01		term=bold cterm=bold gui=bold
-  HiDef dircolors04		term=underline cterm=underline gui=underline
-  "    HiDef dircolors05
-  HiDef dircolors07		term=reverse cterm=reverse gui=reverse
-  HiLink dircolors08		Ignore
-  HiDef dircolors30		ctermfg=Black guifg=Black
-  HiDef dircolors31		ctermfg=Red guifg=Red
-  HiDef dircolors32		ctermfg=Green guifg=Green
-  HiDef dircolors33		ctermfg=Yellow guifg=Yellow
-  HiDef dircolors34		ctermfg=Blue guifg=Blue
-  HiDef dircolors35		ctermfg=Magenta guifg=Magenta
-  HiDef dircolors36		ctermfg=Cyan guifg=Cyan
-  HiDef dircolors37		ctermfg=White guifg=White
-  HiDef dircolors40		ctermbg=Black ctermfg=White guibg=Black guifg=White
-  HiDef dircolors41		ctermbg=DarkRed guibg=DarkRed
-  HiDef dircolors42		ctermbg=DarkGreen guibg=DarkGreen
-  HiDef dircolors43		ctermbg=DarkYellow guibg=DarkYellow
-  HiDef dircolors44		ctermbg=DarkBlue guibg=DarkBlue
-  HiDef dircolors45		ctermbg=DarkMagenta guibg=DarkMagenta
-  HiDef dircolors46		ctermbg=DarkCyan guibg=DarkCyan
-  HiDef dircolors47		ctermbg=White ctermfg=Black guibg=White guifg=Black
-
-  delcommand HiLink
-  delcommand HiDef
+if &t_Co == 8 || &t_Co == 16
+  hi def      dircolorsBold       term=bold cterm=bold gui=bold
+  hi def      dircolorsUnderline  term=underline cterm=underline gui=underline
+  hi def link dircolorsBlink      Normal
+  hi def      dircolorsReverse    term=reverse cterm=reverse gui=reverse
+  hi def link dircolorsInvisible  Ignore
+  hi def      dircolorsBlack      ctermfg=Black guifg=Black
+  hi def      dircolorsRed        ctermfg=Red guifg=Red
+  hi def      dircolorsGreen      ctermfg=Green guifg=Green
+  hi def      dircolorsYellow     ctermfg=Yellow guifg=Yellow
+  hi def      dircolorsBlue       ctermfg=Blue guifg=Blue
+  hi def      dircolorsMagenta    ctermfg=Magenta guifg=Magenta
+  hi def      dircolorsCyan       ctermfg=Cyan guifg=Cyan
+  hi def      dircolorsWhite      ctermfg=White guifg=White
+  hi def      dircolorsBGBlack    ctermbg=Black ctermfg=White
+                                  \ guibg=Black guifg=White
+  hi def      dircolorsBGRed      ctermbg=DarkRed guibg=DarkRed
+  hi def      dircolorsBGGreen    ctermbg=DarkGreen guibg=DarkGreen
+  hi def      dircolorsBGYellow   ctermbg=DarkYellow guibg=DarkYellow
+  hi def      dircolorsBGBlue     ctermbg=DarkBlue guibg=DarkBlue
+  hi def      dircolorsBGMagenta  ctermbg=DarkMagenta guibg=DarkMagenta
+  hi def      dircolorsBGCyan     ctermbg=DarkCyan guibg=DarkCyan
+  hi def      dircolorsBGWhite    ctermbg=White ctermfg=Black
+                                  \ guibg=White guifg=Black
+elseif &t_Co == 256
+  hi def    dircolorsColor1     ctermfg=1   guifg=1
+  hi def    dircolorsColor2     ctermfg=2   guifg=2
+  hi def    dircolorsColor3     ctermfg=3   guifg=3
+  hi def    dircolorsColor4     ctermfg=4   guifg=4
+  hi def    dircolorsColor5     ctermfg=5   guifg=5
+  hi def    dircolorsColor6     ctermfg=6   guifg=6
+  hi def    dircolorsColor7     ctermfg=7   guifg=7
+  hi def    dircolorsColor8     ctermfg=8   guifg=8
+  hi def    dircolorsColor9     ctermfg=9   guifg=9
+  hi def    dircolorsColor10    ctermfg=10  guifg=10
+  hi def    dircolorsColor11    ctermfg=11  guifg=11
+  hi def    dircolorsColor12    ctermfg=12  guifg=12
+  hi def    dircolorsColor13    ctermfg=13  guifg=13
+  hi def    dircolorsColor14    ctermfg=14  guifg=14
+  hi def    dircolorsColor15    ctermfg=15  guifg=15
+  hi def    dircolorsColor16    ctermfg=16  guifg=16
+  hi def    dircolorsColor17    ctermfg=17  guifg=17
+  hi def    dircolorsColor18    ctermfg=18  guifg=18
+  hi def    dircolorsColor19    ctermfg=19  guifg=19
+  hi def    dircolorsColor20    ctermfg=20  guifg=20
+  hi def    dircolorsColor21    ctermfg=21  guifg=21
+  hi def    dircolorsColor22    ctermfg=22  guifg=22
+  hi def    dircolorsColor23    ctermfg=23  guifg=23
+  hi def    dircolorsColor24    ctermfg=24  guifg=24
+  hi def    dircolorsColor25    ctermfg=25  guifg=25
+  hi def    dircolorsColor26    ctermfg=26  guifg=26
+  hi def    dircolorsColor27    ctermfg=27  guifg=27
+  hi def    dircolorsColor28    ctermfg=28  guifg=28
+  hi def    dircolorsColor29    ctermfg=29  guifg=29
+  hi def    dircolorsColor30    ctermfg=30  guifg=30
+  hi def    dircolorsColor31    ctermfg=31  guifg=31
+  hi def    dircolorsColor32    ctermfg=32  guifg=32
+  hi def    dircolorsColor33    ctermfg=33  guifg=33
+  hi def    dircolorsColor34    ctermfg=34  guifg=34
+  hi def    dircolorsColor35    ctermfg=35  guifg=35
+  hi def    dircolorsColor36    ctermfg=36  guifg=36
+  hi def    dircolorsColor37    ctermfg=37  guifg=37
+  hi def    dircolorsColor38    ctermfg=38  guifg=38
+  hi def    dircolorsColor39    ctermfg=39  guifg=39
+  hi def    dircolorsColor40    ctermfg=40  guifg=40
+  hi def    dircolorsColor41    ctermfg=41  guifg=41
+  hi def    dircolorsColor42    ctermfg=42  guifg=42
+  hi def    dircolorsColor43    ctermfg=43  guifg=43
+  hi def    dircolorsColor44    ctermfg=44  guifg=44
+  hi def    dircolorsColor45    ctermfg=45  guifg=45
+  hi def    dircolorsColor46    ctermfg=46  guifg=46
+  hi def    dircolorsColor47    ctermfg=47  guifg=47
+  hi def    dircolorsColor48    ctermfg=48  guifg=48
+  hi def    dircolorsColor49    ctermfg=49  guifg=49
+  hi def    dircolorsColor50    ctermfg=50  guifg=50
+  hi def    dircolorsColor51    ctermfg=51  guifg=51
+  hi def    dircolorsColor52    ctermfg=52  guifg=52
+  hi def    dircolorsColor53    ctermfg=53  guifg=53
+  hi def    dircolorsColor54    ctermfg=54  guifg=54
+  hi def    dircolorsColor55    ctermfg=55  guifg=55
+  hi def    dircolorsColor56    ctermfg=56  guifg=56
+  hi def    dircolorsColor57    ctermfg=57  guifg=57
+  hi def    dircolorsColor58    ctermfg=58  guifg=58
+  hi def    dircolorsColor59    ctermfg=59  guifg=59
+  hi def    dircolorsColor60    ctermfg=60  guifg=60
+  hi def    dircolorsColor61    ctermfg=61  guifg=61
+  hi def    dircolorsColor62    ctermfg=62  guifg=62
+  hi def    dircolorsColor63    ctermfg=63  guifg=63
+  hi def    dircolorsColor64    ctermfg=64  guifg=64
+  hi def    dircolorsColor65    ctermfg=65  guifg=65
+  hi def    dircolorsColor66    ctermfg=66  guifg=66
+  hi def    dircolorsColor67    ctermfg=67  guifg=67
+  hi def    dircolorsColor68    ctermfg=68  guifg=68
+  hi def    dircolorsColor69    ctermfg=69  guifg=69
+  hi def    dircolorsColor70    ctermfg=70  guifg=70
+  hi def    dircolorsColor71    ctermfg=71  guifg=71
+  hi def    dircolorsColor72    ctermfg=72  guifg=72
+  hi def    dircolorsColor73    ctermfg=73  guifg=73
+  hi def    dircolorsColor74    ctermfg=74  guifg=74
+  hi def    dircolorsColor75    ctermfg=75  guifg=75
+  hi def    dircolorsColor76    ctermfg=76  guifg=76
+  hi def    dircolorsColor77    ctermfg=77  guifg=77
+  hi def    dircolorsColor78    ctermfg=78  guifg=78
+  hi def    dircolorsColor79    ctermfg=79  guifg=79
+  hi def    dircolorsColor80    ctermfg=80  guifg=80
+  hi def    dircolorsColor81    ctermfg=81  guifg=81
+  hi def    dircolorsColor82    ctermfg=82  guifg=82
+  hi def    dircolorsColor83    ctermfg=83  guifg=83
+  hi def    dircolorsColor84    ctermfg=84  guifg=84
+  hi def    dircolorsColor85    ctermfg=85  guifg=85
+  hi def    dircolorsColor86    ctermfg=86  guifg=86
+  hi def    dircolorsColor87    ctermfg=87  guifg=87
+  hi def    dircolorsColor88    ctermfg=88  guifg=88
+  hi def    dircolorsColor89    ctermfg=89  guifg=89
+  hi def    dircolorsColor90    ctermfg=90  guifg=90
+  hi def    dircolorsColor91    ctermfg=91  guifg=91
+  hi def    dircolorsColor92    ctermfg=92  guifg=92
+  hi def    dircolorsColor93    ctermfg=93  guifg=93
+  hi def    dircolorsColor94    ctermfg=94  guifg=94
+  hi def    dircolorsColor95    ctermfg=95  guifg=95
+  hi def    dircolorsColor96    ctermfg=96  guifg=96
+  hi def    dircolorsColor97    ctermfg=97  guifg=97
+  hi def    dircolorsColor98    ctermfg=98  guifg=98
+  hi def    dircolorsColor99    ctermfg=99  guifg=99
+  hi def    dircolorsColor100   ctermfg=100 guifg=100
+  hi def    dircolorsColor101   ctermfg=101 guifg=101
+  hi def    dircolorsColor102   ctermfg=102 guifg=102
+  hi def    dircolorsColor103   ctermfg=103 guifg=103
+  hi def    dircolorsColor104   ctermfg=104 guifg=104
+  hi def    dircolorsColor105   ctermfg=105 guifg=105
+  hi def    dircolorsColor106   ctermfg=106 guifg=106
+  hi def    dircolorsColor107   ctermfg=107 guifg=107
+  hi def    dircolorsColor108   ctermfg=108 guifg=108
+  hi def    dircolorsColor109   ctermfg=109 guifg=109
+  hi def    dircolorsColor110   ctermfg=110 guifg=110
+  hi def    dircolorsColor111   ctermfg=111 guifg=111
+  hi def    dircolorsColor112   ctermfg=112 guifg=112
+  hi def    dircolorsColor113   ctermfg=113 guifg=113
+  hi def    dircolorsColor114   ctermfg=114 guifg=114
+  hi def    dircolorsColor115   ctermfg=115 guifg=115
+  hi def    dircolorsColor116   ctermfg=116 guifg=116
+  hi def    dircolorsColor117   ctermfg=117 guifg=117
+  hi def    dircolorsColor118   ctermfg=118 guifg=118
+  hi def    dircolorsColor119   ctermfg=119 guifg=119
+  hi def    dircolorsColor120   ctermfg=120 guifg=120
+  hi def    dircolorsColor121   ctermfg=121 guifg=121
+  hi def    dircolorsColor122   ctermfg=122 guifg=122
+  hi def    dircolorsColor123   ctermfg=123 guifg=123
+  hi def    dircolorsColor124   ctermfg=124 guifg=124
+  hi def    dircolorsColor125   ctermfg=125 guifg=125
+  hi def    dircolorsColor126   ctermfg=126 guifg=126
+  hi def    dircolorsColor127   ctermfg=127 guifg=127
+  hi def    dircolorsColor128   ctermfg=128 guifg=128
+  hi def    dircolorsColor129   ctermfg=129 guifg=129
+  hi def    dircolorsColor130   ctermfg=130 guifg=130
+  hi def    dircolorsColor131   ctermfg=131 guifg=131
+  hi def    dircolorsColor132   ctermfg=132 guifg=132
+  hi def    dircolorsColor133   ctermfg=133 guifg=133
+  hi def    dircolorsColor134   ctermfg=134 guifg=134
+  hi def    dircolorsColor135   ctermfg=135 guifg=135
+  hi def    dircolorsColor136   ctermfg=136 guifg=136
+  hi def    dircolorsColor137   ctermfg=137 guifg=137
+  hi def    dircolorsColor138   ctermfg=138 guifg=138
+  hi def    dircolorsColor139   ctermfg=139 guifg=139
+  hi def    dircolorsColor140   ctermfg=140 guifg=140
+  hi def    dircolorsColor141   ctermfg=141 guifg=141
+  hi def    dircolorsColor142   ctermfg=142 guifg=142
+  hi def    dircolorsColor143   ctermfg=143 guifg=143
+  hi def    dircolorsColor144   ctermfg=144 guifg=144
+  hi def    dircolorsColor145   ctermfg=145 guifg=145
+  hi def    dircolorsColor146   ctermfg=146 guifg=146
+  hi def    dircolorsColor147   ctermfg=147 guifg=147
+  hi def    dircolorsColor148   ctermfg=148 guifg=148
+  hi def    dircolorsColor149   ctermfg=149 guifg=149
+  hi def    dircolorsColor150   ctermfg=150 guifg=150
+  hi def    dircolorsColor151   ctermfg=151 guifg=151
+  hi def    dircolorsColor152   ctermfg=152 guifg=152
+  hi def    dircolorsColor153   ctermfg=153 guifg=153
+  hi def    dircolorsColor154   ctermfg=154 guifg=154
+  hi def    dircolorsColor155   ctermfg=155 guifg=155
+  hi def    dircolorsColor156   ctermfg=156 guifg=156
+  hi def    dircolorsColor157   ctermfg=157 guifg=157
+  hi def    dircolorsColor158   ctermfg=158 guifg=158
+  hi def    dircolorsColor159   ctermfg=159 guifg=159
+  hi def    dircolorsColor160   ctermfg=160 guifg=160
+  hi def    dircolorsColor161   ctermfg=161 guifg=161
+  hi def    dircolorsColor162   ctermfg=162 guifg=162
+  hi def    dircolorsColor163   ctermfg=163 guifg=163
+  hi def    dircolorsColor164   ctermfg=164 guifg=164
+  hi def    dircolorsColor165   ctermfg=165 guifg=165
+  hi def    dircolorsColor166   ctermfg=166 guifg=166
+  hi def    dircolorsColor167   ctermfg=167 guifg=167
+  hi def    dircolorsColor168   ctermfg=168 guifg=168
+  hi def    dircolorsColor169   ctermfg=169 guifg=169
+  hi def    dircolorsColor170   ctermfg=170 guifg=170
+  hi def    dircolorsColor171   ctermfg=171 guifg=171
+  hi def    dircolorsColor172   ctermfg=172 guifg=172
+  hi def    dircolorsColor173   ctermfg=173 guifg=173
+  hi def    dircolorsColor174   ctermfg=174 guifg=174
+  hi def    dircolorsColor175   ctermfg=175 guifg=175
+  hi def    dircolorsColor176   ctermfg=176 guifg=176
+  hi def    dircolorsColor177   ctermfg=177 guifg=177
+  hi def    dircolorsColor178   ctermfg=178 guifg=178
+  hi def    dircolorsColor179   ctermfg=179 guifg=179
+  hi def    dircolorsColor180   ctermfg=180 guifg=180
+  hi def    dircolorsColor181   ctermfg=181 guifg=181
+  hi def    dircolorsColor182   ctermfg=182 guifg=182
+  hi def    dircolorsColor183   ctermfg=183 guifg=183
+  hi def    dircolorsColor184   ctermfg=184 guifg=184
+  hi def    dircolorsColor185   ctermfg=185 guifg=185
+  hi def    dircolorsColor186   ctermfg=186 guifg=186
+  hi def    dircolorsColor187   ctermfg=187 guifg=187
+  hi def    dircolorsColor188   ctermfg=188 guifg=188
+  hi def    dircolorsColor189   ctermfg=189 guifg=189
+  hi def    dircolorsColor190   ctermfg=190 guifg=190
+  hi def    dircolorsColor191   ctermfg=191 guifg=191
+  hi def    dircolorsColor192   ctermfg=192 guifg=192
+  hi def    dircolorsColor193   ctermfg=193 guifg=193
+  hi def    dircolorsColor194   ctermfg=194 guifg=194
+  hi def    dircolorsColor195   ctermfg=195 guifg=195
+  hi def    dircolorsColor196   ctermfg=196 guifg=196
+  hi def    dircolorsColor197   ctermfg=197 guifg=197
+  hi def    dircolorsColor198   ctermfg=198 guifg=198
+  hi def    dircolorsColor199   ctermfg=199 guifg=199
+  hi def    dircolorsColor200   ctermfg=200 guifg=200
+  hi def    dircolorsColor201   ctermfg=201 guifg=201
+  hi def    dircolorsColor202   ctermfg=202 guifg=202
+  hi def    dircolorsColor203   ctermfg=203 guifg=203
+  hi def    dircolorsColor204   ctermfg=204 guifg=204
+  hi def    dircolorsColor205   ctermfg=205 guifg=205
+  hi def    dircolorsColor206   ctermfg=206 guifg=206
+  hi def    dircolorsColor207   ctermfg=207 guifg=207
+  hi def    dircolorsColor208   ctermfg=208 guifg=208
+  hi def    dircolorsColor209   ctermfg=209 guifg=209
+  hi def    dircolorsColor210   ctermfg=210 guifg=210
+  hi def    dircolorsColor211   ctermfg=211 guifg=211
+  hi def    dircolorsColor212   ctermfg=212 guifg=212
+  hi def    dircolorsColor213   ctermfg=213 guifg=213
+  hi def    dircolorsColor214   ctermfg=214 guifg=214
+  hi def    dircolorsColor215   ctermfg=215 guifg=215
+  hi def    dircolorsColor216   ctermfg=216 guifg=216
+  hi def    dircolorsColor217   ctermfg=217 guifg=217
+  hi def    dircolorsColor218   ctermfg=218 guifg=218
+  hi def    dircolorsColor219   ctermfg=219 guifg=219
+  hi def    dircolorsColor220   ctermfg=220 guifg=220
+  hi def    dircolorsColor221   ctermfg=221 guifg=221
+  hi def    dircolorsColor222   ctermfg=222 guifg=222
+  hi def    dircolorsColor223   ctermfg=223 guifg=223
+  hi def    dircolorsColor224   ctermfg=224 guifg=224
+  hi def    dircolorsColor225   ctermfg=225 guifg=225
+  hi def    dircolorsColor226   ctermfg=226 guifg=226
+  hi def    dircolorsColor227   ctermfg=227 guifg=227
+  hi def    dircolorsColor228   ctermfg=228 guifg=228
+  hi def    dircolorsColor229   ctermfg=229 guifg=229
+  hi def    dircolorsColor230   ctermfg=230 guifg=230
+  hi def    dircolorsColor231   ctermfg=231 guifg=231
+  hi def    dircolorsColor232   ctermfg=232 guifg=232
+  hi def    dircolorsColor233   ctermfg=233 guifg=233
+  hi def    dircolorsColor234   ctermfg=234 guifg=234
+  hi def    dircolorsColor235   ctermfg=235 guifg=235
+  hi def    dircolorsColor236   ctermfg=236 guifg=236
+  hi def    dircolorsColor237   ctermfg=237 guifg=237
+  hi def    dircolorsColor238   ctermfg=238 guifg=238
+  hi def    dircolorsColor239   ctermfg=239 guifg=239
+  hi def    dircolorsColor240   ctermfg=240 guifg=240
+  hi def    dircolorsColor241   ctermfg=241 guifg=241
+  hi def    dircolorsColor242   ctermfg=242 guifg=242
+  hi def    dircolorsColor243   ctermfg=243 guifg=243
+  hi def    dircolorsColor244   ctermfg=244 guifg=244
+  hi def    dircolorsColor245   ctermfg=245 guifg=245
+  hi def    dircolorsColor246   ctermfg=246 guifg=246
+  hi def    dircolorsColor247   ctermfg=247 guifg=247
+  hi def    dircolorsColor248   ctermfg=248 guifg=248
+  hi def    dircolorsColor249   ctermfg=249 guifg=249
+  hi def    dircolorsColor250   ctermfg=250 guifg=250
+  hi def    dircolorsColor251   ctermfg=251 guifg=251
+  hi def    dircolorsColor252   ctermfg=252 guifg=252
+  hi def    dircolorsColor253   ctermfg=253 guifg=253
+  hi def    dircolorsColor254   ctermfg=254 guifg=254
+  hi def    dircolorsColor255   ctermfg=255 guifg=255
+else
+  hi def link dircolorsNumber     Number
 endif
 
 let b:current_syntax = "dircolors"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/elinks.vim
+++ b/runtime/syntax/elinks.vim
@@ -1,54 +1,40 @@
 " Vim syntax file
-" Language:	    elinks(1) configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/
-" Latest Revision:  2004-05-22
-" arch-tag:	    74eaff55-cdb5-4d31-805b-9627eb6535f1
+" Language:         elinks(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk @,48-57,_,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-
 
-" Todo
-syn keyword elinksTodo	    contained TODO FIXME XXX NOTE
+syn keyword elinksTodo      contained TODO FIXME XXX NOTE
 
-" Comments
-syn region  elinksComment   matchgroup=elinksComment start='#' end='$' contains=elinksTodo
+syn region  elinksComment   matchgroup=elinksComment start='#' end='$'
+                            \ contains=elinksTodo
 
-" Numbers
 syn match   elinksNumber    '\<\d\+\>'
 
-" Strings
-syn region  elinksString    matchgroup=elinksString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@elinksColor
+syn region  elinksString    matchgroup=elinksString start=+"+
+                            \ skip=+\\\\\|\\"+ end=+"+ contains=@elinksColor
 
-" Keywords
 syn keyword elinksKeyword   set bind
 
-" Options
 syn keyword elinksPrefix    bookmarks
 syn keyword elinksOptions   file_format
 
 syn keyword elinksPrefix    config
 syn keyword elinksOptions   comments indentation saving_style i18n
-syn keyword elinksOptions   saving_style_w show_template
+                            \ saving_style_w show_template
 
 syn keyword elinksPrefix    connection ssl client_cert
 syn keyword elinksOptions   enable file cert_verify async_dns max_connections
-syn keyword elinksOptions   max_connections_to_host receive_timeout retries
-syn keyword elinksOptions   unrestartable_receive_timeout
+                            \ max_connections_to_host receive_timeout retries
+                            \ unrestartable_receive_timeout
 
 syn keyword elinksPrefix    cookies
 syn keyword elinksOptions   accept_policy max_age paranoid_security save resave
@@ -58,150 +44,145 @@ syn keyword elinksPrefix    active_link 
 syn keyword elinksPrefix    format memory download dump history global html
 syn keyword elinksPrefix    plain
 syn keyword elinksOptions   auto_follow priority auto_submit confirm_submit
-syn keyword elinksOptions   input_size show_formhist file_tags
-syn keyword elinksOptions   image_link_tagging image_link_prefix
-syn keyword elinksOptions   image_link_suffix show_as_links show_any_as_links
-syn keyword elinksOptions   background text enable_color bold invert underline
-syn keyword elinksOptions   color_dirs numbering use_tabindex
-syn keyword elinksOptions   number_keys_select_link wraparound case regex
-syn keyword elinksOptions   show_hit_top_bottom wraparound show_not_found
-syn keyword elinksOptions   margin_width refresh minimum_refresh_time
-syn keyword elinksOptions   scroll_margin scroll_step table_move_order size
-syn keyword elinksOptions   size cache_redirects ignore_cache_control assume
-syn keyword elinksOptions   force_assumed text background link vlink dirs
-syn keyword elinksOptions   allow_dark_on_black ensure_contrast
-syn keyword elinksOptions   use_document_colors directory set_original_time
-syn keyword elinksOptions   overwrite notify_bell codepage width enable
-syn keyword elinksOptions   max_items display_type write_interval
-syn keyword elinksOptions   keep_unhistory display_frames display_tables
-syn keyword elinksOptions   expand_table_columns display_subs display_sups
-syn keyword elinksOptions   link_display underline_links wrap_nbsp
-syn keyword elinksOptions   display_links compress_empty_lines
+                            \ input_size show_formhist file_tags
+                            \ image_link_tagging image_link_prefix
+                            \ image_link_suffix show_as_links
+                            \ show_any_as_links background text enable_color
+                            \ bold invert underline color_dirs numbering
+                            \ use_tabindex number_keys_select_link
+                            \ wraparound case regex show_hit_top_bottom
+                            \ wraparound show_not_found margin_width refresh
+                            \ minimum_refresh_time scroll_margin scroll_step
+                            \ table_move_order size size cache_redirects
+                            \ ignore_cache_control assume force_assumed text
+                            \ background link vlink dirs allow_dark_on_black
+                            \ ensure_contrast use_document_colors directory
+                            \ set_original_time overwrite notify_bell
+                            \ codepage width enable max_items display_type
+                            \ write_interval keep_unhistory display_frames
+                            \ display_tables expand_table_columns display_subs
+                            \ display_sups link_display underline_links
+                            \ wrap_nbsp display_links compress_empty_lines
 
 syn keyword elinksPrefix    mime extension handler mailcap mimetypes type
 syn keyword elinksOptions   ask block program enable path ask description
-syn keyword elinksOptions   prioritize enable path default_type
+                            \ prioritize enable path default_type
 
 syn keyword elinksPrefix    protocol file cgi ftp proxy http bugs proxy
 syn keyword elinksPrefix    referer https proxy rewrite dumb smart
 syn keyword elinksOptions   path policy allow_special_files show_hidden_files
-syn keyword elinksOptions   try_encoding_extensions host anon_passwd use_pasv
-syn keyword elinksOptions   use_epsv accept_charset allow_blacklist
-syn keyword elinksOptions   broken_302_redirect post_no_keepalive http10 host
-syn keyword elinksOptions   user passwd policy fake accept_language
-syn keyword elinksOptions   accept_ui_language trace user_agent host
-syn keyword elinksOptions   enable-dumb enable-smart
+                            \ try_encoding_extensions host anon_passwd
+                            \ use_pasv use_epsv accept_charset allow_blacklist
+                            \ broken_302_redirect post_no_keepalive http10
+                            \ host user passwd policy fake accept_language
+                            \ accept_ui_language trace user_agent host
+                            \ enable-dumb enable-smart
 
 syn keyword elinksPrefix    terminal
 syn keyword elinksOptions   type m11_hack utf_8_io restrict_852 block_cursor
-syn keyword elinksOptions   colors transparency underline charset
+                            \ colors transparency underline charset
 
 syn keyword elinksPrefix    ui colors color mainmenu normal selected hotkey
-syn keyword elinksPrefix    menu marked hotkey frame dialog generic frame
-syn keyword elinksPrefix    scrollbar scrollbar-selected title text checkbox
-syn keyword elinksPrefix    checkbox-label button button-selected field
-syn keyword elinksPrefix    field-text meter shadow title title-bar title-text
-syn keyword elinksPrefix    status status-bar status-text tabs unvisited normal
-syn keyword elinksPrefix    loading separator searched mono
+                            \ menu marked hotkey frame dialog generic
+                            \ frame scrollbar scrollbar-selected title text
+                            \ checkbox checkbox-label button button-selected
+                            \ field field-text meter shadow title title-bar
+                            \ title-text status status-bar status-text tabs
+                            \ unvisited normal loading separator searched mono
 syn keyword elinksOptions   text background
 
 syn keyword elinksPrefix    ui dialogs leds sessions tabs timer
 syn keyword elinksOptions   listbox_min_height shadows underline_hotkeys enable
-syn keyword elinksOptions   auto_save auto_restore auto_save_foldername
-syn keyword elinksOptions   homepage show_bar wraparound confirm_close enable
-syn keyword elinksOptions   duration action language show_status_bar
-syn keyword elinksOptions   show_title_bar startup_goto_dialog success_msgbox
-syn keyword elinksOptions   window_title
+                            \ auto_save auto_restore auto_save_foldername
+                            \ homepage show_bar wraparound confirm_close
+                            \ enable duration action language show_status_bar
+                            \ show_title_bar startup_goto_dialog
+                            \ success_msgbox window_title
 
 syn keyword elinksOptions   secure_file_saving
 
-" Colors
-syn cluster elinksColor contains=elinksColorBlack,elinksColorDarkRed,elinksColorDarkGreen,elinksColorDarkYellow,elinksColorDarkBlue,elinksColorDarkMagenta,elinksColorDarkCyan,elinksColorGray,elinksColorDarkGray,elinksColorRed,elinksColorGreen,elinksColorYellow,elinksColorBlue,elinksColorMagenta,elinksColorCyan,elinksColorWhite
-
-syn keyword elinksColorBlack	    black contained
-syn keyword elinksColorDarkRed	    darkred sandybrown maroon crimson firebrick contained
-syn keyword elinksColorDarkGreen    darkgreen darkolivegreen darkseagreen contained
-syn keyword elinksColorDarkGreen    forestgreen mediumspringgreen seagreen contained
-syn keyword elinksColorDarkYellow   brown blanchedalmond chocolate darkorange contained
-syn keyword elinksColorDarkYellow   darkgoldenrod orange rosybrown saddlebrown contained
-syn keyword elinksColorDarkYellow   peru olive olivedrab sienna contained
-syn keyword elinksColorDarkBlue	    darkblue cadetblue cornflowerblue contained
-syn keyword elinksColorDarkBlue	    darkslateblue deepskyblue midnightblue contained
-syn keyword elinksColorDarkBlue	    royalblue steelblue navy contained
-syn keyword elinksColorDarkMagenta  darkmagenta mediumorchid mediumpurple contained
-syn keyword elinksColorDarkMagenta  mediumslateblue slateblue deeppink hotpink contained
-syn keyword elinksColorDarkMagenta  darkorchid orchid purple indigo contained
-syn keyword elinksColorDarkCyan	    darkcyan mediumaquamarine mediumturquoise contained
-syn keyword elinksColorDarkCyan	    darkturquoise teal contained
-syn keyword elinksColorGray	    silver dimgray lightslategray slategray contained
-syn keyword elinksColorGray	    lightgrey burlywood plum tan thistle contained
+syn cluster elinksColor     contains=elinksColorBlack,elinksColorDarkRed,
+                            \ elinksColorDarkGreen,elinksColorDarkYellow,
+                            \ elinksColorDarkBlue,elinksColorDarkMagenta,
+                            \ elinksColorDarkCyan,elinksColorGray,
+                            \ elinksColorDarkGray,elinksColorRed,
+                            \ elinksColorGreen,elinksColorYellow,
+                            \ elinksColorBlue,elinksColorMagenta,
+                            \ elinksColorCyan,elinksColorWhite
 
-syn keyword elinksColorDarkGray	    gray darkgray darkslategray darksalmon contained
-syn keyword elinksColorRed	    red indianred orangered tomato lightsalmon contained
-syn keyword elinksColorRed	    salmon coral lightcoral contained
-syn keyword elinksColorGreen	    green greenyellow lawngreen lightgreen contained
-syn keyword elinksColorGreen	    lightseagreen limegreen mediumseagreen contained
-syn keyword elinksColorGreen	    springgreen yellowgreen palegreen lime contained
-syn keyword elinksColorGreen	    chartreuse contained
-syn keyword elinksColorYellow	    yellow beige darkkhaki lightgoldenrodyellow contained
-syn keyword elinksColorYellow	    palegoldenrod gold goldenrod khaki contained
-syn keyword elinksColorYellow	    lightyellow contained
-syn keyword elinksColorBlue	    blue aliceblue aqua aquamarine azure contained
-syn keyword elinksColorBlue	    dodgerblue lightblue lightskyblue contained
-syn keyword elinksColorBlue	    lightsteelblue mediumblue contained
-syn keyword elinksColorMagenta	    magenta darkviolet blueviolet lightpink contained
-syn keyword elinksColorMagenta	    mediumvioletred palevioletred violet pink contained
-syn keyword elinksColorMagenta	    fuchsia contained
-syn keyword elinksColorCyan	    cyan lightcyan powderblue skyblue turquoise contained
-syn keyword elinksColorCyan	    paleturquoise contained
-syn keyword elinksColorWhite	    white antiquewhite floralwhite ghostwhite contained
-syn keyword elinksColorWhite	    navajowhite whitesmoke linen lemonchiffon contained
-syn keyword elinksColorWhite	    cornsilk lavender lavenderblush seashell contained
-syn keyword elinksColorWhite	    mistyrose ivory papayawhip bisque gainsboro contained
-syn keyword elinksColorWhite	    honeydew mintcream moccasin oldlace contained
-syn keyword elinksColorWhite	    peachpuff snow wheat contained
+syn keyword elinksColorBlack        contained black
+syn keyword elinksColorDarkRed      contained darkred sandybrown maroon crimson
+                                    \ firebrick
+syn keyword elinksColorDarkGreen    contained darkgreen darkolivegreen
+                                    \ darkseagreen forestgreen
+                                    \ mediumspringgreen seagreen
+syn keyword elinksColorDarkYellow   contained brown blanchedalmond chocolate
+                                    \ darkorange darkgoldenrod orange rosybrown
+                                    \ saddlebrown peru olive olivedrab sienna
+syn keyword elinksColorDarkBlue     contained darkblue cadetblue cornflowerblue
+                                    \ darkslateblue deepskyblue midnightblue
+                                    \ royalblue steelblue navy
+syn keyword elinksColorDarkMagenta  contained darkmagenta mediumorchid
+                                    \ mediumpurple mediumslateblue slateblue
+                                    \ deeppink hotpink darkorchid orchid purple
+                                    \ indigo
+syn keyword elinksColorDarkCyan     contained darkcyan mediumaquamarine
+                                    \ mediumturquoise darkturquoise teal
+syn keyword elinksColorGray         contained silver dimgray lightslategray
+                                    \ slategray lightgrey burlywood plum tan
+                                    \ thistle
+syn keyword elinksColorDarkGray     contained gray darkgray darkslategray
+                                    \ darksalmon
+syn keyword elinksColorRed          contained red indianred orangered tomato
+                                    \ lightsalmon salmon coral lightcoral
+syn keyword elinksColorGreen        contained green greenyellow lawngreen
+                                    \ lightgreen lightseagreen limegreen
+                                    \ mediumseagreen springgreen yellowgreen
+                                    \ palegreen lime chartreuse
+syn keyword elinksColorYellow       contained yellow beige darkkhaki
+                                    \ lightgoldenrodyellow palegoldenrod gold
+                                    \ goldenrod khaki lightyellow
+syn keyword elinksColorBlue         contained blue aliceblue aqua aquamarine
+                                    \ azure dodgerblue lightblue lightskyblue
+                                    \ lightsteelblue mediumblue
+syn keyword elinksColorMagenta      contained magenta darkviolet blueviolet
+                                    \ lightpink mediumvioletred palevioletred
+                                    \ violet pink fuchsia
+syn keyword elinksColorCyan         contained cyan lightcyan powderblue skyblue
+                                    \ turquoise paleturquoise
+syn keyword elinksColorWhite        contained white antiquewhite floralwhite
+                                    \ ghostwhite navajowhite whitesmoke linen
+                                    \ lemonchiffon cornsilk lavender
+                                    \ lavenderblush seashell mistyrose ivory
+                                    \ papayawhip bisque gainsboro honeydew
+                                    \ mintcream moccasin oldlace peachpuff snow
+                                    \ wheat
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_elinks_syn_inits")
-  if version < 508
-    let did_elinks_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-    command -nargs=+ HiDef hi <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-    command -nargs=+ HiDef hi def <args>
-  endif
-
-  HiLink elinksTodo		Todo
-  HiLink elinksComment		Comment
-  HiLink elinksNumber		Number
-  HiLink elinksString		String
-  HiLink elinksKeyword		Keyword
-  HiLink elinksPrefix		Identifier
-  HiLink elinksOptions		Identifier
-  HiDef  elinksColorBlack	ctermfg=Black	    guifg=Black
-  HiDef  elinksColorDarkRed	ctermfg=DarkRed	    guifg=DarkRed
-  HiDef  elinksColorDarkGreen	ctermfg=DarkGreen   guifg=DarkGreen
-  HiDef  elinksColorDarkYellow	ctermfg=DarkYellow  guifg=DarkYellow
-  HiDef  elinksColorDarkBlue	ctermfg=DarkBlue    guifg=DarkBlue
-  HiDef  elinksColorDarkMagenta	ctermfg=DarkMagenta guifg=DarkMagenta
-  HiDef  elinksColorDarkCyan	ctermfg=DarkCyan    guifg=DarkCyan
-  HiDef  elinksColorGray	ctermfg=Gray	    guifg=Gray
-  HiDef  elinksColorDarkGray	ctermfg=DarkGray    guifg=DarkGray
-  HiDef  elinksColorRed		ctermfg=Red	    guifg=Red
-  HiDef  elinksColorGreen	ctermfg=Green	    guifg=Green
-  HiDef  elinksColorYellow	ctermfg=Yellow	    guifg=Yellow
-  HiDef  elinksColorBlue	ctermfg=Blue	    guifg=Blue
-  HiDef  elinksColorMagenta	ctermfg=Magenta	    guifg=Magenta
-  HiDef  elinksColorCyan	ctermfg=Cyan	    guifg=Cyan
-  HiDef  elinksColorWhite	ctermfg=White	    guifg=White
-
-  delcommand HiLink
-  delcommand HiDef
-endif
+hi def link elinksTodo              Todo
+hi def link elinksComment           Comment
+hi def link elinksNumber            Number
+hi def link elinksString            String
+hi def link elinksKeyword           Keyword
+hi def link elinksPrefix            Identifier
+hi def link elinksOptions           Identifier
+hi def      elinksColorBlack        ctermfg=Black       guifg=Black
+hi def      elinksColorDarkRed      ctermfg=DarkRed     guifg=DarkRed
+hi def      elinksColorDarkGreen    ctermfg=DarkGreen   guifg=DarkGreen
+hi def      elinksColorDarkYellow   ctermfg=DarkYellow  guifg=DarkYellow
+hi def      elinksColorDarkBlue     ctermfg=DarkBlue    guifg=DarkBlue
+hi def      elinksColorDarkMagenta  ctermfg=DarkMagenta guifg=DarkMagenta
+hi def      elinksColorDarkCyan     ctermfg=DarkCyan    guifg=DarkCyan
+hi def      elinksColorGray         ctermfg=Gray        guifg=Gray
+hi def      elinksColorDarkGray     ctermfg=DarkGray    guifg=DarkGray
+hi def      elinksColorRed          ctermfg=Red         guifg=Red
+hi def      elinksColorGreen        ctermfg=Green       guifg=Green
+hi def      elinksColorYellow       ctermfg=Yellow      guifg=Yellow
+hi def      elinksColorBlue         ctermfg=Blue        guifg=Blue
+hi def      elinksColorMagenta      ctermfg=Magenta     guifg=Magenta
+hi def      elinksColorCyan         ctermfg=Cyan        guifg=Cyan
+hi def      elinksColorWhite        ctermfg=White       guifg=White
 
 let b:current_syntax = "elinks"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/eterm.vim
+++ b/runtime/syntax/eterm.vim
@@ -1,200 +1,428 @@
 " Vim syntax file
-" Language:	    Eterm configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/eterm/
-" Latest Revision:  2004-05-06
-" arch-tag:	    f4c58caf-2b91-4fc4-96af-e3cad7c70e6b
+" Language:         eterm(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" magic number
-syn match   etermMagic		display "^<Eterm-[0-9.]\+>$"
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword etermTodo             contained TODO FIXME XXX NOTE
+
+syn region  etermComment          matchgroup=etermComment start='^#' end='$'
+                                  \ contains=etermTodo,@Spell
+
+syn match   etermMagic            display display '^<Eterm-[0-9.]\+>$'
 
-" comments
-syn region  etermComment	matchgroup=etermComment start="^#" end="$" contains=etermTodo
+syn match   etermNumber           contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+
+syn region  etermString           contained display oneline start=+"+
+                                  \ skip=+\\"+ end=+"+
+
+syn keyword etermBoolean          contained on off true false yes no
+
+syn keyword etermPreProc          contained appname exec get put random version
+                                  \ include preproc
 
-" todo
-syn keyword etermTodo		contained TODO FIXME XXX NOTE
+syn keyword etermFunctions        contained copy exit kill nop paste save
+                                  \ scroll search spawn
+
+syn cluster etermGeneral          contains=etermComment,etermFunction,
+                                  \ etermPreProc
 
-" numbers
-syn match   etermNumber		contained display "\<\(\d\+\|0x\x\{1,2}\)\>"
+syn keyword etermKeyMod           contained ctrl shift lock mod1 mod2 mod3 mod4
+                                  \ mod5 alt meta anymod
+syn keyword etermKeyMod           contained button1 button2 button3 button4
+                                  \ button5
+
+syn keyword etermColorOptions     contained video nextgroup=etermVideoOptions
+                                  \ skipwhite
+
+syn keyword etermVideoType        contained normal reverse
+
+syn keyword etermColorOptions     contained foreground background cursor
+                                  \ cursor_text pointer
+                                  \ nextgroup=etermColorType skipwhite
 
-" strings
-syn region  etermString		contained display oneline start=+"+ skip=+\\"+ end=+"+
+syn keyword etermColorType        contained bd ul
+syn match   etermColorType        contained display '\<\%(\d\|1[0-5]\)'
+
+syn keyword etermColorOptions     contained color
+                                  \ nextgroup=etermColorNumber skipwhite
 
-" booleans
-syn keyword etermBoolean	contained on off true false yes no
+syn keyword etermColorNumber      contained bd ul nextgroup=etermColorSpec
+                                  \ skipwhite
+syn match   etermColorNumber      contained display '\<\%(\d\|1[0-5]\)'
+                                  \ nextgroup=etermColorSpec skipwhite
+
+syn match   etermColorSpec        contained display '\S\+'
+
+syn region  etermColorContext     fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+color'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermColorOptions
+
+syn keyword etermAttrOptions      contained geometry nextgroup=etermGeometry
+                                  \ skipwhite
 
-" colors (not pretty, but can't figure out better way...)
-syn match   etermColor		contained display "\s\+#\x\{6}\>"
-syn keyword etermColor		contained white black
+syn match   etermGeometry         contained display '\d\+x\d++\d\++\d\+'
+
+syn keyword etermAttrOptions      contained scrollbar_type
+                                  \ nextgroup=etermScrollbarType skipwhite
+
+syn keyword etermScrollbarType    contained motif xterm next
+
+syn keyword etermAttrOptions      contained font nextgroup=etermFontType
+                                  \ skipwhite
 
-" preproc
-syn match   etermPreProc	contained "%\(appname\|exec\|get\|put\|random\|version\|include\|preproc\)("he=e-1
+syn keyword etermFontType         contained bold nextgroup=etermFont skipwhite
+syn match   etermFontType         contained display '[0-5]' nextgroup=etermFont
+                                  \ skipwhite
+
+syn match   etermFont             contained display '\S\+'
+
+syn keyword etermFontType         contained default nextgroup=etermNumber
+                                  \ skipwhite
+
+syn keyword etermFontType         contained proportional nextgroup=etermBoolean
+                                  \ skipwhite
+
+syn keyword etermFontType         contained fx nextgroup=etermString skipwhite
 
-" functions
-syn match   etermFunctions	contained "\<\(copy\|exit\|kill\|nop\|paste\|save\|scroll\|search\|spawn\)("
+syn keyword etermAttrOptions      contained title name iconname
+                                  \ nextgroup=etermString skipwhite
+
+syn keyword etermAttrOptions      contained scrollbar_width desktop
+                                  \ nextgroup=etermNumber skipwhite
+
+syn region  etermAttrContext      fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+attributes\'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermAttrOptions
+
+syn keyword etermIClassOptions    contained icon path nextgroup=etermString
+                                  \ skipwhite
+syn keyword etermIClassOptions    contained cache nextgroup=etermNumber
+                                  \ skipwhite
+syn keyword etermIClassOptions    contained anim nextgroup=etermNumber
+                                  \ skipwhite
 
-" and make it easy to refer to the above...
-syn cluster etermGeneral	contains=etermComment,etermNumber,etermString,etermBoolean,etermColor,etermFunction,etermPreProc
+syn region  etermIClassContext    fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+imageclasses'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermImageContext,
+                                  \ etermIClassOptions
+
+syn keyword etermImageOptions     contained type nextgroup=etermImageType
+                                  \ skipwhite
 
-" key modifiers
-syn keyword etermKeyMod		contained ctrl shift lock mod1 mod2 mod3 mod4 mod5 alt meta anymod
-syn keyword etermKeyMod		contained button1 button2 button3 button4 button5
+syn keyword etermImageTypes       contained background trough anchor up_arrow
+                                  \ left_arrow right_arrow menu menuitem
+                                  \ submenu button buttonbar down_arrow
+
+syn keyword etermImageOptions     contained mode nextgroup=etermImageModes
+                                  \ skipwhite
+
+syn keyword etermImageModes       contained image trans viewport auto solid
+                                  \ nextgroup=etermImageModesAllow skipwhite
+syn keyword etermImageModesAllow  contained allow nextgroup=etermImageModesR
+                                  \ skipwhite
+syn keyword etermImageModesR      contained image trans viewport auto solid
+
+syn keyword etermImageOptions     contained state nextgroup=etermImageState
+                                  \ skipwhite
 
-" color context
-syn region  etermColorOptions	contained oneline matchgroup=etermOption start="^\s*video\>" matchgroup=etermType end="\<\(normal\|reverse\)\>"
-syn region  etermColorOptions	contained oneline matchgroup=etermOption start="^\s*color\>" matchgroup=etermType end="\<\(bd\|ul\|[0-9]\|1[0-5]\)\>"
-syn keyword etermColorOptions	contained foreground background cursor cursor_text pointer
+syn keyword etermImageState       contained normal selected clicked disabled
+
+syn keyword etermImageOptions     contained color nextgroup=etermImageColorFG
+                                  \ skipwhite
+
+syn keyword etermImageColorFG     contained '\S\+' nextgroup=etermImageColorBG
+                                  \ skipwhite
+
+syn keyword etermImageColorBG     contained '\S\+'
 
-syn region  etermColorContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+color\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermColorOptions
+syn keyword etermImageOptions     contained file nextgroup=etermString
+                                  \ skipwhite
+
+syn keyword etermImageOptions     contained geom nextgroup=etermImageGeom
+                                  \ skipwhite
+
+syn match   etermImageGeom        contained display
+                                  \ '\s\+\%(\d\+x\d\++\d\++\d\+\)\=:\%(\%(tie\|scale\|hscale\|vscale\|propscale\)d\=\)\='
+
+syn keyword etermImageOptions     contained cmod colormod
+                                  \ nextgroup=etermImageCmod skipwhite
 
-" attributes context
-syn region  etermAttrOptions	contained oneline matchgroup=etermOption start="^\s*geometry\>" matchgroup=etermType end="\<\d\+x\d\++\d\++\d\+\>"
-syn region  etermAttrOptions	contained oneline matchgroup=etermOption start="^\s*scrollbar_type\>" matchgroup=etermType end="\<\(motif\|xterm\|next\)\>"
-syn region  etermAttrOptions	contained oneline matchgroup=etermOption start="^\s*font\>" matchgroup=etermType end="\<\(bold\|default\|proportional\|fx\|[0-5]\)\>"
-syn keyword etermAttrOptions	contained title name iconname desktop scrollbar_width
+syn keyword etermImageCmod        contained image red green blue
+                                  \ nextgroup=etermImageBrightness skipwhite
+
+syn match   etermImageBrightness  contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+                                  \ nextgroup=etermImageContrast skipwhite
+
+syn match   etermImageContrast    contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+                                  \ nextgroup=etermImageGamma skipwhite
 
-syn region  etermAttrContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+attributes\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermAttrOptions
+syn match   etermImageGamma       contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
+                                  \ nextgroup=etermImageGamma skipwhite
+
+syn region  etermImageOptions     contained matchgroup=etermImageOptions
+                                  \ start='border\|bevel\%(\s\+\%(up\|down\)\)\|padding'
+                                  \ end='$' contains=etermNumber
+
+syn region  etermImageContext     contained fold transparent
+                                  \ matchgroup=etermContext
+                                  \ start='^\s*begin\s\+image'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermImageOptions
 
-" image context
-" image types
-syn keyword etermImageTypes	contained background trough anchor up_arrow
-syn keyword etermImageTypes	contained left_arrow right_arrow menu menuitem
-syn keyword etermImageTypes	contained submenu button buttonbar down_arrow
-syn region  etermImageOptions	contained transparent oneline matchgroup=etermOption start="^\s*type\>" end="$" contains=etermImageTypes
-" image modes
-syn keyword etermImageModes	contained image trans viewport auto solid
-syn keyword etermImageModesAllow contained allow
-syn region  etermImageOptions	contained transparent oneline matchgroup=etermOption start="^\s*mode\>" end="$" contains=etermImageModes,etermImageModesAllow
-" image states
-syn region  etermImageOptions	contained transparent oneline matchgroup=etermOption start="^\s*state\>" matchgroup=etermType end="\<\(normal\|selected\|clicked\|disabled\)\>"
-" image geometry
-syn region  etermImageOptions	contained transparent oneline matchgroup=etermOption start="^\s*geom\>" matchgroup=etermType end="\s\+\(\d\+x\d\++\d\++\d\+\)\=:\(\(tile\|scale\|hscale\|vscale\|propscale\)d\=\)\="
-" image color modification
-syn region  etermImageOptions	contained transparent oneline matchgroup=etermOption start="^\s*\(cmod\|colormod\)\>" matchgroup=etermType end="\<\(image\|red\|green\|blue\)\>"
-" other keywords
-syn keyword etermImageOptions	contained file padding border bevel color
+syn keyword etermMenuItemOptions  contained action
+                                  \ nextgroup=etermMenuItemAction skipwhite
+
+syn keyword etermMenuItemAction   contained string echo submenu script
+                                  \ nextgroup=etermString skipwhite
+
+syn keyword etermMenuItemAction   contained separator
+
+syn keyword etermMenuItemOptions  contained text rtext nextgroup=etermString
+                                  \ skipwhite
+
+syn region  etermMenuItemContext  contained fold transparent
+                                  \ matchgroup=etermContext
+                                  \ start='^\s*begin\s\+menuitem'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermMenuItemOptions
+
+syn keyword etermMenuOptions      contained title nextgroup=etermString
+                                  \ skipwhite
+
+syn keyword etermMenuOptions      contained font_name nextgroup=etermFont
+                                  \ skipwhite
+
+syn match   etermMenuOptions      contained display '\<sep\>\|-'
+
+syn region  etermMenuContext      fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+menu'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermMenuOptions,
+                                  \ etermMenuItemContext
+
+syn keyword etermBind             contained bind nextgroup=etermBindMods
+                                  \ skipwhite
+
+syn keyword etermBindMods         contained ctrl shift lock mod1 mod2 mod3 mod4
+                                  \ mod5 alt meta anymod
+                                  \ nextgroup=etermBindMods skipwhite
+
+syn keyword etermBindTo           contained to nextgroup=etermBindType
+                                  \ skipwhite
 
-syn region  etermImageContext	contained transparent fold matchgroup=etermContext start="^\s*begin\s\+image\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermImageOptions
+syn keyword etermBindType         contained string echo menu script
+                                  \ nextgroup=etermBindParam skipwhite
+
+syn match   etermBindParam        contained display '\S\+'
 
-" imageclasses context
-syn keyword etermIClassOptions	contained icon cache path anim
+syn region  etermActionsContext   fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+actions'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermActionsOptions
 
-syn region  etermIClassContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+imageclasses\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermImageContext,etermIClassOptions
+syn keyword etermButtonOptions    contained font nextgroup=etermFont skipwhite
+syn keyword etermButtonOptions    contained visible nextgroup=etermBoolean
+                                  \ skipwhite
+syn keyword etermButtonOptions    contained dock nextgroup=etermDockOption
+                                  \ skipwhite
 
-" menuitem context
-syn region  etermMenuItemOptions contained transparent oneline matchgroup=etermOption start="^\s*action\>" matchgroup=etermType end="\<string\|echo\|submenu\|script\|separator\>"
-syn keyword etermMenuItemOptions contained text rtext
+syn keyword etermDockOption       contained top bottom no
+
+syn keyword etermButton           contained button nextgroup=etermButtonText
+                                  \ skipwhite
 
-syn region  etermMenuItemContext fold transparent matchgroup=etermContext start="^\s*begin\s\+menuitem\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermMenuItemOptions
+syn region  etermButtonText       contained display oneline start=+"+
+                                  \ skip=+\\"+ end=+"+
+                                  \ nextgroup=etermButtonIcon skipwhite
 
-" menu context (should contain - as well, but no...)
-syn keyword etermMenuOptions    contained title font_name sep
+syn keyword etermButtonIcon       contained icon nextgroup=etermButtonIconFile
+                                  \ skipwhite
+
+syn keyword etermButtonIconFile   contained '\S\+' nextgroup=etermButtonAction
+                                  \ skipwhite
 
-syn region  etermMenuContext    fold transparent  matchgroup=etermContext start="^\s*begin\s\+menu\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermMenuOptions,etermMenuItemContext
+syn keyword etermButtonAction     contained action nextgroup=etermBindType
+                                  \ skipwhite
 
-" action context
-syn match   etermActionDef	contained "\<\(to\|string\|echo\|menu\|script\)\>"
-syn region  etermActionsOptions	contained transparent oneline matchgroup=etermOption start="^\s*bind\>" end="$" contains=etermActionDef,etermKeyMod
+syn region  etermButtonContext    fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+button_bar'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermButtonOptions
+
+syn keyword etermMultiOptions     contained encoding nextgroup=etermEncoding
+                                  \ skipwhite
+
+syn keyword etermEncoding         eucj sjis euckr big5 gb
+syn match   etermEncoding         display 'iso-10646'
 
-syn region  etermActionsContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+actions\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermActionsOptions
+syn keyword etermMultiOptions     contained font nextgroup=etermFontType
+                                  \ skipwhite
+
+syn region  etermMultiContext     fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+multichar'
+                                  \ end="^\s*end\>'
+                                  \ contains=@etermGeneral,etermMultiOptions
 
-" button bar context
-syn match   etermButtonDef	contained "\<\(action\|string\|echo\|menu\|scrupt\)\>"
-syn region  etermButtonOptions	contained transparent oneline matchgroup=etermOption start="^\s*button\>" end="$" contains=etermButtonDef
-syn keyword etermButtonOptions	contained font visible dock
+syn keyword etermXimOptions       contained input_method
+                                  \ nextgroup=etermInputMethod skipwhite
+
+syn match   etermInputMethod      contained display '\S+'
 
-syn region  etermButtonContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+button_bar\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermButtonOptions
+syn keyword etermXimOptions       contained preedit_type
+                                  \ nextgroup=etermPreeditType skipwhite
+
+syn keyword etermPreeditType      contained OverTheSpot OffTheSpot Root
 
-" multichar context
-syn keyword etermMultiOptions	contained encoding font
-
-syn region  etermMultiContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+multichar\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermMultiOptions
+syn region  etermXimContext       fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+xim'
+                                  \ end="^\s*end\>'
+                                  \ contains=@etermGeneral,etermXimOptions
 
-" xim context
-syn keyword etermXimOptions     contained input_method preedit_type
+syn keyword etermTogOptions       contained map_alert visual_bell login_shell
+                                  \ scrollbar utmp_logging meta8 iconic
+                                  \ no_input home_on_output home_on_input
+                                  \ scrollbar_floating scrollbar_right
+                                  \ scrollbar_popup borderless double_buffer
+                                  \ no_cursor pause xterm_select select_line
+                                  \ select_trailing_spaces report_as_keysyms
+                                  \ itrans immotile_trans buttonbar
+                                  \ resize_gravity nextgroup=etermBoolean
+                                  \ skipwhite
 
-syn region  etermXimContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+xim\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermXimOptions
+syn region  etermTogContext       fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+toggles'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermTogOptions
+
+syn keyword etermKeyboardOptions  contained smallfont_key bigfont_key keysym
+                                  \ nextgroup=etermKeysym skipwhite
 
-" toggles context
-syn keyword etermTogOptions	contained map_alert visual_bell login_shell scrollbar utmp_logging meta8 iconic no_input
-syn keyword etermTogOptions	contained home_on_output home_on_input scrollbar_floating scrollbar_right scrollbar_popup
-syn keyword etermTogOptions	contained borderless double_buffer no_cursor pause xterm_select select_line
-syn keyword etermTogOptions	contained select_trailing_spaces report_as_keysyms itrans immotile_trans buttonbar
-syn keyword etermTogOptions	contained resize_gravity
+syn keyword etermKeysym           contained '\S\+' nextgroup=etermString
+                                  \ skipwhite
+
+syn keyword etermKeyboardOptions  contained meta_mod alt_mod numlock_mod
+                                  \ nextgroup=etermNumber skipwhite
+
+syn keyword etermKeyboardOptions  contained greek app_keypad app_cursor
+                                  \ nextgroup=etermBoolean skipwhite
 
-syn region  etermTogContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+toggles\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermTogOptions
+syn region  etermKeyboardContext  fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+keyboard'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermKeyboardOptions
+
+syn keyword etermMiscOptions      contained print_pipe cut_chars finished_title
+                                  \ finished_text term_name exec
+                                  \ nextgroup=etermString skipwhite
+
+syn keyword etermMiscOptions      contained save_lines min_anchor_size
+                                  \ border_width line_space
 
-" keyboard context
-syn keyword etermKeyboardOptions contained smallfont_key bigfont_key keysym meta_mod alt_mod
-syn keyword etermKeyboardOptions contained greek numlock_mod app_keypad app_cursor
+syn region  etermMiscContext      fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+misc'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermMiscOptions
 
-syn region  etermKeyboardContext fold transparent  matchgroup=etermContext start="^\s*begin\s\+keyboard\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermKeyboardOptions
+syn keyword etermEScreenOptions   contained url nextgroup=etermURL skipwhite
+
+syn match   etermURL              contained display
+                                  \ '\<\%(screen\|twin\)://\%([^@:/]\+\%(@[^:/]\+\%(:[^/]\+\)\=\)\=\)\=/\S\+'
+
+syn keyword etermEScreenOptions   contained firewall
 
-" misc context
-syn keyword etermMiscOptions	contained print_pipe save_lines cut_chars min_anchor_size
-syn keyword etermMiscOptions	contained border_width line_space finished_title term_name
-syn keyword etermMiscOptions	contained finished_text exec
+syn keyword etermEScreenOptions   contained delay nextgroup=etermNumber
+                                  \ skipwhite
+
+syn keyword etermEScreenOptions   contained bbar_font nextgroup=etermFont
+                                  \ skipwhite
 
-syn region  etermMiscContext	fold transparent  matchgroup=etermContext start="^\s*begin\s\+misc\s*$" end="^\s*end\>\(\s\+.\{-0,}\)\=$" contains=@etermGeneral,etermMiscOptions
+syn keyword etermEScreenOptions   contained bbar_dock nextgroup=etermDockOption
+                                  \ skipwhite
+
+syn region  etermEScreenContext   fold transparent matchgroup=etermContext
+                                  \ start='^\s*begin\s\+escreen'
+                                  \ end='^\s*end\>'
+                                  \ contains=@etermGeneral,etermEScreenOptions
 
 if exists("eterm_minlines")
   let b:eterm_minlines = eterm_minlines
 else
-  let b:eterm_minlines = 30
+  let b:eterm_minlines = 50
 endif
 exec "syn sync minlines=" . b:eterm_minlines
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_eterm_syn_inits")
-  if version < 508
-    let did_eterm_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink etermMagic		Special
-  HiLink etermComment		Comment
-  HiLink etermTodo		Todo
-  HiLink etermNumber		Number
-  HiLink etermString		String
-  HiLink etermBoolean		Boolean
-  HiLink etermColor		Number
-  HiLink etermPreProc		PreProc
-  HiLink etermFunctions    	Function
-  HiLink etermKeyMod		Special
-  HiLink etermContext		Keyword
-  HiLink etermOption		Keyword
-  HiLink etermType		Type
-  HiLink etermColorOptions	Keyword
-  HiLink etermAttrOptions	Keyword
-  HiLink etermIClassOptions	Keyword
-  HiLink etermImageTypes	Type
-  HiLink etermImageModes	Type
-  HiLink etermImageModesAllow	Keyword
-  HiLink etermImageOptions	Keyword
-  HiLink etermMenuOptions	Keyword
-  HiLink etermMenuItemOptions	Keyword
-  HiLink etermActionDef	Type
-  HiLink etermActionsOptions	Keyword
-  HiLink etermButtonDef	Type
-  HiLink etermButtonOptions	Keyword
-  HiLink etermMultiOptions	Keyword
-  HiLink etermXimOptions	Keyword
-  HiLink etermTogOptions	Keyword
-  HiLink etermKeyboardOptions	Keyword
-  HiLink etermMiscOptions	Keyword
-  delcommand HiLink
-endif
+hi def link etermTodo             Todo
+hi def link etermComment          Comment
+hi def link etermMagic            PreProc
+hi def link etermNumber           Number
+hi def link etermString           String
+hi def link etermBoolean          Boolean
+hi def link etermPreProc          PreProc
+hi def link etermFunctions        Function
+hi def link etermKeyMod           Constant
+hi def link etermOption           Keyword
+hi def link etermColorOptions     etermOption
+hi def link etermColor            String
+hi def link etermVideoType        Type
+hi def link etermColorType        Type
+hi def link etermColorNumber      Number
+hi def link etermColorSpec        etermColor
+hi def link etermContext          Keyword
+hi def link etermAttrOptions      etermOption
+hi def link etermGeometry         String
+hi def link etermScrollbarType    Type
+hi def link etermFontType         Type
+hi def link etermIClassOptions    etermOption
+hi def link etermImageOptions     etermOption
+hi def link etermImageTypes       Type
+hi def link etermImageModes       Type
+hi def link etermImageModesAllow  Keyword
+hi def link etermImageModesR      Type
+hi def link etermImageState       Keyword
+hi def link etermImageColorFG     etermColor
+hi def link etermImageColorBG     etermColor
+hi def link etermImageGeom        String
+hi def link etermImageCmod        etermOption
+hi def link etermImageBrightness  Number
+hi def link etermImageContrast    Number
+hi def link etermImageGamma       Number
+hi def link etermMenuItemOptions  etermOption
+hi def link etermMenuItemAction   Keyword
+hi def link etermMenuOptions      etermOption
+hi def link etermBind             Keyword
+hi def link etermBindMods         Identifier
+hi def link etermBindTo           Keyword
+hi def link etermBindType         Type
+hi def link etermBindParam        String
+hi def link etermButtonOptions    etermOption
+hi def link etermDockOption       etermOption
+hi def link etermButtonText       String
+hi def link etermButtonIcon       String
+hi def link etermButtonIconFile   String
+hi def link etermButtonAction     Keyword
+hi def link etermMultiOptions     etermOption
+hi def link etermEncoding         Identifier
+hi def link etermXimOptions       etermOption
+hi def link etermInputMethod      Identifier
+hi def link etermPreeditType      Type
+hi def link etermTogOptions       etermOption
+hi def link etermKeyboardOptions  etermOption
+hi def link etermKeysym           Constant
+hi def link etermMiscOptions      etermOption
+hi def link etermEScreenOptions   etermOption
+hi def link etermURL              Identifier
 
 let b:current_syntax = "eterm"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/fetchmail.vim
+++ b/runtime/syntax/fetchmail.vim
@@ -1,88 +1,74 @@
 " Vim syntax file
-" Language:	    fetchmail(1) RC File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/fetchmail/
-" Latest Revision:  2004-05-06
-" arch-tag:	    59d8adac-6e59-45f6-88cb-f9ba1e009c1f
+" Language:         fetchmail(1) RC File
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" todo
-syn keyword fetchmailTodo	contained FIXME TODO XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" comments
-syn region  fetchmailComment	start="#" end="$" contains=fetchmailTodo
+syn keyword fetchmailTodo       contained FIXME TODO XXX NOTE
+
+syn region  fetchmailComment    start='#' end='$' contains=fetchmailTodo,@Spell
 
-" numbers
-syn match   fetchmailNumber	"\<\d\+\>"
+syn match   fetchmailNumber     display '\<\d\+\>'
 
-" strings
-syn region  fetchmailString	start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=fetchmailStringEsc
-syn region  fetchmailString	start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=fetchmailStringEsc
-
-" escape characters in strings
-syn match   fetchmailStringEsc	"\\\([ntb]\|0\d*\|x\x\+\)"
+syn region  fetchmailString     start=+"+ skip=+\\\\\|\\"+ end=+"+
+                                \ contains=fetchmailStringEsc
+syn region  fetchmailString     start=+'+ skip=+\\\\\|\\'+ end=+'+
+                                \ contains=fetchmailStringEsc
 
-" server entries
-syn region  fetchmailKeyword	transparent matchgroup=fetchmailKeyword start="\<poll\|skip\|defaults\>" end="\<poll\|skip\|defaults\>" contains=ALLBUT,fetchmailOptions,fetchmailSet
+syn match   fetchmailStringEsc  contained '\\\([ntb]\|0\d*\|x\x\+\)'
 
-" server options
-syn keyword fetchmailServerOpts	contained via proto[col] local[domains] port auth[enticate]
-syn keyword fetchmailServerOpts	contained timeout envelope qvirtual aka interface monitor
-syn keyword fetchmailServerOpts	contained plugin plugout dns checkalias uidl interval netsec
-syn keyword fetchmailServerOpts	contained principal esmtpname esmtppassword
-syn match   fetchmailServerOpts	contained "\<no\_s\+\(envelope\|dns\|checkalias\|uidl\)"
+syn region  fetchmailKeyword    transparent matchgroup=fetchmailKeyword
+                                \ start='\<poll\|skip\|defaults\>'
+                                \ end='\<poll\|skip\|defaults\>'
+                                \ contains=ALLBUT,fetchmailOptions,fetchmailSet
 
-" user options
-syn keyword fetchmailUserOpts	contained user[name] is to pass[word] ssl sslcert sslkey sslproto folder
-syn keyword fetchmailUserOpts	contained smtphost fetchdomains smtpaddress smtpname antispam mda bsmtp
-syn keyword fetchmailUserOpts	contained preconnect postconnect keep flush fetchall rewrite stripcr
-syn keyword fetchmailUserOpts	contained forcecr pass8bits dropstatus dropdelivered mimedecode idle
-syn keyword fetchmailUserOpts	contained limit warnings batchlimit fetchlimit expunge tracepolls properties
-syn match   fetchmailUserOpts	contained "\<no\_s\+\(keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|noidle\)"
-
-syn keyword fetchmailSpecial	contained here there
+syn keyword fetchmailServerOpts contained via proto[col] local[domains] port
+                                \ auth[enticate] timeout envelope qvirtual aka
+                                \ interface monitor plugin plugout dns
+                                \ checkalias uidl interval netsec principal
+                                \ esmtpname esmtppassword
+syn match   fetchmailServerOpts contained '\<no\_s\+\(envelope\|dns\|checkalias\|uidl\)'
 
-
-" noise keywords
-syn keyword fetchmailNoise	and with has wants options
-syn match   fetchmailNoise	"[:;,]"
+syn keyword fetchmailUserOpts   contained user[name] is to pass[word] ssl
+                                \ sslcert sslkey sslproto folder smtphost
+                                \ fetchdomains smtpaddress smtpname antispam
+                                \ mda bsmtp preconnect postconnect keep flush
+                                \ fetchall rewrite stripcr forcecr pass8bits
+                                \ dropstatus dropdelivered mimedecode idle
+                                \ limit warnings batchlimit fetchlimit expunge
+                                \ tracepolls properties
+syn match   fetchmailUserOpts   contained '\<no\_s\+\(keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|noidle\)'
 
-" options
-syn keyword fetchmailSet	nextgroup=fetchmailOptions skipwhite skipnl set
+syn keyword fetchmailSpecial    contained here there
 
-syn keyword fetchmailOptions	daemon postmaster bouncemail spambounce logfile idfile syslog nosyslog properties
-syn match   fetchmailOptions	"\<no\_s\+\(bouncemail\|spambounce\)"
+syn keyword fetchmailNoise      and with has wants options
+syn match   fetchmailNoise      display '[:;,]'
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_fetchmail_syn_inits")
-  if version < 508
-    let did_fetchmail_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn keyword fetchmailSet        nextgroup=fetchmailOptions skipwhite skipnl set
+
+syn keyword fetchmailOptions    daemon postmaster bouncemail spambounce logfile
+                                \ idfile syslog nosyslog properties
+syn match   fetchmailOptions    '\<no\_s\+\(bouncemail\|spambounce\)'
 
-  HiLink fetchmailComment	Comment
-  HiLink fetchmailTodo	Todo
-  HiLink fetchmailNumber	Number
-  HiLink fetchmailString	String
-  HiLink fetchmailStringEsc	SpecialChar
-  HiLink fetchmailKeyword	Keyword
-  HiLink fetchmailServerOpts	Identifier
-  HiLink fetchmailUserOpts	Identifier
-  HiLink fetchmailSpecial	Special
-  HiLink fetchmailSet		Keyword
-  HiLink fetchmailOptions	Identifier
-  delcommand HiLink
-endif
+hi def link fetchmailComment    Comment
+hi def link fetchmailTodo       Todo
+hi def link fetchmailNumber     Number
+hi def link fetchmailString     String
+hi def link fetchmailStringEsc  SpecialChar
+hi def link fetchmailKeyword    Keyword
+hi def link fetchmailServerOpts Identifier
+hi def link fetchmailUserOpts   Identifier
+hi def link fetchmailSpecial    Special
+hi def link fetchmailSet        Keyword
+hi def link fetchmailOptions    Identifier
 
 let b:current_syntax = "fetchmail"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/gpg.vim
+++ b/runtime/syntax/gpg.vim
@@ -1,72 +1,105 @@
 " Vim syntax file
-" Language:	    GnuPG Configuration File.
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/gpg/
-" Latest Revision:  2004-05-06
-" arch-tag:	    602305f7-d8ae-48ef-a68f-4d54f12af70a
+" Language:         gpg(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk 48-57,65-90,97-122,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,-
+
+syn keyword gpgTodo     contained FIXME TODO XXX NOTE
+
+syn region  gpgComment  contained display oneline start='#' end='$'
+                        \ contains=gpgTodo,gpgID,@Spell
+
+syn match   gpgID       contained display '\<\(0x\)\=\x\{8,}\>'
+
+syn match   gpgBegin    display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
 
-" comments
-syn region  gpgComment	    contained display oneline start="#" end="$" contains=gpgTodo,gpgID
-
-" todo
-syn keyword gpgTodo	    contained FIXME TODO XXX NOTE
-
-" ids
-syn match   gpgID	    contained display "\<\(0x\)\=\x\{8,}\>"
-
-syn match   gpgBegin	    "^" skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
-
-" commands that take args
-syn keyword gpgCommand      contained skipwhite nextgroup=gpgArg check-sigs decrypt decrypt-files delete-key delete-secret-and-public-key delete-secret-key edit-key encrypt-files export export-all export-ownertrust export-secret-keys export-secret-subkeys fast-import fingerprint gen-prime gen-random import import-ownertrust list-keys list-public-keys list-secret-keys list-sigs lsign-key nrsign-key print-md print-mds recv-keys search-keys send-keys sign-key verify verify-files
-" commands that take no args
-syn keyword gpgCommand      contained skipwhite nextgroup=gpgArgError check-trustdb clearsign desig-revoke detach-sign encrypt gen-key gen-revoke help list-packets rebuild-keydb-caches sign store symmetric update-trustdb version warranty
+syn keyword gpgCommand  contained skipwhite nextgroup=gpgArg
+                        \ check-sigs decrypt decrypt-files delete-key
+                        \ delete-secret-and-public-key delete-secret-key
+                        \ edit-key encrypt-files export export-all
+                        \ export-ownertrust export-secret-keys
+                        \ export-secret-subkeys fast-import fingerprint
+                        \ gen-prime gen-random import import-ownertrust
+                        \ list-keys list-public-keys list-secret-keys
+                        \ list-sigs lsign-key nrsign-key print-md print-mds
+                        \ recv-keys search-keys send-keys sign-key verify
+                        \ verify-files
+syn keyword gpgCommand  contained skipwhite nextgroup=gpgArgError
+                        \ check-trustdb clearsign desig-revoke detach-sign
+                        \ encrypt gen-key gen-revoke help list-packets
+                        \ rebuild-keydb-caches sign store symmetric
+                        \ update-trustdb version warranty
 
-" options that take args
-syn keyword gpgOption       contained skipwhite nextgroup=gpgArg attribute-fd cert-digest-algo charset cipher-algo command-fd comment completes-needed compress compress-algo debug default-cert-check-level default-key default-preference-list default-recipient digest-algo disable-cipher-algo disable-pubkey-algo encrypt-to exec-path export-options group homedir import-options keyring keyserver keyserver-options load-extension local-user logger-fd marginals-needed max-cert-depth notation-data options output override-session-key passphrase-fd personal-cipher-preferences personal-compress-preferences personal-digest-preferences photo-viewer recipient s2k-cipher-algo s2k-digest-algo s2k-mode secret-keyring set-filename set-policy-url status-fd trusted-key
-" options that take no args
-syn keyword gpgOption       contained skipwhite nextgroup=gpgArgError allow-freeform-uid allow-non-selfsigned-uid allow-secret-key-import always-trust armor ask-cert-expire ask-sig-expire auto-check-trustdb batch debug-all default-comment default-recipient-self dry-run emit-version emulate-md-encode-bug enable-special-filenames escape-from-lines expert fast-list-mode fixed-list-mode for-your-eyes-only force-mdc force-v3-sigs force-v4-certs gpg-agent-info ignore-crc-error ignore-mdc-error ignore-time-conflict ignore-valid-from interactive list-only lock-multiple lock-never lock-once merge-only no no-allow-non-selfsigned-uid no-armor no-ask-cert-expire no-ask-sig-expire no-auto-check-trustdb no-batch no-comment no-default-keyring no-default-recipient no-encrypt-to no-expensive-trust-checks no-expert no-for-your-eyes-only no-force-v3-sigs no-force-v4-certs no-greeting no-literal no-mdc-warning no-options no-permission-warning no-pgp2 no-pgp6 no-pgp7 no-random-seed-file no-secmem-warning no-show-notation no-show-photos no-show-policy-url no-sig-cache no-sig-create-check no-sk-comments no-tty no-utf8-strings no-verbose no-version not-dash-escaped openpgp pgp2 pgp6 pgp7 preserve-permissions quiet rfc1991 set-filesize show-keyring show-notation show-photos show-policy-url show-session-key simple-sk-checksum sk-comments skip-verify textmode throw-keyid try-all-secrets use-agent use-embedded-filename utf8-strings verbose with-colons with-fingerprint with-key-data yes
-
-" arguments to commands and options
-syn match   gpgArg          contained display "\S\+\(\s\+\S\+\)*" contains=gpgID
-syn match   gpgArgError     contained display "\S\+\(\s\+\S\+\)*"
+syn keyword gpgOption   contained skipwhite nextgroup=gpgArg
+                        \ attribute-fd cert-digest-algo charset cipher-algo
+                        \ command-fd comment completes-needed compress
+                        \ compress-algo debug default-cert-check-level
+                        \ default-key default-preference-list
+                        \ default-recipient digest-algo disable-cipher-algo
+                        \ disable-pubkey-algo encrypt-to exec-path
+                        \ export-options group homedir import-options
+                        \ keyring keyserver keyserver-options load-extension
+                        \ local-user logger-fd marginals-needed max-cert-depth
+                        \ notation-data options output override-session-key
+                        \ passphrase-fd personal-cipher-preferences
+                        \ personal-compress-preferences
+                        \ personal-digest-preferences photo-viewer
+                        \ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
+                        \ secret-keyring set-filename set-policy-url status-fd
+                        \ trusted-key
+syn keyword gpgOption   contained skipwhite nextgroup=gpgArgError
+                        \ allow-freeform-uid allow-non-selfsigned-uid
+                        \ allow-secret-key-import always-trust
+                        \ armor ask-cert-expire ask-sig-expire
+                        \ auto-check-trustdb batch debug-all default-comment
+                        \ default-recipient-self dry-run emit-version
+                        \ emulate-md-encode-bug enable-special-filenames
+                        \ escape-from-lines expert fast-list-mode
+                        \ fixed-list-mode for-your-eyes-only
+                        \ force-mdc force-v3-sigs force-v4-certs
+                        \ gpg-agent-info ignore-crc-error ignore-mdc-error
+                        \ ignore-time-conflict ignore-valid-from interactive
+                        \ list-only lock-multiple lock-never lock-once
+                        \ merge-only no no-allow-non-selfsigned-uid
+                        \ no-armor no-ask-cert-expire no-ask-sig-expire
+                        \ no-auto-check-trustdb no-batch no-comment
+                        \ no-default-keyring no-default-recipient
+                        \ no-encrypt-to no-expensive-trust-checks
+                        \ no-expert no-for-your-eyes-only no-force-v3-sigs
+                        \ no-force-v4-certs no-greeting no-literal
+                        \ no-mdc-warning no-options no-permission-warning
+                        \ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file
+                        \ no-secmem-warning no-show-notation no-show-photos
+                        \ no-show-policy-url no-sig-cache no-sig-create-check
+                        \ no-sk-comments no-tty no-utf8-strings no-verbose
+                        \ no-version not-dash-escaped openpgp pgp2
+                        \ pgp6 pgp7 preserve-permissions quiet rfc1991
+                        \ set-filesize show-keyring show-notation show-photos
+                        \ show-policy-url show-session-key simple-sk-checksum
+                        \ sk-comments skip-verify textmode throw-keyid
+                        \ try-all-secrets use-agent use-embedded-filename
+                        \ utf8-strings verbose with-colons with-fingerprint
+                        \ with-key-data yes
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_gpg_syn_inits")
-  if version < 508
-    let did_gpg_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn match   gpgArg      contained display '\S\+\(\s\+\S\+\)*' contains=gpgID
+syn match   gpgArgError contained display '\S\+\(\s\+\S\+\)*'
 
-  HiLink gpgComment   Comment
-  HiLink gpgTodo      Todo
-  HiLink gpgID        Number
-  HiLink gpgOption    Keyword
-  HiLink gpgCommand   Error
-  HiLink gpgArgError  Error
-  delcommand HiLink
-endif
+hi def link gpgComment  Comment
+hi def link gpgTodo     Todo
+hi def link gpgID       Number
+hi def link gpgOption   Keyword
+hi def link gpgCommand  Error
+hi def link gpgArgError Error
 
 let b:current_syntax = "gpg"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/grub.vim
+++ b/runtime/syntax/grub.vim
@@ -1,77 +1,93 @@
 " Vim syntax file
-" Language:	    GRUB Configuration File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/grub/
-" Latest Revision:  2004-05-06
-" arch-tag:	    7a56ddd0-e551-44bc-b8c0-235fedbdf3c0
+" Language:         grub(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" comments
-syn region  grubComment	    display oneline start="^#" end="$" contains=grubTodo
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword grubTodo          contained TODO FIXME XXX NOTE
+
+syn region  grubComment       display oneline start='^#' end='$'
+                              \ contains=grubTodo,@Spell
 
-" todo
-syn keyword grubTodo	    contained TODO FIXME XXX NOTE
+syn match   grubDevice        display
+                              \ '(\([fh]d\d\|\d\+\|0x\x\+\)\(,\d\+\)\=\(,\l\)\=)'
+
+syn match   grubBlock         display '\(\d\+\)\=+\d\+\(,\(\d\+\)\=+\d\+\)*'
 
-" devices
-syn match   grubDevice	    display "(\([fh]d\d\|\d\+\|0x\x\+\)\(,\d\+\)\=\(,\l\)\=)"
+syn match   grubNumbers       display '+\=\<\d\+\|0x\x\+\>'
+
+syn match   grubBegin         display '^'
+                              \ nextgroup=@grubCommands,grubComment skipwhite
 
-" block lists
-syn match   grubBlock	    display "\(\d\+\)\=+\d\+\(,\(\d\+\)\=+\d\+\)*"
+syn cluster grubCommands      contains=grubCommand,grubTitleCommand
+
+syn keyword grubCommand       contained default fallback hiddenmenu timeout
+
+syn keyword grubTitleCommand  contained title nextgroup=grubTitle skipwhite
+
+syn match   grubTitle         contained display '.*'
 
-" numbers
-syn match   grubNumbers	    display "+\=\<\d\+\|0x\x\+\>"
+syn keyword grubCommand       contained bootp color device dhcp hide ifconfig
+                              \ pager partnew parttype password rarp serial setkey
+                              \ terminal tftpserver unhide blocklist boot cat
+                              \ chainloader cmp configfile debug displayapm
+                              \ displaymem embed find fstest geometry halt help
+                              \ impsprobe initrd install ioprobe kernel lock
+                              \ makeactive map md5crypt module modulenounzip pause
+                              \ quit reboot read root rootnoverify savedefault setup
+                              \ testload testvbe uppermem vbeprobe
 
-syn match  grubBegin	    display "^" nextgroup=grubCommand,grubComment skipwhite
-
-" menu commands
-syn keyword grubCommand	    contained default fallback hiddenmenu timeout title
+syn keyword grubSpecial       saved
 
-" general commands
-syn keyword grubCommand	    contained bootp color device dhcp hide ifconfig pager
-syn keyword grubCommand	    contained partnew parttype password rarp serial setkey
-syn keyword grubCommand	    contained terminal tftpserver unhide blocklist boot cat
-syn keyword grubCommand	    contained chainloader cmp configfile debug displayapm
-syn keyword grubCommand	    contained displaymem embed find fstest geometry halt help
-syn keyword grubCommand	    contained impsprobe initrd install ioprobe kernel lock
-syn keyword grubCommand	    contained makeactive map md5crypt module modulenounzip pause
-syn keyword grubCommand	    contained quit reboot read root rootnoverify savedefault
-syn keyword grubCommand	    contained setup testload testvbe uppermem vbeprobe
-
-" colors
-syn match   grubColor	    "\(blink-\)\=\(black\|blue\|green\|cyan\|red\|magenta\|brown\|yellow\|white\)"
-syn match   grubColor	    "\<\(blink-\)\=light-\(gray\|blue\|green\|cyan\|red\|magenta\)"
-syn match   grubColor	    "\<\(blink-\)\=dark-gray"
-
-" specials
-syn keyword grubSpecial	    saved
+syn match   grubBlink         display 'blink-'
+syn keyword grubBlack         black
+syn keyword grubBlue          blue
+syn keyword grubGreen         green
+syn keyword grubRed           red
+syn keyword grubMagenta       magenta
+syn keyword grubBrown         brown yellow
+syn keyword grubWhite         white
+syn match   grubLightGray     display 'light-gray'
+syn match   grubLightBlue     display 'light-blue'
+syn match   grubLightGreen    display 'light-green'
+syn match   grubLightCyan     display 'light-cyan'
+syn match   grubLightRed      display 'light-red'
+syn match   grubLightMagenta  display 'light-magenta'
+syn match   grubDarkGray      display 'dark-gray'
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_grub_syn_inits")
-  if version < 508
-    let did_grub_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+hi def link grubComment       Comment
+hi def link grubTodo          Todo
+hi def link grubNumbers       Number
+hi def link grubDevice        Identifier
+hi def link grubBlock         Identifier
+hi def link grubCommand       Keyword
+hi def link grubTitleCommand  grubCommand
+hi def link grubTitle         String
+hi def link grubSpecial       Special
 
-  HiLink grubComment	Comment
-  HiLink grubTodo	Todo
-  HiLink grubNumbers	Number
-  HiLink grubDevice	Identifier
-  HiLink grubBlock	Identifier
-  HiLink grubCommand	Keyword
-  HiLink grubColor	Identifier
-  HiLink grubSpecial	Special
-  delcommand HiLink
-endif
+hi def      grubBlink         cterm=inverse
+hi def      grubBlack         ctermfg=Black ctermbg=White guifg=Black guibg=White
+hi def      grubBlue          ctermfg=DarkBlue guifg=DarkBlue
+hi def      grubGreen         ctermfg=DarkGreen guifg=DarkGreen
+hi def      grubRed           ctermfg=DarkRed guifg=DarkRed
+hi def      grubMagenta       ctermfg=DarkMagenta guifg=DarkMagenta
+hi def      grubBrown         ctermfg=Brown guifg=Brown
+hi def      grubWhite         ctermfg=White ctermbg=Black guifg=White guibg=Black
+hi def      grubLightGray     ctermfg=LightGray guifg=LightGray
+hi def      grubLightBlue     ctermfg=LightBlue guifg=LightBlue
+hi def      grubLightGreen    ctermfg=LightGreen guifg=LightGreen
+hi def      grubLightCyan     ctermfg=LightCyan guifg=LightCyan
+hi def      grubLightRed      ctermfg=LightRed guifg=LightRed
+hi def      grubLightMagenta  ctermfg=LightMagenta guifg=LightMagenta
+hi def      grubDarkGray      ctermfg=DarkGray guifg=DarkGray
 
 let b:current_syntax = "grub"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/indent.vim
+++ b/runtime/syntax/indent.vim
@@ -1,101 +1,178 @@
 " Vim syntax file
-" Language:	    indent RC File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/indent/
-" Latest Revision:  2004-05-22
-" arch-tag:	    23c11190-79fa-4493-9fc5-36435402a20d
+" Language:         indent(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+"   indent_is_bsd:  If exists, will change somewhat to match BSD implementation
+"
 " TODO: is the deny-all (a la lilo.vim nice or no?)...
-"	irritating to be wrong to the last char...
-"	would be sweet if right until one char fails
+"       irritating to be wrong to the last char...
+"       would be sweet if right until one char fails
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk 48-57,65-90,97-122,-,_
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,-,_
+
+syn match   indentError   '\S\+'
 
-" errors
-syn match   indentError "\S\+"
+syn keyword indentTodo    contained TODO FIXME XXX NOTE
 
-" todo
-syn keyword indentTodo contained TODO FIXME XXX NOTE
-
-" comments
-syn region  indentComment matchgroup=indentComment start="/\*" end="\*/" contains=indentTodo
+syn region  indentComment matchgroup=indentComment
+                          \ start='/\*' end='\*/'
+                          \ contains=indentTodo,@Spell
+syn region  indentComment matchgroup=indentComment
+                          \ start='//' skip='\\$' end='$'
+                          \ contains=indentTodo,@Spell
 
-" keywords (command-line switches)
-syn match   indentOptions "\<--\(no-\)\=blank-\(before-sizeof\|Bill-Shannon\|lines-\(after-\(commas\|declarations\|procedures\)\|before-block-comments\)\)\>"
-syn match   indentOptions "\<--brace-indent\s*\d\+\>"
-syn match   indentOptions "\<--braces-\(after\|on\)-\(if\|struct-decl\)-line\>"
-syn match   indentOptions "\<--break-\(\(after\|before\)-boolean-operator\|function-decl-args\)\>"
-syn match   indentOptions "\<--\(case\(-brace\)\=\|comment\|continuation\|declaration\|line-comments\|parameter\|paren\|struct-brace\)-indentation\s*\d\+\>"
-syn match   indentOptions "\<--\(no-\)\=comment-delimiters-on-blank-lines\>"
-syn match   indentOptions "\<--\(dont-\)\=cuddle-\(do-while\|else\)\>"
-syn match   indentOptions "\<--\(declaration-comment\|else-endif\)-column\s*\d\+\>"
-syn match   indentOptions "\<--dont-break-\(function-decl-args\|procedure-type\)\>"
-syn match   indentOptions "\<--\(dont-\)\=\(format\(-first-column\)\=\|star\)-comments\>"
-syn match   indentOptions "\<--\(honour\|ignore\)-newlines\>"
-syn match   indentOptions "\<--\(indent-level\|\(comment-\)\=line-length\)\s*\d\+\>"
-syn match   indentOptions "\<--\(leave\|remove\)-preprocessor-space\>"
-"not 100%, since casts\= should always be cast if no- isn't given
-syn match   indentOptions "\<--\(no-\)\=space-after-\(parentheses\|casts\=\|for\|if\|while\)\>"
-syn match   indentOptions "\<--\(dont-\)\=space-special-semicolon\>"
-syn match   indentOptions "\<--\(leave\|swallow\)-optional-blank-lines\>"
-syn match   indentOptions "\<--tab-size\s*\d\+\>"
-syn match   indentOptions "\<--\(no\|use\)-tabs\>"
-syn keyword indentOptions --gnu-style --ignore-profile --k-and-r-style --original
-syn keyword indentOptions --preserve-mtime --no-verbosity --verbose --output-file
-syn keyword indentOptions --no-parameter-indentation --procnames-start-lines
-syn keyword indentOptions --standard-output --start-left-side-of-comments
-syn keyword indentOptions --space-after-procedure-calls
-" this also here since the gnu indent fellas aren't consistent. (ever read
-" the code to `indent'? you'll know what i mean if you have)
-syn match   indentOptions "\<-\(bli\|cbi\|cd\|ci\|cli\|c\|cp\|di\|d\|i\|ip\|l\|lc\|pi\|sbi\|ts\)\s*\d\+\>"
-syn match   indentOptions "\<-T\s\+\w\+\>"
-syn keyword indentOptions --format-all-comments --continue-at-parentheses --dont-line-up-parentheses
-syn keyword indentOptions --no-space-after-function-call-names
-syn keyword indentOptions -bad -bap -bbb -bbo -bc -bfda -bl -br -bs -nbs -cdb -cdw -ce -cs -dce -fc1 -fca
-syn keyword indentOptions -gnu -hnl -kr -lp -lps -nbad -nbap -nbbb -nbbo -nbc -nbfda -ncdb -ncdw -nprs
-syn keyword indentOptions -nce -ncs -nfc1 -nfca -nhnl -nip -nlp -nlps -npcs -npmt -npro -npsl -nsaf -nsai
-syn keyword indentOptions -nsaw -nsc -nsob -nss -nv -o -orig -pcs -pmt -prs -psl -saf -sai -saw -sc
-syn keyword indentOptions -sob -ss -st -v -version -bls -brs -ut -nut
+syn keyword indentOptions -bacc --blank-lines-after-ifdefs
+                        \ -bad --blank-lines-after-declarations
+                        \ -badp --blank-lines-after-procedure-declarations
+                        \ -bap --blank-lines-after-procedures
+                        \ -bbb --blank-lines-before-block-comments
+                        \ -bbo --break-before-boolean-operator
+                        \ -bc --blank-lines-after-commas
+                        \ -bfda --break-function-decl-args
+                        \ -bfde --break-function-decl-args-end
+                        \ -bl --braces-after-if-line
+                        \ -blf --braces-after-func-def-line
+                        \ -bls --braces-after-struct-decl-line
+                        \ -br --braces-on-if-line
+                        \ -brf --braces-on-func-def-line
+                        \ -brs --braces-on-struct-decl-line
+                        \ -bs --Bill-Shannon
+                        \ -bs --blank-before-sizeof
+                        \ -c++ --c-plus-plus
+                        \ -cdb --comment-delimiters-on-blank-lines
+                        \ -cdw --cuddle-do-while
+                        \ -ce --cuddle-else
+                        \ -cs --space-after-cast
+                        \ -dj --left-justify-declarations
+                        \ -eei --extra-expression-indentation
+                        \ -fc1 --format-first-column-comments
+                        \ -fca --format-all-comments
+                        \ -gnu --gnu-style
+                        \ -h --help
+                        \ -h --usage
+                        \ -hnl --honour-newlines
+                        \ -kr --k-and-r-style
+                        \ -kr --kernighan-and-ritchie
+                        \ -kr --kernighan-and-ritchie-style
+                        \ -lp --continue-at-parentheses
+                        \ -lps --leave-preprocessor-space
+                        \ -nbacc --no-blank-lines-after-ifdefs
+                        \ -nbad --no-blank-lines-after-declarations
+                        \ -nbadp --no-blank-lines-after-procedure-declarations
+                        \ -nbap --no-blank-lines-after-procedures
+                        \ -nbbb --no-blank-lines-before-block-comments
+                        \ -nbbo --break-after-boolean-operator
+                        \ -nbc --no-blank-lines-after-commas
+                        \ -nbfda --dont-break-function-decl-args
+                        \ -nbfde --dont-break-function-decl-args-end
+                        \ -nbs --no-Bill-Shannon
+                        \ -nbs --no-blank-before-sizeof
+                        \ -ncdb --no-comment-delimiters-on-blank-lines
+                        \ -ncdw --dont-cuddle-do-while
+                        \ -nce --dont-cuddle-else
+                        \ -ncs --no-space-after-casts
+                        \ -ndj --dont-left-justify-declarations
+                        \ -neei --no-extra-expression-indentation
+                        \ -nfc1 --dont-format-first-column-comments
+                        \ -nfca --dont-format-comments
+                        \ -nhnl --ignore-newlines
+                        \ -nip --dont-indent-parameters
+                        \ -nip --no-parameter-indentation
+                        \ -nlp --dont-line-up-parentheses
+                        \ -nlps --remove-preprocessor-space
+                        \ -npcs --no-space-after-function-call-names
+                        \ -npro --ignore-profile
+                        \ -nprs --no-space-after-parentheses
+                        \ -npsl --dont-break-procedure-type
+                        \ -nsaf --no-space-after-for
+                        \ -nsai --no-space-after-if
+                        \ -nsaw --no-space-after-while
+                        \ -nsc --dont-star-comments
+                        \ -nsob --leave-optional-blank-lines
+                        \ -nss --dont-space-special-semicolon
+                        \ -nut --no-tabs
+                        \ -nv --no-verbosity
+                        \ -o --output
+                        \ -o --output-file
+                        \ -orig --berkeley
+                        \ -orig --berkeley-style
+                        \ -orig --original
+                        \ -orig --original-style
+                        \ -pcs --space-after-procedure-calls
+                        \ -pmt --preserve-mtime
+                        \ -prs --space-after-parentheses
+                        \ -psl --procnames-start-lines
+                        \ -saf --space-after-for
+                        \ -sai --space-after-if
+                        \ -saw --space-after-while
+                        \ -sc --start-left-side-of-comments
+                        \ -sob --swallow-optional-blank-lines
+                        \ -ss --space-special-semicolon
+                        \ -st --standard-output
+                        \ -ut --use-tabs
+                        \ -v --verbose
+                        \ -version --version
 
-if exists("indent_minlines")
-    let b:indent_minlines = indent_minlines
-else
-    let b:indent_minlines = 50
+syn keyword indentOptions -bli --brace-indent
+                        \ -c --comment-indentation
+                        \ -bli --brace-indent
+                        \ -c --comment-indentation
+                        \ -cbi --case-brace-indentation
+                        \ -cd --declaration-comment-column
+                        \ -ci --continuation-indentation
+                        \ -cli --case-indentation
+                        \ -cp --else-endif-column
+                        \ -d --line-comments-indentation
+                        \ -di --declaration-indentation
+                        \ -i --indent-level
+                        \ -ip --parameter-indentation
+                        \ -l --line-length
+                        \ -lc --comment-line-length
+                        \ -pi --paren-indentation
+                        \ -ppi --preprocessor-indentation
+                        \ -sbi --struct-brace-indentation
+                        \ -ts --tab-size
+                        \ nextgroup=indenNumber skipwhite
+if !exists("indent_is_bsd")
+  syn keyword indentOptions -i --indentation-level
+                          \ nextgroup=indentNumber skipwhite
 endif
-exec "syn sync minlines=" . b:indent_minlines
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_indent_syn_inits")
-  if version < 508
-    let did_indent_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
+syn match   indentNumber  display '\<\d\+\>'
+
+syn keyword indentOptions -T nextgroup=indentIdent skipwhite
+
+syn match   indentIdent   display '\<\h\w*\>'
+
+if exists("indent_is_bsd")
+  syn keyword indentOptions -ip -nip -dj -ndj -ei -nei
+endif
+
+if exists("c_minlines")
+  let b:c_minlines = c_minlines
+else
+  if !exists("c_no_if0")
+    let b:c_minlines = 50       " #if 0 constructs can be long
   else
-    command -nargs=+ HiLink hi def link <args>
+    let b:c_minlines = 15       " mostly for () constructs
   endif
+endif
 
-  HiLink indentError	Error
-  HiLink indentComment	Comment
-  HiLink indentTodo	Todo
-  HiLink indentOptions	Keyword
-  delcommand HiLink
-endif
+hi def link indentError   Error
+hi def link indentComment Comment
+hi def link indentTodo    Todo
+hi def link indentOptions Keyword
+hi def link indentNumber  Number
+hi def link indentIdent   Identifier
 
 let b:current_syntax = "indent"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/ld.vim
+++ b/runtime/syntax/ld.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         ld(1) script
 " Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
-" Latest Revision:  2005-06-28
+" Latest Revision:  2005-06-29
 
 if exists("b:current_syntax")
   finish
@@ -16,7 +16,7 @@ syn region  ldComment       start='/\*' 
 
 syn region  ldFileName      start=+"+ end=+"+
 
-syn keyword ldPreProc       SECTIONS MEMORY OVERLAY PHDRS VERSION
+syn keyword ldPreProc       SECTIONS MEMORY OVERLAY PHDRS VERSION INCLUDE
 syn match   ldPreProc       '\<VERS_\d\+\.\d\+'
 
 syn keyword ldFunction      ABSOLUTE ADDR ALIGN BLOCK DATA_SEGMENT_ALIGN
@@ -24,7 +24,7 @@ syn keyword ldFunction      ABSOLUTE ADD
                             \ LOADADDR MAX MIN NEXT SIZEOF SIZEOF_HEADERS
                             \ sizeof_headers
 
-syn keyword ldKeyword       ENTRY INCLUDE INPUT GROUP OUTPUT
+syn keyword ldKeyword       ENTRY INPUT GROUP OUTPUT
                             \ SEARCH_DIR STARTUP OUTPUT_FORMAT TARGET
                             \ ASSERT EXTERN FORCE_COMMON_ALLOCATION
                             \ INHIBIT_COMMON_ALLOCATION NOCROSSREFS OUTPUT_ARCH
--- a/runtime/syntax/lftp.vim
+++ b/runtime/syntax/lftp.vim
@@ -1,184 +1,152 @@
 " Vim syntax file
-" Language:	    lftp(1) configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/lftp/
-" Latest Revision:  2004-05-22
-" arch-tag:	    f2537c49-5d64-42b8-beb4-13a09dd723d2
+" Language:         lftp(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk 48-57,97-122,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,-
 
-" comments
-syn region  lftpComment		display oneline matchgroup=lftpComment start="#" end="$" contains=lftpTodo
+syn region  lftpComment         display oneline matchgroup=lftpComment
+                                \ start='#' end='$' contains=lftpTodo,@Spell
+
+syn keyword lftpTodo            contained TODO FIXME XXX NOTE
+
+syn region  lftpString          contained display
+                                \ start=+"+ skip=+\\$\|\\"+ end=+"+ end=+$+
 
-" todo
-syn keyword lftpTodo		contained TODO FIXME XXX NOTE
+syn match   lftpNumber          contained display '\<\d\+\(\.\d\+\)\=\>'
 
-" strings
-syn region  lftpString		contained display start=+"+ skip=+\\$\|\\"+ end=+"+ end=+$+
+syn keyword lftpBoolean         contained yes no on off true false
+
+syn keyword lftpInterval        contained infinity inf never forever
+syn match   lftpInterval        contained '\<\(\d\+\(\.\d\+\)\=[dhms]\)\+\>'
 
-" numbers
-syn match   lftpNumber		contained display "\<\d\+\(\.\d\+\)\=\>"
-
-" booleans and other things
-syn keyword lftpBoolean		contained yes no on off true false
-
-" intervals
-syn keyword lftpInterval	contained infinity inf never forever
-syn match   lftpInterval	contained "\<\(\d\+\(\.\d\+\)\=[dhms]\)\+\>"
+syn keyword lftpKeywords        alias anon at bookmark cache cat cd chmod close
+                                \ cls command debug du echo exit fg find get
+                                \ get1 glob help history jobs kill lcd lftp
+                                \ lpwd ls mget mirror mkdir module more mput
+                                \ mrm mv nlist open pget put pwd queue quote
+                                \ reget recls rels renlist repeat reput rm
+                                \ rmdir scache site source suspend user version
+                                \ wait zcat zmore
 
-" commands
-syn keyword lftpKeywords	alias anon at bookmark cache cat cd chmod close
-syn keyword lftpKeywords	cls command debug du echo exit fg find get get1
-syn keyword lftpKeywords	glob help history jobs kill lcd lftp lpwd ls
-syn keyword lftpKeywords	mget mirror mkdir module
-syn keyword lftpKeywords	more mput mrm mv nlist open pget put pwd queue
-syn keyword lftpKeywords	quote reget recls rels renlist repeat
-syn keyword lftpKeywords	reput rm rmdir scache site source suspend user
-syn keyword lftpKeywords	version wait zcat zmore
-
-" settings
-syn region  lftpSet		matchgroup=lftpKeywords start="set" end=";" end="$" contains=lftpString,lftpNumber,lftpBoolean,lftpInterval,lftpSettingsPrefix,lftpSettings
-syn match   lftpSettingsPrefix	contained '\<\%(bmk\|cache\|cmd\|color\|dns\):'
-syn match   lftpSettingsPrefix	contained '\<\%(file\|fish\|ftp\|hftp\):'
-syn match   lftpSettingsPrefix	contained '\<\%(http\|https\|mirror\|module\):'
-syn match   lftpSettingsPrefix	contained '\<\%(net\|sftp\|ssl\|xfer\):'
+syn region  lftpSet             matchgroup=lftpKeywords
+                                \ start="set" end=";" end="$"
+                                \ contains=lftpString,lftpNumber,lftpBoolean,
+                                \ lftpInterval,lftpSettingsPrefix,lftpSettings
+syn match   lftpSettingsPrefix  contained '\<\%(bmk\|cache\|cmd\|color\|dns\):'
+syn match   lftpSettingsPrefix  contained '\<\%(file\|fish\|ftp\|hftp\):'
+syn match   lftpSettingsPrefix  contained '\<\%(http\|https\|mirror\|module\):'
+syn match   lftpSettingsPrefix  contained '\<\%(net\|sftp\|ssl\|xfer\):'
 " bmk:
-syn keyword lftpSettings	contained save-p[asswords]
+syn keyword lftpSettings        contained save-p[asswords]
 " cache:
-syn keyword lftpSettings	contained cache-em[pty-listings] en[able]
-syn keyword lftpSettings	contained exp[ire] siz[e]
+syn keyword lftpSettings        contained cache-em[pty-listings] en[able]
+                                \ exp[ire] siz[e]
 " cmd:
-syn keyword lftpSettings	contained at[-exit] cls-c[ompletion-default]
-syn keyword lftpSettings	contained cls-d[efault] cs[h-history]
-syn keyword lftpSettings	contained default-p[rotocol] default-t[itle]
-syn keyword lftpSettings	contained fai[l-exit] in[teractive]
-syn keyword lftpSettings	contained lo[ng-running] ls[-default]
-syn keyword lftpSettings	contained mo[ve-background] prom[pt]
-syn keyword lftpSettings	contained rem[ote-completion]
-syn keyword lftpSettings	contained save-c[wd-history] save-r[l-history]
-syn keyword lftpSettings	contained set-t[erm-status] statu[s-interval]
-syn keyword lftpSettings	contained te[rm-status] verb[ose] verify-h[ost]
-syn keyword lftpSettings	contained verify-path verify-path[-cached]
+syn keyword lftpSettings        contained at[-exit] cls-c[ompletion-default]
+                                \ cls-d[efault] cs[h-history]
+                                \ default-p[rotocol] default-t[itle]
+syn keyword lftpSettings        contained fai[l-exit] in[teractive]
+                                \ lo[ng-running] ls[-default] mo[ve-background]
+                                \ prom[pt]
+                                \ rem[ote-completion]
+                                \ save-c[wd-history] save-r[l-history]
+                                \ set-t[erm-status] statu[s-interval]
+                                \ te[rm-status] verb[ose] verify-h[ost]
+                                \ verify-path verify-path[-cached]
 " color:
-syn keyword lftpSettings	contained dir[-colors] use-c[olor]
+syn keyword lftpSettings        contained dir[-colors] use-c[olor]
 " dns:
-syn keyword lftpSettings	contained S[RV-query] cache-en[able]
-syn keyword lftpSettings	contained cache-ex[pire] cache-s[ize]
-syn keyword lftpSettings	contained fat[al-timeout] o[rder] use-fo[rk]
+syn keyword lftpSettings        contained S[RV-query] cache-en[able]
+                                \ cache-ex[pire] cache-s[ize]
+                                \ fat[al-timeout] o[rder] use-fo[rk]
 " file:
-syn keyword lftpSettings	contained ch[arset]
+syn keyword lftpSettings        contained ch[arset]
 " fish:
-syn keyword lftpSettings	contained connect[-program] sh[ell]
+syn keyword lftpSettings        contained connect[-program] sh[ell]
 " ftp:
-syn keyword lftpSettings	contained acct anon-p[ass] anon-u[ser]
-syn keyword lftpSettings	contained au[to-sync-mode] b[ind-data-socket]
-syn keyword lftpSettings	contained ch[arset] cli[ent] dev[ice-prefix]
-syn keyword lftpSettings	contained fi[x-pasv-address] fxp-f[orce]
-syn keyword lftpSettings	contained fxp-p[assive-source] h[ome] la[ng]
-syn keyword lftpSettings	contained list-e[mpty-ok] list-o[ptions]
-syn keyword lftpSettings	contained nop[-interval] pas[sive-mode]
-syn keyword lftpSettings	contained port-i[pv4] port-r[ange] prox[y]
-syn keyword lftpSettings	contained rest-l[ist] rest-s[tor]
-syn keyword lftpSettings	contained retry-530 retry-530[-anonymous]
-syn keyword lftpSettings	contained sit[e-group] skey-a[llow]
-syn keyword lftpSettings	contained skey-f[orce] ssl-allow
-syn keyword lftpSettings	contained ssl-allow[-anonymous] ssl-au[th]
-syn keyword lftpSettings	contained ssl-f[orce] ssl-protect-d[ata]
-syn keyword lftpSettings	contained ssl-protect-l[ist] stat-[interval]
-syn keyword lftpSettings	contained sy[nc-mode] timez[one] use-a[bor]
-syn keyword lftpSettings	contained use-fe[at] use-fx[p] use-hf[tp]
-syn keyword lftpSettings	contained use-mdtm use-mdtm[-overloaded]
-syn keyword lftpSettings	contained use-ml[sd] use-p[ret] use-q[uit]
-syn keyword lftpSettings	contained use-site-c[hmod] use-site-i[dle]
-syn keyword lftpSettings	contained use-site-u[time] use-siz[e]
-syn keyword lftpSettings	contained use-st[at] use-te[lnet-iac]
-syn keyword lftpSettings	contained verify-a[ddress] verify-p[ort]
-syn keyword lftpSettings	contained w[eb-mode]
+syn keyword lftpSettings        contained acct anon-p[ass] anon-u[ser]
+                                \ au[to-sync-mode] b[ind-data-socket]
+                                \ ch[arset] cli[ent] dev[ice-prefix]
+                                \ fi[x-pasv-address] fxp-f[orce]
+                                \ fxp-p[assive-source] h[ome] la[ng]
+                                \ list-e[mpty-ok] list-o[ptions]
+                                \ nop[-interval] pas[sive-mode]
+                                \ port-i[pv4] port-r[ange] prox[y]
+                                \ rest-l[ist] rest-s[tor]
+                                \ retry-530 retry-530[-anonymous]
+                                \ sit[e-group] skey-a[llow]
+                                \ skey-f[orce] ssl-allow
+                                \ ssl-allow[-anonymous] ssl-au[th]
+                                \ ssl-f[orce] ssl-protect-d[ata]
+                                \ ssl-protect-l[ist] stat-[interval]
+                                \ sy[nc-mode] timez[one] use-a[bor]
+                                \ use-fe[at] use-fx[p] use-hf[tp]
+                                \ use-mdtm use-mdtm[-overloaded]
+                                \ use-ml[sd] use-p[ret] use-q[uit]
+                                \ use-site-c[hmod] use-site-i[dle]
+                                \ use-site-u[time] use-siz[e]
+                                \ use-st[at] use-te[lnet-iac]
+                                \ verify-a[ddress] verify-p[ort]
+                                \ w[eb-mode]
 " hftp:
-syn keyword lftpSettings	contained w[eb-mode] cache prox[y]
-syn keyword lftpSettings	contained use-au[thorization] use-he[ad]
-syn keyword lftpSettings	contained use-ty[pe]
+syn keyword lftpSettings        contained w[eb-mode] cache prox[y]
+                                \ use-au[thorization] use-he[ad] use-ty[pe]
 " http:
-syn keyword lftpSettings	contained accept accept-c[harset]
-syn keyword lftpSettings	contained accept-l[anguage] cache coo[kie]
-syn keyword lftpSettings	contained pos[t-content-type] prox[y]
-syn keyword lftpSettings	contained put-c[ontent-type] put-m[ethod]
-syn keyword lftpSettings	contained ref[erer] set-c[ookies] user[-agent]
+syn keyword lftpSettings        contained accept accept-c[harset]
+                                \ accept-l[anguage] cache coo[kie]
+                                \ pos[t-content-type] prox[y]
+                                \ put-c[ontent-type] put-m[ethod] ref[erer]
+                                \ set-c[ookies] user[-agent]
 " https:
-syn keyword lftpSettings	contained prox[y]
+syn keyword lftpSettings        contained prox[y]
 " mirror:
-syn keyword lftpSettings	contained exc[lude-regex] o[rder]
-syn keyword lftpSettings	contained parallel-d[irectories]
-syn keyword lftpSettings	contained parallel-t[ransfer-count]
-syn keyword lftpSettings	contained use-p[get-n]
+syn keyword lftpSettings        contained exc[lude-regex] o[rder]
+                                \ parallel-d[irectories]
+                                \ parallel-t[ransfer-count] use-p[get-n]
 " module:
-syn keyword lftpSettings	contained pat[h]
+syn keyword lftpSettings        contained pat[h]
 " net:
-syn keyword lftpSettings	contained connection-l[imit]
-syn keyword lftpSettings	contained connection-t[akeover]
-syn keyword lftpSettings	contained id[le] limit-m[ax] limit-r[ate]
-syn keyword lftpSettings	contained limit-total-m[ax] limit-total-r[ate]
-syn keyword lftpSettings	contained max-ret[ries] no-[proxy]
-syn keyword lftpSettings	contained pe[rsist-retries]
-syn keyword lftpSettings	contained reconnect-interval-b[ase]
-syn keyword lftpSettings	contained reconnect-interval-ma[x]
-syn keyword lftpSettings	contained reconnect-interval-mu[ltiplier]
-syn keyword lftpSettings	contained socket-bind-ipv4 socket-bind-ipv6
-syn keyword lftpSettings	contained socket-bu[ffer] socket-m[axseg]
-syn keyword lftpSettings	contained timeo[ut]
+syn keyword lftpSettings        contained connection-l[imit]
+                                \ connection-t[akeover] id[le] limit-m[ax]
+                                \ limit-r[ate] limit-total-m[ax]
+                                \ limit-total-r[ate] max-ret[ries] no-[proxy]
+                                \ pe[rsist-retries] reconnect-interval-b[ase]
+                                \ reconnect-interval-ma[x]
+                                \ reconnect-interval-mu[ltiplier]
+                                \ socket-bind-ipv4 socket-bind-ipv6
+                                \ socket-bu[ffer] socket-m[axseg] timeo[ut]
 " sftp:
-syn keyword lftpSettings	contained connect[-program]
-syn keyword lftpSettings	contained max-p[ackets-in-flight]
-syn keyword lftpSettings	contained prot[ocol-version] ser[ver-program]
-syn keyword lftpSettings	contained size-r[ead] size-w[rite]
+syn keyword lftpSettings        contained connect[-program]
+                                \ max-p[ackets-in-flight] prot[ocol-version]
+                                \ ser[ver-program] size-r[ead] size-w[rite]
 " ssl:
-syn keyword lftpSettings	contained ca-f[ile] ca-p[ath] ce[rt-file]
-syn keyword lftpSettings	contained crl-f[ile] crl-p[ath] k[ey-file]
-syn keyword lftpSettings	contained verify-c[ertificate]
+syn keyword lftpSettings        contained ca-f[ile] ca-p[ath] ce[rt-file]
+                                \ crl-f[ile] crl-p[ath] k[ey-file]
+                                \ verify-c[ertificate]
 " xfer:
-syn keyword lftpSettings	contained clo[bber] dis[k-full-fatal]
-syn keyword lftpSettings	contained eta-p[eriod] eta-t[erse]
-syn keyword lftpSettings	contained mak[e-backup] max-red[irections]
-syn keyword lftpSettings	contained ra[te-period]
+syn keyword lftpSettings        contained clo[bber] dis[k-full-fatal]
+                                \ eta-p[eriod] eta-t[erse] mak[e-backup]
+                                \ max-red[irections] ra[te-period]
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_lftp_syn_inits")
-  if version < 508
-    let did_lftp_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink lftpComment		Comment
-  HiLink lftpTodo		Todo
-  HiLink lftpString		String
-  HiLink lftpNumber		Number
-  HiLink lftpBoolean		Boolean
-  HiLink lftpInterval		Number
-  HiLink lftpKeywords		Keyword
-  HiLink lftpSettingsPrefix	PreProc
-  HiLink lftpSettings		Type
-  delcommand HiLink
-endif
+hi def link lftpComment         Comment
+hi def link lftpTodo            Todo
+hi def link lftpString          String
+hi def link lftpNumber          Number
+hi def link lftpBoolean         Boolean
+hi def link lftpInterval        Number
+hi def link lftpKeywords        Keyword
+hi def link lftpSettingsPrefix  PreProc
+hi def link lftpSettings        Type
 
 let b:current_syntax = "lftp"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/libao.vim
+++ b/runtime/syntax/libao.vim
@@ -1,46 +1,27 @@
 " Vim syntax file
-" Language:	    libao configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/libao/
-" Latest Revision:  2004-05-22
-" arch-tag:	    4ddef0a8-6817-4555-a5a1-0be82094053d
+" Language:         libao.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Todo
-syn keyword libaoTodo	    contained TODO FIXME XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" Comments
-syn region  libaoComment    matchgroup=libaoComment start='^\s*#' end='$' contains=libaoTodo
-
-" Keywords
-syn keyword libaoKeyword    default_driver
+syn keyword libaoTodo     contained TODO FIXME XXX NOTE
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_libao_syn_inits")
-  if version < 508
-    let did_libao_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-    command -nargs=+ HiDef hi <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-    command -nargs=+ HiDef hi def <args>
-  endif
+syn region  libaoComment  matchgroup=libaoComment start='^\s*#' end='$'
+                          \ contains=libaoTodo,@Spell
 
-  HiLink libaoTodo	Todo
-  HiLink libaoComment	Comment
-  HiLink libaoKeyword	Keyword
+syn keyword libaoKeyword  default_driver
 
-  delcommand HiLink
-  delcommand HiDef
-endif
+hi def link libaoTodo     Todo
+hi def link libaoComment  Comment
+hi def link libaoKeyword  Keyword
 
 let b:current_syntax = "libao"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/limits.vim
@@ -0,0 +1,44 @@
+" Vim syntax file
+" Language:         limits(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword limitsTodo    contained TODO FIXME XXX NOTE
+
+syn region  limitsComment display oneline start='^\s*#' end='$'
+                          \ contains=limitsTodo,@Spell
+
+syn match   limitsBegin   display '^'
+                          \ nextgroup=limitsUser,limitsDefault,limitsComment
+                          \ skipwhite
+
+syn match   limitsUser    contained '[^ \t#*]\+'
+                          \ nextgroup=limitsLimit,limitsDeLimit skipwhite
+
+syn match   limitsDefault contained '*'
+                          \ nextgroup=limitsLimit,limitsDeLimit skipwhite
+
+syn match   limitsLimit   contained '[ACDFMNRSTUKLP]' nextgroup=limitsNumber
+syn match   limitsDeLimit contained '-'
+
+syn match   limitsNumber  contained '\d\+\>' nextgroup=limitsLimit skipwhite
+
+hi def link limitsTodo    Todo
+hi def link limitsComment Comment
+hi def link limitsUser    Keyword
+hi def link limitsDefault Macro
+hi def link limitsLimit   Identifier
+hi def link limitsDeLimit Special
+hi def link limitsNumber  Number
+
+let b:current_syntax = "limits"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/loginaccess.vim
@@ -0,0 +1,96 @@
+" Vim syntax file
+" Language:         login.access(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword loginaccessTodo           contained TODO FIXME XXX NOTE
+
+syn region  loginaccessComment        display oneline start='^#' end='$'
+                                      \ contains=loginaccessTodo,@Spell
+
+syn match   loginaccessBegin          display '^'
+                                      \ nextgroup=loginaccessPermission,
+                                      \ loginaccessComment skipwhite
+
+syn match   loginaccessPermission     contained display '[^#]'
+                                      \ contains=loginaccessPermError
+                                      \ nextgroup=loginaccessUserSep
+
+syn match   loginaccessPermError      contained display '[^+-]'
+
+syn match   loginaccessUserSep        contained display ':'
+                                      \ nextgroup=loginaccessUsers,
+                                      \ loginaccessAllUsers,
+                                      \ loginaccessExceptUsers
+
+syn match   loginaccessUsers          contained display '[^, \t:]\+'
+                                      \ nextgroup=loginaccessUserIntSep,
+                                      \ loginaccessOriginSep
+
+syn match   loginaccessAllUsers       contained display '\<ALL\>'
+                                      \ nextgroup=loginaccessUserIntSep,
+                                      \ loginaccessOriginSep
+
+syn match   loginaccessLocalUsers     contained display '\<LOCAL\>'
+                                      \ nextgroup=loginaccessUserIntSep,
+                                      \ loginaccessOriginSep
+
+syn match   loginaccessExceptUsers    contained display '\<EXCEPT\>'
+                                      \ nextgroup=loginaccessUserIntSep,
+                                      \ loginaccessOriginSep
+
+syn match   loginaccessUserIntSep     contained display '[, \t]'
+                                      \ nextgroup=loginaccessUsers,
+                                      \ loginaccessAllUsers,
+                                      \ loginaccessExceptUsers
+
+syn match   loginaccessOriginSep      contained display ':'
+                                      \ nextgroup=loginaccessOrigins,
+                                      \ loginaccessAllOrigins,
+                                      \ loginaccessExceptOrigins
+
+syn match   loginaccessOrigins        contained display '[^, \t]\+'
+                                      \ nextgroup=loginaccessOriginIntSep
+
+syn match   loginaccessAllOrigins     contained display '\<ALL\>'
+                                      \ nextgroup=loginaccessOriginIntSep
+
+syn match   loginaccessLocalOrigins   contained display '\<LOCAL\>'
+                                      \ nextgroup=loginaccessOriginIntSep
+
+syn match   loginaccessExceptOrigins  contained display '\<EXCEPT\>'
+                                      \ nextgroup=loginaccessOriginIntSep
+
+syn match   loginaccessOriginIntSep   contained display '[, \t]'
+                                      \ nextgroup=loginaccessOrigins,
+                                      \ loginaccessAllOrigins,
+                                      \ loginaccessExceptOrigins
+
+hi def link loginaccessTodo           Todo
+hi def link loginaccessComment        Comment
+hi def link loginaccessPermission     Type
+hi def link loginaccessPermError      Error
+hi def link loginaccessUserSep        Delimiter
+hi def link loginaccessUsers          Identifier
+hi def link loginaccessAllUsers       Macro
+hi def link loginaccessLocalUsers     Macro
+hi def link loginaccessExceptUsers    Operator
+hi def link loginaccessUserIntSep     loginaccessUserSep
+hi def link loginaccessOriginSep      loginaccessUserSep
+hi def link loginaccessOrigins        Identifier
+hi def link loginaccessAllOrigins     Macro
+hi def link loginaccessLocalOrigins   Macro
+hi def link loginaccessExceptOrigins  loginaccessExceptUsers
+hi def link loginaccessOriginIntSep   loginaccessUserSep
+
+let b:current_syntax = "loginaccess"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/logindefs.vim
@@ -0,0 +1,94 @@
+" Vim syntax file
+" Language:         login.defs(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword logindefsTodo       contained TODO FIXME XXX NOTE
+
+syn region  logindefsComment    display oneline start='^\s*#' end='$'
+                                \ contains=logindefsTodo,@Spell
+
+syn match   logindefsString     contained '[[:graph:]]\+'
+
+syn match   logindefsPath       contained '[[:graph:]]\+'
+
+syn match   logindefsPaths      contained '[[:graph:]]\+'
+                                \ nextgroup=logindefsPathDelim
+
+syn match   logindefsPathDelim  contained ':' nextgroup=logindefsPaths
+
+syn keyword logindefsBoolean    contained yes no
+
+syn match   logindefsDecimal    contained '\<\d\+\>'
+
+syn match   logindefsOctal      contained display '\<0\o\+\>'
+                                \ contains=logindefsOctalZero
+syn match   logindefsOctalZero  contained display '\<0'
+syn match   logindefsOctalError contained display '\<0\o*[89]\d*\>'
+
+syn match   logindefsHex        contained display '\<0x\x\+\>'
+
+syn cluster logindefsNumber     contains=logindefsDecimal,logindefsOctal,
+                                \ logindefsOctalError,logindefsHex
+
+syn match   logindefsBegin      display '^'
+                                \ nextgroup=logindefsKeyword,logindefsComment
+                                \ skipwhite
+
+syn keyword logindefsKeyword    contained CHFN_AUTH CLOSE_SESSIONS CREATE_HOME
+                                \ DEFAULT_HOME FAILLOG_ENAB LASTLOG_ENAB
+                                \ LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB
+                                \ MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB
+                                \ PASS_ALWAYS_WARN PORTTIME_CHECKS_ENAB
+                                \ QUOTAS_ENAB SU_WHEEL_ONLY SYSLOG_SG_ENAB
+                                \ SYSLOG_SU_ENAB USERGROUPS_ENAB
+                                \ nextgroup=logindefsBoolean skipwhite
+
+syn keyword logindefsKeyword    contained CHFN_RESTRICT CONSOLE CONSOLE_GROUPS
+                                \ ENV_TZ ENV_HZ FAKE_SHELL SU_NAME LOGIN_STRING
+                                \ NOLOGIN_STR TTYGROUP USERDEL_CMD
+                                \ nextgroup=logindefsString skipwhite
+
+syn keyword logindefsKeyword    contained ENVIRON_FILE FTMP_FILE HUSHLOGIN_FILE
+                                \ ISSUE_FILE MAIL_DIR MAIL_FILE NOLOGINS_FILE
+                                \ NOLOGINS_FILE TTYTYPE_FILE QMAIL_DIR
+                                \ SULOG_FILE
+                                \ nextgroup=logindefsPath skipwhite
+
+syn keyword logindefsKeyword    contained CRACKLIB_DICTPATH ENV_PATH
+                                \ ENV_ROOTPATH ENV_SUPATH MOTD_FILE
+                                \ nextgroup=logindefsPaths skipwhite
+
+syn keyword logindefsKeyword    contained ERASECHAR FAIL_DELAY GETPASS_ASTERISKS
+                                \ GID_MAX GID_MIN KILLCHAR LOGIN_RETRIES
+                                \ LOGIN_TIMEOUT PASS_CHANGE_TRIES PASS_MAX_DAYS
+                                \ PASS_MAX_LEN PASS_MIN_DAYS PASS_MIN_LEN
+                                \ PASS_WARN_AGE TTYPERM UID_MAX UID_MIN ULIMIT
+                                \ UMASK
+                                \ nextgroup=@logindefsNumber skipwhite
+
+hi def link logindefsTodo       Todo
+hi def link logindefsComment    Comment
+hi def link logindefsString     String
+hi def link logindefsPath       String
+hi def link logindefsPaths      logindefsPath
+hi def link logindefsPathDelim  Delimiter
+hi def link logindefsBoolean    Boolean
+hi def link logindefsDecimal    Number
+hi def link logindefsOctal      Number
+hi def link logindefsOctalZero  PreProc
+hi def link logindefsOctalError Error
+hi def link logindefsHex        Number
+hi def link logindefsKeyword    Keyword
+
+let b:current_syntax = "logindefs"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/modconf.vim
+++ b/runtime/syntax/modconf.vim
@@ -1,66 +1,44 @@
 " Vim syntax file
-" Language:	    Linux modutils modules.conf File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/modconf/
-" Latest Revision:  2004-05-22
-" arch-tag:	    b7981bdb-daa3-41d1-94b5-a3d60b627916
+" Language:         modules.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" comments
-syn region  modconfComment  start="#" skip="\\$" end="$" contains=modconfTodo
+setlocal iskeyword=@,48-57,-
 
-" todo
-syn keyword modconfTodo	    FIXME TODO XXX NOTE
-
-" keywords and similar
-syn match   modconfBegin    "^" skipwhite nextgroup=modconfCommand,modconfComment
+let s:cpo_save = &cpo
+set cpo&vim
 
-syn match   modconfCommand  "\(add\s\+\)\=(above\|below\|probe\|probeall\}"
-syn region  modconfCommand  transparent matchgroup=modconfCommand start="\(add\s\+\)\=options" skip="\\$" end="$" contains=modconfModOpt
-syn keyword modconfCommand  define remove keep install insmod_opt else endif
-syn keyword modconfCommand  nextgroup=modconfPath skipwhite alias depfile generic_stringfile pcimapfile include isapnpmapfile usbmapfile parportmapfile ieee1394mapfile pnpbiosmapfile persistdir prune
-syn match   modconfCommand  "path\(\[\w\+\]\)\=" nextgroup=modconfPath skipwhite
-syn region  modconfCommand  transparent matchgroup=modconfCommand start="^\s*\(if\|elseif\)" skip="\\$" end="$" contains=modconfOp
-syn region  modconfCommand  transparent matchgroup=modconfCommand start="^\s*\(post\|pre\)-\(install\|remove\)" skip="\\$" end="$"
+syn keyword modconfTodo         FIXME TODO XXX NOTE
 
+syn region  modconfComment      start='#' skip='\\$' end='$'
+                                \ contains=modconfTodo,@Spell
 
-" expressions and similay
-syn match   modconfOp	    contained "\s-[fnk]\>"
-syn region  modconfPath	    contained start="\(=\@=\)\=/" skip="\\$" end="\\\@!\_s"
-syn match   modconfModOpt   contained "\<\w\+=\@="
+syn keyword modconfConditional  if else elseif endif
 
-if exists("modconf_minlines")
-    let b:modconf_minlines = modconf_minlines
-else
-    let b:modconf_minlines = 50
-endif
-exec "syn sync minlines=" . b:modconf_minlines
+syn keyword modconfPreProc      alias define include keep prune
+                                \ post-install post-remove pre-install
+                                \ pre-remove persistdir
+
+syn keyword modconfKeyword      add above below install options probe probeall
+                                \ remove
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_modconf_syn_inits")
-  if version < 508
-    let did_modconf_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn keyword modconfIdentifier   depfile insmod_opt path generic_stringfile
+                                \ pcimapfile isapnpmapfile usbmapfile
+                                \ parportmapfile ieee1394mapfile pnpbiosmapfile
+syn match   modconfIdentifier   'path\[[^]]\+\]'
 
-  HiLink modconfComment Comment
-  HiLink modconfTodo	Todo
-  HiLink modconfCommand Keyword
-  HiLink modconfPath	String
-  HiLink modconfOp	Identifier
-  HiLink modconfModOpt  Identifier
-  delcommand HiLink
-endif
+hi def link modconfTodo         Todo
+hi def link modconfComment      Comment
+hi def link modconfConditional  Conditional
+hi def link modconfPreProc      PreProc
+hi def link modconfKeyword      Keyword
+hi def link modconfIdentifier   Identifier
 
 let b:current_syntax = "modconf"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/mplayerconf.vim
+++ b/runtime/syntax/mplayerconf.vim
@@ -1,111 +1,84 @@
 " Vim syntax file
-" Language:	    mplayer(1) configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/mplayerconf/
-" Latest Revision:  2004-05-22
-" arch-tag:	    c20b9381-5858-4452-b866-54e2e1891229
+" Language:         mplayer(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk @,48-57,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,-
 
-" Todo
-syn keyword mplayerconfTodo	contained TODO FIXME XXX NOTE
+syn keyword mplayerconfTodo     contained TODO FIXME XXX NOTE
 
-" Comments
-syn region mplayerconfComment   display matchgroup=mplayerconfComment start='#' end='$' contains=mplayerconfTodo
+syn region mplayerconfComment   display matchgroup=mplayerconfComment
+                                \ start='#' end='$'
+                                \ contains=mplayerconfTodo,@Spell
 
-" PreProc
 syn keyword mplayerconfPreProc  include
 
-" Booleans
 syn keyword mplayerconfBoolean  yes no
 
-" Numbers
 syn match   mplayerconfNumber   '\<\d\+\>'
 
-" Options
-syn keyword mplayerconfOption	hardframedrop nomouseinput bandwidth dumpstream
-syn keyword mplayerconfOption	rtsp-stream-over-tcp tv overlapsub sub-bg-alpha
-syn keyword mplayerconfOption	subfont-outline unicode format vo edl cookies
-syn keyword mplayerconfOption	fps zrfd af-adv nosound audio-density
-syn keyword mplayerconfOption	passlogfile vobsuboutindex
-syn keyword mplayerconfOption   autoq autosync benchmark colorkey nocolorkey
-syn keyword mplayerconfOption   edlout enqueue fixed-vo framedrop h
-syn keyword mplayerconfOption   identify input lircconf list-options loop menu
-syn keyword mplayerconfOption   menu-cfg menu-root nojoystick nolirc
-syn keyword mplayerconfOption   nortc playlist quiet really-quiet shuffle skin
-syn keyword mplayerconfOption   slave softsleep speed sstep use-stdin aid alang
-syn keyword mplayerconfOption   audio-demuxer audiofile audiofile-cache
-syn keyword mplayerconfOption   cdrom-device cache cdda channels chapter
-syn keyword mplayerconfOption   cookies-file demuxer dumpaudio dumpfile
-syn keyword mplayerconfOption   dumpvideo dvbin dvd-device dvdangle forceidx
-syn keyword mplayerconfOption   frames hr-mp3-seek idx ipv4-only-proxy loadidx
-syn keyword mplayerconfOption   mc mf ni nobps noextbased passwd prefer-ipv4
-syn keyword mplayerconfOption   prefer-ipv6 rawaudio rawvideo
-syn keyword mplayerconfOption   saveidx sb srate ss tskeepbroken tsprog tsprobe
-syn keyword mplayerconfOption   user user-agent vid vivo dumpjacosub
-syn keyword mplayerconfOption   dumpmicrodvdsub dumpmpsub dumpsami dumpsrtsub
-syn keyword mplayerconfOption   dumpsub ffactor flip-hebrew font forcedsubsonly
-syn keyword mplayerconfOption   fribidi-charset ifo noautosub osdlevel
-syn keyword mplayerconfOption   sid slang spuaa spualign spugauss sub
-syn keyword mplayerconfOption   sub-bg-color sub-demuxer sub-fuzziness
-syn keyword mplayerconfOption   sub-no-text-pp subalign subcc subcp subdelay
-syn keyword mplayerconfOption   subfile subfont-autoscale subfont-blur
-syn keyword mplayerconfOption   subfont-encoding subfont-osd-scale
-syn keyword mplayerconfOption   subfont-text-scale subfps subpos subwidth
-syn keyword mplayerconfOption   utf8 vobsub vobsubid abs ao aofile aop delay
-syn keyword mplayerconfOption   mixer nowaveheader aa bpp brightness contrast
-syn keyword mplayerconfOption   dfbopts display double dr dxr2 fb fbmode
-syn keyword mplayerconfOption   fbmodeconfig forcexv fs fsmode-dontuse fstype
-syn keyword mplayerconfOption   geometry guiwid hue jpeg monitor-dotclock
-syn keyword mplayerconfOption   monitor-hfreq monitor-vfreq monitoraspect
-syn keyword mplayerconfOption   nograbpointer nokeepaspect noxv ontop panscan
-syn keyword mplayerconfOption   rootwin saturation screenw stop-xscreensaver vm
-syn keyword mplayerconfOption   vsync wid xineramascreen z zrbw zrcrop zrdev
-syn keyword mplayerconfOption   zrhelp zrnorm zrquality zrvdec zrxdoff ac af
-syn keyword mplayerconfOption   afm aspect flip lavdopts noaspect noslices
-syn keyword mplayerconfOption   novideo oldpp pp pphelp ssf stereo sws vc vfm x
-syn keyword mplayerconfOption   xvidopts xy y zoom vf vop audio-delay
-syn keyword mplayerconfOption   audio-preload endpos ffourcc include info
-syn keyword mplayerconfOption   noautoexpand noskip o oac of ofps ovc
-syn keyword mplayerconfOption   skiplimit v vobsubout vobsuboutid
-syn keyword mplayerconfOption   lameopts lavcopts nuvopts xvidencopts
+syn keyword mplayerconfOption   hardframedrop nomouseinput bandwidth dumpstream
+                                \ rtsp-stream-over-tcp tv overlapsub
+                                \ sub-bg-alpha subfont-outline unicode format
+                                \ vo edl cookies fps zrfd af-adv nosound
+                                \ audio-density passlogfile vobsuboutindex autoq
+                                \ autosync benchmark colorkey nocolorkey edlout
+                                \ enqueue fixed-vo framedrop h identify input
+                                \ lircconf list-options loop menu menu-cfg
+                                \ menu-root nojoystick nolirc nortc playlist
+                                \ quiet really-quiet shuffle skin slave
+                                \ softsleep speed sstep use-stdin aid alang
+                                \ audio-demuxer audiofile audiofile-cache
+                                \ cdrom-device cache cdda channels chapter
+                                \ cookies-file demuxer dumpaudio dumpfile
+                                \ dumpvideo dvbin dvd-device dvdangle forceidx
+                                \ frames hr-mp3-seek idx ipv4-only-proxy
+                                \ loadidx mc mf ni nobps noextbased
+                                \ passwd prefer-ipv4 prefer-ipv6 rawaudio
+                                \ rawvideo saveidx sb srate ss tskeepbroken
+                                \ tsprog tsprobe user user-agent vid vivo
+                                \ dumpjacosub dumpmicrodvdsub dumpmpsub dumpsami
+                                \ dumpsrtsub dumpsub ffactor flip-hebrew font
+                                \ forcedsubsonly fribidi-charset ifo noautosub
+                                \ osdlevel sid slang spuaa spualign spugauss
+                                \ sub sub-bg-color sub-demuxer sub-fuzziness
+                                \ sub-no-text-pp subalign subcc subcp subdelay
+                                \ subfile subfont-autoscale subfont-blur
+                                \ subfont-encoding subfont-osd-scale
+                                \ subfont-text-scale subfps subpos subwidth
+                                \ utf8 vobsub vobsubid abs ao aofile aop delay
+                                \ mixer nowaveheader aa bpp brightness contrast
+                                \ dfbopts display double dr dxr2 fb fbmode
+                                \ fbmodeconfig forcexv fs fsmode-dontuse fstype
+                                \ geometry guiwid hue jpeg monitor-dotclock
+                                \ monitor-hfreq monitor-vfreq monitoraspect
+                                \ nograbpointer nokeepaspect noxv ontop panscan
+                                \ rootwin saturation screenw stop-xscreensaver
+                                \ vm vsync wid xineramascreen z zrbw zrcrop
+                                \ zrdev zrhelp zrnorm zrquality zrvdec zrxdoff
+                                \ ac af afm aspect flip lavdopts noaspect
+                                \ noslices novideo oldpp pp pphelp ssf stereo
+                                \ sws vc vfm x xvidopts xy y zoom vf vop
+                                \ audio-delay audio-preload endpos ffourcc
+                                \ include info noautoexpand noskip o oac of
+                                \ ofps ovc skiplimit v vobsubout vobsuboutid
+                                \ lameopts lavcopts nuvopts xvidencopts
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_mplayer_syn_inits")
-  if version < 508
-    let did_mplayer_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink mplayerconfTodo    Todo
-  HiLink mplayerconfComment Comment
-  HiLink mplayerconfPreProc PreProc
-  HiLink mplayerconfBoolean Boolean
-  HiLink mplayerconfNumber  Number
-  HiLink mplayerconfOption  Keyword
-
-  delcommand HiLink
-endif
+hi def link mplayerconfTodo     Todo
+hi def link mplayerconfComment  Comment
+hi def link mplayerconfPreProc  PreProc
+hi def link mplayerconfBoolean  Boolean
+hi def link mplayerconfNumber   Number
+hi def link mplayerconfOption   Keyword
 
 let b:current_syntax = "mplayerconf"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/netrc.vim
+++ b/runtime/syntax/netrc.vim
@@ -1,55 +1,51 @@
 " Vim syntax file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/
-" Latest Revision:  2004-12-16
-" arch-tag:	    4f6ecb37-d10c-4eca-add0-77991559414a
+" Language:         netrc(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Keywords
-syn keyword netrcKeyword      machine password nextgroup=netrcName skipwhite skipnl
-syn keyword netrcKeyword      login nextgroup=netrcName,netrcSpecial skipwhite skipnl
-syn keyword netrcKeyword      default
-syn keyword netrcKeyword      macdef nextgroup=netrcInit,netrcMacroName skipwhite skipnl
-syn region  netrcMacro	      contained start='.' end='^$'
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword netrcKeyword    machine nextgroup=netrcMachine skipwhite skipnl
+syn keyword netrcKeyword    login nextgroup=netrcLogin,netrcSpecial
+                            \ skipwhite skipnl
+syn keyword netrcKeyword    password nextgroup=netrcPassword skipwhite skipnl
+syn keyword netrcKeyword    default
+syn keyword netrcKeyword    macdef nextgroup=netrcInit,netrcMacroName
+                            \ skipwhite skipnl
+syn region  netrcMacro      contained start='.' end='^$'
 
-" Names
-syn match   netrcName	      contained display '\S\+'
-syn match   netrcName	      contained display '"[^\\"]*\(\\.[^\\"]*\)*'
-syn match   netrcMacroName    contained display '\S\+' nextgroup=netrcMacro skipwhite skipnl
-syn match   netrcMacroName    contained display '"[^\\"]*\(\\.[^\\"]*\)*' nextgroup=netrcMacro skipwhite skipnl
+syn match   netrcMachine    contained display '\S\+'
+syn match   netrcMachine    contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+syn match   netrcLogin      contained display '\S\+'
+syn match   netrcLogin      contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+syn match   netrcPassword   contained display '\S\+'
+syn match   netrcPassword   contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+syn match   netrcMacroName  contained display '\S\+' nextgroup=netrcMacro
+                            \ skipwhite skipnl
+syn match   netrcMacroName  contained display '"[^\\"]*\(\\.[^\\"]*\)*"'
+                            \ nextgroup=netrcMacro skipwhite skipnl
 
-" Special
-syn keyword netrcSpecial      contained anonymous
-syn match   netrcInit	      contained '\<init$' nextgroup=netrcMacro skipwhite skipnl
+syn keyword netrcSpecial    contained anonymous
+syn match   netrcInit       contained '\<init$' nextgroup=netrcMacro
+                            \ skipwhite skipnl
 
 syn sync fromstart
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_netrc_syn_inits")
-  if version < 508
-    let did_netrc_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink netrcKeyword	Keyword
-  HiLink netrcMacro	PreProc
-  HiLink netrcName	String
-  HiLink netrcMacroName	String
-  HiLink netrcSpecial	Special
-  HiLink netrcInit	Special
-
-  delcommand HiLink
-endif
+hi def link netrcKeyword    Keyword
+hi def link netrcMacro      PreProc
+hi def link netrcMachine    Identifier
+hi def link netrcLogin      String
+hi def link netrcPassword   String
+hi def link netrcMacroName  String
+hi def link netrcSpecial    Special
+hi def link netrcInit       Special
 
 let b:current_syntax = "netrc"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/pamconf.vim
@@ -0,0 +1,118 @@
+" Vim syntax file
+" Language:         pam(8) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   pamconfService          '^[[:graph:]]\+'
+                                    \ nextgroup=pamconfType,
+                                    \ pamconfServiceLineCont skipwhite
+
+syn keyword pamconfTodo             contained TODO FIXME XXX NOTE
+
+syn region  pamconfComment          display oneline start='#' end='$'
+                                    \ contains=pamconfTodo,@Spell
+
+syn match   pamconfServiceLineCont  contained '\\$'
+                                    \ nextgroup=pamconfType,
+                                    \ pamconfServiceLineCont skipwhite skipnl
+
+syn keyword pamconfType             account auth password session
+                                    \ nextgroup=pamconfControl,
+                                    \ pamconfTypeLineCont skipwhite
+
+syn match   pamconfTypeLineCont     contained '\\$'
+                                    \ nextgroup=pamconfControl,
+                                    \ pamconfTypeLineCont skipwhite skipnl
+
+syn keyword pamconfControl          contained requisite required sufficient
+                                    \ optional
+                                    \ nextgroup=pamconfMPath,
+                                    \ pamconfControlLineContH skipwhite
+
+syn match   pamconfControlBegin     '\[' nextgroup=pamconfControlValues,
+                                    \ pamconfControlLineCont skipwhite
+
+syn match   pamconfControlLineCont  contained '\\$'
+                                    \ nextgroup=pamconfControlValues,
+                                    \ pamconfControlLineCont skipwhite skipnl
+
+syn keyword pamconfControlValues    contained success open_err symbol_err
+                                    \ service_err system_err buf_err
+                                    \ perm_denied auth_err cred_insufficient
+                                    \ authinfo_unavail user_unknown maxtries
+                                    \ new_authtok_reqd acct_expired session_err
+                                    \ cred_unavail cred_expired cred_err
+                                    \ no_module_data conv_err authtok_err
+                                    \ authtok_recover_err authtok_lock_busy
+                                    \ authtok_disable_aging try_again ignore
+                                    \ abort authtok_expired module_unknown
+                                    \ bad_item and default
+                                    \ nextgroup=pamconfControlValueEq
+
+syn match   pamconfControlValueEq   contained '=' nextgroup=pamconfControlAction
+
+syn match   pamconfControlActionN   contained '\d\+\>'
+                                    \ nextgroup=pamconfControlValues,
+                                    \ pamconfControlLineCont,pamconfControlEnd
+                                    \ skipwhite
+syn keyword pamconfControlAction    contained ignore bad die ok done reset
+                                    \ nextgroup=pamconfControlValues,
+                                    \ pamconfControlLineCont,pamconfControlEnd
+                                    \ skipwhite
+
+syn match   pamconfControlEnd       contained '\]'
+                                    \ nextgroup=pamconfMPath,
+                                    \ pamconfControlLineContH skipwhite
+
+syn match   pamconfControlLineContH contained '\\$'
+                                    \ nextgroup=pamconfMPath,
+                                    \ pamconfControlLineContH skipwhite skipnl
+
+syn match   pamconfMPath            contained '\S\+'
+                                    \ nextgroup=pamconfMPathLineCont,
+                                    \ pamconfArgs skipwhite
+
+syn match   pamconfArgs             contained '\S\+'
+                                    \ nextgroup=pamconfArgsLineCont,
+                                    \ pamconfArgs skipwhite
+
+syn match   pamconfMPathLineCont    contained '\\$'
+                                    \ nextgroup=pamconfMPathLineCont,
+                                    \ pamconfArgs skipwhite skipnl
+
+syn match   pamconfArgsLineCont     contained '\\$'
+                                    \ nextgroup=pamconfArgsLineCont,
+                                    \ pamconfArgs skipwhite skipnl
+
+hi def link pamconfTodo             Todo
+hi def link pamconfComment          Comment
+hi def link pamconfService          Statement
+hi def link pamconfServiceLineCont  Special
+hi def link pamconfType             Type
+hi def link pamconfTypeLineCont     pamconfServiceLineCont
+hi def link pamconfControl          Macro
+hi def link pamconfControlBegin     Delimiter
+hi def link pamconfControlLineContH pamconfServiceLineCont
+hi def link pamconfControlLineCont  pamconfServiceLineCont
+hi def link pamconfControlValues    Identifier
+hi def link pamconfControlValueEq   Operator
+hi def link pamconfControlActionN   Number
+hi def link pamconfControlAction    Identifier
+hi def link pamconfControlEnd       Delimiter
+hi def link pamconfMPath            String
+hi def link pamconfMPathLineCont    pamconfServiceLineCont
+hi def link pamconfArgs             Normal
+hi def link pamconfArgsLineCont     pamconfServiceLineCont
+
+let b:current_syntax = "pamconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/pinfo.vim
+++ b/runtime/syntax/pinfo.vim
@@ -1,134 +1,111 @@
 " Vim syntax file
-" Language:	    pinfo(1) configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/
-" Latest Revision:  2004-05-22
-" arch-tag:	    da2cfa1c-0350-45dc-b2d2-2bf3915bd0a2
+" Language:         pinfo(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-28
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk @,48-57,_,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
 
-" Ignore Case
+setlocal iskeyword=@,48-57,_,-
+
 syn case ignore
 
-" Todo
-syn keyword pinfoTodo	contained FIXME TODO XXX NOTE
+syn keyword pinfoTodo             contained FIXME TODO XXX NOTE
 
-" Comments
-syn region  pinfoComment    start='^#' end='$' contains=pinfoTodo
+syn region  pinfoComment          start='^#' end='$' contains=pinfoTodo,@Spell
 
-" Keywords
-syn keyword pinfoOptions    MANUAL CUT-MAN-HEADERS CUT-EMPTY-MAN-LINES
-syn keyword pinfoOptions    RAW-FILENAME APROPOS DONT-HANDLE-WITHOUT-TAG-TABLE
-syn keyword pinfoOptions    HTTPVIEWER FTPVIEWER MAILEDITOR PRINTUTILITY
-syn keyword pinfoOptions    MANLINKS INFOPATH MAN-OPTIONS STDERR-REDIRECTION
-syn keyword pinfoOptions    LONG-MANUAL-LINKS FILTER-0xB7 QUIT-CONFIRMATION
-syn keyword pinfoOptions    QUIT-CONFIRM-DEFAULT CLEAR-SCREEN-AT-EXIT
-syn keyword pinfoOptions    CALL-READLINE-HISTORY HIGHLIGHTREGEXP SAFE-USER
-syn keyword pinfoOptions    SAFE-GROUP
+syn keyword pinfoOptions          MANUAL CUT-MAN-HEADERS CUT-EMPTY-MAN-LINES
+                                  \ RAW-FILENAME APROPOS
+                                  \ DONT-HANDLE-WITHOUT-TAG-TABLE HTTPVIEWER
+                                  \ FTPVIEWER MAILEDITOR PRINTUTILITY MANLINKS
+                                  \ INFOPATH MAN-OPTIONS STDERR-REDIRECTION
+                                  \ LONG-MANUAL-LINKS FILTER-0xB7
+                                  \ QUIT-CONFIRMATION QUIT-CONFIRM-DEFAULT
+                                  \ CLEAR-SCREEN-AT-EXIT CALL-READLINE-HISTORY
+                                  \ HIGHLIGHTREGEXP SAFE-USER SAFE-GROUP
 
-" Colors
-syn keyword pinfoColors	    COL_NORMAL COL_TOPLINE COL_BOTTOMLINE COL_MENU
-syn keyword pinfoColors	    COL_MENUSELECTED COL_NOTE COL_NOTESELECTED COL_URL
-syn keyword pinfoColors	    COL_URLSELECTED COL_INFOHIGHLIGHT COL_MANUALBOLD
-syn keyword pinfoColors	    COL_MANUALITALIC
-syn keyword pinfoColorDefault	COLOR_DEFAULT
-syn keyword pinfoColorBold	BOLD
-syn keyword pinfoColorNoBold	NO_BOLD
-syn keyword pinfoColorBlink	BLINK
-syn keyword pinfoColorNoBlink	NO_BLINK
-syn keyword pinfoColorBlack	COLOR_BLACK
-syn keyword pinfoColorRed	COLOR_RED
-syn keyword pinfoColorGreen	COLOR_GREEN
-syn keyword pinfoColorYellow	COLOR_YELLOW
-syn keyword pinfoColorBlue	COLOR_BLUE
-syn keyword pinfoColorMagenta	COLOR_MAGENTA
-syn keyword pinfoColorCyan	COLOR_CYAN
-syn keyword pinfoColorWhite	COLOR_WHITE
+syn keyword pinfoColors           COL_NORMAL COL_TOPLINE COL_BOTTOMLINE
+                                  \ COL_MENU COL_MENUSELECTED COL_NOTE
+                                  \ COL_NOTESELECTED COL_URL COL_URLSELECTED
+                                  \ COL_INFOHIGHLIGHT COL_MANUALBOLD
+                                  \ COL_MANUALITALIC COL_SEARCHHIGHLIGHT
 
-" Keybindings
-syn keyword pinfoKeys	KEY_TOTALSEARCH_1 KEY_TOTALSEARCH_2 KEY_SEARCH_1
-syn keyword pinfoKeys	KEY_SEARCH_2 KEY_SEARCH_AGAIN_1 KEY_SEARCH_AGAIN_2
-syn keyword pinfoKeys	KEY_GOTO_1 KEY_GOTO_2 KEY_PREVNODE_1 KEY_PREVNODE_2
-syn keyword pinfoKeys	KEY_NEXTNODE_1 KEY_NEXTNODE_2 KEY_UP_1 KEY_UP_2
-syn keyword pinfoKeys	KEY_END_1 KEY_END_2 KEY_PGDN_1 KEY_PGDN_2
-syn keyword pinfoKeys	KEY_PGDN_AUTO_1 KEY_PGDN_AUTO_2 KEY_HOME_1 KEY_HOME_2
-syn keyword pinfoKeys	KEY_PGUP_1 KEY_PGUP_2 KEY_PGUP_AUTO_1 KEY_PGUP_AUTO_2
-syn keyword pinfoKeys	KEY_DOWN_1 KEY_DOWN_2 KEY_TOP_1 KEY_TOP_2 KEY_BACK_1
-syn keyword pinfoKeys	KEY_BACK_2 KEY_FOLLOWLINK_1 KEY_FOLLOWLINK_2
-syn keyword pinfoKeys	KEY_REFRESH_1 KEY_REFRESH_2 KEY_SHELLFEED_1
-syn keyword pinfoKeys	KEY_SHELLFEED_2 KEY_QUIT_1 KEY_QUIT_2 KEY_GOLINE_1
-syn keyword pinfoKeys	KEY_GOLINE_2 KEY_PRINT_1 KEY_PRINT_2
-syn keyword pinfoKeys	KEY_DIRPAGE_1 KEY_DIRPAGE_2
+syn keyword pinfoColorDefault     COLOR_DEFAULT
+syn keyword pinfoColorBold        BOLD
+syn keyword pinfoColorNoBold      NO_BOLD
+syn keyword pinfoColorBlink       BLINK
+syn keyword pinfoColorNoBlink     NO_BLINK
+syn keyword pinfoColorBlack       COLOR_BLACK
+syn keyword pinfoColorRed         COLOR_RED
+syn keyword pinfoColorGreen       COLOR_GREEN
+syn keyword pinfoColorYellow      COLOR_YELLOW
+syn keyword pinfoColorBlue        COLOR_BLUE
+syn keyword pinfoColorMagenta     COLOR_MAGENTA
+syn keyword pinfoColorCyan        COLOR_CYAN
+syn keyword pinfoColorWhite       COLOR_WHITE
 
-" Special Keys
-syn keyword pinfoSpecialKeys	KEY_BREAK KEY_DOWN KEY_UP KEY_LEFT KEY_RIGHT
-syn keyword pinfoSpecialKeys	KEY_DOWN KEY_HOME KEY_BACKSPACE KEY_NPAGE
-syn keyword pinfoSpecialKeys	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=+'+ contains=pinfoSimpleKeyEscape
-syn match   pinfoSimpleKeyEscape    +\\[\\nt']+
-syn match   pinfoKeycode    '\<\d\+\>'
-
-" Constants
-syn keyword pinfoConstants  TRUE FALSE YES NO
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_pinfo_syn_inits")
-  if version < 508
-    let did_pinfo_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-    command -nargs=+ HiDef hi <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-    command -nargs=+ HiDef hi def <args>
-  endif
+syn keyword pinfoKeys             KEY_TOTALSEARCH_1 KEY_TOTALSEARCH_2
+                                  \ KEY_SEARCH_1 KEY_SEARCH_2
+                                  \ KEY_SEARCH_AGAIN_1 KEY_SEARCH_AGAIN_2
+                                  \ KEY_GOTO_1 KEY_GOTO_2 KEY_PREVNODE_1
+                                  \ KEY_PREVNODE_2 KEY_NEXTNODE_1
+                                  \ KEY_NEXTNODE_2 KEY_UP_1 KEY_UP_2 KEY_END_1
+                                  \ KEY_END_2 KEY_PGDN_1 KEY_PGDN_2
+                                  \ KEY_PGDN_AUTO_1 KEY_PGDN_AUTO_2 KEY_HOME_1
+                                  \ KEY_HOME_2 KEY_PGUP_1 KEY_PGUP_2
+                                  \ KEY_PGUP_AUTO_1 KEY_PGUP_AUTO_2 KEY_DOWN_1
+                                  \ KEY_DOWN_2 KEY_TOP_1 KEY_TOP_2 KEY_BACK_1
+                                  \ KEY_BACK_2 KEY_FOLLOWLINK_1
+                                  \ KEY_FOLLOWLINK_2 KEY_REFRESH_1
+                                  \ KEY_REFRESH_2 KEY_SHELLFEED_1
+                                  \ KEY_SHELLFEED_2 KEY_QUIT_1 KEY_QUIT_2
+                                  \ KEY_GOLINE_1 KEY_GOLINE_2 KEY_PRINT_1
+                                  \ KEY_PRINT_2 KEY_DIRPAGE_1 KEY_DIRPAGE_2
+                                  \ KEY_TWODOWN_1 KEY_TWODOWN_2 KEY_TWOUP_1
+                                  \ KEY_TWOUP_2
 
-  HiLink pinfoTodo		Todo
-  HiLink pinfoComment		Comment
-  HiLink pinfoOptions		Keyword
-  HiLink pinfoColors		Keyword
-  HiLink pinfoColorDefault	Normal
-  HiDef pinfoColorBold		cterm=bold
-  HiDef pinfoColorNoBold	cterm=none
-  " we can't access the blink attribute from Vim atm
-  HiDef pinfoColorBlink		cterm=inverse
-  HiDef pinfoColorNoBlink	cterm=none
-  HiDef pinfoColorBlack		ctermfg=Black	    guifg=Black
-  HiDef pinfoColorRed		ctermfg=DarkRed	    guifg=DarkRed
-  HiDef pinfoColorGreen		ctermfg=DarkGreen   guifg=DarkGreen
-  HiDef pinfoColorYellow	ctermfg=DarkYellow  guifg=DarkYellow
-  HiDef pinfoColorBlue		ctermfg=DarkBlue    guifg=DarkBlue
-  HiDef pinfoColorMagenta	ctermfg=DarkMagenta guifg=DarkMagenta
-  HiDef pinfoColorCyan		ctermfg=DarkCyan    guifg=DarkCyan
-  HiDef pinfoColorWhite		ctermfg=LightGray   guifg=LightGray
-  HiLink pinfoKeys		Keyword
-  HiLink pinfoSpecialKeys	SpecialChar
-  HiLink pinfoSimpleKey		String
-  HiLink pinfoSimpleKeyEscape	SpecialChar
-  HiLink pinfoKeycode		Number
-  HiLink pinfoConstants	Constant
+syn keyword pinfoSpecialKeys      KEY_BREAK KEY_DOWN KEY_UP KEY_LEFT KEY_RIGHT
+                                  \ KEY_DOWN KEY_HOME KEY_BACKSPACE KEY_NPAGE
+                                  \ 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=+'+
+                                  \ contains=pinfoSimpleKeyEscape
+syn match   pinfoSimpleKeyEscape  +\\[\\nt']+
+syn match   pinfoKeycode          '\<\d\+\>'
+
+syn keyword pinfoConstants        TRUE FALSE YES NO
 
-  delcommand HiLink
-  delcommand HiDef
-endif
+hi def link pinfoTodo             Todo
+hi def link pinfoComment          Comment
+hi def link pinfoOptions          Keyword
+hi def link pinfoColors           Keyword
+hi def link pinfoColorDefault     Normal
+hi def link pinfoSpecialKeys      SpecialChar
+hi def link pinfoSimpleKey        String
+hi def link pinfoSimpleKeyEscape  SpecialChar
+hi def link pinfoKeycode          Number
+hi def link pinfoConstants        Constant
+hi def link pinfoKeys             Keyword
+hi def      pinfoColorBold        cterm=bold
+hi def      pinfoColorNoBold      cterm=none
+hi def      pinfoColorBlink       cterm=inverse
+hi def      pinfoColorNoBlink     cterm=none
+hi def      pinfoColorBlack       ctermfg=Black       guifg=Black
+hi def      pinfoColorRed         ctermfg=DarkRed     guifg=DarkRed
+hi def      pinfoColorGreen       ctermfg=DarkGreen   guifg=DarkGreen
+hi def      pinfoColorYellow      ctermfg=DarkYellow  guifg=DarkYellow
+hi def      pinfoColorBlue        ctermfg=DarkBlue    guifg=DarkBlue
+hi def      pinfoColorMagenta     ctermfg=DarkMagenta guifg=DarkMagenta
+hi def      pinfoColorCyan        ctermfg=DarkCyan    guifg=DarkCyan
+hi def      pinfoColorWhite       ctermfg=LightGray   guifg=LightGray
 
 let b:current_syntax = "pinfo"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/quake.vim
+++ b/runtime/syntax/quake.vim
@@ -1,162 +1,134 @@
 " Vim syntax file
-" Language:	    Quake[1-3] Configuration File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/quake/
-" Latest Revision:  2004-05-22
-" arch-tag:	    a95793d7-cab3-4544-a78c-1cea47b5870b
-" Variables: 	quake_is_quake1 - the syntax is to be used for quake1 configs
-" 		quake_is_quake2 - the syntax is to be used for quake2 configs
-" 		quake_is_quake3 - the syntax is to be used for quake3 configs
+" Language:         Quake[1-3] configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+"               quake_is_quake2 - the syntax is to be used for quake2 configs
+"               quake_is_quake3 - the syntax is to be used for quake3 configs
 
-
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk 48-57,65-90,97-122,+,-,_
-delcommand SetIsk
+setlocal iskeyword=@,48-57,+,-,_
+
+syn keyword quakeTodo         contained TODO FIXME XXX NOTE
 
-
-" comments
-syn region	quakeComment	display oneline start="//" end="$" end=";" keepend contains=quakeTodo
+syn region  quakeComment      display oneline start='//' end='$' end=';'
+                              \ keepend contains=quakeTodo,@Spell
 
-" todo
-syn keyword	quakeTodo	contained TODO FIXME XXX NOTE
+syn region  quakeString       display oneline start=+"+ skip=+\\\\\|\\"+
+                              \ end=+"\|$+ contains=quakeNumbers,@quakeCommands
 
-" string (can contain numbers (which should be hilighted as such)
-syn region	quakeString	display oneline start=+"+ skip=+\\"+ end=+"\|$+ contains=quakeNumbers,@quakeCommands
-
-" number
 syn case ignore
-syn match	quakeNumbers	display transparent "\<\d\|\.\d" contains=quakeNumber,quakeFloat,quakeOctalError,quakeOctal
-syn match	quakeNumber	display contained "\d\+\>"
-" Flag the first zero of an octal number as something special
-syn match	quakeOctal	display contained "0\o\+\>" contains=quakeOctalZero
-syn match	quakeOctalZero	display contained "\<0"
-" floating point number, with dot
-syn match	quakeFloat	display contained "\d\+\.\d*"
-" floating point number, starting with a dot
-syn match	quakeFloat	display contained "\.\d\+\>"
-" flag an octal number with wrong digits
-syn match	quakeOctalError	display contained "0\o*[89]\d*"
-syn case match
+
+syn match quakeNumbers        display transparent '\<\d\|\.\d'
+                              \ contains=quakeNumber,quakeFloat,
+                              \ quakeOctalError,quakeOctal
+syn match quakeNumber         contained display '\d\+\>'
+syn match quakeOctal          contained display '0\o\+\>'
+                              \ contains=quakeOctalZero
+syn match quakeOctalZero      contained display '\<0'
+syn match quakeFloat          contained display '\d\+\.\d*'
+syn match quakeFloat          contained display '\.\d\+\>'
+syn match quakeOctalError     contained display '0\o*[89]\d*'
+
+syn cluster quakeCommands     contains=quakeCommand,quake1Command,
+                              \ quake12Command,Quake2Command,Quake23Command,
+                              \ Quake3Command
 
-" commands
-syn case ignore
-syn cluster	quakeCommands	contains=quakeCommand,quake1Command,quake12Command,Quake2Command,Quake23Command,Quake3Command
-
-syn keyword	quakeCommand	+attack +back +forward +left +lookdown +lookup
-syn keyword	quakeCommand	+mlook +movedown +moveleft +moveright +moveup
-syn keyword	quakeCommand	+right +speed +strafe -attack -back bind
-syn keyword	quakeCommand	bindlist centerview clear connect cvarlist dir
-syn keyword	quakeCommand	disconnect dumpuser echo error exec -forward
-syn keyword	quakeCommand	god heartbeat joy_advancedupdate kick kill
-syn keyword	quakeCommand	killserver -left -lookdown -lookup map
-syn keyword	quakeCommand	messagemode messagemode2 -mlook modellist
-syn keyword	quakeCommand	-movedown -moveleft -moveright -moveup play
-syn keyword	quakeCommand	quit rcon reconnect record -right say say_team
-syn keyword	quakeCommand	screenshot serverinfo serverrecord serverstop
-syn keyword	quakeCommand	set sizedown sizeup snd_restart soundinfo
-syn keyword	quakeCommand	soundlist -speed spmap status -strafe stopsound
-syn keyword	quakeCommand	toggleconsole unbind unbindall userinfo pause
-syn keyword	quakeCommand	vid_restart viewpos wait weapnext weapprev
+syn keyword quakeCommand      +attack +back +forward +left +lookdown +lookup
+syn keyword quakeCommand      +mlook +movedown +moveleft +moveright +moveup
+syn keyword quakeCommand      +right +speed +strafe -attack -back bind
+syn keyword quakeCommand      bindlist centerview clear connect cvarlist dir
+syn keyword quakeCommand      disconnect dumpuser echo error exec -forward
+syn keyword quakeCommand      god heartbeat joy_advancedupdate kick kill
+syn keyword quakeCommand      killserver -left -lookdown -lookup map
+syn keyword quakeCommand      messagemode messagemode2 -mlook modellist
+syn keyword quakeCommand      -movedown -moveleft -moveright -moveup play
+syn keyword quakeCommand      quit rcon reconnect record -right say say_team
+syn keyword quakeCommand      screenshot serverinfo serverrecord serverstop
+syn keyword quakeCommand      set sizedown sizeup snd_restart soundinfo
+syn keyword quakeCommand      soundlist -speed spmap status -strafe stopsound
+syn keyword quakeCommand      toggleconsole unbind unbindall userinfo pause
+syn keyword quakeCommand      vid_restart viewpos wait weapnext weapprev
 
 if exists("quake_is_quake1")
-syn keyword	quake1Command	sv
+  syn keyword quake1Command   sv
 endif
 
 if exists("quake_is_quake1") || exists("quake_is_quake2")
-syn keyword	quake12Command	+klook alias cd impulse link load save
-syn keyword	quake12Command	timerefresh changing info loading
-syn keyword	quake12Command	pingservers playerlist players score
+  syn keyword quake12Command  +klook alias cd impulse link load save
+  syn keyword quake12Command  timerefresh changing info loading
+  syn keyword quake12Command  pingservers playerlist players score
 endif
 
 if exists("quake_is_quake2")
-syn keyword	quake2Command	cmd demomap +use condump download drop gamemap
-syn keyword	quake2Command	give gun_model setmaster sky sv_maplist wave
-syn keyword	quake2Command	cmdlist gameversiona gun_next gun_prev invdrop
-syn keyword	quake2Command	inven invnext invnextp invnextw invprev
-syn keyword	quake2Command	invprevp invprevw invuse menu_addressbook
-syn keyword	quake2Command	menu_credits menu_dmoptions menu_game
-syn keyword	quake2Command	menu_joinserver menu_keys menu_loadgame
-syn keyword	quake2Command	menu_main menu_multiplayer menu_options
-syn keyword	quake2Command	menu_playerconfig menu_quit menu_savegame
-syn keyword	quake2Command	menu_startserver menu_video
-syn keyword	quake2Command	notarget precache prog togglechat vid_front
-syn keyword	quake2Command	weaplast
-endif
-
-if exists("quake_is_quake2") || exists("quake_is_quake3")
-syn keyword	quake23Command	imagelist modellist path z_stats
-endif
-
-if exists("quake_is_quake3")
-syn keyword	quake3Command	+info +scores +zoom addbot arena banClient
-syn keyword	quake3Command	banUser callteamvote callvote changeVectors
-syn keyword	quake3Command	cinematic clientinfo clientkick cmd cmdlist
-syn keyword	quake3Command	condump configstrings crash cvar_restart devmap
-syn keyword	quake3Command	fdir follow freeze fs_openedList Fs_pureList
-syn keyword	quake3Command	Fs_referencedList gfxinfo globalservers
-syn keyword	quake3Command	hunk_stats in_restart -info levelshot
-syn keyword	quake3Command	loaddeferred localservers map_restart mem_info
-syn keyword	quake3Command	messagemode3 messagemode4 midiinfo model music
-syn keyword	quake3Command	modelist net_restart nextframe nextskin noclip
-syn keyword	quake3Command	notarget ping prevframe prevskin reset restart
-syn keyword	quake3Command	s_disable_a3d s_enable_a3d s_info s_list s_stop
-syn keyword	quake3Command	scanservers -scores screenshotJPEG sectorlist
-syn keyword	quake3Command	serverstatus seta setenv sets setu setviewpos
-syn keyword	quake3Command	shaderlist showip skinlist spdevmap startOribt
-syn keyword	quake3Command	stats stopdemo stoprecord systeminfo togglemenu
-syn keyword	quake3Command	tcmd team teamtask teamvote tell tell_attacker
-syn keyword	quake3Command	tell_target testgun testmodel testshader toggle
-syn keyword	quake3Command	touchFile vminfo vmprofile vmtest vosay
-syn keyword	quake3Command	vosay_team vote votell vsay vsay_team vstr
-syn keyword	quake3Command	vtaunt vtell vtell_attacker vtell_target weapon
-syn keyword	quake3Command	writeconfig -zoom
-syn match	quake3Command	display "\<[+-]button\(\d\|1[0-4]\)\>"
+  syn keyword quake2Command   cmd demomap +use condump download drop gamemap
+  syn keyword quake2Command   give gun_model setmaster sky sv_maplist wave
+  syn keyword quake2Command   cmdlist gameversiona gun_next gun_prev invdrop
+  syn keyword quake2Command   inven invnext invnextp invnextw invprev
+  syn keyword quake2Command   invprevp invprevw invuse menu_addressbook
+  syn keyword quake2Command   menu_credits menu_dmoptions menu_game
+  syn keyword quake2Command   menu_joinserver menu_keys menu_loadgame
+  syn keyword quake2Command   menu_main menu_multiplayer menu_options
+  syn keyword quake2Command   menu_playerconfig menu_quit menu_savegame
+  syn keyword quake2Command   menu_startserver menu_video
+  syn keyword quake2Command   notarget precache prog togglechat vid_front
+  syn keyword quake2Command   weaplast
 endif
 
 syn case match
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_screen_syn_inits")
-  if version < 508
-    let did_screen_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink quakeComment 	Comment
-  HiLink quakeTodo 	Todo
-  HiLink quakeString 	String
-  HiLink quakeNumber	Number
-  HiLink quakeOctal	Number
-  HiLink quakeOctalZero	Number
-  HiLink quakeFloat	Number
-  HiLink quakeOctalError	Error
-  HiLink quakeCommand	quakeCommands
-  HiLink quake1Command	quakeCommands
-  HiLink quake12Command	quakeCommands
-  HiLink quake2Command	quakeCommands
-  HiLink quake23Command	quakeCommands
-  HiLink quake3Command	quakeCommands
-  HiLink quakeCommands	Keyword
-
-  delcommand HiLink
+if exists("quake_is_quake2") || exists("quake_is_quake3")
+  syn keyword quake23Command  imagelist modellist path z_stats
 endif
 
-" vim: set sts=2 sw=2:
+if exists("quake_is_quake3")
+  syn keyword quake3Command   +info +scores +zoom addbot arena banClient
+  syn keyword quake3Command   banUser callteamvote callvote changeVectors
+  syn keyword quake3Command   cinematic clientinfo clientkick cmd cmdlist
+  syn keyword quake3Command   condump configstrings crash cvar_restart devmap
+  syn keyword quake3Command   fdir follow freeze fs_openedList Fs_pureList
+  syn keyword quake3Command   Fs_referencedList gfxinfo globalservers
+  syn keyword quake3Command   hunk_stats in_restart -info levelshot
+  syn keyword quake3Command   loaddeferred localservers map_restart mem_info
+  syn keyword quake3Command   messagemode3 messagemode4 midiinfo model music
+  syn keyword quake3Command   modelist net_restart nextframe nextskin noclip
+  syn keyword quake3Command   notarget ping prevframe prevskin reset restart
+  syn keyword quake3Command   s_disable_a3d s_enable_a3d s_info s_list s_stop
+  syn keyword quake3Command   scanservers -scores screenshotJPEG sectorlist
+  syn keyword quake3Command   serverstatus seta setenv sets setu setviewpos
+  syn keyword quake3Command   shaderlist showip skinlist spdevmap startOribt
+  syn keyword quake3Command   stats stopdemo stoprecord systeminfo togglemenu
+  syn keyword quake3Command   tcmd team teamtask teamvote tell tell_attacker
+  syn keyword quake3Command   tell_target testgun testmodel testshader toggle
+  syn keyword quake3Command   touchFile vminfo vmprofile vmtest vosay
+  syn keyword quake3Command   vosay_team vote votell vsay vsay_team vstr
+  syn keyword quake3Command   vtaunt vtell vtell_attacker vtell_target weapon
+  syn keyword quake3Command   writeconfig -zoom
+  syn match   quake3Command   display "\<[+-]button\(\d\|1[0-4]\)\>"
+endif
+
+hi def link quakeComment      Comment
+hi def link quakeTodo         Todo
+hi def link quakeString       String
+hi def link quakeNumber       Number
+hi def link quakeOctal        Number
+hi def link quakeOctalZero    PreProc
+hi def link quakeFloat        Number
+hi def link quakeOctalError   Error
+hi def link quakeCommand      quakeCommands
+hi def link quake1Command     quakeCommands
+hi def link quake12Command    quakeCommands
+hi def link quake2Command     quakeCommands
+hi def link quake23Command    quakeCommands
+hi def link quake3Command     quakeCommands
+hi def link quakeCommands     Keyword
+
+let b:current_syntax = "quake"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/racc.vim
@@ -0,0 +1,138 @@
+" Vim default file
+" Language:         Racc input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword raccTodo        contained TODO FIXME XXX NOTE
+
+syn region  raccComment     matchgroup=raccComment start='/\*' end='\*/'
+                            \ contains=raccTodo,@Spell
+syn region  raccComment     matchgroup=raccComment start='#' end='$'
+                            \ contains=raccTodo,@Spell
+
+syn region  raccClass       transparent matchgroup=raccKeyword
+                            \ start='\<class\>' end='\<rule\>'he=e-4
+                            \ contains=raccComment,raccPrecedence,
+                            \ raccTokenDecl,raccExpect,raccOptions,raccConvert,
+                            \ raccStart,
+
+syn region  raccPrecedence  transparent matchgroup=raccKeyword
+                            \ start='\<prechigh\>' end='\<preclow\>'
+                            \ contains=raccComment,raccPrecSpec
+
+syn keyword raccPrecSpec    contained nonassoc left right
+                            \ nextgroup=raccPrecToken,raccPrecString skipwhite
+                            \ skipnl
+
+syn match   raccPrecToken   contained '\<\u[A-Z0-9]*\>'
+                            \ nextgroup=raccPrecToken,raccPrecString skipwhite
+                            \ skipnl
+
+syn region  raccPrecString  matchgroup=raccPrecString start=+"+
+                            \ skip=+\\\\\|\\"+ end=+"+
+                            \ contains=raccSpecial
+                            \ nextgroup=raccPrecToken,raccPrecString skipwhite
+                            \ skipnl
+syn region  raccPrecString  matchgroup=raccPrecString start=+'+
+                            \ skip=+\\\\\|\\'+ end=+'+ contains=raccSpecial
+                            \ nextgroup=raccPrecToken,raccPrecString skipwhite
+                            \ skipnl
+
+syn keyword raccTokenDecl   contained token
+                            \ nextgroup=raccTokenR skipwhite skipnl
+
+syn match   raccTokenR      contained '\<\u[A-Z0-9]*\>'
+                            \ nextgroup=raccTokenR skipwhite skipnl
+
+syn keyword raccExpect      contained expect
+                            \ nextgroup=raccNumber skipwhite skipnl
+
+syn match   raccNumber      contained '\<\d\+\>'
+
+syn keyword raccOptions     contained options
+                            \ nextgroup=raccOptionsR skipwhite skipnl
+
+syn keyword raccOptionsR    contained omit_action_call result_var
+                            \ nextgroup=raccOptionsR skipwhite skipnl
+
+syn region  raccConvert     transparent contained matchgroup=raccKeyword
+                            \ start='\<convert\>' end='\<end\>'
+                            \ contains=raccComment,raccConvToken skipwhite
+                            \ skipnl
+
+syn match   raccConvToken   contained '\<\u[A-Z0-9]*\>'
+                            \ nextgroup=raccString skipwhite skipnl
+
+syn keyword raccStart       contained start
+                            \ nextgroup=raccTargetS skipwhite skipnl
+
+syn match   raccTargetS     contained '\<\l[a-z0-9]*\>'
+
+syn match   raccSpecial     contained '\\["'\\]'
+
+syn region  raccString      matchgroup=raccString start=+"+ skip=+\\\\\|\\"+
+                            \ end=+"+ contains=raccSpecial
+syn region  raccString      matchgroup=raccString start=+'+ skip=+\\\\\|\\'+
+                            \ end=+'+ contains=raccSpecial
+
+syn region  raccRules       transparent matchgroup=raccKeyword start='\<rule\>'
+                            \ end='\<end\>' contains=raccComment,raccString,
+                            \ raccNumber,raccToken,raccTarget,raccDelimiter,
+                            \ raccAction
+
+syn match   raccTarget      contained '\<\l[a-z0-9]*\>'
+
+syn match   raccDelimiter   contained '[:|]'
+
+syn match   raccToken       contained '\<\u[A-Z0-9]*\>'
+
+syn include @raccRuby       syntax/ruby.vim
+
+syn region  raccAction      transparent matchgroup=raccDelimiter
+                            \ start='{' end='}' contains=@raccRuby
+
+syn region  raccHeader      transparent matchgroup=raccPreProc
+                            \ start='^---- header.*' end='^----'he=e-4
+                            \ contains=@raccRuby
+
+syn region  raccInner       transparent matchgroup=raccPreProc
+                            \ start='^---- inner.*' end='^----'he=e-4
+                            \ contains=@raccRuby
+
+syn region  raccFooter      transparent matchgroup=raccPreProc
+                            \ start='^---- footer.*' end='^----'he=e-4
+                            \ contains=@raccRuby
+
+hi def link raccTodo        Todo
+hi def link raccComment     Comment
+hi def link raccPrecSpec    Type
+hi def link raccPrecToken   raccToken
+hi def link raccPrecString  raccString
+hi def link raccTokenDecl   Keyword
+hi def link raccToken       Identifier
+hi def link raccTokenR      raccToken
+hi def link raccExpect      Keyword
+hi def link raccNumber      Number
+hi def link raccOptions     Keyword
+hi def link raccOptionsR    Identifier
+hi def link raccConvToken   raccToken
+hi def link raccStart       Keyword
+hi def link raccTargetS     Type
+hi def link raccSpecial     special
+hi def link raccString      String
+hi def link raccTarget      Type
+hi def link raccDelimiter   Delimiter
+hi def link raccPreProc     PreProc
+hi def link raccKeyword     Keyword
+
+let b:current_syntax = "racc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/readline.vim
+++ b/runtime/syntax/readline.vim
@@ -1,152 +1,176 @@
 " Vim syntax file
-" Language:	    readline configuration file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/readline/
-" Latest Revision:  2004-05-22
-" arch-tag:	    6d8e7da4-b39c-4bf7-8e6a-d9135f993457
-" Variables:
+" Language:         readline(3) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 "   readline_has_bash - if defined add support for bash specific
-"			settings/functions
+"                       settings/functions
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk 48-57,65-90,97-122,-
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,-
+
+syn keyword readlineTodo        contained TODO FIXME XXX NOTE
 
-" comments
-syn region  readlineComment	display oneline matchgroup=readlineComment start="^\s*#" end="$" contains=readlineTodo
-
-" todo
-syn keyword readlineTodo	contained TODO FIXME XXX NOTE
+syn region  readlineComment     display oneline matchgroup=readlineComment
+                                \ start='^\s*#' end='$'
+                                \ contains=readlineTodo,@Spell
 
-" strings (argh...not the way i want it, but fine..."
-syn match   readlineString	"^\s*[A-Za-z-]\+:"me=e-1 contains=readlineKeys
-syn region  readlineString	display oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=readlineKeysTwo
+syn match   readlineString      '^\s*[A-Za-z-]\+:'me=e-1 contains=readlineKeys
+syn region  readlineString      display oneline start=+"+ skip=+\\\\\|\\"+
+                                \ end=+"+ contains=readlineKeysTwo
 
-" special key
 syn case ignore
-syn keyword readlineKeys	contained Control Meta Del Esc Escape LFD Newline Ret Return Rubout Space Spc Tab
+syn keyword readlineKeys        contained Control Meta Del Esc Escape LFD
+                                \ Newline Ret Return Rubout Space Spc Tab
 syn case match
 
-syn match   readlineKeysTwo	contained +\\\([CM]-\|[e\\"'abdfnrtv]\|\o\{3}\|x\x\{3}\)+
-
-" keymaps
-syn match   readlineKeymaps	contained "emacs\(-standard\|-meta\|-ctlx\)\="
-syn match   readlineKeymaps	contained "vi\(-move\|-command\|-insert\)\="
+syn match   readlineKeysTwo     contained display
+                                \ +\\\([CM]-\|[e\\"'abdfnrtv]\|\o\{3}\|x\x\{3}\)+
 
-" bell styles
-syn keyword readlineBellStyles	contained audible visible none
+syn match   readlineKeymaps     contained display
+                                \ 'emacs\(-standard\|-meta\|-ctlx\)\='
+syn match   readlineKeymaps     contained display
+                                \ 'vi\(-move\|-command\|-insert\)\='
 
-" numbers
-syn match   readlineNumber	contained "\<\d\+\>"
+syn keyword readlineBellStyles  contained audible visible none
 
-" booleans
+syn match   readlineNumber      contained display '\<\d\+\>'
+
 syn case ignore
-syn keyword readlineBoolean	contained on off
+syn keyword readlineBoolean     contained on off
 syn case match
 
-" conditionals
-syn keyword readlineIfOps	contained mode term
+syn keyword readlineIfOps       contained mode term
+
+syn region  readlineConditional display oneline transparent
+                                \ matchgroup=readlineConditional
+                                \ start='^\s*$if' end="$"
+                                \ contains=readlineIfOps,readlineKeymaps
+syn match   readlineConditional display '^\s*$\(else\|endif\)\>'
+
+syn match   readlineInclude     display '^\s*$include\>'
+
+syn region  readlineSet         display oneline transparent
+                                \ matchgroup=readlineKeyword start='^\s*set\>'
+                                \ end="$"me=e-1 contains=readlineNumber,
+                                \ readlineBoolean,readlineKeymaps,
+                                \ readlineBellStyles,readlineSettings
 
-syn region  readlineConditional display oneline transparent matchgroup=readlineConditional start="^\s*$if" end="$" contains=readlineIfOps,readlineKeymaps
-syn match   readlineConditional	"^\s*$\(else\|endif\)\>"
+syn keyword readlineSettings    contained bell-style comment-begin
+                                \ completion-ignore-case completion-query-items
+                                \ convert-meta disable-completion editing-mode
+                                \ enable-keypad expand-tilde
+                                \ horizontal-scroll-mode mark-directories
+                                \ keymap mark-modified-lines meta-flag
+                                \ input-meta output-meta
+                                \ print-completions-horizontally
+                                \ show-all-if-ambiguous visible-stats
+                                \ prefer-visible-bell blink-matching-paren
+                                \ match-hidden-files history-preserve-point
+                                \ isearch-terminators
 
-" include
-syn match   readlineInclude	"^\s*$include\>"
-
-" settings
+syn region  readlineBinding     display oneline transparent
+                                \ matchgroup=readlineKeyword start=':' end='$'
+                                \ contains=readlineKeys,readlineFunctions
 
-syn region  readlineSet		display oneline transparent matchgroup=readlineKeyword start="^\s*set\>" end="$"me=e-1 contains=readlineNumber,readlineBoolean,readlineKeymaps,readlineBellStyles,readlineSettings
+syn keyword readlineFunctions   contained display
+                                \ beginning-of-line end-of-line forward-char
+                                \ backward-char forward-word backward-word
+                                \ clear-screen redraw-current-line
+                                \ accept-line previous-history
+                                \ next-history beginning-of-history
+                                \ end-of-history reverse-search-history
+                                \ forward-search-history
+                                \ non-incremental-reverse-search-history
+                                \ non-incremental-forward-search-history
+                                \ history-search-forward
+                                \ history-search-backward
+                                \ yank-nth-arg yank-last-arg
+                                \ delete-char backward-delete-char
+                                \ forward-backward-delete-char quoted-insert
+                                \ tab-insert self-insert transpose-chars
+                                \ transpose-words upcase-word downcase-word
+                                \ capitalize-word overwrite-mode kill-line
+                                \ backward-kill-line unix-line-discard
+                                \ kill-whole-line kill-word backward-kill-word
+                                \ unix-word-rubout unix-filename-rubout
+                                \ delete-horizontal-space kill-region
+                                \ copy-region-as-kill copy-backward-word
+                                \ copy-forward-word yank yank-pop
+                                \ digit-argument universal-argument complete
+                                \ possible-completions insert-completions
+                                \ menu-complete delete-char-or-list
+                                \ start-kbd-macro end-kbd-macro
+                                \ call-last-kbd-macro re-read-init-file
+                                \ abort do-uppercase-version prefix-meta
+                                \ undo revert-line tilde-expand set-mark
+                                \ exchange-point-and-mark character-search
+                                \ character-search-backward insert-comment
+                                \ dump-functions dump-variables dump-macros
+                                \ emacs-editing-mode vi-editing-mode
+                                \ vi-complete vi-char-search vi-redo
+                                \ vi-search vi-arg-digit vi-append-eol
+                                \ vi-prev-word vi-change-to vi-delete-to
+                                \ vi-end-word vi-fetch-history vi-insert-beg
+                                \ vi-search-again vi-put vi-replace
+                                \ vi-subst vi-yank-to vi-first-print
+                                \ vi-yank-arg vi-goto-mark vi-append-mode
+                                \ vi-insertion-mode prev-history vi-set-mark
+                                \ vi-search-again vi-put vi-change-char
+                                \ vi-subst vi-delete vi-yank-to
+                                \ vi-column vi-change-case vi-overstrike
+                                \ vi-overstrike-delete do-lowercase-version
+                                \ delete-char-or-list tty-status
+                                \ arrow-key-prefix vi-back-to-indent vi-bword
+                                \ vi-bWord vi-eword vi-eWord vi-fword vi-fWord
+                                \ vi-next-word
 
-syn keyword readlineSettings	contained bell-style comment-begin completion-ignore-case
-syn keyword readlineSettings	contained completion-query-items convert-meta disable-completion editing-mode enable-keypad
-syn keyword readlineSettings	contained expand-tilde horizontal-scroll-mode mark-directories keymap mark-modified-lines meta-flag
-syn keyword readlineSettings	contained input-meta output-meta print-completions-horizontally show-all-if-ambiguous visible-stats
-syn keyword readlineSettings	contained prefer-visible-bell blink-matching-paren
-syn keyword readlineSettings	contained match-hidden-files history-preserve-point isearch-terminators
-
-" bash extensions
 if exists("readline_has_bash")
-  "syn keyword readlineSettings	contained
+  syn keyword readlineFunctions contained
+                                \ shell-expand-line history-expand-line
+                                \ magic-space alias-expand-line
+                                \ history-and-alias-expand-line
+                                \ insert-last-argument operate-and-get-next
+                                \ forward-backward-delete-char
+                                \ delete-char-or-list complete-filename
+                                \ possible-filename-completions
+                                \ complete-username
+                                \ possible-username-completions
+                                \ complete-variable
+                                \ possible-variable-completions
+                                \ complete-hostname
+                                \ possible-hostname-completions
+                                \ complete-command
+                                \ possible-command-completions
+                                \ dynamic-complete-history
+                                \ complete-into-braces
+                                \ glob-expand-word glob-list-expansions
+                                \ display-shell-version glob-complete-word
+                                \ edit-and-execute-command
 endif
 
-" key bindings
-syn region  readlineBinding	display oneline transparent matchgroup=readlineKeyword start=":" end="$" contains=readlineKeys,readlineFunctions
-
-syn match   readlineFunctions	contained "\<\(beginning\|end\)-of-line\>"
-syn match   readlineFunctions	contained "\<\(backward\|forward\)-\(char\|word\)\>"
-syn match   readlineFunctions	contained "\<\(previous\|next\|\(beginning\|end\)-of\|\(non-incremental-\)\=\(reverse\|forward\)-search\)-history\>"
-syn match   readlineFunctions	contained "\<history-search-\(forward\|backward\)\>"
-syn match   readlineFunctions	contained "\<yank-\(nth\|last\)-arg\>"
-syn match   readlineFunctions	contained "\<\(backward-\)\=kill-\(\(whole-\)\=line\|word\)\>"
-syn match   readlineFunctions	contained "\<\(start\|end\|call-last\)-kbd-macro\>"
-syn match   readlineFunctions	contained "\<dump-\(functions\|variables\|macros\)\>"
-syn match   readlineFunctions	contained "\<non-incremental-\(reverse\|forward\)-search-history-again\>"
-syn keyword readlineFunctions	contained clear-screen redraw-current-line accept-line delete-char backward-delete-char quoted-insert tab-insert
-syn keyword readlineFunctions	contained self-insert transpose-chars transpose-words downcase-word capitalize-word unix-word-rubout
-syn keyword readlineFunctions	contained delete-horizontal-space kill-region copy-region-as-kill copy-backward-word copy-forward-word yank yank-pop
-syn keyword readlineFunctions	contained digit-argument universal-argument complete possible-completions insert-completions menu-complete
-syn keyword readlineFunctions	contained re-read-init-file abort do-uppercase-version prefix-meta undo revert-line tilde-expand set-mark
-syn keyword readlineFunctions	contained exchange-point-and-mark character-search character-search-backward insert-comment emacs-editing-mode vi-editing-mode
-syn keyword readlineFunctions	contained unix-line-discard upcase-word backward-delete-word vi-eof-maybe vi-movement-mode vi-match vi-tilde-expand
-syn keyword readlineFunctions	contained vi-complete vi-char-search vi-redo vi-search vi-arg-digit vi-append-eol vi-prev-word vi-change-to vi-delete-to
-syn keyword readlineFunctions	contained vi-end-word vi-fetch-history vi-insert-beg vi-search-again vi-put vi-replace vi-subst vi-yank-to vi-first-print
-syn keyword readlineFunctions	contained vi-yank-arg vi-goto-mark vi-append-mode vi-insertion-mode prev-history vi-set-mark vi-search-again vi-put vi-change-char
-syn keyword readlineFunctions	contained vi-subst vi-delete vi-yank-to vi-column vi-change-case vi-overstrike vi-overstrike-delete
-syn keyword readlineFunctions	contained do-lowercase-version delete-char-or-list tty-status arrow-key-prefix
-syn keyword readlineFunctions	contained vi-back-to-indent vi-bword vi-bWord vi-eword vi-eWord vi-fword vi-fWord vi-next-word
-
-" bash extensions
-if exists("readline_has_bash")
-  syn keyword readlineFunctions	contained shell-expand-line history-expand-line magic-space alias-expand-line history-and-alias-expand-line insert-last-argument
-  syn keyword readlineFunctions	contained operate-and-get-next forward-backward-delete-char delete-char-or-list complete-filename possible-filename-completions
-  syn keyword readlineFunctions	contained complete-username possible-username-completions complete-variable possible-variable-completions complete-hostname
-  syn keyword readlineFunctions	contained possible-hostname-completions complete-command possible-command-completions dynamic-complete-history complete-into-braces
-  syn keyword readlineFunctions	contained glob-expand-word glob-list-expansions display-shell-version
-  syn keyword readlineFunctions	contained glob-complete-word edit-and-execute-command
-endif
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_readline_syn_inits")
-  if version < 508
-    let did_readline_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink readlineComment	Comment
-  HiLink readlineTodo		Todo
-  HiLink readlineString		String
-  HiLink readlineKeys		SpecialChar
-  HiLink readlineKeysTwo	SpecialChar
-  HiLink readlineKeymaps	Constant
-  HiLink readlineBellStyles	Constant
-  HiLink readlineNumber		Number
-  HiLink readlineBoolean	Boolean
-  HiLink readlineIfOps		Type
-  HiLink readlineConditional	Conditional
-  HiLink readlineInclude	Include
-  HiLink readlineKeyword	Keyword
-  HiLink readlineSettings	Type
-  HiLink readlineFunctions	Type
-  delcommand HiLink
-endif
+hi def link readlineComment     Comment
+hi def link readlineTodo        Todo
+hi def link readlineString      String
+hi def link readlineKeys        SpecialChar
+hi def link readlineKeysTwo     SpecialChar
+hi def link readlineKeymaps     Constant
+hi def link readlineBellStyles  Constant
+hi def link readlineNumber      Number
+hi def link readlineBoolean     Boolean
+hi def link readlineIfOps       Type
+hi def link readlineConditional Conditional
+hi def link readlineInclude     Include
+hi def link readlineKeyword     Keyword
+hi def link readlineSettings    Type
+hi def link readlineFunctions   Type
 
 let b:current_syntax = "readline"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/rnc.vim
+++ b/runtime/syntax/rnc.vim
@@ -1,94 +1,68 @@
 " Vim syntax file
-" Language:	    Relax NG compact syntax
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/rnc/
-" Latest Revision:  2004-05-22
-" arch-tag:	    061ee0a2-9efa-4e2a-b1a9-14cf5172d645
+" Language:         Relax NG compact syntax
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Set iskeyword since we need `-' (and potentially others) in keywords.
-" For version 5.x: Set it globally
-" For version 6.x: Set it locally
-if version >= 600
-  command -nargs=1 SetIsk setlocal iskeyword=<args>
-else
-  command -nargs=1 SetIsk set iskeyword=<args>
-endif
-SetIsk @,48-57,_,-,.
-delcommand SetIsk
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal iskeyword=@,48-57,_,-,.
 
-" Todo
-syn keyword rncTodo	    contained TODO FIXME XXX NOTE
+syn keyword rncTodo         contained TODO FIXME XXX NOTE
 
-" Comments
-syn region  rncComment	    matchgroup=rncComment start='^\s*#' end='$' contains=rncTodo
+syn region  rncComment      matchgroup=rncComment start='^\s*#' end='$'
+                            \ contains=rncTodo,@Spell
 
-" Operators
-syn match   rncOperator	    '[-|,&+?*~]'
-syn match   rncOperator	    '\%(|&\)\=='
-syn match   rncOperator	    '>>'
+syn match   rncOperator     display '[-|,&+?*~]'
+syn match   rncOperator     display '\%(|&\)\=='
+syn match   rncOperator     display '>>'
 
-" Namespaces
-syn match   rncNamespace    '\<\k\+:'
+syn match   rncNamespace    display '\<\k\+:'
 
-" Quoted Identifier
-syn match   rncQuoted	    '\\\k\+\>'
+syn match   rncQuoted       display '\\\k\+\>'
 
-" Special Characters
-syn match   rncSpecial	    '\\x{\x\+}'
+syn match   rncSpecial      display '\\x{\x\+}'
 
-" Annotations
-syn region Annotation	    transparent start='\[' end='\]' contains=ALLBUT,rncComment,rncTodo
+syn region rncAnnotation    transparent start='\[' end='\]'
+                            \ contains=ALLBUT,rncComment,rncTodo
 
-" Literals
-syn region  rncLiteral	    matchgroup=rncLiteral oneline start=+"+ end=+"+ contains=rncSpecial
-syn region  rncLiteral	    matchgroup=rncLiteral oneline start=+'+ end=+'+
-syn region  rncLiteral	    matchgroup=rncLiteral start=+"""+ end=+"""+ contains=rncSpecial
-syn region  rncLiteral	    matchgroup=rncLiteral start=+'''+ end=+'''+
-
-" Delimiters
-syn match   rncDelimiter    '[{},()]'
+syn region  rncLiteral      matchgroup=rncLiteral oneline start=+"+ end=+"+
+                            \ contains=rncSpecial
+syn region  rncLiteral      matchgroup=rncLiteral oneline start=+'+ end=+'+
+syn region  rncLiteral      matchgroup=rncLiteral start=+"""+ end=+"""+
+                            \ contains=rncSpecial
+syn region  rncLiteral      matchgroup=rncLiteral start=+'''+ end=+'''+
 
-" Keywords
-syn keyword rncKeyword	    datatypes default div empty external grammar
-syn keyword rncKeyword	    include inherit list mixed name namespace
-syn keyword rncKeyword	    notAllowed parent start string text token
+syn match   rncDelimiter    display '[{},()]'
 
-" Identifiers
-syn match   rncIdentifier   '\k\+\_s*\%(=\|&=\||=\)\@=' nextgroup=rncOperator
-syn keyword rncKeyword	    nextgroup=rncIdName skipwhite skipempty element attribute
-syn match   rncIdentifier   contained '\k\+'
+syn keyword rncKeyword      datatypes default div empty external grammar
+syn keyword rncKeyword      include inherit list mixed name namespace
+syn keyword rncKeyword      notAllowed parent start string text token
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_rnc_syn_inits")
-  if version < 508
-    let did_rnc_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn match   rncIdentifier   display '\k\+\_s*\%(=\|&=\||=\)\@='
+                            \ nextgroup=rncOperator
+syn keyword rncKeyword      element attribute
+                            \ nextgroup=rncIdName skipwhite skipempty
+syn match   rncIdName       contained '\k\+'
 
-  HiLink rncTodo	Todo
-  HiLink rncComment	Comment
-  HiLink rncOperator	Operator
-  HiLink rncNamespace	Identifier
-  HiLink rncQuoted	Special
-  HiLink rncSpecial	SpecialChar
-  HiLink rncLiteral	String
-  HiLink rncDelimiter	Delimiter
-  HiLink rncKeyword	Keyword
-  HiLink rncIdentifier	Identifier
-
-  delcommand HiLink
-endif
+hi def link rncTodo         Todo
+hi def link rncComment      Comment
+hi def link rncOperator     Operator
+hi def link rncNamespace    Identifier
+hi def link rncQuoted       Special
+hi def link rncSpecial      SpecialChar
+hi def link rncAnnotation   Special
+hi def link rncLiteral      String
+hi def link rncDelimiter    Delimiter
+hi def link rncKeyword      Keyword
+hi def link rncIdentifier   Identifier
+hi def link rncIdName       Identifier
 
 let b:current_syntax = "rnc"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -1,107 +1,102 @@
 " Vim syntax file
-" Language:	    reStructuredText Documentation Format
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/rst/
-" Latest Revision:  2004-05-13
-" arch-tag:	    6fae09da-d5d4-49d8-aec1-e49008ea21e6
+" Language:         reStructuredText documentation format
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" todo
-syn keyword	rstTodo		contained FIXME TODO XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword     rstTodo             contained FIXME TODO XXX NOTE
 
 syn case ignore
 
-" comments
-syn region	rstComment 	matchgroup=rstComment start="^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)" end="^\s\@!" contains=rstTodo
-
-syn cluster	rstCruft    contains=rstFootnoteLabel,rstCitationLabel,rstSubstitutionLabel,rstInline,rstHyperlinks,rstInternalTarget
+syn region      rstComment          matchgroup=rstComment
+                                    \ start='^\.\.\%( \%([a-z0-9_.-]\+::\)\@!\|$\)'
+                                    \ end='^\s\@!' contains=rstTodo
 
-" blocks
-" syn region	rstBlock	matchgroup=rstDelimiter start=":\@<!:$" skip="^$" end="^\s\@!" contains=@rstCruft
-syn region	rstBlock	matchgroup=rstDelimiter start="::$" skip="^$" end="^\s\@!"
-syn region	rstDoctestBlock	matchgroup=rstDelimiter start="^>>>\s" end="^$"
+syn cluster     rstCruft            contains=rstFootnoteLabel,rstCitationLabel,
+                                    \ rstSubstitutionLabel,rstInline,
+                                    \ rstHyperlinks,rstInternalTarget
 
-" tables
+syn region      rstBlock            matchgroup=rstDelimiter
+                                    \ start='::$' skip='^$' end='^\s\@!'
+syn region      rstDoctestBlock     matchgroup=rstDelimiter
+                                    \ start='^>>>\s' end='^$'
+
 " TODO: these may actually be a bit too complicated to match correctly and
-" should perhaps be removed.  Whon really needs it anyway?
-syn region	rstTable	transparent start="^\n\s*+[-=+]\+" end="^$" contains=rstTableLines,@rstCruft
-syn match	rstTableLines	contained "^\s*[|+=-]\+$"
-syn region	rstSimpleTable	transparent start="^\n\s*\%(=\+\s\+\)\%(=\+\s*\)\+$" end="^$" contains=rstSimpleTableLines,@rstCruft
-syn match	rstSimpleTableLines contained "^\s*\%(=\+\s\+\)\%(=\+\s*\)\+$"
-
-" footnotes
-syn region	rstFootnote 	matchgroup=rstDirective start="^\.\. \[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]\s" end="^\s\@!" contains=@rstCruft
-syn match	rstFootnoteLabel "\[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]_"
+" should perhaps be removed.  We won't really needs it anyway?
+syn region      rstTable            transparent start='^\n\s*+[-=+]\+' end='^$'
+                                    \ contains=rstTableLines,@rstCruft
+syn match       rstTableLines       contained '^\s*[|+=-]\+$'
+syn region      rstSimpleTable      transparent
+                                    \ start='^\n\s*\%(=\+\s\+\)\%(=\+\s*\)\+$'
+                                    \ end='^$'
+                                    \ contains=rstSimpleTableLines,@rstCruft
+syn match       rstSimpleTableLines contained display
+                                    \ '^\s*\%(=\+\s\+\)\%(=\+\s*\)\+$'
 
-" citations
-syn region	rstCitation 	matchgroup=rstDirective start="^\.\. \[[a-z0-9_.-]\+\]\s" end="^\s\@!" contains=@rstCruft
-syn match	rstCitationLabel "\[[a-z0-9_.-]\+\]_"
+syn region      rstFootnote         matchgroup=rstDirective
+                                    \ start='^\.\. \[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]\s'
+                                    \ end='^\s\@!' contains=@rstCruft
+syn match       rstFootnoteLabel    '\[\%([#*]\|[0-9]\+\|#[a-z0-9_.-]\+\)\]_'
 
-" directives
-syn region	rstDirectiveBody matchgroup=rstDirective start="^\.\. [a-z0-9_.-]\+::" end="^\s\@!"
+syn region      rstCitation         matchgroup=rstDirective
+                                    \ start='^\.\. \[[a-z0-9_.-]\+\]\s'
+                                    \ end='^\s\@!' contains=@rstCruft
+syn match       rstCitationLabel    '\[[a-z0-9_.-]\+\]_'
 
-" substitutions
-syn region	rstSubstitution matchgroup=rstDirective start="^\.\. |[a-z0-9_.-]|\s[a-z0-9_.-]\+::\s" end="^\s\@!" contains=@rstCruft
-syn match	rstSubstitutionLabel "|[a-z0-9_.-]|"
+syn region      rstDirectiveBody    matchgroup=rstDirective
+                                    \ start='^\.\. [a-z0-9_.-]\+::'
+                                    \ end='^\s\@!'
 
-" inline markup
-syn match	rstInline	"\*\{1,2}\S\%([^*]*\S\)\=\*\{1,2}"
-syn match	rstInline	"`\{1,2}\S\%([^`]*\S\)\=`\{1,2}"
+syn region      rstSubstitution     matchgroup=rstDirective
+                                    \ start='^\.\. |[a-z0-9_.-]|\s[a-z0-9_.-]\+::\s'
+                                    \ end='^\s\@!' contains=@rstCruft
+syn match       rstSubstitutionLbl  '|[a-z0-9_.-]|'
 
-" hyperlinks
-syn region	rstHyperlinks	matchgroup=RstDirective start="^\.\. _[a-z0-9_. -]\+:\s" end="^\s\@!" contains=@rstCruft
+syn match       rstInline           '\*\{1,2}\S\%([^*]*\S\)\=\*\{1,2}'
+syn match       rstInline           '`\{1,2}\S\%([^`]*\S\)\=`\{1,2}'
 
-syn match	rstHyperlinksLabel	"`\S\%([^`]*\S\)\=`__\=\>"
-syn match	rstHyperlinksLabel	"\w\+__\=\>"
+syn region      rstHyperlinks       matchgroup=RstDirective
+                                    \ start='^\.\. _[a-z0-9_. -]\+:\s'
+                                    \ end='^\s\@!' contains=@rstCruft
 
-" internal targets
-syn match	rstInternalTarget "_`\S\%([^`]*\S\)\=`"
+syn match       rstHyperlinksLabel  '`\S\%([^`]*\S\)\=`__\=\>'
+syn match       rstHyperlinksLabel  '\w\+__\=\>'
 
-" lists
-syn match	rstListItem	"^:\%(\w\+\s*\)\+:"
-syn match	rstListItem	"^\s*[-*+]\s\+"
+syn match       rstInternalTarget   '_`\S\%([^`]*\S\)\=`'
+
+syn match       rstListItem         '^:\%(\w\+\s*\)\+:'
+syn match       rstListItem         '^\s*[-*+]\s\+'
 
 syn sync minlines=50
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_rst_syn_inits")
-  if version < 508
-    let did_rst_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink rstTodo Todo
-  HiLink rstComment Comment
-  HiLink rstDelimiter Delimiter
-  HiLink rstBlock String
-  HiLink rstDoctestBlock PreProc
-  HiLink rstTableLines Delimiter
-  HiLink rstSimpleTableLines rstTableLines
-  HiLink rstFootnote String
-  HiLink rstFootnoteLabel Identifier
-  HiLink rstCitation String
-  HiLink rstCitationLabel Identifier
-  HiLink rstDirective Keyword
-  HiLink rstDirectiveBody Type
-  HiLink rstSubstitution String
-  HiLink rstSubstitutionLabel Identifier
-  HiLink rstHyperlinks String
-  HiLink rstHyperlinksLabel Identifier
-  HiLink rstListItem Identifier
-  hi def rstInline term=italic cterm=italic gui=italic
-  hi def rstInternalTarget term=italic cterm=italic gui=italic
-  delcommand HiLink
-endif
+hi def link rstTodo                 Todo
+hi def link rstComment              Comment
+hi def link rstDelimiter            Delimiter
+hi def link rstBlock                String
+hi def link rstDoctestBlock         PreProc
+hi def link rstTableLines           Delimiter
+hi def link rstSimpleTableLines     rstTableLines
+hi def link rstFootnote             String
+hi def link rstFootnoteLabel        Identifier
+hi def link rstCitation             String
+hi def link rstCitationLabel        Identifier
+hi def link rstDirective            Keyword
+hi def link rstDirectiveBody        Type
+hi def link rstSubstitution         String
+hi def link rstSubstitutionLbl      Identifier
+hi def link rstHyperlinks           String
+hi def link rstHyperlinksLabel      Identifier
+hi def link rstListItem             Identifier
+hi def      rstInline               term=italic cterm=italic gui=italic
+hi def      rstInternalTarget       term=italic cterm=italic gui=italic
 
 let b:current_syntax = "rst"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/screen.vim
+++ b/runtime/syntax/screen.vim
@@ -1,93 +1,83 @@
 " Vim syntax file
-" Language:	    Screen Virtual Terminal Emulator/Manager Configuration File
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/screen/
-" Latest Revision:  2004-05-22
-" arch-tag:	    6a97fb8f-fc88-497f-9c55-e946734ba034
+" Language:         screen(1) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" comments
-syn region  screenComment	matchgroup=screenComment start="#" end="$" contains=screenTodo
+let s:cpo_save = &cpo
+set cpo&vim
 
-" todo
-syn keyword screenTodo		contained TODO FIXME XXX NOTE
+syn match   screenEscape    '\\.'
 
-" string (can contain variables)
-syn region  screenString	matchgroup=screenString start='"' skip='\\"' end='"\|$' contains=screenVariable,screenSpecial
+syn keyword screenTodo      contained TODO FIXME XXX NOTE
 
-" literal string
-syn region  screenLiteral	matchgroup=screenLiteral start="'" skip="\\'" end="'\|$"
+syn region  screenComment   display oneline matchgroup=screenComment
+                            \ start='#' end='$' contains=screenTodo,@Spell
 
-" environment variables
-syn match   screenVariable	contained "$\(\h\w*\|{\h\w*}\)"
+syn region  screenString    display oneline matchgroup=screenString
+                            \ start=+"+ skip=+\\"+ end=+"\|$+
+                            \ contains=screenVariable,screenSpecial
 
-" booleans
-syn keyword screenBoolean	on off
+syn region  screenLiteral   display oneline matchgroup=screenLiteral
+                            \ start=+'+ skip=+\\'+ end=+'\|$+
 
-" numbers
-syn match   screenNumbers	"\<\d\+\>"
+syn match   screenVariable  contained display '$\(\h\w*\|{\h\w*}\)'
+
+syn keyword screenBoolean   on off
 
-" specials
-syn match   screenSpecials	contained "%\([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)"
+syn match   screenNumbers   display '\<\d\+\>'
+
+syn match   screenSpecials  contained
+                            \ '%\([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)'
 
-" commands
-syn keyword screenCommands	acladd aclchg acldel aclgrp aclumask activity addacl allpartial at attrcolor
-syn keyword screenCommands	autodetach bell_msg bind bindkey bufferfile caption chacl chdir clear colon
-syn keyword screenCommands	command compacthist console copy copy_regcrlf debug detach digraph dinfo crlf
-syn keyword screenCommands	displays dumptermcap echo exec fit focus height help history
-syn keyword screenCommands	info kill lastmsg license lockscreen markkeys meta msgminwait msgwait
-syn keyword screenCommands	multiuser nethack next nonblock number only other partial_state
-syn keyword screenCommands	password paste pastefont pow_break pow_detach_msg prev printcmd process
-syn keyword screenCommands	quit readbuf readreg redisplay register remove removebuf reset resize screen
-syn keyword screenCommands	select sessionname setenv shelltitle silencewait verbose
-syn keyword screenCommands	sleep sorendition split startup_message stuff su suspend time
-syn keyword screenCommands	title umask version wall width writebuf xoff xon defmode hardstatus
-syn keyword screenCommands	altscreen break breaktype copy_reg defbreaktype defencoding deflog encoding
-syn keyword screenCommands	eval ignorecase ins_reg maxwin partial pow_detach setsid source unsetenv
-syn keyword screenCommands	windowlist windows
-syn match   screenCommands	"\<\(def\)\=\(autonuke\|bce\|c1\|charset\|escape\|flow\|kanji\|login\|monitor\|hstatus\|obuflimit\)\>"
-syn match   screenCommands	"\<\(def\)\=\(scrollback\|shell\|silence\|slowpaste\|utf8\|wrap\|writelock\|zombie\|gr\)\>"
-syn match   screenCommands	"\<hard\(copy\(_append\|dir\)\=\|status\)\>"
-syn match   screenCommands	"\<log\(file\|in\|tstamp\)\=\>"
-syn match   screenCommands	"\<map\(default\|notnext\|timeout\)\>"
-syn match   screenCommands	"\<term\(cap\|info\|capinfo\)\=\>"
-syn match   screenCommands	"\<vbell\(_msg\|wait\)\=\>"
+syn keyword screenCommands  acladd aclchg acldel aclgrp aclumask activity
+                            \ addacl allpartial at attrcolor autodetach
+                            \ bell_msg bind bindkey bufferfile caption chacl
+                            \ chdir clear colon command compacthist console
+                            \ copy copy_regcrlf debug detach digraph dinfo
+                            \ crlf displays dumptermcap echo exec fit focus
+                            \ height help history info kill lastmsg license
+                            \ lockscreen markkeys meta msgminwait msgwait
+                            \ multiuser nethack next nonblock number only
+                            \ other partial_state password paste pastefont
+                            \ pow_break pow_detach_msg prev printcmd process
+                            \ quit readbuf readreg redisplay register
+                            \ remove removebuf reset resize screen select
+                            \ sessionname setenv shelltitle silencewait
+                            \ verbose sleep sorendition split startup_message
+                            \ stuff su suspend time title umask version wall
+                            \ width writebuf xoff xon defmode hardstatus
+                            \ altscreen break breaktype copy_reg defbreaktype
+                            \ defencoding deflog encoding eval ignorecase
+                            \ ins_reg maxwin partial pow_detach setsid source
+                            \ unsetenv windowlist windows defautonuke autonuke
+                            \ defbce bce defc1 c1 defcharset charset defescape
+                            \ escape defflow flow defkanji kanji deflogin
+                            \ login defmonitor monitor defhstatus hstatus
+                            \ defobuflimit obuflimit defscrollback scrollback
+                            \ defshell shell defsilence silence defslowpaste
+                            \ slowpaste defutf8 utf8 defwrap wrap defwritelock
+                            \ writelock defzombie zombie defgr gr hardcopy
+                            \ hardcopy_append hardcopydir hardstatus log
+                            \ logfile login logtstamp mapdefault mapnotnext
+                            \ maptimeout term termcap terminfo termcapinfo
+                            \ vbell vbell_msg vbellwait
 
-if exists("screen_minlines")
-    let b:screen_minlines = screen_minlines
-else
-    let b:screen_minlines = 10
-endif
-exec "syn sync minlines=" . b:screen_minlines
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_screen_syn_inits")
-  if version < 508
-    let did_screen_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink screenComment    Comment
-  HiLink screenTodo	  Todo
-  HiLink screenString	  String
-  HiLink screenLiteral    String
-  HiLink screenVariable   Identifier
-  HiLink screenBoolean    Boolean
-  HiLink screenNumbers    Number
-  HiLink screenSpecials   Special
-  HiLink screenCommands   Keyword
-  delcommand HiLink
-endif
+hi def link screenEscape    Special
+hi def link screenComment   Comment
+hi def link screenTodo      Todo
+hi def link screenString    String
+hi def link screenLiteral   String
+hi def link screenVariable  Identifier
+hi def link screenBoolean   Boolean
+hi def link screenNumbers   Number
+hi def link screenSpecials  Special
+hi def link screenCommands  Keyword
 
 let b:current_syntax = "screen"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/sieve.vim
+++ b/runtime/syntax/sieve.vim
@@ -1,70 +1,56 @@
 " Vim syntax file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/
-" Latest Revision:  2004-11-11
-" arch-tag:	    356fad6d-ff6b-453c-bd25-7fc63c4758bc
+" Language:         Sieve filtering language input file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Todo
-syn keyword sieveTodo	  contained TODO FIXME XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword sieveTodo         contained TODO FIXME XXX NOTE
 
-" Comments
-syn region  sieveComment  matchgroup=sieveComment start='/\*' end='\*/' contains=sieveTodo
-syn region  sieveComment  matchgroup=sieveComment start='#' end='$' contains=sieveTodo
+syn region  sieveComment      matchgroup=sieveComment start='/\*' end='\*/'
+                              \ contains=sieveTodo,@Spell
+syn region  sieveComment      matchgroup=sieveComment start='#' end='$'
+                              \ contains=sieveTodo,@Spell
 
 syn case ignore
 
-" Tags
-syn match   sieveTag	  ':\h\w*'
+syn match   sieveTag          display ':\h\w*'
 
-" Numbers
-syn match   sieveNumber	  '\d\+[KMG]\='
+syn match   sieveNumber       display '\<\d\+[KMG]\=\>'
 
-" Specials
-syn match   sieveSpecial  '\\["\\]'
+syn match   sieveSpecial      display '\\["\\]'
 
-" Strings
-syn region  sieveString	  matchgroup=sieveString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=sieveSpecial
-syn region  sieveString	  matchgroup=sieveString start='text:' end='\n.\n'
+syn region  sieveString       matchgroup=sieveString start=+"+
+                              \ skip=+\\\\\|\\"+ end=+"+ contains=sieveSpecial
+syn region  sieveString       matchgroup=sieveString start='text:' end='\n.\n'
 
-" Keywords
 syn keyword sieveConditional  if elsif else
-syn keyword sieveTest	      address allof anyof envelope exists false header not size true
+syn keyword sieveTest         address allof anyof envelope exists false header
+                              \ not size true
 syn keyword sievePreProc      require stop
-syn keyword sieveAction	      reject fileinto redirect keep discard
+syn keyword sieveAction       reject fileinto redirect keep discard
 syn match   sieveKeyword      '\<\h\w*\>'
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_sieve_syn_inits")
-  if version < 508
-    let did_sieve_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn case match
 
-  HiLink sieveTodo	  Todo
-  HiLink sieveComment	  Comment
-  HiLink sieveTag	  Type
-  HiLink sieveNumber	  Number
-  HiLink sieveSpecial	  Special
-  HiLink sieveString	  String
-  HiLink sieveConditional Conditional
-  HiLink sieveTest	  Keyword
-  HiLink sievePreProc	  PreProc
-  HiLink sieveAction	  Keyword
-  HiLink sieveKeyword	  Keyword
-
-  delcommand HiLink
-endif
+hi def link sieveTodo        Todo
+hi def link sieveComment     Comment
+hi def link sieveTag         Type
+hi def link sieveNumber      Number
+hi def link sieveSpecial     Special
+hi def link sieveString      String
+hi def link sieveConditional Conditional
+hi def link sieveTest        Keyword
+hi def link sievePreProc     PreProc
+hi def link sieveAction      Keyword
+hi def link sieveKeyword     Keyword
 
 let b:current_syntax = "sieve"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/sudoers.vim
+++ b/runtime/syntax/sudoers.vim
@@ -1,164 +1,154 @@
 " Vim syntax file
-" Language:	    sudoers(5) configuration files.
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/
-" Latest Revision:  2004-12-17
-" arch-tag:	    02fc3bc8-4308-466f-b83e-718a7487b198
+" Language:         sudoers(5) configuration files
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 " TODO: instead of 'skipnl', we would like to match a specific group that would
 " match \\$ and then continue with the nextgroup, actually, the skipnl doesn't
 " work...
 " TODO: treat 'ALL' like a special (yay, a bundle of new rules!!!)
 
-" User Specs
 syn match   sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite
 
-syn match   sudoersSpecEquals	      contained '=' nextgroup=@sudoersCmndSpecList skipwhite
+syn match   sudoersSpecEquals         contained '=' nextgroup=@sudoersCmndSpecList skipwhite
 
-syn cluster sudoersCmndSpecList	      contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec
+syn cluster sudoersCmndSpecList       contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec
+
+syn keyword sudoersTodo               contained TODO FIXME XXX NOTE
 
-" Todo
-syn keyword sudoersTodo		      contained TODO FIXME XXX NOTE
+syn region  sudoersComment            matchgroup=sudoersComment start='#' end='$' contains=sudoersTodo
 
-" Comments
-syn region  sudoersComment	      matchgroup=sudoersComment start='#' end='$' contains=sudoersTodo
+syn keyword sudoersAlias              User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
+syn keyword sudoersAlias              Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
+syn keyword sudoersAlias              Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl
 
-" Aliases
-syn keyword sudoersAlias	      User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
-syn keyword sudoersAlias	      Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
-syn keyword sudoersAlias	      Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl
+syn match   sudoersUserAlias          contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersUserAliasEquals  skipwhite skipnl
+syn match   sudoersUserNameInList     contained '\<\l\+\>'          nextgroup=@sudoersUserList        skipwhite skipnl
+syn match   sudoersUIDInList          contained '#\d\+\>'           nextgroup=@sudoersUserList        skipwhite skipnl
+syn match   sudoersGroupInList        contained '%\l\+\>'           nextgroup=@sudoersUserList        skipwhite skipnl
+syn match   sudoersUserNetgroupInList contained '+\l\+\>'           nextgroup=@sudoersUserList        skipwhite skipnl
+syn match   sudoersUserAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserList        skipwhite skipnl
 
-" Names
-syn match   sudoersUserAlias	      contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersUserAliasEquals  skipwhite skipnl
-syn match   sudoersUserNameInList     contained '\<\l\+\>'	    nextgroup=@sudoersUserList	      skipwhite skipnl
-syn match   sudoersUIDInList	      contained '#\d\+\>'	    nextgroup=@sudoersUserList	      skipwhite skipnl
-syn match   sudoersGroupInList	      contained '%\l\+\>'	    nextgroup=@sudoersUserList	      skipwhite skipnl
-syn match   sudoersUserNetgroupInList contained '+\l\+\>'	    nextgroup=@sudoersUserList	      skipwhite skipnl
-syn match   sudoersUserAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserList	      skipwhite skipnl
-
-syn match   sudoersUserName	      contained '\<\l\+\>'	    nextgroup=@sudoersParameter	      skipwhite skipnl
-syn match   sudoersUID		      contained '#\d\+\>'	    nextgroup=@sudoersParameter	      skipwhite skipnl
-syn match   sudoersGroup	      contained '%\l\+\>'	    nextgroup=@sudoersParameter	      skipwhite skipnl
-syn match   sudoersUserNetgroup	      contained '+\l\+\>'	    nextgroup=@sudoersParameter	      skipwhite skipnl
-syn match   sudoersUserAliasRef	      contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersParameter	      skipwhite skipnl
+syn match   sudoersUserName           contained '\<\l\+\>'          nextgroup=@sudoersParameter       skipwhite skipnl
+syn match   sudoersUID                contained '#\d\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
+syn match   sudoersGroup              contained '%\l\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
+syn match   sudoersUserNetgroup       contained '+\l\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
+syn match   sudoersUserAliasRef       contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersParameter       skipwhite skipnl
 
-syn match   sudoersUserNameInSpec     contained '\<\l\+\>'	    nextgroup=@sudoersUserSpec	      skipwhite skipnl
-syn match   sudoersUIDInSpec	      contained '#\d\+\>'	    nextgroup=@sudoersUserSpec	      skipwhite skipnl
-syn match   sudoersGroupInSpec	      contained '%\l\+\>'	    nextgroup=@sudoersUserSpec	      skipwhite skipnl
-syn match   sudoersUserNetgroupInSpec contained '+\l\+\>'	    nextgroup=@sudoersUserSpec	      skipwhite skipnl
-syn match   sudoersUserAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserSpec	      skipwhite skipnl
+syn match   sudoersUserNameInSpec     contained '\<\l\+\>'          nextgroup=@sudoersUserSpec        skipwhite skipnl
+syn match   sudoersUIDInSpec          contained '#\d\+\>'           nextgroup=@sudoersUserSpec        skipwhite skipnl
+syn match   sudoersGroupInSpec        contained '%\l\+\>'           nextgroup=@sudoersUserSpec        skipwhite skipnl
+syn match   sudoersUserNetgroupInSpec contained '+\l\+\>'           nextgroup=@sudoersUserSpec        skipwhite skipnl
+syn match   sudoersUserAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserSpec        skipwhite skipnl
 
-syn match   sudoersUserNameInRunas    contained '\<\l\+\>'	    nextgroup=@sudoersUserRunas	      skipwhite skipnl
-syn match   sudoersUIDInRunas	      contained '#\d\+\>'	    nextgroup=@sudoersUserRunas	      skipwhite skipnl
-syn match   sudoersGroupInRunas	      contained '%\l\+\>'	    nextgroup=@sudoersUserRunas	      skipwhite skipnl
-syn match   sudoersUserNetgroupInRunas contained '+\l\+\>'	    nextgroup=@sudoersUserRunas	      skipwhite skipnl
-syn match   sudoersUserAliasInRunas   contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserRunas	      skipwhite skipnl
+syn match   sudoersUserNameInRunas    contained '\<\l\+\>'          nextgroup=@sudoersUserRunas       skipwhite skipnl
+syn match   sudoersUIDInRunas         contained '#\d\+\>'           nextgroup=@sudoersUserRunas       skipwhite skipnl
+syn match   sudoersGroupInRunas       contained '%\l\+\>'           nextgroup=@sudoersUserRunas       skipwhite skipnl
+syn match   sudoersUserNetgroupInRunas contained '+\l\+\>'          nextgroup=@sudoersUserRunas       skipwhite skipnl
+syn match   sudoersUserAliasInRunas   contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserRunas       skipwhite skipnl
 
-syn match   sudoersHostAlias	      contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersHostAliasEquals  skipwhite skipnl
-syn match   sudoersHostNameInList     contained '\<\l\+\>'	    nextgroup=@sudoersHostList	      skipwhite skipnl
-syn match   sudoersIPAddrInList	      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl
+syn match   sudoersHostAlias          contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersHostAliasEquals  skipwhite skipnl
+syn match   sudoersHostNameInList     contained '\<\l\+\>'          nextgroup=@sudoersHostList        skipwhite skipnl
+syn match   sudoersIPAddrInList       contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl
 syn match   sudoersNetworkInList      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl
-syn match   sudoersHostNetgroupInList contained '+\l\+\>'	    nextgroup=@sudoersHostList	      skipwhite skipnl
-syn match   sudoersHostAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersHostList	      skipwhite skipnl
+syn match   sudoersHostNetgroupInList contained '+\l\+\>'           nextgroup=@sudoersHostList        skipwhite skipnl
+syn match   sudoersHostAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersHostList        skipwhite skipnl
 
-syn match   sudoersHostName	      contained '\<\l\+\>'	    nextgroup=@sudoersParameter	      skipwhite skipnl
-syn match   sudoersIPAddr	      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl
-syn match   sudoersNetwork	      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl
-syn match   sudoersHostNetgroup	      contained '+\l\+\>'	    nextgroup=@sudoersParameter	      skipwhite skipnl
-syn match   sudoersHostAliasRef	      contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersParameter	      skipwhite skipnl
+syn match   sudoersHostName           contained '\<\l\+\>'          nextgroup=@sudoersParameter       skipwhite skipnl
+syn match   sudoersIPAddr             contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl
+syn match   sudoersNetwork            contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl
+syn match   sudoersHostNetgroup       contained '+\l\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
+syn match   sudoersHostAliasRef       contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersParameter       skipwhite skipnl
 
-syn match   sudoersHostNameInSpec     contained '\<\l\+\>'	    nextgroup=@sudoersHostSpec	      skipwhite skipnl
-syn match   sudoersIPAddrInSpec	      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl
+syn match   sudoersHostNameInSpec     contained '\<\l\+\>'          nextgroup=@sudoersHostSpec        skipwhite skipnl
+syn match   sudoersIPAddrInSpec       contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl
 syn match   sudoersNetworkInSpec      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl
-syn match   sudoersHostNetgroupInSpec contained '+\l\+\>'	    nextgroup=@sudoersHostSpec	      skipwhite skipnl
-syn match   sudoersHostAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersHostSpec	      skipwhite skipnl
+syn match   sudoersHostNetgroupInSpec contained '+\l\+\>'           nextgroup=@sudoersHostSpec        skipwhite skipnl
+syn match   sudoersHostAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersHostSpec        skipwhite skipnl
 
-syn match   sudoersCmndAlias	      contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersCmndAliasEquals  skipwhite skipnl
+syn match   sudoersCmndAlias          contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersCmndAliasEquals  skipwhite skipnl
 syn match   sudoersCmndNameInList     contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite
-syn match   sudoersCmndAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersCmndList	      skipwhite skipnl
+syn match   sudoersCmndAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersCmndList        skipwhite skipnl
 
 syn match   sudoersCmndNameInSpec     contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite
-syn match   sudoersCmndAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersCmndSpec	      skipwhite skipnl
+syn match   sudoersCmndAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersCmndSpec        skipwhite skipnl
 
-" Delimiters
-syn match   sudoersUserAliasEquals  contained '=' nextgroup=@sudoersUserInList	skipwhite skipnl
-syn match   sudoersUserListComma    contained ',' nextgroup=@sudoersUserInList	skipwhite skipnl
-syn match   sudoersUserListColon    contained ':' nextgroup=sudoersUserAlias	skipwhite skipnl
-syn cluster sudoersUserList	    contains=sudoersUserListComma,sudoersUserListColon
+syn match   sudoersUserAliasEquals  contained '=' nextgroup=@sudoersUserInList  skipwhite skipnl
+syn match   sudoersUserListComma    contained ',' nextgroup=@sudoersUserInList  skipwhite skipnl
+syn match   sudoersUserListColon    contained ':' nextgroup=sudoersUserAlias    skipwhite skipnl
+syn cluster sudoersUserList         contains=sudoersUserListComma,sudoersUserListColon
 
-syn match   sudoersUserSpecComma    contained ',' nextgroup=@sudoersUserInSpec	skipwhite skipnl
-syn cluster sudoersUserSpec	    contains=sudoersUserSpecComma,@sudoersHostInSpec
+syn match   sudoersUserSpecComma    contained ',' nextgroup=@sudoersUserInSpec  skipwhite skipnl
+syn cluster sudoersUserSpec         contains=sudoersUserSpecComma,@sudoersHostInSpec
 
 syn match   sudoersUserRunasBegin   contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl
-syn match   sudoersUserRunasComma   contained ',' nextgroup=@sudoersUserInRunas	skipwhite skipnl
-syn match   sudoersUserRunasEnd	    contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl
-syn cluster sudoersUserRunas	    contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd
+syn match   sudoersUserRunasComma   contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl
+syn match   sudoersUserRunasEnd     contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl
+syn cluster sudoersUserRunas        contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd
 
 
-syn match   sudoersHostAliasEquals  contained '=' nextgroup=@sudoersHostInList	skipwhite skipnl
-syn match   sudoersHostListComma    contained ',' nextgroup=@sudoersHostInList	skipwhite skipnl
-syn match   sudoersHostListColon    contained ':' nextgroup=sudoersHostAlias	skipwhite skipnl
-syn cluster sudoersHostList	    contains=sudoersHostListComma,sudoersHostListColon
+syn match   sudoersHostAliasEquals  contained '=' nextgroup=@sudoersHostInList  skipwhite skipnl
+syn match   sudoersHostListComma    contained ',' nextgroup=@sudoersHostInList  skipwhite skipnl
+syn match   sudoersHostListColon    contained ':' nextgroup=sudoersHostAlias    skipwhite skipnl
+syn cluster sudoersHostList         contains=sudoersHostListComma,sudoersHostListColon
 
-syn match   sudoersHostSpecComma    contained ',' nextgroup=@sudoersHostInSpec	skipwhite skipnl
-syn cluster sudoersHostSpec	    contains=sudoersHostSpecComma,sudoersSpecEquals
+syn match   sudoersHostSpecComma    contained ',' nextgroup=@sudoersHostInSpec  skipwhite skipnl
+syn cluster sudoersHostSpec         contains=sudoersHostSpecComma,sudoersSpecEquals
 
 
-syn match   sudoersCmndAliasEquals  contained '=' nextgroup=@sudoersCmndInList	skipwhite skipnl
-syn match   sudoersCmndListComma    contained ',' nextgroup=@sudoersCmndInList	skipwhite skipnl
-syn match   sudoersCmndListColon    contained ':' nextgroup=sudoersCmndAlias	skipwhite skipnl
-syn cluster sudoersCmndList	    contains=sudoersCmndListComma,sudoersCmndListColon
+syn match   sudoersCmndAliasEquals  contained '=' nextgroup=@sudoersCmndInList  skipwhite skipnl
+syn match   sudoersCmndListComma    contained ',' nextgroup=@sudoersCmndInList  skipwhite skipnl
+syn match   sudoersCmndListColon    contained ':' nextgroup=sudoersCmndAlias    skipwhite skipnl
+syn cluster sudoersCmndList         contains=sudoersCmndListComma,sudoersCmndListColon
 
 syn match   sudoersCmndSpecComma    contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl
-syn match   sudoersCmndSpecColon    contained ':' nextgroup=@sudoersUserInSpec	skipwhite skipnl
-syn cluster sudoersCmndSpec	    contains=sudoersCmndSpecComma,sudoersCmndSpecColon
+syn match   sudoersCmndSpecColon    contained ':' nextgroup=@sudoersUserInSpec  skipwhite skipnl
+syn cluster sudoersCmndSpec         contains=sudoersCmndSpecComma,sudoersCmndSpecColon
 
-" Lists
-syn cluster sudoersUserInList	    contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList
-syn cluster sudoersHostInList	    contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList
-syn cluster sudoersCmndInList	    contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList
+syn cluster sudoersUserInList       contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList
+syn cluster sudoersHostInList       contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList
+syn cluster sudoersCmndInList       contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList
 
-syn cluster sudoersUser		    contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef
-syn cluster sudoersHost		    contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef
+syn cluster sudoersUser             contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef
+syn cluster sudoersHost             contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef
 
-syn cluster sudoersUserInSpec	    contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec
-syn cluster sudoersHostInSpec	    contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec
-syn cluster sudoersUserInRunas	    contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas
-syn cluster sudoersCmndInSpec	    contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec
+syn cluster sudoersUserInSpec       contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec
+syn cluster sudoersHostInSpec       contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec
+syn cluster sudoersUserInRunas      contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas
+syn cluster sudoersCmndInSpec       contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec
 
-" Operators
 syn match   sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList  skipwhite skipnl
 syn match   sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList  skipwhite skipnl
 syn match   sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList  skipwhite skipnl
 
-syn match   sudoersUserNegation	      contained '!\+' nextgroup=@sudoersUser	    skipwhite skipnl
-syn match   sudoersHostNegation	      contained '!\+' nextgroup=@sudoersHost	    skipwhite skipnl
+syn match   sudoersUserNegation       contained '!\+' nextgroup=@sudoersUser        skipwhite skipnl
+syn match   sudoersHostNegation       contained '!\+' nextgroup=@sudoersHost        skipwhite skipnl
 
 syn match   sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec  skipwhite skipnl
 syn match   sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec  skipwhite skipnl
 syn match   sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl
 syn match   sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec  skipwhite skipnl
 
-" Arguments
-syn match   sudoersCommandArgs	    contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite
-syn match   sudoersCommandEmpty	    contained '""' nextgroup=@sudoersCmndList skipwhite skipnl
+syn match   sudoersCommandArgs      contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite
+syn match   sudoersCommandEmpty     contained '""' nextgroup=@sudoersCmndList skipwhite skipnl
 
 syn match   sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite
 syn match   sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl
 
-" Default Entries
-syn keyword sudoersDefaultEntry	Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl
-syn match   sudoersDefaultTypeAt	  contained '@' nextgroup=@sudoersHost skipwhite skipnl
-syn match   sudoersDefaultTypeColon	  contained ':' nextgroup=@sudoersUser skipwhite skipnl
+syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl
+syn match   sudoersDefaultTypeAt          contained '@' nextgroup=@sudoersHost skipwhite skipnl
+syn match   sudoersDefaultTypeColon       contained ':' nextgroup=@sudoersUser skipwhite skipnl
 syn match   sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl
 
 " TODO: could also deal with special characters here
+syn match   sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl
 syn keyword sudoersBooleanParameter contained long_opt_prompt ignore_dot mail_always mail_badpass mail_no_user mail_no_perms tty_tickets lecture authenticate root_sudo log_host log_year shell_noargs set_home always_set_home path_info preserve_groups fqdn insults requiretty env_editor rootpw runaspw targetpw set_logname stay_setuid env_reset use_loginclass nextgroup=sudoersParameterListComma skipwhite skipnl
 syn keyword sudoersIntegerParameter contained passwd_tries loglinelen timestamp_timeout passwd_timeout umask nextgroup=sudoersIntegerParameterEquals skipwhite skipnl
 syn keyword sudoersStringParameter  contained mailsub badpass_message timestampdir timestampowner passprompt runas_default syslog_goodpri syslog_badpri editor logfile syslog mailerpath mailerflags mailto exempt_group verifypw listpw nextgroup=sudoersStringParameterEquals skipwhite skipnl
@@ -166,125 +156,111 @@ syn keyword sudoersListParameter    cont
 
 syn match   sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl
 
-syn cluster sudoersParameter	    contains=sudoersBooleanParameter,sudoersIntegerParameterEquals,sudoersStringParameter,sudoersListParameter
+syn cluster sudoersParameter        contains=sudoersBooleanParameter,sudoersIntegerParameterEquals,sudoersStringParameter,sudoersListParameter
 
 syn match   sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl
 syn match   sudoersStringParameterEquals  contained '[+-]\==' nextgroup=sudoersStringValue  skipwhite skipnl
-syn match   sudoersListParameterEquals	  contained '[+-]\==' nextgroup=sudoersListValue    skipwhite skipnl
-
-syn match   sudoersIntegerValue	contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl
-syn match   sudoersStringValue	contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
-syn region  sudoersStringValue	contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
-syn match   sudoersListValue	contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
-syn region  sudoersListValue	contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
-
-" Special for specs
-syn match   sudoersPASSWD	      contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite
+syn match   sudoersListParameterEquals    contained '[+-]\==' nextgroup=sudoersListValue    skipwhite skipnl
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_sudoers_syn_inits")
-  if version < 508
-    let did_sudoers_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn match   sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl
+syn match   sudoersStringValue  contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
+syn region  sudoersStringValue  contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
+syn match   sudoersListValue    contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
+syn region  sudoersListValue    contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
+
+syn match   sudoersPASSWD                   contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite
 
-  HiLink sudoersSpecEquals		Operator
-  HiLink sudoersTodo			Todo
-  HiLink sudoersComment			Comment
-  HiLink sudoersAlias			Keyword
-  HiLink sudoersUserAlias		Identifier
-  HiLink sudoersUserNameInList		String
-  HiLink sudoersUIDInList		Number
-  HiLink sudoersGroupInList             PreProc
-  HiLink sudoersUserNetgroupInList      PreProc
-  HiLink sudoersUserAliasInList         PreProc
-  HiLink sudoersUserName		String
-  HiLink sudoersUID			Number
-  HiLink sudoersGroup			PreProc
-  HiLink sudoersUserNetgroup		PreProc
-  HiLink sudoersUserAliasRef            PreProc
-  HiLink sudoersUserNameInSpec		String
-  HiLink sudoersUIDInSpec		Number
-  HiLink sudoersGroupInSpec		PreProc
-  HiLink sudoersUserNetgroupInSpec	PreProc
-  HiLink sudoersUserAliasInSpec		PreProc
-  HiLink sudoersUserNameInRunas		String
-  HiLink sudoersUIDInRunas		Number
-  HiLink sudoersGroupInRunas		PreProc
-  HiLink sudoersUserNetgroupInRunas	PreProc
-  HiLink sudoersUserAliasInRunas	PreProc
-  HiLink sudoersHostAlias               Identifier
-  HiLink sudoersHostNameInList          String
-  HiLink sudoersIPAddrInList            Number
-  HiLink sudoersNetworkInList           Number
-  HiLink sudoersHostNetgroupInList      PreProc
-  HiLink sudoersHostAliasInList         PreProc
-  HiLink sudoersHostName		String
-  HiLink sudoersIPAddr			Number
-  HiLink sudoersNetwork			Number
-  HiLink sudoersHostNetgroup		PreProc
-  HiLink sudoersHostAliasRef            PreProc
-  HiLink sudoersHostNameInSpec          String
-  HiLink sudoersIPAddrInSpec            Number
-  HiLink sudoersNetworkInSpec           Number
-  HiLink sudoersHostNetgroupInSpec      PreProc
-  HiLink sudoersHostAliasInSpec         PreProc
-  HiLink sudoersCmndAlias		Identifier
-  HiLink sudoersCmndNameInList		String
-  HiLink sudoersCmndAliasInList         PreProc
-  HiLink sudoersCmndNameInSpec		String
-  HiLink sudoersCmndAliasInSpec         PreProc
-  HiLink sudoersUserAliasEquals		Operator
-  HiLink sudoersUserListComma           Delimiter
-  HiLink sudoersUserListColon           Delimiter
-  HiLink sudoersUserSpecComma           Delimiter
-  HiLink sudoersUserRunasBegin		Delimiter
-  HiLink sudoersUserRunasComma		Delimiter
-  HiLink sudoersUserRunasEnd		Delimiter
-  HiLink sudoersHostAliasEquals         Operator
-  HiLink sudoersHostListComma           Delimiter
-  HiLink sudoersHostListColon           Delimiter
-  HiLink sudoersHostSpecComma           Delimiter
-  HiLink sudoersCmndAliasEquals         Operator
-  HiLink sudoersCmndListComma           Delimiter
-  HiLink sudoersCmndListColon           Delimiter
-  HiLink sudoersCmndSpecComma           Delimiter
-  HiLink sudoersCmndSpecColon           Delimiter
-  HiLink sudoersUserNegationInList      Operator
-  HiLink sudoersHostNegationInList      Operator
-  HiLink sudoersCmndNegationInList      Operator
-  HiLink sudoersUserNegation		Operator
-  HiLink sudoersHostNegation		Operator
-  HiLink sudoersUserNegationInSpec	Operator
-  HiLink sudoersHostNegationInSpec	Operator
-  HiLink sudoersUserNegationInRunas	Operator
-  HiLink sudoersCmndNegationInSpec	Operator
-  HiLink sudoersCommandArgs		String
-  HiLink sudoersCommandEmpty		Special
-  HiLink sudoersDefaultEntry		Keyword
-  HiLink sudoersDefaultTypeAt		Special
-  HiLink sudoersDefaultTypeColon	Special
-  HiLink sudoersDefaultTypeGreaterThan	Special
-  HiLink sudoersBooleanParameter        Identifier
-  HiLink sudoersIntegerParameter        Identifier
-  HiLink sudoersStringParameter         Identifier
-  HiLink sudoersListParameter           Identifier
-  HiLink sudoersParameterListComma      Delimiter
-  HiLink sudoersIntegerParameterEquals  Operator
-  HiLink sudoersStringParameterEquals   Operator
-  HiLink sudoersListParameterEquals     Operator
-  HiLink sudoersIntegerValue            Number
-  HiLink sudoersStringValue             String
-  HiLink sudoersListValue               String
-  HiLink sudoersPASSWD			Special
-
-  delcommand HiLink
-endif
+hi def link sudoersSpecEquals               Operator
+hi def link sudoersTodo                     Todo
+hi def link sudoersComment                  Comment
+hi def link sudoersAlias                    Keyword
+hi def link sudoersUserAlias                Identifier
+hi def link sudoersUserNameInList           String
+hi def link sudoersUIDInList                Number
+hi def link sudoersGroupInList              PreProc
+hi def link sudoersUserNetgroupInList       PreProc
+hi def link sudoersUserAliasInList          PreProc
+hi def link sudoersUserName                 String
+hi def link sudoersUID                      Number
+hi def link sudoersGroup                    PreProc
+hi def link sudoersUserNetgroup             PreProc
+hi def link sudoersUserAliasRef             PreProc
+hi def link sudoersUserNameInSpec           String
+hi def link sudoersUIDInSpec                Number
+hi def link sudoersGroupInSpec              PreProc
+hi def link sudoersUserNetgroupInSpec       PreProc
+hi def link sudoersUserAliasInSpec          PreProc
+hi def link sudoersUserNameInRunas          String
+hi def link sudoersUIDInRunas               Number
+hi def link sudoersGroupInRunas             PreProc
+hi def link sudoersUserNetgroupInRunas      PreProc
+hi def link sudoersUserAliasInRunas         PreProc
+hi def link sudoersHostAlias                Identifier
+hi def link sudoersHostNameInList           String
+hi def link sudoersIPAddrInList             Number
+hi def link sudoersNetworkInList            Number
+hi def link sudoersHostNetgroupInList       PreProc
+hi def link sudoersHostAliasInList          PreProc
+hi def link sudoersHostName                 String
+hi def link sudoersIPAddr                   Number
+hi def link sudoersNetwork                  Number
+hi def link sudoersHostNetgroup             PreProc
+hi def link sudoersHostAliasRef             PreProc
+hi def link sudoersHostNameInSpec           String
+hi def link sudoersIPAddrInSpec             Number
+hi def link sudoersNetworkInSpec            Number
+hi def link sudoersHostNetgroupInSpec       PreProc
+hi def link sudoersHostAliasInSpec          PreProc
+hi def link sudoersCmndAlias                Identifier
+hi def link sudoersCmndNameInList           String
+hi def link sudoersCmndAliasInList          PreProc
+hi def link sudoersCmndNameInSpec           String
+hi def link sudoersCmndAliasInSpec          PreProc
+hi def link sudoersUserAliasEquals          Operator
+hi def link sudoersUserListComma            Delimiter
+hi def link sudoersUserListColon            Delimiter
+hi def link sudoersUserSpecComma            Delimiter
+hi def link sudoersUserRunasBegin           Delimiter
+hi def link sudoersUserRunasComma           Delimiter
+hi def link sudoersUserRunasEnd             Delimiter
+hi def link sudoersHostAliasEquals          Operator
+hi def link sudoersHostListComma            Delimiter
+hi def link sudoersHostListColon            Delimiter
+hi def link sudoersHostSpecComma            Delimiter
+hi def link sudoersCmndAliasEquals          Operator
+hi def link sudoersCmndListComma            Delimiter
+hi def link sudoersCmndListColon            Delimiter
+hi def link sudoersCmndSpecComma            Delimiter
+hi def link sudoersCmndSpecColon            Delimiter
+hi def link sudoersUserNegationInList       Operator
+hi def link sudoersHostNegationInList       Operator
+hi def link sudoersCmndNegationInList       Operator
+hi def link sudoersUserNegation             Operator
+hi def link sudoersHostNegation             Operator
+hi def link sudoersUserNegationInSpec       Operator
+hi def link sudoersHostNegationInSpec       Operator
+hi def link sudoersUserNegationInRunas      Operator
+hi def link sudoersCmndNegationInSpec       Operator
+hi def link sudoersCommandArgs              String
+hi def link sudoersCommandEmpty             Special
+hi def link sudoersDefaultEntry             Keyword
+hi def link sudoersDefaultTypeAt            Special
+hi def link sudoersDefaultTypeColon         Special
+hi def link sudoersDefaultTypeGreaterThan   Special
+hi def link sudoersBooleanParameter         Identifier
+hi def link sudoersIntegerParameter         Identifier
+hi def link sudoersStringParameter          Identifier
+hi def link sudoersListParameter            Identifier
+hi def link sudoersParameterListComma       Delimiter
+hi def link sudoersIntegerParameterEquals   Operator
+hi def link sudoersStringParameterEquals    Operator
+hi def link sudoersListParameterEquals      Operator
+hi def link sudoersIntegerValue             Number
+hi def link sudoersStringValue              String
+hi def link sudoersListValue                String
+hi def link sudoersPASSWD                   Special
 
 let b:current_syntax = "sudoers"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/sysctl.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language:         sysctl.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   sysctlBegin   display '^'
+                          \ nextgroup=sysctlToken,sysctlComment skipwhite
+
+syn match   sysctlToken   contained display '\S\+'
+                          \ nextgroup=sysctlTokenEq skipwhite
+
+syn match   sysctlTokenEq contained display '=' nextgroup=sysctlValue skipwhite
+
+syn region  sysctlValue   contained display oneline
+                          \ matchgroup=sysctlValue start='\S'
+                          \ matchgroup=Normal end='\s*$'
+
+syn keyword sysctlTodo    contained TODO FIXME XXX NOTE
+
+syn region  sysctlComment display oneline start='^\s*[#;]' end='$'
+                          \ contains=sysctlTodo,@Spell
+
+hi def link sysctlTodo    Todo
+hi def link sysctlComment Comment
+hi def link sysctlToken   Identifier
+hi def link sysctlTokenEq Operator
+hi def link sysctlValue   String
+
+let b:current_syntax = "sysctl"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/terminfo.vim
+++ b/runtime/syntax/terminfo.vim
@@ -1,115 +1,93 @@
 " Vim syntax file
-" Language:	    Terminfo definition
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/terminfo/
-" Latest Revision:  2004-05-22
-" arch-tag:	    8464dd47-0c5a-47d5-87ed-a2ad99e1196f
+" Language:         terminfo(5) definition
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" keywords (define first as to not mess up comments
-syn match terminfoKeywords	"[,=#|]"
+let s:cpo_save = &cpo
+set cpo&vim
 
-" todo
-syn keyword terminfoTodo	contained TODO FIXME XXX NOTE
+syn match terminfoKeywords      '[,=#|]'
 
-" comments
-syn region  terminfoComment	matchgroup=terminfoComment start="^#" end="$" contains=terminfoTodo
+syn keyword terminfoTodo        contained TODO FIXME XXX NOTE
 
-" numbers
-syn match   terminfoNumbers	"\<[0-9]\+\>"
+syn region  terminfoComment     matchgroup=terminfoComment start='^#' end='$'
+                                \ contains=terminfoTodo,@Spell
+
+syn match   terminfoNumbers     '\<[0-9]\+\>'
 
-" special keys
-syn match   terminfoSpecialChar	"\\\(\o\{3}\|[Eenlrtbfs^\,:0]\)"
-syn match   terminfoSpecialChar "\^\a"
+syn match   terminfoSpecialChar '\\\(\o\{3}\|[Eenlrtbfs^\,:0]\)'
+syn match   terminfoSpecialChar '\^\a'
 
-" delays
-syn match   terminfoDelay	"$<[0-9]\+>"
+syn match   terminfoDelay       '$<[0-9]\+>'
 
-" boolean capabilities
-syn keyword terminfoBooleans	bw am bce ccc xhp xhpa cpix crxw xt xenl eo gn
-syn keyword terminfoBooleans	hc chts km daisy hs hls in lpix da db mir msgr
-syn keyword terminfoBooleans	nxon xsb npc ndscr nrrmc os mc5i xcpa sam eslok
-syn keyword terminfoBooleans	hz ul xon
+syn keyword terminfoBooleans    bw am bce ccc xhp xhpa cpix crxw xt xenl eo gn
+                                \ hc chts km daisy hs hls in lpix da db mir
+                                \ msgr nxon xsb npc ndscr nrrmc os mc5i xcpa
+                                \ sam eslok hz ul xon
 
-" numeric capabilities
-syn keyword terminfoNumerics	cols it lh lw lines lm xmc ma colors pairs wnum
-syn keyword terminfoNumerics	ncv nlab pb vt wsl bitwin bitype bufsz btns
-syn keyword terminfoNumerics	spinh spinv maddr mjump mcs npins orc orhi orl
-syn keyword terminfoNumerics	orvi cps widcs
+syn keyword terminfoNumerics    cols it lh lw lines lm xmc ma colors pairs wnum
+                                \ ncv nlab pb vt wsl bitwin bitype bufsz btns
+                                \ spinh spinv maddr mjump mcs npins orc orhi
+                                \ orl orvi cps widcs
 
-" string capabilities
-syn keyword terminfoStrings	acsc cbt bel cr cpi lpi chr cvr csr rmp tbc mgc
-syn keyword terminfoStrings	clear el1 el ed hpa cmdch cwin cup cud1 home
-syn keyword terminfoStrings	civis cub1 mrcup cnorm cuf1 ll cuu1 cvvis defc
-syn keyword terminfoStrings	dch1 dl1 dial dsl dclk hd enacs smacs smam blink
-syn keyword terminfoStrings	bold smcup smdc dim swidm sdrfq smir sitm slm
-syn keyword terminfoStrings	smicm snlq snrmq prot rev invis sshm smso ssubm
-syn keyword terminfoStrings	ssupm smul sum smxon ech rmacs rmam sgr0 rmcup
-syn keyword terminfoStrings	rmdc rwidm rmir ritm rlm rmicm rshm rmso rsubm
-syn keyword terminfoStrings	rsupm rmul rum rmxon pause hook flash ff fsl
-syn keyword terminfoStrings	wingo hup is1 is2 is3 if iprog initc initp ich1
-syn keyword terminfoStrings	il1 ip ka1 ka3 kb2 kbs kbeg kcbt kc1 kc3 kcan
-syn keyword terminfoStrings	ktbc kclr kclo kcmd kcpy kcrt kctab kdch1 kdl1
-syn keyword terminfoStrings	kcud1 krmir kend kent kel ked kext
-syn match   terminfoStrings	"\<kf\([0-9]\|[0-5][0-9]\|6[0-3]\)\>"
-syn keyword terminfoStrings	kfnd khlp khome kich1 kil1 kcub1 kll kmrk
-syn keyword terminfoStrings	kmsg kmov knxt knp kopn kopt kpp kprv kprt krdo
-syn keyword terminfoStrings	kref krfr krpl krst kres kcuf1 ksav kBEG kCAN
-syn keyword terminfoStrings	kCMD kCPY kCRT kDC kDL kslt kEND kEOL kEXT kind
-syn keyword terminfoStrings	kFND kHLP kHOM kIC kLFT kMSG kMOV kNXT kOPT kPRV
-syn keyword terminfoStrings	kPRT kri kRDO kRPL kRIT kRES kSAV kSPD khts kUND
-syn keyword terminfoStrings	kspd kund kcuu1 rmkx smkx lf0 lf1 lf10 lf2 lf3
-syn keyword terminfoStrings	lf4 lf5 lf6 lf7 lf8 lf9 fln rmln smln rmm smm
-syn keyword terminfoStrings	mhpa mcud1 mcub1 mcuf1 mvpa mcuu1 nel porder oc
-syn keyword terminfoStrings	op pad dch dl cud mcud ich indn il cub mcub cuf
-syn keyword terminfoStrings	mcuf rin cuu mccu pfkey pfloc pfx pln mc0 mc5p
-syn keyword terminfoStrings	mc4 mc5 pulse qdial rmclk rep rfi rs1 rs2 rs3 rf
-syn keyword terminfoStrings	rc vpa sc ind ri scs sgr setbsmgb smgbp sclk scp
-syn keyword terminfoStrings	setb setf smgl smglp smgr smgrp hts smgt smgtp
-syn keyword terminfoStrings	wind sbim scsd rbim rcsd subcs supcs ht docr
-syn keyword terminfoStrings	tsl tone uc hu
-syn match   terminfoStrings	"\<u[0-9]\>"
-syn keyword terminfoStrings	wait xoffc xonc zerom
-syn keyword terminfoStrings	scesa bicr binel birep csnm csin colornm defbi
-syn keyword terminfoStrings	devt dispc endbi smpch smsc rmpch rmsc getm
-syn keyword terminfoStrings	kmous minfo pctrm pfxl reqmp scesc s0ds s1ds
-syn keyword terminfoStrings	s2ds s3ds setab setaf setcolor smglr slines
-syn keyword terminfoStrings	smgtb ehhlm elhlm erhlm ethlm evhlm sgr1
-syn keyword terminfoStrings	slengthsL
+syn keyword terminfoStrings     acsc cbt bel cr cpi lpi chr cvr csr rmp tbc mgc
+                                \ clear el1 el ed hpa cmdch cwin cup cud1 home
+                                \ civis cub1 mrcup cnorm cuf1 ll cuu1 cvvis
+                                \ defc dch1 dl1 dial dsl dclk hd enacs smacs
+                                \ smam blink bold smcup smdc dim swidm sdrfq
+                                \ smir sitm slm smicm snlq snrmq prot rev
+                                \ invis sshm smso ssubm ssupm smul sum smxon
+                                \ ech rmacs rmam sgr0 rmcup rmdc rwidm rmir
+                                \ ritm rlm rmicm rshm rmso rsubm rsupm rmul
+                                \ rum rmxon pause hook flash ff fsl wingo hup
+                                \ is1 is2 is3 if iprog initc initp ich1 il1 ip
+                                \ ka1 ka3 kb2 kbs kbeg kcbt kc1 kc3 kcan ktbc
+                                \ kclr kclo kcmd kcpy kcrt kctab kdch1 kdl1
+                                \ kcud1 krmir kend kent kel ked kext kfnd khlp
+                                \ khome kich1 kil1 kcub1 kll kmrk kmsg kmov
+                                \ knxt knp kopn kopt kpp kprv kprt krdo kref
+                                \ krfr krpl krst kres kcuf1 ksav kBEG kCAN
+                                \ kCMD kCPY kCRT kDC kDL kslt kEND kEOL kEXT
+                                \ kind kFND kHLP kHOM kIC kLFT kMSG kMOV kNXT
+                                \ kOPT kPRV kPRT kri kRDO kRPL kRIT kRES kSAV
+                                \ kSPD khts kUND kspd kund kcuu1 rmkx smkx
+                                \ lf0 lf1 lf10 lf2 lf3 lf4 lf5 lf6 lf7 lf8 lf9
+                                \ fln rmln smln rmm smm mhpa mcud1 mcub1 mcuf1
+                                \ mvpa mcuu1 nel porder oc op pad dch dl cud
+                                \ mcud ich indn il cub mcub cuf mcuf rin cuu
+                                \ mccu pfkey pfloc pfx pln mc0 mc5p mc4 mc5
+                                \ pulse qdial rmclk rep rfi rs1 rs2 rs3 rf rc
+                                \ vpa sc ind ri scs sgr setbsmgb smgbp sclk
+                                \ scp setb setf smgl smglp smgr smgrp hts smgt
+                                \ smgtp wind sbim scsd rbim rcsd subcs supcs
+                                \ ht docr tsl tone uc hu u0 u1 u2 u3 u4 u5 u6
+                                \ u7 u8 u9 wait xoffc xonc zerom scesa bicr
+                                \ binel birep csnm csin colornm defbi devt
+                                \ dispc endbi smpch smsc rmpch rmsc getm kmous
+                                \ minfo pctrm pfxl reqmp scesc s0ds s1ds s2ds
+                                \ s3ds setab setaf setcolor smglr slines smgtb
+                                \ ehhlm elhlm erhlm ethlm evhlm sgr1 slengthsL
+syn match terminfoStrings       display '\<kf\([0-9]\|[0-5][0-9]\|6[0-3]\)\>'
 
-" parameterized strings
-syn match terminfoParameters	"%[%dcspl+*/mAO&|^=<>!~i?te;-]"
-syn match terminfoParameters	"%\('[A-Z]'\|{[0-9]\{1,2}}\|p[1-9]\|P[a-z]\|g[A-Z]\)"
+syn match terminfoParameters    '%[%dcspl+*/mAO&|^=<>!~i?te;-]'
+syn match terminfoParameters    '%\('[A-Z]'\|{[0-9]\{1,2}}\|p[1-9]\|P[a-z]\|g[A-Z]\)'
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_terminfo_syn_inits")
-  if version < 508
-    let did_terminfo_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink terminfoComment	Comment
-  HiLink terminfoTodo		Todo
-  HiLink terminfoNumbers	Number
-  HiLink terminfoSpecialChar	SpecialChar
-  HiLink terminfoDelay		Special
-  HiLink terminfoBooleans	Type
-  HiLink terminfoNumerics	Type
-  HiLink terminfoStrings	Type
-  HiLink terminfoParameters	Keyword
-  HiLink terminfoKeywords	Keyword
-  delcommand HiLink
-endif
+hi def link terminfoComment     Comment
+hi def link terminfoTodo        Todo
+hi def link terminfoNumbers     Number
+hi def link terminfoSpecialChar SpecialChar
+hi def link terminfoDelay       Special
+hi def link terminfoBooleans    Type
+hi def link terminfoNumerics    Type
+hi def link terminfoStrings     Type
+hi def link terminfoParameters  Keyword
+hi def link terminfoKeywords    Keyword
 
 let b:current_syntax = "terminfo"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/updatedb.vim
@@ -0,0 +1,39 @@
+" Vim syntax file
+" Language:         updatedb.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword updatedbTodo    contained TODO FIXME XXX NOTE
+
+syn region  updatedbComment display oneline start='^\s*#' end='$'
+                            \ contains=updatedbTodo,@Spell
+
+syn match   updatedbBegin   display '^'
+                            \ nextgroup=updatedbName,updatedbComment skipwhite
+
+syn keyword updatedbName    contained PRUNEFS PRUNEPATHS
+                            \ nextgroup=updatedbNameEq
+
+syn match   updatedbNameEq  contained display '=' nextgroup=updatedbValue
+
+syn region  updatedbValue   contained display oneline
+                            \ matchgroup=updatedbValue start='"'
+                            \ matchgroup=updatedbValue end='"'
+
+hi def link updatedbTodo    Todo
+hi def link updatedbComment Comment
+hi def link updatedbName    Identifier
+hi def link updatedbNameEq  Operator
+hi def link updatedbValue   String
+
+let b:current_syntax = "updatedb"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/xinetd.vim
@@ -0,0 +1,347 @@
+" Vim syntax file
+" Language:         xinetd.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword xinetdTodo          contained TODO FIXME XXX NOTE
+
+syn region  xinetdComment       display oneline start='^\s*#' end='$'
+                                \ contains=xinetdTodo,@Spell
+
+syn match   xinetdService       '^\s*service\>'
+                                \ nextgroup=xinetdServiceName skipwhite
+
+syn match   xinetdServiceName   contained '\S\+'
+                                \ nextgroup=xinetdServiceGroup skipwhite skipnl
+
+syn match   xinetdDefaults      '^\s*defaults'
+                                \ nextgroup=xinetdServiceGroup skipwhite skipnl
+
+syn region  xinetdServiceGroup  contained transparent
+                                \ matchgroup=xinetdServiceGroupD start='{'
+                                \ matchgroup=xinetdServiceGroupD end='}'
+                                \ contains=xinetdAttribute,xinetdReqAttribute,
+                                \ xinetdDisable
+
+syn keyword xinetdReqAttribute  contained user server protocol
+                                \ nextgroup=xinetdStringEq skipwhite
+
+syn keyword xinetdAttribute     contained id group bind
+                                \ interface
+                                \ nextgroup=xinetdStringEq skipwhite
+
+syn match   xinetdStringEq      contained display '='
+                                \ nextgroup=xinetdString skipwhite
+
+syn match   xinetdString        contained display '\S\+'
+
+syn keyword xinetdAttribute     contained type nextgroup=xinetdTypeEq skipwhite
+
+syn match   xinetdTypeEq        contained display '='
+                                \ nextgroup=xinetdType skipwhite
+
+syn keyword xinetdType          contained RPC INTERNAL TCPMUX TCPMUXPLUS
+                                \ UNLISTED
+                                \ nextgroup=xinetdType skipwhite
+
+syn keyword xinetdAttribute     contained flags
+                                \ nextgroup=xinetdFlagsEq skipwhite
+
+syn cluster xinetdFlagsC        contains=xinetdFlags,xinetdDeprFlags
+
+syn match   xinetdFlagsEq       contained display '='
+                                \ nextgroup=@xinetdFlagsC skipwhite
+
+syn keyword xinetdFlags         contained INTERCEPT NORETRY IDONLY NAMEINARGS
+                                \ NODELAY KEEPALIVE NOLIBWRAP SENSOR IPv4 IPv6
+                                \ nextgroup=@xinetdFlagsC skipwhite
+
+syn keyword xinetdDeprFlags     contained REUSE nextgroup=xinetdFlagsC skipwhite
+
+syn keyword xinetdDisable       contained disable
+                                \ nextgroup=xinetdBooleanEq skipwhite
+
+syn match   xinetdBooleanEq     contained display '='
+                                \ nextgroup=xinetdBoolean skipwhite
+
+syn keyword xinetdBoolean       contained yes no
+
+syn keyword xinetdReqAttribute  contained socket_type
+                                \ nextgroup=xinetdSocketTypeEq skipwhite
+
+syn match   xinetdSocketTypeEq  contained display '='
+                                \ nextgroup=xinetdSocketType skipwhite
+
+syn keyword xinetdSocketType    contained stream dgram raw seqpacket
+
+syn keyword xinetdReqAttribute  contained wait
+                                \ nextgroup=xinetdBooleanEq skipwhite
+
+syn keyword xinetdAttribute     contained groups mdns
+                                \ nextgroup=xinetdBooleanEq skipwhite
+
+syn keyword xinetdAttribute     contained instances per_source rlimit_cpu
+                                \ rlimit_data rlimit_rss rlimit_stack
+                                \ nextgroup=xinetdUNumberEq skipwhite
+
+syn match   xinetdUNumberEq     contained display '='
+                                \ nextgroup=xinetdUnlimited,xinetdNumber
+                                \ skipwhite
+
+syn keyword xinetdUnlimited     contained UNLIMITED
+
+syn match   xinetdNumber        contained display '\<\d\+\>'
+
+syn keyword xinetdAttribute     contained nice
+                                \ nextgroup=xinetdSignedNumEq skipwhite
+
+syn match   xinetdSignedNumEq   contained display '='
+                                \ nextgroup=xinetdSignedNumber skipwhite
+
+syn match   xinetdSignedNumber  contained display '[+-]\=\d\+\>'
+
+syn keyword xinetdAttribute     contained server_args
+                                \ enabled
+                                \ nextgroup=xinetdStringsEq skipwhite
+
+syn match   xinetdStringsEq     contained display '='
+                                \ nextgroup=xinetdStrings skipwhite
+
+syn match   xinetdStrings       contained display '\S\+'
+                                \ nextgroup=xinetdStrings skipwhite
+
+syn keyword xinetdAttribute     contained only_from no_access passenv
+                                \ nextgroup=xinetdStringsAdvEq skipwhite
+
+syn match   xinetdStringsAdvEq  contained display '[+-]\=='
+                                \ nextgroup=xinetdStrings skipwhite
+
+syn keyword xinetdAttribute     contained access_times
+                                \ nextgroup=xinetdTimeRangesEq skipwhite
+
+syn match   xinetdTimeRangesEq  contained display '='
+                                \ nextgroup=xinetdTimeRanges skipwhite
+
+syn match   xinetdTimeRanges    contained display
+                                \ '\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)-\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)'
+                                \ nextgroup=xinetdTimeRanges skipwhite
+
+syn keyword xinetdAttribute     contained log_type nextgroup=xinetdLogTypeEq
+                                \ skipwhite
+
+syn match   xinetdLogTypeEq     contained display '='
+                                \ nextgroup=xinetdLogType skipwhite
+
+syn keyword xinetdLogType       contained SYSLOG nextgroup=xinetdSyslogType
+                                \ skipwhite
+
+syn keyword xinetdLogType       contained FILE nextgroup=xinetdLogFile skipwhite
+
+syn keyword xinetdSyslogType    contained daemon auth authpriv user mail lpr
+                                \ news uucp ftp local0 local1 local2 local3
+                                \ local4 local5 local6 local7
+                                \ nextgroup=xinetdSyslogLevel skipwhite
+
+syn keyword xinetdSyslogLevel   contained emerg alert crit err warning notice
+                                \ info debug
+
+syn match   xinetdLogFile       contained display '\S\+'
+                                \ nextgroup=xinetdLogSoftLimit skipwhite
+
+syn match   xinetdLogSoftLimit  contained display '\<\d\+\>'
+                                \ nextgroup=xinetdLogHardLimit skipwhite
+
+syn match   xinetdLogHardLimit  contained display '\<\d\+\>'
+
+syn keyword xinetdAttribute     contained log_on_success
+                                \ nextgroup=xinetdLogSuccessEq skipwhite
+
+syn match   xinetdLogSuccessEq  contained display '[+-]\=='
+                                \ nextgroup=xinetdLogSuccess skipwhite
+
+syn keyword xinetdLogSuccess    contained PID HOST USERID EXIT DURATION TRAFFIC
+                                \ nextgroup=xinetdLogSuccess skipwhite
+
+syn keyword xinetdAttribute     contained log_on_failure
+                                \ nextgroup=xinetdLogFailureEq skipwhite
+
+syn match   xinetdLogFailureEq  contained display '[+-]\=='
+                                \ nextgroup=xinetdLogFailure skipwhite
+
+syn keyword xinetdLogFailure    contained HOST USERID ATTEMPT
+                                \ nextgroup=xinetdLogFailure skipwhite
+
+syn keyword xinetdReqAttribute  contained rpc_version
+                                \ nextgroup=xinetdRPCVersionEq skipwhite
+
+syn match   xinetdRPCVersionEq  contained display '='
+                                \ nextgroup=xinetdRPCVersion skipwhite
+
+syn match   xinetdRPCVersion    contained display '\d\+\%(-\d\+\)\=\>'
+
+syn keyword xinetdReqAttribute  contained rpc_number port
+                                \ nextgroup=xinetdNumberEq skipwhite
+
+syn match   xinetdNumberEq      contained display '='
+                                \ nextgroup=xinetdNumber skipwhite
+
+syn keyword xinetdAttribute     contained env nextgroup=xinetdEnvEq skipwhite
+
+syn match   xinetdEnvEq         contained display '+\=='
+                                \ nextgroup=xinetdEnvName skipwhite
+
+syn match   xinetdEnvName       contained display '[^=]\+'
+                                \ nextgroup=xinetdEnvNameEq
+
+syn match   xinetdEnvNameEq     contained display '=' nextgroup=xinetdEnvValue
+
+syn match   xinetdEnvValue      contained display '\S\+'
+                                \ nextgroup=xinetdEnvName skipwhite
+
+syn keyword xinetdAttribute     contained banner banner_success banner_failure
+                                \ nextgroup=xinetdPathEq skipwhite
+
+syn keyword xinetdPPAttribute   include includedir
+                                \ nextgroup=xinetdPath skipwhite
+
+syn match   xinetdPathEq        contained display '='
+                                \ nextgroup=xinetdPath skipwhite
+
+syn match   xinetdPath          contained display '\S\+'
+
+syn keyword xinetdAttribute     contained redirect nextgroup=xinetdRedirectEq
+                                \ skipwhite
+
+syn match   xinetdRedirectEq    contained display '='
+                                \ nextgroup=xinetdRedirectIP skipwhite
+
+syn match   xinetdRedirectIP    contained display '\S\+'
+                                \ nextgroup=xinetdNumber skipwhite
+
+syn keyword xinetdAttribute     contained cps nextgroup=xinetdCPSEq skipwhite
+
+syn match   xinetdCPSEq         contained display '='
+                                \ nextgroup=xinetdCPS skipwhite
+
+syn match   xinetdCPS           contained display '\<\d\+\>'
+                                \ nextgroup=xinetdNumber skipwhite
+
+syn keyword xinetdAttribute     contained max_load nextgroup=xinetdFloatEq
+                                \ skipwhite
+
+syn match   xinetdFloatEq       contained display '='
+                                \ nextgroup=xinetdFloat skipwhite
+
+syn match   xinetdFloat         contained display '\d\+\.\d*\|\.\d\+'
+
+syn keyword xinetdAttribute     contained umask nextgroup=xinetdOctalEq
+                                \ skipwhite
+
+syn match   xinetdOctalEq       contained display '='
+                                \ nextgroup=xinetdOctal,xinetdOctalError
+                                \ skipwhite
+
+syn match   xinetdOctal         contained display '\<0\o\+\>'
+                                \ contains=xinetdOctalZero
+syn match   xinetdOctalZero     contained display '\<0'
+syn match   xinetdOctalError    contained display '\<0\o*[89]\d*\>'
+
+syn keyword xinetdAttribute     contained rlimit_as nextgroup=xinetdASEq
+                                \ skipwhite
+
+syn match   xinetdASEq          contained display '='
+                                \ nextgroup=xinetdAS,xinetdUnlimited
+                                \ skipwhite
+
+syn match   xinetdAS            contained display '\d\+' nextgroup=xinetdASMult
+
+syn match   xinetdASMult        contained display '[KM]'
+
+syn keyword xinetdAttribute     contained deny_time nextgroup=xinetdDenyTimeEq
+                                \ skipwhite
+
+syn match   xinetdDenyTimeEq    contained display '='
+                                \ nextgroup=xinetdDenyTime,xinetdNumber
+                                \ skipwhite
+
+syn keyword xinetdDenyTime      contained FOREVER NEVER
+
+hi def link xinetdTodo          Todo
+hi def link xinetdComment       Comment
+hi def link xinetdService       Keyword
+hi def link xinetdServiceName   String
+hi def link xinetdDefaults      Keyword
+hi def link xinetdServiceGroupD Delimiter
+hi def link xinetdReqAttribute  Keyword
+hi def link xinetdAttribute     Type
+hi def link xinetdEq            Operator
+hi def link xinetdStringEq      xinetdEq
+hi def link xinetdString        String
+hi def link xinetdTypeEq        xinetdEq
+hi def link xinetdType          Identifier
+hi def link xinetdFlagsEq       xinetdEq
+hi def link xinetdFlags         xinetdType
+hi def link xinetdDeprFlags     WarningMsg
+hi def link xinetdDisable       Special
+hi def link xinetdBooleanEq     xinetdEq
+hi def link xinetdBoolean       Boolean
+hi def link xinetdSocketTypeEq  xinetdEq
+hi def link xinetdSocketType    xinetdType
+hi def link xinetdUNumberEq     xinetdEq
+hi def link xinetdUnlimited     Define
+hi def link xinetdNumber        Number
+hi def link xinetdSignedNumEq   xinetdEq
+hi def link xinetdSignedNumber  xinetdNumber
+hi def link xinetdStringsEq     xinetdEq
+hi def link xinetdStrings       xinetdString
+hi def link xinetdStringsAdvEq  xinetdEq
+hi def link xinetdTimeRangesEq  xinetdEq
+hi def link xinetdTimeRanges    Number
+hi def link xinetdLogTypeEq     xinetdEq
+hi def link xinetdLogType       Keyword
+hi def link xinetdSyslogType    xinetdType
+hi def link xinetdSyslogLevel   Number
+hi def link xinetdLogFile       xinetdPath
+hi def link xinetdLogSoftLimit  xinetdNumber
+hi def link xinetdLogHardLimit  xinetdNumber
+hi def link xinetdLogSuccessEq  xinetdEq
+hi def link xinetdLogSuccess    xinetdType
+hi def link xinetdLogFailureEq  xinetdEq
+hi def link xinetdLogFailure    xinetdType
+hi def link xinetdRPCVersionEq  xinetdEq
+hi def link xinetdRPCVersion    xinetdNumber
+hi def link xinetdNumberEq      xinetdEq
+hi def link xinetdEnvEq         xinetdEq
+hi def link xinetdEnvName       Identifier
+hi def link xinetdEnvNameEq     xinetdEq
+hi def link xinetdEnvValue      String
+hi def link xinetdPPAttribute   PreProc
+hi def link xinetdPathEq        xinetdEq
+hi def link xinetdPath          String
+hi def link xinetdRedirectEq    xinetdEq
+hi def link xinetdRedirectIP    String
+hi def link xinetdCPSEq         xinetdEq
+hi def link xinetdCPS           xinetdNumber
+hi def link xinetdFloatEq       xinetdEq
+hi def link xinetdFloat         xinetdNumber
+hi def link xinetdOctalEq       xinetdEq
+hi def link xinetdOctal         xinetdNumber
+hi def link xinetdOctalZero     PreProc
+hi def link xinetdOctalError    Error
+hi def link xinetdASEq          xinetdEq
+hi def link xinetdAS            xinetdNumber
+hi def link xinetdASMult        PreProc
+hi def link xinetdDenyTimeEq    xinetdEq
+hi def link xinetdDenyTime      PreProc
+
+let b:current_syntax = "xinetd"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/xmodmap.vim
+++ b/runtime/syntax/xmodmap.vim
@@ -1,172 +1,677 @@
 " Vim syntax file
-" Language:	    xmodmap definition file
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/xmodmap/
-" Latest Revision:  2004-05-22
-" arch-tag:	    8c37ed41-655a-479d-8050-e15dc6770338
+" Language:         xmodmap(1) definition file
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-29
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" comments
-syn region  xmodmapComment	display oneline matchgroup=xmodmapComment start=/^!/ end=/$/ contains=xmodmapTodo
+let s:cpo_save = &cpo
+set cpo&vim
 
-" todo
-syn keyword xmodmapTodo		contained TODO FIXME XXX NOTE
+syn keyword xmodmapTodo       contained TODO FIXME XXX NOTE
 
-" numbers
+syn region  xmodmapComment    display oneline matchgroup=xmodmapComment
+                              \ start=/^!/ end=/$/ contains=xmodmapTodo,@Spell
+
 syn case ignore
-syn match   xmodmapInt		display "\<\d\+\>"
-syn match   xmodmapHex		display "\<0x\x\+\>"
-syn match   xmodmapOctal	display "\<0\o\+\>"
-syn match   xmodmapOctalError	display "\<0\o*[89]\d*"
+syn match   xmodmapInt        display '\<\d\+\>'
+syn match   xmodmapHex        display '\<0x\x\+\>'
+syn match   xmodmapOctal      display '\<0\o\+\>'
+syn match   xmodmapOctalError display '\<0\o*[89]\d*'
 syn case match
 
-" keysyms (taken from <X11/keysymdef.h>)
-syn keyword xmodmapKeySym	VoidSymbol BackSpace Tab Linefeed Clear Return Pause Scroll_Lock Sys_Req Escape Delete Multi_key Codeinput SingleCandidate MultipleCandidate
-syn keyword xmodmapKeySym	PreviousCandidate Kanji Muhenkan Henkan_Mode Henkan Romaji Hiragana Katakana Hiragana_Katakana Zenkaku Hankaku Zenkaku_Hankaku Touroku Massyo Kana_Lock
-syn keyword xmodmapKeySym	Kana_Shift Eisu_Shift Eisu_toggle Kanji_Bangou Zen_Koho Mae_Koho Home Left Up Right Down Prior Page_Up Next Page_Down
-syn keyword xmodmapKeySym	End Begin Select Print Execute Insert Undo Redo Menu Find Cancel Help Break Mode_switch script_switch
-syn keyword xmodmapKeySym	Num_Lock KP_Space KP_Tab KP_Enter KP_F1 KP_F2 KP_F3 KP_F4 KP_Home KP_Left KP_Up KP_Right KP_Down KP_Prior KP_Page_Up
-syn keyword xmodmapKeySym	KP_Next KP_Page_Down KP_End KP_Begin KP_Insert KP_Delete KP_Equal KP_Multiply KP_Add KP_Separator KP_Subtract KP_Decimal KP_Divide KP_0 KP_1
-syn keyword xmodmapKeySym	KP_2 KP_3 KP_4 KP_5 KP_6 KP_7 KP_8 KP_9 F1 F2 F3 F4 F5 F6 F7
-syn keyword xmodmapKeySym	F8 F9 F10 F11 L1 F12 L2 F13 L3 F14 L4 F15 L5 F16 L6
-syn keyword xmodmapKeySym	F17 L7 F18 L8 F19 L9 F20 L10 F21 R1 F22 R2 F23 R3 F24
-syn keyword xmodmapKeySym	R4 F25 R5 F26 R6 F27 R7 F28 R8 F29 R9 F30 R10 F31 R11
-syn keyword xmodmapKeySym	F32 R12 F33 R13 F34 R14 F35 R15 Shift_L Shift_R Control_L Control_R Caps_Lock Shift_Lock Meta_L
-syn keyword xmodmapKeySym	Meta_R Alt_L Alt_R Super_L Super_R Hyper_L Hyper_R ISO_Lock ISO_Level2_Latch ISO_Level3_Shift ISO_Level3_Latch ISO_Level3_Lock ISO_Group_Shift ISO_Group_Latch ISO_Group_Lock
-syn keyword xmodmapKeySym	ISO_Next_Group ISO_Next_Group_Lock ISO_Prev_Group ISO_Prev_Group_Lock ISO_First_Group ISO_First_Group_Lock ISO_Last_Group ISO_Last_Group_Lock ISO_Left_Tab ISO_Move_Line_Up ISO_Move_Line_Down ISO_Partial_Line_Up ISO_Partial_Line_Down ISO_Partial_Space_Left ISO_Partial_Space_Right
-syn keyword xmodmapKeySym	ISO_Set_Margin_Left ISO_Set_Margin_Right ISO_Release_Margin_Left ISO_Release_Margin_Right ISO_Release_Both_Margins ISO_Fast_Cursor_Left ISO_Fast_Cursor_Right ISO_Fast_Cursor_Up ISO_Fast_Cursor_Down ISO_Continuous_Underline ISO_Discontinuous_Underline ISO_Emphasize ISO_Center_Object ISO_Enter dead_grave
-syn keyword xmodmapKeySym	dead_acute dead_circumflex dead_tilde dead_macron dead_breve dead_abovedot dead_diaeresis dead_abovering dead_doubleacute dead_caron dead_cedilla dead_ogonek dead_iota dead_voiced_sound dead_semivoiced_sound
-syn keyword xmodmapKeySym	dead_belowdot dead_hook dead_horn First_Virtual_Screen Prev_Virtual_Screen Next_Virtual_Screen Last_Virtual_Screen Terminate_Server AccessX_Enable AccessX_Feedback_Enable RepeatKeys_Enable SlowKeys_Enable BounceKeys_Enable StickyKeys_Enable MouseKeys_Enable
-syn keyword xmodmapKeySym	MouseKeys_Accel_Enable Overlay1_Enable Overlay2_Enable AudibleBell_Enable Pointer_Left Pointer_Right Pointer_Up Pointer_Down Pointer_UpLeft Pointer_UpRight Pointer_DownLeft Pointer_DownRight Pointer_Button_Dflt Pointer_Button1 Pointer_Button2
-syn keyword xmodmapKeySym	Pointer_Button3 Pointer_Button4 Pointer_Button5 Pointer_DblClick_Dflt Pointer_DblClick1 Pointer_DblClick2 Pointer_DblClick3 Pointer_DblClick4 Pointer_DblClick5 Pointer_Drag_Dflt Pointer_Drag1 Pointer_Drag2 Pointer_Drag3 Pointer_Drag4 Pointer_Drag5
-syn keyword xmodmapKeySym	Pointer_EnableKeys Pointer_Accelerate Pointer_DfltBtnNext Pointer_DfltBtnPrev 3270_Duplicate 3270_FieldMark 3270_Right2 3270_Left2 3270_BackTab 3270_EraseEOF 3270_EraseInput 3270_Reset 3270_Quit 3270_PA1 3270_PA2
-syn keyword xmodmapKeySym	3270_PA3 3270_Test 3270_Attn 3270_CursorBlink 3270_AltCursor 3270_KeyClick 3270_Jump 3270_Ident 3270_Rule 3270_Copy 3270_Play 3270_Setup 3270_Record 3270_ChangeScreen 3270_DeleteWord
-syn keyword xmodmapKeySym	3270_ExSelect 3270_CursorSelect 3270_PrintScreen 3270_Enter space exclam quotedbl numbersign dollar percent ampersand apostrophe quoteright parenleft parenright
-syn keyword xmodmapKeySym	asterisk plus comma minus period slash 0 1 2 3 4 5 6 7 8
-syn keyword xmodmapKeySym	9 colon semicolon less equal greater question at A B C D E F G
-syn keyword xmodmapKeySym	H I J K L M N O P Q R S T U V
-syn keyword xmodmapKeySym	W X Y Z bracketleft backslash bracketright asciicircum underscore grave quoteleft a b c d
-syn keyword xmodmapKeySym	e f g h i j k l m n o p q r s
-syn keyword xmodmapKeySym	t u v w x y z braceleft bar braceright asciitilde nobreakspace exclamdown cent sterling
-syn keyword xmodmapKeySym	currency yen brokenbar section diaeresis copyright ordfeminine guillemotleft notsign hyphen registered macron degree plusminus twosuperior
-syn keyword xmodmapKeySym	threesuperior acute mu paragraph periodcentered cedilla onesuperior masculine guillemotright onequarter onehalf threequarters questiondown Agrave Aacute
-syn keyword xmodmapKeySym	Acircumflex Atilde Adiaeresis Aring AE Ccedilla Egrave Eacute Ecircumflex Ediaeresis Igrave Iacute Icircumflex Idiaeresis ETH
-syn keyword xmodmapKeySym	Eth Ntilde Ograve Oacute Ocircumflex Otilde Odiaeresis multiply Ooblique Oslash Ugrave Uacute Ucircumflex Udiaeresis Yacute
-syn keyword xmodmapKeySym	THORN Thorn ssharp agrave aacute acircumflex atilde adiaeresis aring ae ccedilla egrave eacute ecircumflex ediaeresis
-syn keyword xmodmapKeySym	igrave iacute icircumflex idiaeresis eth ntilde ograve oacute ocircumflex otilde odiaeresis division oslash ooblique ugrave
-syn keyword xmodmapKeySym	uacute ucircumflex udiaeresis yacute thorn ydiaeresis Aogonek breve Lstroke Lcaron Sacute Scaron Scedilla Tcaron Zacute
-syn keyword xmodmapKeySym	Zcaron Zabovedot aogonek ogonek lstroke lcaron sacute caron scaron scedilla tcaron zacute doubleacute zcaron zabovedot
-syn keyword xmodmapKeySym	Racute Abreve Lacute Cacute Ccaron Eogonek Ecaron Dcaron Dstroke Nacute Ncaron Odoubleacute Rcaron Uring Udoubleacute
-syn keyword xmodmapKeySym	Tcedilla racute abreve lacute cacute ccaron eogonek ecaron dcaron dstroke nacute ncaron odoubleacute udoubleacute rcaron
-syn keyword xmodmapKeySym	uring tcedilla abovedot Hstroke Hcircumflex Iabovedot Gbreve Jcircumflex hstroke hcircumflex idotless gbreve jcircumflex Cabovedot Ccircumflex
-syn keyword xmodmapKeySym	Gabovedot Gcircumflex Ubreve Scircumflex cabovedot ccircumflex gabovedot gcircumflex ubreve scircumflex kra kappa Rcedilla Itilde Lcedilla
-syn keyword xmodmapKeySym	Emacron Gcedilla Tslash rcedilla itilde lcedilla emacron gcedilla tslash ENG eng Amacron Iogonek Eabovedot Imacron
-syn keyword xmodmapKeySym	Ncedilla Omacron Kcedilla Uogonek Utilde Umacron amacron iogonek eabovedot imacron ncedilla omacron kcedilla uogonek utilde
-syn keyword xmodmapKeySym	umacron Babovedot babovedot Dabovedot Wgrave Wacute dabovedot Ygrave Fabovedot fabovedot Mabovedot mabovedot Pabovedot wgrave pabovedot
-syn keyword xmodmapKeySym	wacute Sabovedot ygrave Wdiaeresis wdiaeresis sabovedot Wcircumflex Tabovedot Ycircumflex wcircumflex tabovedot ycircumflex OE oe Ydiaeresis
-syn keyword xmodmapKeySym	overline kana_fullstop kana_openingbracket kana_closingbracket kana_comma kana_conjunctive kana_middledot kana_WO kana_a kana_i kana_u kana_e kana_o kana_ya kana_yu
-syn keyword xmodmapKeySym	kana_yo kana_tsu kana_tu prolongedsound kana_A kana_I kana_U kana_E kana_O kana_KA kana_KI kana_KU kana_KE kana_KO kana_SA
-syn keyword xmodmapKeySym	kana_SHI kana_SU kana_SE kana_SO kana_TA kana_CHI kana_TI kana_TSU kana_TU kana_TE kana_TO kana_NA kana_NI kana_NU kana_NE
-syn keyword xmodmapKeySym	kana_NO kana_HA kana_HI kana_FU kana_HU kana_HE kana_HO kana_MA kana_MI kana_MU kana_ME kana_MO kana_YA kana_YU kana_YO
-syn keyword xmodmapKeySym	kana_RA kana_RI kana_RU kana_RE kana_RO kana_WA kana_N voicedsound semivoicedsound kana_switch Farsi_0 Farsi_1 Farsi_2 Farsi_3 Farsi_4
-syn keyword xmodmapKeySym	Farsi_5 Farsi_6 Farsi_7 Farsi_8 Farsi_9 Arabic_percent Arabic_superscript_alef Arabic_tteh Arabic_peh Arabic_tcheh Arabic_ddal Arabic_rreh Arabic_comma Arabic_fullstop Arabic_0
-syn keyword xmodmapKeySym	Arabic_1 Arabic_2 Arabic_3 Arabic_4 Arabic_5 Arabic_6 Arabic_7 Arabic_8 Arabic_9 Arabic_semicolon Arabic_question_mark Arabic_hamza Arabic_maddaonalef Arabic_hamzaonalef Arabic_hamzaonwaw
-syn keyword xmodmapKeySym	Arabic_hamzaunderalef Arabic_hamzaonyeh Arabic_alef Arabic_beh Arabic_tehmarbuta Arabic_teh Arabic_theh Arabic_jeem Arabic_hah Arabic_khah Arabic_dal Arabic_thal Arabic_ra Arabic_zain Arabic_seen
-syn keyword xmodmapKeySym	Arabic_sheen Arabic_sad Arabic_dad Arabic_tah Arabic_zah Arabic_ain Arabic_ghain Arabic_tatweel Arabic_feh Arabic_qaf Arabic_kaf Arabic_lam Arabic_meem Arabic_noon Arabic_ha
-syn keyword xmodmapKeySym	Arabic_heh Arabic_waw Arabic_alefmaksura Arabic_yeh Arabic_fathatan Arabic_dammatan Arabic_kasratan Arabic_fatha Arabic_damma Arabic_kasra Arabic_shadda Arabic_sukun Arabic_madda_above Arabic_hamza_above Arabic_hamza_below
-syn keyword xmodmapKeySym	Arabic_jeh Arabic_veh Arabic_keheh Arabic_gaf Arabic_noon_ghunna Arabic_heh_doachashmee Farsi_yeh Arabic_farsi_yeh Arabic_yeh_baree Arabic_heh_goal Arabic_switch Cyrillic_GHE_bar Cyrillic_ghe_bar Cyrillic_ZHE_descender Cyrillic_zhe_descender
-syn keyword xmodmapKeySym	Cyrillic_KA_descender Cyrillic_ka_descender Cyrillic_KA_vertstroke Cyrillic_ka_vertstroke Cyrillic_EN_descender Cyrillic_en_descender Cyrillic_U_straight Cyrillic_u_straight Cyrillic_U_straight_bar Cyrillic_u_straight_bar Cyrillic_HA_descender Cyrillic_ha_descender Cyrillic_CHE_descender Cyrillic_che_descender Cyrillic_CHE_vertstroke
-syn keyword xmodmapKeySym	Cyrillic_che_vertstroke Cyrillic_SHHA Cyrillic_shha Cyrillic_SCHWA Cyrillic_schwa Cyrillic_I_macron Cyrillic_i_macron Cyrillic_O_bar Cyrillic_o_bar Cyrillic_U_macron Cyrillic_u_macron Serbian_dje Macedonia_gje Cyrillic_io Ukrainian_ie
-syn keyword xmodmapKeySym	Ukranian_je Macedonia_dse Ukrainian_i Ukranian_i Ukrainian_yi Ukranian_yi Cyrillic_je Serbian_je Cyrillic_lje Serbian_lje Cyrillic_nje Serbian_nje Serbian_tshe Macedonia_kje Ukrainian_ghe_with_upturn
-syn keyword xmodmapKeySym	Byelorussian_shortu Cyrillic_dzhe Serbian_dze numerosign Serbian_DJE Macedonia_GJE Cyrillic_IO Ukrainian_IE Ukranian_JE Macedonia_DSE Ukrainian_I Ukranian_I Ukrainian_YI Ukranian_YI Cyrillic_JE
-syn keyword xmodmapKeySym	Serbian_JE Cyrillic_LJE Serbian_LJE Cyrillic_NJE Serbian_NJE Serbian_TSHE Macedonia_KJE Ukrainian_GHE_WITH_UPTURN Byelorussian_SHORTU Cyrillic_DZHE Serbian_DZE Cyrillic_yu Cyrillic_a Cyrillic_be Cyrillic_tse
-syn keyword xmodmapKeySym	Cyrillic_de Cyrillic_ie Cyrillic_ef Cyrillic_ghe Cyrillic_ha Cyrillic_i Cyrillic_shorti Cyrillic_ka Cyrillic_el Cyrillic_em Cyrillic_en Cyrillic_o Cyrillic_pe Cyrillic_ya Cyrillic_er
-syn keyword xmodmapKeySym	Cyrillic_es Cyrillic_te Cyrillic_u Cyrillic_zhe Cyrillic_ve Cyrillic_softsign Cyrillic_yeru Cyrillic_ze Cyrillic_sha Cyrillic_e Cyrillic_shcha Cyrillic_che Cyrillic_hardsign Cyrillic_YU Cyrillic_A
-syn keyword xmodmapKeySym	Cyrillic_BE Cyrillic_TSE Cyrillic_DE Cyrillic_IE Cyrillic_EF Cyrillic_GHE Cyrillic_HA Cyrillic_I Cyrillic_SHORTI Cyrillic_KA Cyrillic_EL Cyrillic_EM Cyrillic_EN Cyrillic_O Cyrillic_PE
-syn keyword xmodmapKeySym	Cyrillic_YA Cyrillic_ER Cyrillic_ES Cyrillic_TE Cyrillic_U Cyrillic_ZHE Cyrillic_VE Cyrillic_SOFTSIGN Cyrillic_YERU Cyrillic_ZE Cyrillic_SHA Cyrillic_E Cyrillic_SHCHA Cyrillic_CHE Cyrillic_HARDSIGN
-syn keyword xmodmapKeySym	Greek_ALPHAaccent Greek_EPSILONaccent Greek_ETAaccent Greek_IOTAaccent Greek_IOTAdieresis Greek_IOTAdiaeresis Greek_OMICRONaccent Greek_UPSILONaccent Greek_UPSILONdieresis Greek_OMEGAaccent Greek_accentdieresis Greek_horizbar Greek_alphaaccent Greek_epsilonaccent Greek_etaaccent
-syn keyword xmodmapKeySym	Greek_iotaaccent Greek_iotadieresis Greek_iotaaccentdieresis Greek_omicronaccent Greek_upsilonaccent Greek_upsilondieresis Greek_upsilonaccentdieresis Greek_omegaaccent Greek_ALPHA Greek_BETA Greek_GAMMA Greek_DELTA Greek_EPSILON Greek_ZETA Greek_ETA
-syn keyword xmodmapKeySym	Greek_THETA Greek_IOTA Greek_KAPPA Greek_LAMDA Greek_LAMBDA Greek_MU Greek_NU Greek_XI Greek_OMICRON Greek_PI Greek_RHO Greek_SIGMA Greek_TAU Greek_UPSILON Greek_PHI
-syn keyword xmodmapKeySym	Greek_CHI Greek_PSI Greek_OMEGA Greek_alpha Greek_beta Greek_gamma Greek_delta Greek_epsilon Greek_zeta Greek_eta Greek_theta Greek_iota Greek_kappa Greek_lamda Greek_lambda
-syn keyword xmodmapKeySym	Greek_mu Greek_nu Greek_xi Greek_omicron Greek_pi Greek_rho Greek_sigma Greek_finalsmallsigma Greek_tau Greek_upsilon Greek_phi Greek_chi Greek_psi Greek_omega Greek_switch
-syn keyword xmodmapKeySym	leftradical topleftradical horizconnector topintegral botintegral vertconnector topleftsqbracket botleftsqbracket toprightsqbracket botrightsqbracket topleftparens botleftparens toprightparens botrightparens leftmiddlecurlybrace
-syn keyword xmodmapKeySym	rightmiddlecurlybrace topleftsummation botleftsummation topvertsummationconnector botvertsummationconnector toprightsummation botrightsummation rightmiddlesummation lessthanequal notequal greaterthanequal integral therefore variation infinity
-syn keyword xmodmapKeySym	nabla approximate similarequal ifonlyif implies identical radical includedin includes intersection union logicaland logicalor partialderivative function
-syn keyword xmodmapKeySym	leftarrow uparrow rightarrow downarrow blank soliddiamond checkerboard ht ff cr lf nl vt lowrightcorner uprightcorner
-syn keyword xmodmapKeySym	upleftcorner lowleftcorner crossinglines horizlinescan1 horizlinescan3 horizlinescan5 horizlinescan7 horizlinescan9 leftt rightt bott topt vertbar emspace enspace
-syn keyword xmodmapKeySym	em3space em4space digitspace punctspace thinspace hairspace emdash endash signifblank ellipsis doubbaselinedot onethird twothirds onefifth twofifths
-syn keyword xmodmapKeySym	threefifths fourfifths onesixth fivesixths careof figdash leftanglebracket decimalpoint rightanglebracket marker oneeighth threeeighths fiveeighths seveneighths trademark
-syn keyword xmodmapKeySym	signaturemark trademarkincircle leftopentriangle rightopentriangle emopencircle emopenrectangle leftsinglequotemark rightsinglequotemark leftdoublequotemark rightdoublequotemark prescription minutes seconds latincross hexagram
-syn keyword xmodmapKeySym	filledrectbullet filledlefttribullet filledrighttribullet emfilledcircle emfilledrect enopencircbullet enopensquarebullet openrectbullet opentribulletup opentribulletdown openstar enfilledcircbullet enfilledsqbullet filledtribulletup filledtribulletdown
-syn keyword xmodmapKeySym	leftpointer rightpointer club diamond heart maltesecross dagger doubledagger checkmark ballotcross musicalsharp musicalflat malesymbol femalesymbol telephone
-syn keyword xmodmapKeySym	telephonerecorder phonographcopyright caret singlelowquotemark doublelowquotemark cursor leftcaret rightcaret downcaret upcaret overbar downtack upshoe downstile underbar
-syn keyword xmodmapKeySym	jot quad uptack circle upstile downshoe rightshoe leftshoe lefttack righttack hebrew_doublelowline hebrew_aleph hebrew_bet hebrew_beth hebrew_gimel
-syn keyword xmodmapKeySym	hebrew_gimmel hebrew_dalet hebrew_daleth hebrew_he hebrew_waw hebrew_zain hebrew_zayin hebrew_chet hebrew_het hebrew_tet hebrew_teth hebrew_yod hebrew_finalkaph hebrew_kaph hebrew_lamed
-syn keyword xmodmapKeySym	hebrew_finalmem hebrew_mem hebrew_finalnun hebrew_nun hebrew_samech hebrew_samekh hebrew_ayin hebrew_finalpe hebrew_pe hebrew_finalzade hebrew_finalzadi hebrew_zade hebrew_zadi hebrew_qoph hebrew_kuf
-syn keyword xmodmapKeySym	hebrew_resh hebrew_shin hebrew_taw hebrew_taf Hebrew_switch Thai_kokai Thai_khokhai Thai_khokhuat Thai_khokhwai Thai_khokhon Thai_khorakhang Thai_ngongu Thai_chochan Thai_choching Thai_chochang
-syn keyword xmodmapKeySym	Thai_soso Thai_chochoe Thai_yoying Thai_dochada Thai_topatak Thai_thothan Thai_thonangmontho Thai_thophuthao Thai_nonen Thai_dodek Thai_totao Thai_thothung Thai_thothahan Thai_thothong Thai_nonu
-syn keyword xmodmapKeySym	Thai_bobaimai Thai_popla Thai_phophung Thai_fofa Thai_phophan Thai_fofan Thai_phosamphao Thai_moma Thai_yoyak Thai_rorua Thai_ru Thai_loling Thai_lu Thai_wowaen Thai_sosala
-syn keyword xmodmapKeySym	Thai_sorusi Thai_sosua Thai_hohip Thai_lochula Thai_oang Thai_honokhuk Thai_paiyannoi Thai_saraa Thai_maihanakat Thai_saraaa Thai_saraam Thai_sarai Thai_saraii Thai_saraue Thai_sarauee
-syn keyword xmodmapKeySym	Thai_sarau Thai_sarauu Thai_phinthu Thai_maihanakat_maitho Thai_baht Thai_sarae Thai_saraae Thai_sarao Thai_saraaimaimuan Thai_saraaimaimalai Thai_lakkhangyao Thai_maiyamok Thai_maitaikhu Thai_maiek Thai_maitho
-syn keyword xmodmapKeySym	Thai_maitri Thai_maichattawa Thai_thanthakhat Thai_nikhahit Thai_leksun Thai_leknung Thai_leksong Thai_leksam Thai_leksi Thai_lekha Thai_lekhok Thai_lekchet Thai_lekpaet Thai_lekkao Hangul
-syn keyword xmodmapKeySym	Hangul_Start Hangul_End Hangul_Hanja Hangul_Jamo Hangul_Romaja Hangul_Codeinput Hangul_Jeonja Hangul_Banja Hangul_PreHanja Hangul_PostHanja Hangul_SingleCandidate Hangul_MultipleCandidate Hangul_PreviousCandidate Hangul_Special Hangul_switch
-syn keyword xmodmapKeySym	Hangul_Kiyeog Hangul_SsangKiyeog Hangul_KiyeogSios Hangul_Nieun Hangul_NieunJieuj Hangul_NieunHieuh Hangul_Dikeud Hangul_SsangDikeud Hangul_Rieul Hangul_RieulKiyeog Hangul_RieulMieum Hangul_RieulPieub Hangul_RieulSios Hangul_RieulTieut Hangul_RieulPhieuf
-syn keyword xmodmapKeySym	Hangul_RieulHieuh Hangul_Mieum Hangul_Pieub Hangul_SsangPieub Hangul_PieubSios Hangul_Sios Hangul_SsangSios Hangul_Ieung Hangul_Jieuj Hangul_SsangJieuj Hangul_Cieuc Hangul_Khieuq Hangul_Tieut Hangul_Phieuf Hangul_Hieuh
-syn keyword xmodmapKeySym	Hangul_A Hangul_AE Hangul_YA Hangul_YAE Hangul_EO Hangul_E Hangul_YEO Hangul_YE Hangul_O Hangul_WA Hangul_WAE Hangul_OE Hangul_YO Hangul_U Hangul_WEO
-syn keyword xmodmapKeySym	Hangul_WE Hangul_WI Hangul_YU Hangul_EU Hangul_YI Hangul_I Hangul_J_Kiyeog Hangul_J_SsangKiyeog Hangul_J_KiyeogSios Hangul_J_Nieun Hangul_J_NieunJieuj Hangul_J_NieunHieuh Hangul_J_Dikeud Hangul_J_Rieul Hangul_J_RieulKiyeog
-syn keyword xmodmapKeySym	Hangul_J_RieulMieum Hangul_J_RieulPieub Hangul_J_RieulSios Hangul_J_RieulTieut Hangul_J_RieulPhieuf Hangul_J_RieulHieuh Hangul_J_Mieum Hangul_J_Pieub Hangul_J_PieubSios Hangul_J_Sios Hangul_J_SsangSios Hangul_J_Ieung Hangul_J_Jieuj Hangul_J_Cieuc Hangul_J_Khieuq
-syn keyword xmodmapKeySym	Hangul_J_Tieut Hangul_J_Phieuf Hangul_J_Hieuh Hangul_RieulYeorinHieuh Hangul_SunkyeongeumMieum Hangul_SunkyeongeumPieub Hangul_PanSios Hangul_KkogjiDalrinIeung Hangul_SunkyeongeumPhieuf Hangul_YeorinHieuh Hangul_AraeA Hangul_AraeAE Hangul_J_PanSios Hangul_J_KkogjiDalrinIeung Hangul_J_YeorinHieuh
-syn keyword xmodmapKeySym	Korean_Won Armenian_eternity Armenian_ligature_ew Armenian_full_stop Armenian_verjaket Armenian_parenright Armenian_parenleft Armenian_guillemotright Armenian_guillemotleft Armenian_em_dash Armenian_dot Armenian_mijaket Armenian_separation_mark Armenian_but Armenian_comma
-syn keyword xmodmapKeySym	Armenian_en_dash Armenian_hyphen Armenian_yentamna Armenian_ellipsis Armenian_exclam Armenian_amanak Armenian_accent Armenian_shesht Armenian_question Armenian_paruyk Armenian_AYB Armenian_ayb Armenian_BEN Armenian_ben Armenian_GIM
-syn keyword xmodmapKeySym	Armenian_gim Armenian_DA Armenian_da Armenian_YECH Armenian_yech Armenian_ZA Armenian_za Armenian_E Armenian_e Armenian_AT Armenian_at Armenian_TO Armenian_to Armenian_ZHE Armenian_zhe
-syn keyword xmodmapKeySym	Armenian_INI Armenian_ini Armenian_LYUN Armenian_lyun Armenian_KHE Armenian_khe Armenian_TSA Armenian_tsa Armenian_KEN Armenian_ken Armenian_HO Armenian_ho Armenian_DZA Armenian_dza Armenian_GHAT
-syn keyword xmodmapKeySym	Armenian_ghat Armenian_TCHE Armenian_tche Armenian_MEN Armenian_men Armenian_HI Armenian_hi Armenian_NU Armenian_nu Armenian_SHA Armenian_sha Armenian_VO Armenian_vo Armenian_CHA Armenian_cha
-syn keyword xmodmapKeySym	Armenian_PE Armenian_pe Armenian_JE Armenian_je Armenian_RA Armenian_ra Armenian_SE Armenian_se Armenian_VEV Armenian_vev Armenian_TYUN Armenian_tyun Armenian_RE Armenian_re Armenian_TSO
-syn keyword xmodmapKeySym	Armenian_tso Armenian_VYUN Armenian_vyun Armenian_PYUR Armenian_pyur Armenian_KE Armenian_ke Armenian_O Armenian_o Armenian_FE Armenian_fe Armenian_apostrophe Armenian_section_sign Georgian_an Georgian_ban
-syn keyword xmodmapKeySym	Georgian_gan Georgian_don Georgian_en Georgian_vin Georgian_zen Georgian_tan Georgian_in Georgian_kan Georgian_las Georgian_man Georgian_nar Georgian_on Georgian_par Georgian_zhar Georgian_rae
-syn keyword xmodmapKeySym	Georgian_san Georgian_tar Georgian_un Georgian_phar Georgian_khar Georgian_ghan Georgian_qar Georgian_shin Georgian_chin Georgian_can Georgian_jil Georgian_cil Georgian_char Georgian_xan Georgian_jhan
-syn keyword xmodmapKeySym	Georgian_hae Georgian_he Georgian_hie Georgian_we Georgian_har Georgian_hoe Georgian_fi Ccedillaabovedot Xabovedot Qabovedot Ibreve IE UO Zstroke Gcaron
-syn keyword xmodmapKeySym	Obarred ccedillaabovedot xabovedot Ocaron qabovedot ibreve ie uo zstroke gcaron ocaron obarred SCHWA schwa Lbelowdot
-syn keyword xmodmapKeySym	Lstrokebelowdot lbelowdot lstrokebelowdot Gtilde gtilde Abelowdot abelowdot Ahook ahook Acircumflexacute acircumflexacute Acircumflexgrave acircumflexgrave Acircumflexhook acircumflexhook
-syn keyword xmodmapKeySym	Acircumflextilde acircumflextilde Acircumflexbelowdot acircumflexbelowdot Abreveacute abreveacute Abrevegrave abrevegrave Abrevehook abrevehook Abrevetilde abrevetilde Abrevebelowdot abrevebelowdot Ebelowdot
-syn keyword xmodmapKeySym	ebelowdot Ehook ehook Etilde etilde Ecircumflexacute ecircumflexacute Ecircumflexgrave ecircumflexgrave Ecircumflexhook ecircumflexhook Ecircumflextilde ecircumflextilde Ecircumflexbelowdot ecircumflexbelowdot
-syn keyword xmodmapKeySym	Ihook ihook Ibelowdot ibelowdot Obelowdot obelowdot Ohook ohook Ocircumflexacute ocircumflexacute Ocircumflexgrave ocircumflexgrave Ocircumflexhook ocircumflexhook Ocircumflextilde
-syn keyword xmodmapKeySym	ocircumflextilde Ocircumflexbelowdot ocircumflexbelowdot Ohornacute ohornacute Ohorngrave ohorngrave Ohornhook ohornhook Ohorntilde ohorntilde Ohornbelowdot ohornbelowdot Ubelowdot ubelowdot
-syn keyword xmodmapKeySym	Uhook uhook Uhornacute uhornacute Uhorngrave uhorngrave Uhornhook uhornhook Uhorntilde uhorntilde Uhornbelowdot uhornbelowdot Ybelowdot ybelowdot Yhook
-syn keyword xmodmapKeySym	yhook Ytilde ytilde Ohorn ohorn Uhorn uhorn combining_tilde combining_grave combining_acute combining_hook combining_belowdot EcuSign ColonSign CruzeiroSign
-syn keyword xmodmapKeySym	FFrancSign LiraSign MillSign NairaSign PesetaSign RupeeSign WonSign NewSheqelSign DongSign EuroSign
-syn match   xmodmapKeySym	"\<[A-Za-z]\>"
+syn match   xmodmapKeySym     display '\<[A-Za-z]\>'
 
-" keywords
-syn keyword xmodmapKeyword	keycode keysym clear add remove pointer
+" #include <X11/keysymdef.h>
+syn keyword xmodmapKeySym     XK_VoidSymbol XK_BackSpace XK_Tab XK_Linefeed
+                              \ XK_Clear XK_Return XK_Pause XK_Scroll_Lock
+                              \ XK_Sys_Req XK_Escape XK_Delete XK_Multi_key
+                              \ XK_Codeinput XK_SingleCandidate
+                              \ XK_MultipleCandidate XK_PreviousCandidate
+                              \ XK_Kanji XK_Muhenkan XK_Henkan_Mode
+                              \ XK_Henkan XK_Romaji XK_Hiragana XK_Katakana
+                              \ XK_Hiragana_Katakana XK_Zenkaku XK_Hankaku
+                              \ XK_Zenkaku_Hankaku XK_Touroku XK_Massyo
+                              \ XK_Kana_Lock XK_Kana_Shift XK_Eisu_Shift
+                              \ XK_Eisu_toggle XK_Kanji_Bangou XK_Zen_Koho
+                              \ XK_Mae_Koho XK_Home XK_Left XK_Up XK_Right
+                              \ XK_Down XK_Prior XK_Page_Up XK_Next
+                              \ XK_Page_Down XK_End XK_Begin XK_Select
+                              \ XK_Print XK_Execute XK_Insert XK_Undo XK_Redo
+                              \ XK_Menu XK_Find XK_Cancel XK_Help XK_Break
+                              \ XK_Mode_switch XK_script_switch XK_Num_Lock
+                              \ XK_KP_Space XK_KP_Tab XK_KP_Enter XK_KP_F1
+                              \ XK_KP_F2 XK_KP_F3 XK_KP_F4 XK_KP_Home
+                              \ XK_KP_Left XK_KP_Up XK_KP_Right XK_KP_Down
+                              \ XK_KP_Prior XK_KP_Page_Up XK_KP_Next
+                              \ XK_KP_Page_Down XK_KP_End XK_KP_Begin
+                              \ XK_KP_Insert XK_KP_Delete XK_KP_Equal
+                              \ XK_KP_Multiply XK_KP_Add XK_KP_Separator
+                              \ XK_KP_Subtract XK_KP_Decimal XK_KP_Divide
+                              \ XK_KP_0 XK_KP_1 XK_KP_2 XK_KP_3 XK_KP_4
+                              \ XK_KP_5 XK_KP_6 XK_KP_7 XK_KP_8 XK_KP_9 XK_F1
+                              \ XK_F2 XK_F3 XK_F4 XK_F5 XK_F6 XK_F7 XK_F8
+                              \ XK_F9 XK_F10 XK_F11 XK_L1 XK_F12 XK_L2 XK_F13
+                              \ XK_L3 XK_F14 XK_L4 XK_F15 XK_L5 XK_F16 XK_L6
+                              \ XK_F17 XK_L7 XK_F18 XK_L8 XK_F19 XK_L9 XK_F20
+                              \ XK_L10 XK_F21 XK_R1 XK_F22 XK_R2 XK_F23
+                              \ XK_R3 XK_F24 XK_R4 XK_F25 XK_R5 XK_F26
+                              \ XK_R6 XK_F27 XK_R7 XK_F28 XK_R8 XK_F29
+                              \ XK_R9 XK_F30 XK_R10 XK_F31 XK_R11 XK_F32
+                              \ XK_R12 XK_F33 XK_R13 XK_F34 XK_R14 XK_F35
+                              \ XK_R15 XK_Shift_L XK_Shift_R XK_Control_L
+                              \ XK_Control_R XK_Caps_Lock XK_Shift_Lock
+                              \ XK_Meta_L XK_Meta_R XK_Alt_L XK_Alt_R
+                              \ XK_Super_L XK_Super_R XK_Hyper_L XK_Hyper_R
+                              \ XK_dead_hook XK_dead_horn XK_3270_Duplicate
+                              \ XK_3270_FieldMark XK_3270_Right2 XK_3270_Left2
+                              \ XK_3270_BackTab XK_3270_EraseEOF
+                              \ XK_3270_EraseInput XK_3270_Reset
+                              \ XK_3270_Quit XK_3270_PA1 XK_3270_PA2
+                              \ XK_3270_PA3 XK_3270_Test XK_3270_Attn
+                              \ XK_3270_CursorBlink XK_3270_AltCursor
+                              \ XK_3270_KeyClick XK_3270_Jump
+                              \ XK_3270_Ident XK_3270_Rule XK_3270_Copy
+                              \ XK_3270_Play XK_3270_Setup XK_3270_Record
+                              \ XK_3270_ChangeScreen XK_3270_DeleteWord
+                              \ XK_3270_ExSelect XK_3270_CursorSelect
+                              \ XK_3270_PrintScreen XK_3270_Enter XK_space
+                              \ XK_exclam XK_quotedbl XK_numbersign XK_dollar
+                              \ XK_percent XK_ampersand XK_apostrophe
+                              \ XK_quoteright XK_parenleft XK_parenright
+                              \ XK_asterisk XK_plus XK_comma XK_minus
+                              \ XK_period XK_slash XK_0 XK_1 XK_2 XK_3
+                              \ XK_4 XK_5 XK_6 XK_7 XK_8 XK_9 XK_colon
+                              \ XK_semicolon XK_less XK_equal XK_greater
+                              \ XK_question XK_at XK_A XK_B XK_C XK_D XK_E
+                              \ XK_F XK_G XK_H XK_I XK_J XK_K XK_L XK_M XK_N
+                              \ XK_O XK_P XK_Q XK_R XK_S XK_T XK_U XK_V XK_W
+                              \ XK_X XK_Y XK_Z XK_bracketleft XK_backslash
+                              \ XK_bracketright XK_asciicircum XK_underscore
+                              \ XK_grave XK_quoteleft XK_a XK_b XK_c XK_d
+                              \ XK_e XK_f XK_g XK_h XK_i XK_j XK_k XK_l
+                              \ XK_m XK_n XK_o XK_p XK_q XK_r XK_s XK_t XK_u
+                              \ XK_v XK_w XK_x XK_y XK_z XK_braceleft XK_bar
+                              \ XK_braceright XK_asciitilde XK_nobreakspace
+                              \ XK_exclamdown XK_cent XK_sterling XK_currency
+                              \ XK_yen XK_brokenbar XK_section XK_diaeresis
+                              \ XK_copyright XK_ordfeminine XK_guillemotleft
+                              \ XK_notsign XK_hyphen XK_registered XK_macron
+                              \ XK_degree XK_plusminus XK_twosuperior
+                              \ XK_threesuperior XK_acute XK_mu XK_paragraph
+                              \ XK_periodcentered XK_cedilla XK_onesuperior
+                              \ XK_masculine XK_guillemotright XK_onequarter
+                              \ XK_onehalf XK_threequarters XK_questiondown
+                              \ XK_Agrave XK_Aacute XK_Acircumflex XK_Atilde
+                              \ XK_Adiaeresis XK_Aring XK_AE XK_Ccedilla
+                              \ XK_Egrave XK_Eacute XK_Ecircumflex
+                              \ XK_Ediaeresis XK_Igrave XK_Iacute
+                              \ XK_Icircumflex XK_Idiaeresis XK_ETH XK_Eth
+                              \ XK_Ntilde XK_Ograve XK_Oacute XK_Ocircumflex
+                              \ XK_Otilde XK_Odiaeresis XK_multiply
+                              \ XK_Ooblique XK_Ugrave XK_Uacute XK_Ucircumflex
+                              \ XK_Udiaeresis XK_Yacute XK_THORN XK_Thorn
+                              \ XK_ssharp XK_agrave XK_aacute XK_acircumflex
+                              \ XK_atilde XK_adiaeresis XK_aring XK_ae
+                              \ XK_ccedilla XK_egrave XK_eacute XK_ecircumflex
+                              \ XK_ediaeresis XK_igrave XK_iacute
+                              \ XK_icircumflex XK_idiaeresis XK_eth XK_ntilde
+                              \ XK_ograve XK_oacute XK_ocircumflex XK_otilde
+                              \ XK_odiaeresis XK_division XK_oslash XK_ugrave
+                              \ XK_uacute XK_ucircumflex XK_udiaeresis
+                              \ XK_yacute XK_thorn XK_ydiaeresis XK_Aogonek
+                              \ XK_breve XK_Lstroke XK_Lcaron XK_Sacute
+                              \ XK_Scaron XK_Scedilla XK_Tcaron XK_Zacute
+                              \ XK_Zcaron XK_Zabovedot XK_aogonek XK_ogonek
+                              \ XK_lstroke XK_lcaron XK_sacute XK_caron
+                              \ XK_scaron XK_scedilla XK_tcaron XK_zacute
+                              \ XK_doubleacute XK_zcaron XK_zabovedot
+                              \ XK_Racute XK_Abreve XK_Lacute XK_Cacute
+                              \ XK_Ccaron XK_Eogonek XK_Ecaron XK_Dcaron
+                              \ XK_Dstroke XK_Nacute XK_Ncaron XK_Odoubleacute
+                              \ XK_Rcaron XK_Uring XK_Udoubleacute
+                              \ XK_Tcedilla XK_racute XK_abreve XK_lacute
+                              \ XK_cacute XK_ccaron XK_eogonek XK_ecaron
+                              \ XK_dcaron XK_dstroke XK_nacute XK_ncaron
+                              \ XK_odoubleacute XK_udoubleacute XK_rcaron
+                              \ XK_uring XK_tcedilla XK_abovedot XK_Hstroke
+                              \ XK_Hcircumflex XK_Iabovedot XK_Gbreve
+                              \ XK_Jcircumflex XK_hstroke XK_hcircumflex
+                              \ XK_idotless XK_gbreve XK_jcircumflex
+                              \ XK_Cabovedot XK_Ccircumflex XK_Gabovedot
+                              \ XK_Gcircumflex XK_Ubreve XK_Scircumflex
+                              \ XK_cabovedot XK_ccircumflex XK_gabovedot
+                              \ XK_gcircumflex XK_ubreve XK_scircumflex XK_kra
+                              \ XK_kappa XK_Rcedilla XK_Itilde XK_Lcedilla
+                              \ XK_Emacron XK_Gcedilla XK_Tslash XK_rcedilla
+                              \ XK_itilde XK_lcedilla XK_emacron XK_gcedilla
+                              \ XK_tslash XK_ENG XK_eng XK_Amacron XK_Iogonek
+                              \ XK_Eabovedot XK_Imacron XK_Ncedilla XK_Omacron
+                              \ XK_Kcedilla XK_Uogonek XK_Utilde XK_Umacron
+                              \ XK_amacron XK_iogonek XK_eabovedot XK_imacron
+                              \ XK_ncedilla XK_omacron XK_kcedilla XK_uogonek
+                              \ XK_utilde XK_umacron XK_Babovedot XK_babovedot
+                              \ XK_Dabovedot XK_Wgrave XK_Wacute XK_dabovedot
+                              \ XK_Ygrave XK_Fabovedot XK_fabovedot
+                              \ XK_Mabovedot XK_mabovedot XK_Pabovedot
+                              \ XK_wgrave XK_pabovedot XK_wacute XK_Sabovedot
+                              \ XK_ygrave XK_Wdiaeresis XK_wdiaeresis
+                              \ XK_sabovedot XK_Wcircumflex XK_Tabovedot
+                              \ XK_Ycircumflex XK_wcircumflex
+                              \ XK_tabovedot XK_ycircumflex XK_OE XK_oe
+                              \ XK_Ydiaeresis XK_overline XK_kana_fullstop
+                              \ XK_kana_openingbracket XK_kana_closingbracket
+                              \ XK_kana_comma XK_kana_conjunctive
+                              \ XK_kana_middledot XK_kana_WO XK_kana_a
+                              \ XK_kana_i XK_kana_u XK_kana_e XK_kana_o
+                              \ XK_kana_ya XK_kana_yu XK_kana_yo
+                              \ XK_kana_tsu XK_kana_tu XK_prolongedsound
+                              \ XK_kana_A XK_kana_I XK_kana_U XK_kana_E
+                              \ XK_kana_O XK_kana_KA XK_kana_KI XK_kana_KU
+                              \ XK_kana_KE XK_kana_KO XK_kana_SA XK_kana_SHI
+                              \ XK_kana_SU XK_kana_SE XK_kana_SO XK_kana_TA
+                              \ XK_kana_CHI XK_kana_TI XK_kana_TSU
+                              \ XK_kana_TU XK_kana_TE XK_kana_TO XK_kana_NA
+                              \ XK_kana_NI XK_kana_NU XK_kana_NE XK_kana_NO
+                              \ XK_kana_HA XK_kana_HI XK_kana_FU XK_kana_HU
+                              \ XK_kana_HE XK_kana_HO XK_kana_MA XK_kana_MI
+                              \ XK_kana_MU XK_kana_ME XK_kana_MO XK_kana_YA
+                              \ XK_kana_YU XK_kana_YO XK_kana_RA XK_kana_RI
+                              \ XK_kana_RU XK_kana_RE XK_kana_RO XK_kana_WA
+                              \ XK_kana_N XK_voicedsound XK_semivoicedsound
+                              \ XK_kana_switch XK_Farsi_0 XK_Farsi_1
+                              \ XK_Farsi_2 XK_Farsi_3 XK_Farsi_4 XK_Farsi_5
+                              \ XK_Farsi_6 XK_Farsi_7 XK_Farsi_8 XK_Farsi_9
+                              \ XK_Arabic_percent XK_Arabic_superscript_alef
+                              \ XK_Arabic_tteh XK_Arabic_peh XK_Arabic_tcheh
+                              \ XK_Arabic_ddal XK_Arabic_rreh XK_Arabic_comma
+                              \ XK_Arabic_fullstop XK_Arabic_0 XK_Arabic_1
+                              \ XK_Arabic_2 XK_Arabic_3 XK_Arabic_4
+                              \ XK_Arabic_5 XK_Arabic_6 XK_Arabic_7
+                              \ XK_Arabic_8 XK_Arabic_9 XK_Arabic_semicolon
+                              \ XK_Arabic_question_mark XK_Arabic_hamza
+                              \ XK_Arabic_maddaonalef XK_Arabic_hamzaonalef
+                              \ XK_Arabic_hamzaonwaw XK_Arabic_hamzaunderalef
+                              \ XK_Arabic_hamzaonyeh XK_Arabic_alef
+                              \ XK_Arabic_beh XK_Arabic_tehmarbuta
+                              \ XK_Arabic_teh XK_Arabic_theh XK_Arabic_jeem
+                              \ XK_Arabic_hah XK_Arabic_khah XK_Arabic_dal
+                              \ XK_Arabic_thal XK_Arabic_ra XK_Arabic_zain
+                              \ XK_Arabic_seen XK_Arabic_sheen
+                              \ XK_Arabic_sad XK_Arabic_dad XK_Arabic_tah
+                              \ XK_Arabic_zah XK_Arabic_ain XK_Arabic_ghain
+                              \ XK_Arabic_tatweel XK_Arabic_feh XK_Arabic_qaf
+                              \ XK_Arabic_kaf XK_Arabic_lam XK_Arabic_meem
+                              \ XK_Arabic_noon XK_Arabic_ha XK_Arabic_heh
+                              \ XK_Arabic_waw XK_Arabic_alefmaksura
+                              \ XK_Arabic_yeh XK_Arabic_fathatan
+                              \ XK_Arabic_dammatan XK_Arabic_kasratan
+                              \ XK_Arabic_fatha XK_Arabic_damma
+                              \ XK_Arabic_kasra XK_Arabic_shadda
+                              \ XK_Arabic_sukun XK_Arabic_madda_above
+                              \ XK_Arabic_hamza_above XK_Arabic_hamza_below
+                              \ XK_Arabic_jeh XK_Arabic_veh XK_Arabic_keheh
+                              \ XK_Arabic_gaf XK_Arabic_noon_ghunna
+                              \ XK_Arabic_heh_doachashmee XK_Farsi_yeh
+                              \ XK_Arabic_yeh_baree XK_Arabic_heh_goal
+                              \ XK_Arabic_switch XK_Cyrillic_GHE_bar
+                              \ XK_Cyrillic_ghe_bar XK_Cyrillic_ZHE_descender
+                              \ XK_Cyrillic_zhe_descender
+                              \ XK_Cyrillic_KA_descender
+                              \ XK_Cyrillic_ka_descender
+                              \ XK_Cyrillic_KA_vertstroke
+                              \ XK_Cyrillic_ka_vertstroke
+                              \ XK_Cyrillic_EN_descender
+                              \ XK_Cyrillic_en_descender
+                              \ XK_Cyrillic_U_straight XK_Cyrillic_u_straight
+                              \ XK_Cyrillic_U_straight_bar
+                              \ XK_Cyrillic_u_straight_bar
+                              \ XK_Cyrillic_HA_descender
+                              \ XK_Cyrillic_ha_descender
+                              \ XK_Cyrillic_CHE_descender
+                              \ XK_Cyrillic_che_descender
+                              \ XK_Cyrillic_CHE_vertstroke
+                              \ XK_Cyrillic_che_vertstroke XK_Cyrillic_SHHA
+                              \ XK_Cyrillic_shha XK_Cyrillic_SCHWA
+                              \ XK_Cyrillic_schwa XK_Cyrillic_I_macron
+                              \ XK_Cyrillic_i_macron XK_Cyrillic_O_bar
+                              \ XK_Cyrillic_o_bar XK_Cyrillic_U_macron
+                              \ XK_Cyrillic_u_macron XK_Serbian_dje
+                              \ XK_Macedonia_gje XK_Cyrillic_io
+                              \ XK_Ukrainian_ie XK_Ukranian_je
+                              \ XK_Macedonia_dse XK_Ukrainian_i XK_Ukranian_i
+                              \ XK_Ukrainian_yi XK_Ukranian_yi XK_Cyrillic_je
+                              \ XK_Serbian_je XK_Cyrillic_lje XK_Serbian_lje
+                              \ XK_Cyrillic_nje XK_Serbian_nje XK_Serbian_tshe
+                              \ XK_Macedonia_kje XK_Ukrainian_ghe_with_upturn
+                              \ XK_Byelorussian_shortu XK_Cyrillic_dzhe
+                              \ XK_Serbian_dze XK_numerosign
+                              \ XK_Serbian_DJE XK_Macedonia_GJE
+                              \ XK_Cyrillic_IO XK_Ukrainian_IE XK_Ukranian_JE
+                              \ XK_Macedonia_DSE XK_Ukrainian_I XK_Ukranian_I
+                              \ XK_Ukrainian_YI XK_Ukranian_YI XK_Cyrillic_JE
+                              \ XK_Serbian_JE XK_Cyrillic_LJE XK_Serbian_LJE
+                              \ XK_Cyrillic_NJE XK_Serbian_NJE XK_Serbian_TSHE
+                              \ XK_Macedonia_KJE XK_Ukrainian_GHE_WITH_UPTURN
+                              \ XK_Byelorussian_SHORTU XK_Cyrillic_DZHE
+                              \ XK_Serbian_DZE XK_Cyrillic_yu
+                              \ XK_Cyrillic_a XK_Cyrillic_be XK_Cyrillic_tse
+                              \ XK_Cyrillic_de XK_Cyrillic_ie XK_Cyrillic_ef
+                              \ XK_Cyrillic_ghe XK_Cyrillic_ha XK_Cyrillic_i
+                              \ XK_Cyrillic_shorti XK_Cyrillic_ka
+                              \ XK_Cyrillic_el XK_Cyrillic_em XK_Cyrillic_en
+                              \ XK_Cyrillic_o XK_Cyrillic_pe XK_Cyrillic_ya
+                              \ XK_Cyrillic_er XK_Cyrillic_es XK_Cyrillic_te
+                              \ XK_Cyrillic_u XK_Cyrillic_zhe XK_Cyrillic_ve
+                              \ XK_Cyrillic_softsign XK_Cyrillic_yeru
+                              \ XK_Cyrillic_ze XK_Cyrillic_sha XK_Cyrillic_e
+                              \ XK_Cyrillic_shcha XK_Cyrillic_che
+                              \ XK_Cyrillic_hardsign XK_Cyrillic_YU
+                              \ XK_Cyrillic_A XK_Cyrillic_BE XK_Cyrillic_TSE
+                              \ XK_Cyrillic_DE XK_Cyrillic_IE XK_Cyrillic_EF
+                              \ XK_Cyrillic_GHE XK_Cyrillic_HA XK_Cyrillic_I
+                              \ XK_Cyrillic_SHORTI XK_Cyrillic_KA
+                              \ XK_Cyrillic_EL XK_Cyrillic_EM XK_Cyrillic_EN
+                              \ XK_Cyrillic_O XK_Cyrillic_PE XK_Cyrillic_YA
+                              \ XK_Cyrillic_ER XK_Cyrillic_ES XK_Cyrillic_TE
+                              \ XK_Cyrillic_U XK_Cyrillic_ZHE XK_Cyrillic_VE
+                              \ XK_Cyrillic_SOFTSIGN XK_Cyrillic_YERU
+                              \ XK_Cyrillic_ZE XK_Cyrillic_SHA XK_Cyrillic_E
+                              \ XK_Cyrillic_SHCHA XK_Cyrillic_CHE
+                              \ XK_Cyrillic_HARDSIGN XK_Greek_ALPHAaccent
+                              \ XK_Greek_EPSILONaccent XK_Greek_ETAaccent
+                              \ XK_Greek_IOTAaccent XK_Greek_IOTAdieresis
+                              \ XK_Greek_OMICRONaccent XK_Greek_UPSILONaccent
+                              \ XK_Greek_UPSILONdieresis
+                              \ XK_Greek_OMEGAaccent XK_Greek_accentdieresis
+                              \ XK_Greek_horizbar XK_Greek_alphaaccent
+                              \ XK_Greek_epsilonaccent XK_Greek_etaaccent
+                              \ XK_Greek_iotaaccent XK_Greek_iotadieresis
+                              \ XK_Greek_iotaaccentdieresis
+                              \ XK_Greek_omicronaccent XK_Greek_upsilonaccent
+                              \ XK_Greek_upsilondieresis
+                              \ XK_Greek_upsilonaccentdieresis
+                              \ XK_Greek_omegaaccent XK_Greek_ALPHA
+                              \ XK_Greek_BETA XK_Greek_GAMMA XK_Greek_DELTA
+                              \ XK_Greek_EPSILON XK_Greek_ZETA XK_Greek_ETA
+                              \ XK_Greek_THETA XK_Greek_IOTA XK_Greek_KAPPA
+                              \ XK_Greek_LAMDA XK_Greek_LAMBDA XK_Greek_MU
+                              \ XK_Greek_NU XK_Greek_XI XK_Greek_OMICRON
+                              \ XK_Greek_PI XK_Greek_RHO XK_Greek_SIGMA
+                              \ XK_Greek_TAU XK_Greek_UPSILON XK_Greek_PHI
+                              \ XK_Greek_CHI XK_Greek_PSI XK_Greek_OMEGA
+                              \ XK_Greek_alpha XK_Greek_beta XK_Greek_gamma
+                              \ XK_Greek_delta XK_Greek_epsilon XK_Greek_zeta
+                              \ XK_Greek_eta XK_Greek_theta XK_Greek_iota
+                              \ XK_Greek_kappa XK_Greek_lamda XK_Greek_lambda
+                              \ XK_Greek_mu XK_Greek_nu XK_Greek_xi
+                              \ XK_Greek_omicron XK_Greek_pi XK_Greek_rho
+                              \ XK_Greek_sigma XK_Greek_finalsmallsigma
+                              \ XK_Greek_tau XK_Greek_upsilon XK_Greek_phi
+                              \ XK_Greek_chi XK_Greek_psi XK_Greek_omega
+                              \ XK_Greek_switch XK_leftradical
+                              \ XK_topleftradical XK_horizconnector
+                              \ XK_topintegral XK_botintegral
+                              \ XK_vertconnector XK_topleftsqbracket
+                              \ XK_botleftsqbracket XK_toprightsqbracket
+                              \ XK_botrightsqbracket XK_topleftparens
+                              \ XK_botleftparens XK_toprightparens
+                              \ XK_botrightparens XK_leftmiddlecurlybrace
+                              \ XK_rightmiddlecurlybrace
+                              \ XK_topleftsummation XK_botleftsummation
+                              \ XK_topvertsummationconnector
+                              \ XK_botvertsummationconnector
+                              \ XK_toprightsummation XK_botrightsummation
+                              \ XK_rightmiddlesummation XK_lessthanequal
+                              \ XK_notequal XK_greaterthanequal XK_integral
+                              \ XK_therefore XK_variation XK_infinity
+                              \ XK_nabla XK_approximate XK_similarequal
+                              \ XK_ifonlyif XK_implies XK_identical XK_radical
+                              \ XK_includedin XK_includes XK_intersection
+                              \ XK_union XK_logicaland XK_logicalor
+                              \ XK_partialderivative XK_function XK_leftarrow
+                              \ XK_uparrow XK_rightarrow XK_downarrow XK_blank
+                              \ XK_soliddiamond XK_checkerboard XK_ht XK_ff
+                              \ XK_cr XK_lf XK_nl XK_vt XK_lowrightcorner
+                              \ XK_uprightcorner XK_upleftcorner
+                              \ XK_lowleftcorner XK_crossinglines
+                              \ XK_horizlinescan1 XK_horizlinescan3
+                              \ XK_horizlinescan5 XK_horizlinescan7
+                              \ XK_horizlinescan9 XK_leftt XK_rightt XK_bott
+                              \ XK_topt XK_vertbar XK_emspace XK_enspace
+                              \ XK_em3space XK_em4space XK_digitspace
+                              \ XK_punctspace XK_thinspace XK_hairspace
+                              \ XK_emdash XK_endash XK_signifblank XK_ellipsis
+                              \ XK_doubbaselinedot XK_onethird XK_twothirds
+                              \ XK_onefifth XK_twofifths XK_threefifths
+                              \ XK_fourfifths XK_onesixth XK_fivesixths
+                              \ XK_careof XK_figdash XK_leftanglebracket
+                              \ XK_decimalpoint XK_rightanglebracket
+                              \ XK_marker XK_oneeighth XK_threeeighths
+                              \ XK_fiveeighths XK_seveneighths XK_trademark
+                              \ XK_signaturemark XK_trademarkincircle
+                              \ XK_leftopentriangle XK_rightopentriangle
+                              \ XK_emopencircle XK_emopenrectangle
+                              \ XK_leftsinglequotemark XK_rightsinglequotemark
+                              \ XK_leftdoublequotemark XK_rightdoublequotemark
+                              \ XK_prescription XK_minutes XK_seconds
+                              \ XK_latincross XK_hexagram XK_filledrectbullet
+                              \ XK_filledlefttribullet XK_filledrighttribullet
+                              \ XK_emfilledcircle XK_emfilledrect
+                              \ XK_enopencircbullet XK_enopensquarebullet
+                              \ XK_openrectbullet XK_opentribulletup
+                              \ XK_opentribulletdown XK_openstar
+                              \ XK_enfilledcircbullet XK_enfilledsqbullet
+                              \ XK_filledtribulletup XK_filledtribulletdown
+                              \ XK_leftpointer XK_rightpointer XK_club
+                              \ XK_diamond XK_heart XK_maltesecross
+                              \ XK_dagger XK_doubledagger XK_checkmark
+                              \ XK_ballotcross XK_musicalsharp XK_musicalflat
+                              \ XK_malesymbol XK_femalesymbol XK_telephone
+                              \ XK_telephonerecorder XK_phonographcopyright
+                              \ XK_caret XK_singlelowquotemark
+                              \ XK_doublelowquotemark XK_cursor
+                              \ XK_leftcaret XK_rightcaret XK_downcaret
+                              \ XK_upcaret XK_overbar XK_downtack XK_upshoe
+                              \ XK_downstile XK_underbar XK_jot XK_quad
+                              \ XK_uptack XK_circle XK_upstile XK_downshoe
+                              \ XK_rightshoe XK_leftshoe XK_lefttack
+                              \ XK_righttack XK_hebrew_doublelowline
+                              \ XK_hebrew_aleph XK_hebrew_bet XK_hebrew_beth
+                              \ XK_hebrew_gimel XK_hebrew_gimmel
+                              \ XK_hebrew_dalet XK_hebrew_daleth
+                              \ XK_hebrew_he XK_hebrew_waw XK_hebrew_zain
+                              \ XK_hebrew_zayin XK_hebrew_chet XK_hebrew_het
+                              \ XK_hebrew_tet XK_hebrew_teth XK_hebrew_yod
+                              \ XK_hebrew_finalkaph XK_hebrew_kaph
+                              \ XK_hebrew_lamed XK_hebrew_finalmem
+                              \ XK_hebrew_mem XK_hebrew_finalnun XK_hebrew_nun
+                              \ XK_hebrew_samech XK_hebrew_samekh
+                              \ XK_hebrew_ayin XK_hebrew_finalpe XK_hebrew_pe
+                              \ XK_hebrew_finalzade XK_hebrew_finalzadi
+                              \ XK_hebrew_zade XK_hebrew_zadi XK_hebrew_qoph
+                              \ XK_hebrew_kuf XK_hebrew_resh XK_hebrew_shin
+                              \ XK_hebrew_taw XK_hebrew_taf XK_Hebrew_switch
+                              \ XK_Thai_kokai XK_Thai_khokhai XK_Thai_khokhuat
+                              \ XK_Thai_khokhwai XK_Thai_khokhon
+                              \ XK_Thai_khorakhang XK_Thai_ngongu
+                              \ XK_Thai_chochan XK_Thai_choching
+                              \ XK_Thai_chochang XK_Thai_soso XK_Thai_chochoe
+                              \ XK_Thai_yoying XK_Thai_dochada XK_Thai_topatak
+                              \ XK_Thai_thothan XK_Thai_thonangmontho
+                              \ XK_Thai_thophuthao XK_Thai_nonen
+                              \ XK_Thai_dodek XK_Thai_totao XK_Thai_thothung
+                              \ XK_Thai_thothahan XK_Thai_thothong
+                              \ XK_Thai_nonu XK_Thai_bobaimai XK_Thai_popla
+                              \ XK_Thai_phophung XK_Thai_fofa XK_Thai_phophan
+                              \ XK_Thai_fofan XK_Thai_phosamphao XK_Thai_moma
+                              \ XK_Thai_yoyak XK_Thai_rorua XK_Thai_ru
+                              \ XK_Thai_loling XK_Thai_lu XK_Thai_wowaen
+                              \ XK_Thai_sosala XK_Thai_sorusi XK_Thai_sosua
+                              \ XK_Thai_hohip XK_Thai_lochula XK_Thai_oang
+                              \ XK_Thai_honokhuk XK_Thai_paiyannoi
+                              \ XK_Thai_saraa XK_Thai_maihanakat
+                              \ XK_Thai_saraaa XK_Thai_saraam XK_Thai_sarai
+                              \ XK_Thai_saraii XK_Thai_saraue XK_Thai_sarauee
+                              \ XK_Thai_sarau XK_Thai_sarauu XK_Thai_phinthu
+                              \ XK_Thai_maihanakat_maitho XK_Thai_baht
+                              \ XK_Thai_sarae XK_Thai_saraae XK_Thai_sarao
+                              \ XK_Thai_saraaimaimuan XK_Thai_saraaimaimalai
+                              \ XK_Thai_lakkhangyao XK_Thai_maiyamok
+                              \ XK_Thai_maitaikhu XK_Thai_maiek XK_Thai_maitho
+                              \ XK_Thai_maitri XK_Thai_maichattawa
+                              \ XK_Thai_thanthakhat XK_Thai_nikhahit
+                              \ XK_Thai_leksun XK_Thai_leknung XK_Thai_leksong
+                              \ XK_Thai_leksam XK_Thai_leksi XK_Thai_lekha
+                              \ XK_Thai_lekhok XK_Thai_lekchet XK_Thai_lekpaet
+                              \ XK_Thai_lekkao XK_Hangul XK_Hangul_Start
+                              \ XK_Hangul_End XK_Hangul_Hanja XK_Hangul_Jamo
+                              \ XK_Hangul_Romaja XK_Hangul_Codeinput
+                              \ XK_Hangul_Jeonja XK_Hangul_Banja
+                              \ XK_Hangul_PreHanja XK_Hangul_PostHanja
+                              \ XK_Hangul_SingleCandidate
+                              \ XK_Hangul_MultipleCandidate
+                              \ XK_Hangul_PreviousCandidate XK_Hangul_Special
+                              \ XK_Hangul_switch XK_Hangul_Kiyeog
+                              \ XK_Hangul_SsangKiyeog XK_Hangul_KiyeogSios
+                              \ XK_Hangul_Nieun XK_Hangul_NieunJieuj
+                              \ XK_Hangul_NieunHieuh XK_Hangul_Dikeud
+                              \ XK_Hangul_SsangDikeud XK_Hangul_Rieul
+                              \ XK_Hangul_RieulKiyeog XK_Hangul_RieulMieum
+                              \ XK_Hangul_RieulPieub XK_Hangul_RieulSios
+                              \ XK_Hangul_RieulTieut XK_Hangul_RieulPhieuf
+                              \ XK_Hangul_RieulHieuh XK_Hangul_Mieum
+                              \ XK_Hangul_Pieub XK_Hangul_SsangPieub
+                              \ XK_Hangul_PieubSios XK_Hangul_Sios
+                              \ XK_Hangul_SsangSios XK_Hangul_Ieung
+                              \ XK_Hangul_Jieuj XK_Hangul_SsangJieuj
+                              \ XK_Hangul_Cieuc XK_Hangul_Khieuq
+                              \ XK_Hangul_Tieut XK_Hangul_Phieuf
+                              \ XK_Hangul_Hieuh XK_Hangul_A XK_Hangul_AE
+                              \ XK_Hangul_YA XK_Hangul_YAE XK_Hangul_EO
+                              \ XK_Hangul_E XK_Hangul_YEO XK_Hangul_YE
+                              \ XK_Hangul_O XK_Hangul_WA XK_Hangul_WAE
+                              \ XK_Hangul_OE XK_Hangul_YO XK_Hangul_U
+                              \ XK_Hangul_WEO XK_Hangul_WE XK_Hangul_WI
+                              \ XK_Hangul_YU XK_Hangul_EU XK_Hangul_YI
+                              \ XK_Hangul_I XK_Hangul_J_Kiyeog
+                              \ XK_Hangul_J_SsangKiyeog XK_Hangul_J_KiyeogSios
+                              \ XK_Hangul_J_Nieun XK_Hangul_J_NieunJieuj
+                              \ XK_Hangul_J_NieunHieuh XK_Hangul_J_Dikeud
+                              \ XK_Hangul_J_Rieul XK_Hangul_J_RieulKiyeog
+                              \ XK_Hangul_J_RieulMieum XK_Hangul_J_RieulPieub
+                              \ XK_Hangul_J_RieulSios XK_Hangul_J_RieulTieut
+                              \ XK_Hangul_J_RieulPhieuf XK_Hangul_J_RieulHieuh
+                              \ XK_Hangul_J_Mieum XK_Hangul_J_Pieub
+                              \ XK_Hangul_J_PieubSios XK_Hangul_J_Sios
+                              \ XK_Hangul_J_SsangSios XK_Hangul_J_Ieung
+                              \ XK_Hangul_J_Jieuj XK_Hangul_J_Cieuc
+                              \ XK_Hangul_J_Khieuq XK_Hangul_J_Tieut
+                              \ XK_Hangul_J_Phieuf XK_Hangul_J_Hieuh
+                              \ XK_Hangul_RieulYeorinHieuh
+                              \ XK_Hangul_SunkyeongeumMieum
+                              \ XK_Hangul_SunkyeongeumPieub XK_Hangul_PanSios
+                              \ XK_Hangul_KkogjiDalrinIeung
+                              \ XK_Hangul_SunkyeongeumPhieuf
+                              \ XK_Hangul_YeorinHieuh XK_Hangul_AraeA
+                              \ XK_Hangul_AraeAE XK_Hangul_J_PanSios
+                              \ XK_Hangul_J_KkogjiDalrinIeung
+                              \ XK_Hangul_J_YeorinHieuh XK_Korean_Won
+                              \ XK_Armenian_eternity XK_Armenian_ligature_ew
+                              \ XK_Armenian_full_stop XK_Armenian_verjaket
+                              \ XK_Armenian_parenright XK_Armenian_parenleft
+                              \ XK_Armenian_guillemotright
+                              \ XK_Armenian_guillemotleft XK_Armenian_em_dash
+                              \ XK_Armenian_dot XK_Armenian_mijaket
+                              \ XK_Armenian_separation_mark XK_Armenian_but
+                              \ XK_Armenian_comma XK_Armenian_en_dash
+                              \ XK_Armenian_hyphen XK_Armenian_yentamna
+                              \ XK_Armenian_ellipsis XK_Armenian_exclam
+                              \ XK_Armenian_amanak XK_Armenian_accent
+                              \ XK_Armenian_shesht XK_Armenian_question
+                              \ XK_Armenian_paruyk XK_Armenian_AYB
+                              \ XK_Armenian_ayb XK_Armenian_BEN
+                              \ XK_Armenian_ben XK_Armenian_GIM
+                              \ XK_Armenian_gim XK_Armenian_DA XK_Armenian_da
+                              \ XK_Armenian_YECH XK_Armenian_yech
+                              \ XK_Armenian_ZA XK_Armenian_za XK_Armenian_E
+                              \ XK_Armenian_e XK_Armenian_AT XK_Armenian_at
+                              \ XK_Armenian_TO XK_Armenian_to
+                              \ XK_Armenian_ZHE XK_Armenian_zhe
+                              \ XK_Armenian_INI XK_Armenian_ini
+                              \ XK_Armenian_LYUN XK_Armenian_lyun
+                              \ XK_Armenian_KHE XK_Armenian_khe
+                              \ XK_Armenian_TSA XK_Armenian_tsa
+                              \ XK_Armenian_KEN XK_Armenian_ken XK_Armenian_HO
+                              \ XK_Armenian_ho XK_Armenian_DZA XK_Armenian_dza
+                              \ XK_Armenian_GHAT XK_Armenian_ghat
+                              \ XK_Armenian_TCHE XK_Armenian_tche
+                              \ XK_Armenian_MEN XK_Armenian_men XK_Armenian_HI
+                              \ XK_Armenian_hi XK_Armenian_NU XK_Armenian_nu
+                              \ XK_Armenian_SHA XK_Armenian_sha XK_Armenian_VO
+                              \ XK_Armenian_vo XK_Armenian_CHA XK_Armenian_cha
+                              \ XK_Armenian_PE XK_Armenian_pe XK_Armenian_JE
+                              \ XK_Armenian_je XK_Armenian_RA XK_Armenian_ra
+                              \ XK_Armenian_SE XK_Armenian_se XK_Armenian_VEV
+                              \ XK_Armenian_vev XK_Armenian_TYUN
+                              \ XK_Armenian_tyun XK_Armenian_RE
+                              \ XK_Armenian_re XK_Armenian_TSO
+                              \ XK_Armenian_tso XK_Armenian_VYUN
+                              \ XK_Armenian_vyun XK_Armenian_PYUR
+                              \ XK_Armenian_pyur XK_Armenian_KE XK_Armenian_ke
+                              \ XK_Armenian_O XK_Armenian_o XK_Armenian_FE
+                              \ XK_Armenian_fe XK_Armenian_apostrophe
+                              \ XK_Armenian_section_sign XK_Georgian_an
+                              \ XK_Georgian_ban XK_Georgian_gan
+                              \ XK_Georgian_don XK_Georgian_en XK_Georgian_vin
+                              \ XK_Georgian_zen XK_Georgian_tan
+                              \ XK_Georgian_in XK_Georgian_kan XK_Georgian_las
+                              \ XK_Georgian_man XK_Georgian_nar XK_Georgian_on
+                              \ XK_Georgian_par XK_Georgian_zhar
+                              \ XK_Georgian_rae XK_Georgian_san
+                              \ XK_Georgian_tar XK_Georgian_un
+                              \ XK_Georgian_phar XK_Georgian_khar
+                              \ XK_Georgian_ghan XK_Georgian_qar
+                              \ XK_Georgian_shin XK_Georgian_chin
+                              \ XK_Georgian_can XK_Georgian_jil
+                              \ XK_Georgian_cil XK_Georgian_char
+                              \ XK_Georgian_xan XK_Georgian_jhan
+                              \ XK_Georgian_hae XK_Georgian_he XK_Georgian_hie
+                              \ XK_Georgian_we XK_Georgian_har XK_Georgian_hoe
+                              \ XK_Georgian_fi XK_Ccedillaabovedot
+                              \ XK_Xabovedot XK_Qabovedot XK_IE XK_UO
+                              \ XK_Zstroke XK_ccedillaabovedot XK_xabovedot
+                              \ XK_qabovedot XK_ie XK_uo XK_zstroke XK_SCHWA
+                              \ XK_schwa XK_Lbelowdot XK_Lstrokebelowdot
+                              \ XK_lbelowdot XK_lstrokebelowdot XK_Gtilde
+                              \ XK_gtilde XK_Abelowdot XK_abelowdot
+                              \ XK_Ahook XK_ahook XK_Acircumflexacute
+                              \ XK_acircumflexacute XK_Acircumflexgrave
+                              \ XK_acircumflexgrave XK_Acircumflexhook
+                              \ XK_acircumflexhook XK_Acircumflextilde
+                              \ XK_acircumflextilde XK_Acircumflexbelowdot
+                              \ XK_acircumflexbelowdot XK_Abreveacute
+                              \ XK_abreveacute XK_Abrevegrave XK_abrevegrave
+                              \ XK_Abrevehook XK_abrevehook XK_Abrevetilde
+                              \ XK_abrevetilde XK_Abrevebelowdot
+                              \ XK_abrevebelowdot XK_Ebelowdot XK_ebelowdot
+                              \ XK_Ehook XK_ehook XK_Etilde XK_etilde
+                              \ XK_Ecircumflexacute XK_ecircumflexacute
+                              \ XK_Ecircumflexgrave XK_ecircumflexgrave
+                              \ XK_Ecircumflexhook XK_ecircumflexhook
+                              \ XK_Ecircumflextilde XK_ecircumflextilde
+                              \ XK_Ecircumflexbelowdot XK_ecircumflexbelowdot
+                              \ XK_Ihook XK_ihook XK_Ibelowdot XK_ibelowdot
+                              \ XK_Obelowdot XK_obelowdot XK_Ohook XK_ohook
+                              \ XK_Ocircumflexacute XK_ocircumflexacute
+                              \ XK_Ocircumflexgrave XK_ocircumflexgrave
+                              \ XK_Ocircumflexhook XK_ocircumflexhook
+                              \ XK_Ocircumflextilde XK_ocircumflextilde
+                              \ XK_Ocircumflexbelowdot XK_ocircumflexbelowdot
+                              \ XK_Ohornacute XK_ohornacute XK_Ohorngrave
+                              \ XK_ohorngrave XK_Ohornhook XK_ohornhook
+                              \ XK_Ohorntilde XK_ohorntilde XK_Ohornbelowdot
+                              \ XK_ohornbelowdot XK_Ubelowdot XK_ubelowdot
+                              \ XK_Uhook XK_uhook XK_Uhornacute XK_uhornacute
+                              \ XK_Uhorngrave XK_uhorngrave XK_Uhornhook
+                              \ XK_uhornhook XK_Uhorntilde XK_uhorntilde
+                              \ XK_Uhornbelowdot XK_uhornbelowdot XK_Ybelowdot
+                              \ XK_ybelowdot XK_Yhook XK_yhook XK_Ytilde
+                              \ XK_ytilde XK_Ohorn XK_ohorn XK_Uhorn XK_uhorn
+                              \ XK_combining_tilde XK_combining_grave
+                              \ XK_combining_acute XK_combining_hook
+                              \ XK_combining_belowdot XK_EcuSign XK_ColonSign
+                              \ XK_CruzeiroSign XK_FFrancSign XK_LiraSign
+                              \ XK_MillSign XK_NairaSign XK_PesetaSign
+                              \ XK_RupeeSign XK_WonSign XK_NewSheqelSign
+                              \ XK_DongSign XK_EuroSign
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_xmodmap_syn_inits")
-  if version < 508
-    let did_xmodmap_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+" #include <X11/Sunkeysym.h>
+syn keyword xmodmapKeySym     SunXK_Sys_Req SunXK_Print_Screen SunXK_Compose
+                              \ SunXK_AltGraph SunXK_PageUp SunXK_PageDown
+                              \ SunXK_Undo SunXK_Again SunXK_Find SunXK_Stop
+                              \ SunXK_Props SunXK_Front SunXK_Copy SunXK_Open
+                              \ SunXK_Paste SunXK_Cut SunXK_PowerSwitch
+                              \ SunXK_AudioLowerVolume SunXK_AudioMute
+                              \ SunXK_AudioRaiseVolume SunXK_VideoDegauss
+                              \ SunXK_VideoLowerBrightness
+                              \ SunXK_VideoRaiseBrightness
+                              \ SunXK_PowerSwitchShift
 
-  HiLink xmodmapComment	    Comment
-  HiLink xmodmapTodo	    Todo
-  HiLink xmodmapInt	    Number
-  HiLink xmodmapHex	    Number
-  HiLink xmodmapOctal	    Number
-  HiLink xmodmapOctalError  Error
-  HiLink xmodmapKeySym	    Constant
-  HiLink xmodmapKeyword	    Keyword
-  delcommand HiLink
-endif
+" #include <X11/XF86keysym.h>
+syn keyword xmodmapKeySym     XF86XK_ModeLock XF86XK_Standby
+                              \ XF86XK_AudioLowerVolume XF86XK_AudioMute
+                              \ XF86XK_AudioRaiseVolume XF86XK_AudioPlay
+                              \ XF86XK_AudioStop XF86XK_AudioPrev
+                              \ XF86XK_AudioNext XF86XK_HomePage
+                              \ XF86XK_Mail XF86XK_Start XF86XK_Search
+                              \ XF86XK_AudioRecord XF86XK_Calculator
+                              \ XF86XK_Memo XF86XK_ToDoList XF86XK_Calendar
+                              \ XF86XK_PowerDown XF86XK_ContrastAdjust
+                              \ XF86XK_RockerUp XF86XK_RockerDown
+                              \ XF86XK_RockerEnter XF86XK_Back XF86XK_Forward
+                              \ XF86XK_Stop XF86XK_Refresh XF86XK_PowerOff
+                              \ XF86XK_WakeUp XF86XK_Eject XF86XK_ScreenSaver
+                              \ XF86XK_WWW XF86XK_Sleep XF86XK_Favorites
+                              \ XF86XK_AudioPause XF86XK_AudioMedia
+                              \ XF86XK_MyComputer XF86XK_VendorHome
+                              \ XF86XK_LightBulb XF86XK_Shop XF86XK_History
+                              \ XF86XK_OpenURL XF86XK_AddFavorite
+                              \ XF86XK_HotLinks XF86XK_BrightnessAdjust
+                              \ XF86XK_Finance XF86XK_Community
+                              \ XF86XK_AudioRewind XF86XK_XF86BackForward
+                              \ XF86XK_Launch0 XF86XK_Launch1 XF86XK_Launch2
+                              \ XF86XK_Launch3 XF86XK_Launch4 XF86XK_Launch5
+                              \ XF86XK_Launch6 XF86XK_Launch7 XF86XK_Launch8
+                              \ XF86XK_Launch9 XF86XK_LaunchA XF86XK_LaunchB
+                              \ XF86XK_LaunchC XF86XK_LaunchD XF86XK_LaunchE
+                              \ XF86XK_LaunchF XF86XK_ApplicationLeft
+                              \ XF86XK_ApplicationRight XF86XK_Book
+                              \ XF86XK_CD XF86XK_Calculater XF86XK_Clear
+                              \ XF86XK_Close XF86XK_Copy XF86XK_Cut
+                              \ XF86XK_Display XF86XK_DOS XF86XK_Documents
+                              \ XF86XK_Excel XF86XK_Explorer XF86XK_Game
+                              \ XF86XK_Go XF86XK_iTouch XF86XK_LogOff
+                              \ XF86XK_Market XF86XK_Meeting XF86XK_MenuKB
+                              \ XF86XK_MenuPB XF86XK_MySites XF86XK_New
+                              \ XF86XK_News XF86XK_OfficeHome XF86XK_Open
+                              \ XF86XK_Option XF86XK_Paste XF86XK_Phone
+                              \ XF86XK_Q XF86XK_Reply XF86XK_Reload
+                              \ XF86XK_RotateWindows XF86XK_RotationPB
+                              \ XF86XK_RotationKB XF86XK_Save XF86XK_ScrollUp
+                              \ XF86XK_ScrollDown XF86XK_ScrollClick
+                              \ XF86XK_Send XF86XK_Spell XF86XK_SplitScreen
+                              \ XF86XK_Support XF86XK_TaskPane XF86XK_Terminal
+                              \ XF86XK_Tools XF86XK_Travel XF86XK_UserPB
+                              \ XF86XK_User1KB XF86XK_User2KB XF86XK_Video
+                              \ XF86XK_WheelButton XF86XK_Word XF86XK_Xfer
+                              \ XF86XK_ZoomIn XF86XK_ZoomOut XF86XK_Away
+                              \ XF86XK_Messenger XF86XK_WebCam
+                              \ XF86XK_MailForward XF86XK_Pictures
+                              \ XF86XK_Music XF86XK_Switch_VT_1
+                              \ XF86XK_Switch_VT_2 XF86XK_Switch_VT_3
+                              \ XF86XK_Switch_VT_4 XF86XK_Switch_VT_5
+                              \ XF86XK_Switch_VT_6 XF86XK_Switch_VT_7
+                              \ XF86XK_Switch_VT_8 XF86XK_Switch_VT_9
+                              \ XF86XK_Switch_VT_10 XF86XK_Switch_VT_11
+                              \ XF86XK_Switch_VT_12 XF86XK_Ungrab
+                              \ XF86XK_ClearGrab XF86XK_Next_VMode
+                              \ XF86XK_Prev_VMode
+
+syn keyword xmodmapKeyword    keycode keysym clear add remove pointer
+
+hi def link xmodmapComment    Comment
+hi def link xmodmapTodo       Todo
+hi def link xmodmapInt        Number
+hi def link xmodmapHex        Number
+hi def link xmodmapOctal      Number
+hi def link xmodmapOctalError Error
+hi def link xmodmapKeySym     Constant
+hi def link xmodmapKeyword    Keyword
 
 let b:current_syntax = "xmodmap"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -1,105 +1,83 @@
 " Vim syntax file
-" Language:	    YAML (YAML Ain't Markup Language)
-" Maintainer:	    Nikolai Weibull <source@pcppopper.org>
-" URL:		    http://www.pcppopper.org/vim/syntax/pcp/yaml/
-" Latest Revision:  2004-05-22
-" arch-tag:	    01bf8ef1-335f-4692-a228-4846cb64cd16
+" Language:         YAML (YAML Ain't Markup Language)
+" Maintainer:       Nikolai Weibull <nikolai+work.vim@bitwi.se>
+" Latest Revision:  2005-06-27
 
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-" Todo
-syn keyword yamlTodo	contained TODO FIXME XXX NOTE
+let s:cpo_save = &cpo
+set cpo&vim
 
-" Comments (4.2.2)
-syn region  yamlComment	matchgroup=yamlComment start='\%(^\|\s\)#' end='$' contains=yamlTodo
+syn keyword yamlTodo            contained TODO FIXME XXX NOTE
 
-" Node Properties (4.3.4)
-syn match   yamlNodeProperty	'!\%(![^\\^%	 ]\+\|[^!][^:/	 ]*\)'
+syn region  yamlComment         matchgroup=yamlComment start='\%(^\|\s\)#'
+                                \ end='$' contains=yamlTodo,@Spell
 
-" Anchors (4.3.6)
-syn match   yamlAnchor	'&.\+'
+syn match   yamlNodeProperty    '!\%(![^\\^%     ]\+\|[^!][^:/   ]*\)'
 
-" Aliases (4.3.7)
-syn match   yamlAlias	'\*.\+'
+syn match   yamlAnchor          '&.\+'
+
+syn match   yamlAlias           '\*.\+'
 
-" Operators, Blocks, Keys, and Delimiters
-syn match   yamlDelimiter   '[-,:]'
-syn match   yamlBlock	    '[\[\]{}>|]'
-syn match   yamlOperator    '[?+-]'
-syn match   yamlKey	    '\w\+\(\s\+\w\+\)*\ze\s*:'
+syn match   yamlDelimiter       '[-,:]'
+syn match   yamlBlock           '[\[\]{}>|]'
+syn match   yamlOperator        '[?+-]'
+syn match   yamlKey             '\w\+\(\s\+\w\+\)*\ze\s*:'
 
-" Strings (4.6.8, 4.6.9)
-syn region  yamlString	start=+"+ skip=+\\"+ end=+"+ contains=yamlEscape
-syn region  yamlString	start=+'+ skip=+''+ end=+'+ contains=yamlSingleEscape
-syn match   yamlEscape	contained +\\[\\"abefnrtv^0_ NLP]+
-syn match   yamlEscape	contained '\\x\x\{2}'
-syn match   yamlEscape	contained '\\u\x\{4}'
-syn match   yamlEscape	contained '\\U\x\{8}'
+syn region  yamlString          start=+"+ skip=+\\"+ end=+"+
+                                \ contains=yamlEscape
+syn region  yamlString          start=+'+ skip=+''+ end=+'+
+                                \ contains=yamlSingleEscape
+syn match   yamlEscape          contained display +\\[\\"abefnrtv^0_ NLP]+
+syn match   yamlEscape          contained display '\\x\x\{2}'
+syn match   yamlEscape          contained display '\\u\x\{4}'
+syn match   yamlEscape          contained display '\\U\x\{8}'
 " TODO: how do we get 0x85, 0x2028, and 0x2029 into this?
-syn match   yamlEscape	'\\\%(\r\n\|[\r\n]\)'
-syn match   yamlSingleEscape contained +''+
-
-" Numbers
-" TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
-syn match   yamlNumber	'\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
-syn match   yamlNumber	'0\o\+'
-syn match   yamlNumber	'0x\x\+'
-syn match   yamlNumber	'([+-]\=[iI]nf)'
-syn match   yamlNumber	'(NaN)'
+syn match   yamlEscape          display '\\\%(\r\n\|[\r\n]\)'
+syn match   yamlSingleEscape    contained display +''+
 
-" Constants
-syn match   yamlConstant    '\<[~yn]\>'
-syn keyword yamlConstant    true True TRUE false False FALSE
-syn keyword yamlConstant    yes Yes on ON no No off OFF
-syn keyword yamlConstant    null Null NULL nil Nil NIL
+" TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
+syn match   yamlNumber          display
+                                \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
+syn match   yamlNumber          display '0\o\+'
+syn match   yamlNumber          display '0x\x\+'
+syn match   yamlNumber          display '([+-]\=[iI]nf)'
+syn match   yamlNumber          display '(NaN)'
 
-" Timestamps
-syn match   yamlTimestamp   '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
+syn match   yamlConstant        '\<[~yn]\>'
+syn keyword yamlConstant        true True TRUE false False FALSE
+syn keyword yamlConstant        yes Yes on ON no No off OFF
+syn keyword yamlConstant        null Null NULL nil Nil NIL
 
-" Documents (4.3.1)
-syn region  yamlDocumentHeader	start='---' end='$' contains=yamlDirective
-syn match   yamlDocumentEnd	'\.\.\.'
+syn match   yamlTimestamp       '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
 
-" Directives (4.3.2)
-syn match   yamlDirective   contained '%[^:]\+:.\+'
+syn region  yamlDocumentHeader  start='---' end='$' contains=yamlDirective
+syn match   yamlDocumentEnd     '\.\.\.'
 
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_yaml_syn_inits")
-  if version < 508
-    let did_yaml_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+syn match   yamlDirective       contained '%[^:]\+:.\+'
 
-  HiLink yamlTodo	    Todo
-  HiLink yamlComment	    Comment
-  HiLink yamlDocumentHeader PreProc
-  HiLink yamlDocumentEnd    PreProc
-  HiLink yamlDirective	    Keyword
-  HiLink yamlNodeProperty   Type
-  HiLink yamlAnchor	    Type
-  HiLink yamlAlias	    Type
-  HiLink yamlDelimiter	    Delimiter
-  HiLink yamlBlock	    Operator
-  HiLink yamlOperator	    Operator
-  HiLink yamlKey	    Identifier
-  HiLink yamlString	    String
-  HiLink yamlEscape	    SpecialChar
-  HiLink yamlSingleEscape   SpecialChar
-  HiLink yamlNumber	    Number
-  HiLink yamlConstant	    Constant
-  HiLink yamlTimestamp	    Number
-
-  delcommand HiLink
-endif
+hi def link yamlTodo            Todo
+hi def link yamlComment         Comment
+hi def link yamlDocumentHeader  PreProc
+hi def link yamlDocumentEnd     PreProc
+hi def link yamlDirective       Keyword
+hi def link yamlNodeProperty    Type
+hi def link yamlAnchor          Type
+hi def link yamlAlias           Type
+hi def link yamlDelimiter       Delimiter
+hi def link yamlBlock           Operator
+hi def link yamlOperator        Operator
+hi def link yamlKey             Identifier
+hi def link yamlString          String
+hi def link yamlEscape          SpecialChar
+hi def link yamlSingleEscape    SpecialChar
+hi def link yamlNumber          Number
+hi def link yamlConstant        Constant
+hi def link yamlTimestamp       Number
 
 let b:current_syntax = "yaml"
 
-" vim: set sts=2 sw=2:
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1344,8 +1344,11 @@ retry:
 			    == (size_t)-1 && ICONV_ERRNO != ICONV_EINVAL)
 						  || from_size > CONV_RESTLEN)
 		{
+		    if (!keep_dest_enc && can_retry)
+			goto rewind_retry;
 		    if (!keep_dest_enc)
-			goto rewind_retry;
+			conv_error = TRUE;
+
 		    /* Ignore a byte and try again. */
 		    ++fromp;
 		    --from_size;
@@ -1761,6 +1764,7 @@ rewind_retry:
 			conv_error = TRUE;
 		    else
 # endif
+		    if (illegal_byte == 0)  /* Keep the first linenr */
 		    {
 			char_u		*s;
 
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3162,7 +3162,10 @@ prompt_for_number(mouse_used)
     int		save_State;
 
     /* When using ":silent" assume that <CR> was entered. */
-    MSG_PUTS(_("Choice number (<Enter> cancels): "));
+    if (mouse_used != NULL)
+	MSG_PUTS(_("Type number or click with mouse (<Enter> cancels): "));
+    else
+	MSG_PUTS(_("Choice number (<Enter> cancels): "));
 
     /* Set the state such that text can be selected/copied/pasted. */
     save_cmdline_row = cmdline_row;
--- a/src/spell.c
+++ b/src/spell.c
@@ -134,14 +134,17 @@
  *			    SAL_F0LLOWUP
  *			    SAL_COLLAPSE
  *			    SAL_REM_ACCENTS
+ *			    SAL_SOFO: SOFOFROM and SOFOTO used instead of SAL
+ *
+ * <salcount>   2 bytes	    number of <sal> items following
  *
  * <sal> : <salfromlen> <salfrom> <saltolen> <salto>
  *
- * <salfromlen>	1 byte	    length of <salfrom>
+ * <salfromlen>	1-2 bytes    length of <salfrom> (2 bytes for SAL_SOFO)
  *
  * <salfrom>	N bytes	    "from" part of soundsalike
  *
- * <saltolen>	1 byte	    length of <salto>
+ * <saltolen>	1-2 bytes    length of <salto> (2 bytes for SAL_SOFO)
  *
  * <salto>	N bytes	    "to" part of soundsalike
  *
@@ -267,16 +270,22 @@ typedef struct salitem_S
 {
     char_u	*sm_lead;	/* leading letters */
     int		sm_leadlen;	/* length of "sm_lead" */
-    char_u	*sm_oneoff;	/* letters from () or NULL */
+    char_u	*sm_oneof;	/* letters from () or NULL */
     char_u	*sm_rules;	/* rules like ^, $, priority */
     char_u	*sm_to;		/* replacement. */
 #ifdef FEAT_MBYTE
     int		*sm_lead_w;	/* wide character copy of "sm_lead" */
-    int		*sm_oneoff_w;	/* wide character copy of "sm_oneoff" */
+    int		*sm_oneof_w;	/* wide character copy of "sm_oneof" */
     int		*sm_to_w;	/* wide character copy of "sm_to" */
 #endif
 } salitem_T;
 
+#ifdef FEAT_MBYTE
+typedef int salfirst_T;
+#else
+typedef short salfirst_T;
+#endif
+
 /*
  * Structure used to store words and other info for one language, loaded from
  * a .spl file.
@@ -316,8 +325,11 @@ struct slang_S
     short	sl_rep_first[256];  /* indexes where byte first appears, -1 if
 				       there is none */
     garray_T	sl_sal;		/* list of salitem_T entries from SAL lines */
-    short	sl_sal_first[256];  /* indexes where byte first appears, -1 if
+    salfirst_T	sl_sal_first[256];  /* indexes where byte first appears, -1 if
 				       there is none */
+    int		sl_sofo;	/* SOFOFROM and SOFOTO instead of SAL items:
+				 * "sl_sal_first" maps chars, when has_mbyte
+				 * "sl_sal" is a list of wide char lists. */
     int		sl_followup;	/* SAL followup */
     int		sl_collapse;	/* SAL collapse_result */
     int		sl_rem_accents;	/* SAL remove_accents */
@@ -338,6 +350,7 @@ static slang_T *first_lang = NULL;
 #define SAL_F0LLOWUP		1
 #define SAL_COLLAPSE		2
 #define SAL_REM_ACCENTS		4
+#define SAL_SOFO		8   /* SOFOFROM and SOFOTO instead of SAL */
 
 /*
  * Structure used in "b_langp", filled from 'spelllang'.
@@ -501,6 +514,7 @@ typedef enum
     STATE_START = 0,	/* At start of node check for NUL bytes (goodword
 			 * ends); if badword ends there is a match, otherwise
 			 * try splitting word. */
+    STATE_NOPREFIX,	/* try without prefix */
     STATE_SPLITUNDO,	/* Undo splitting. */
     STATE_ENDNUL,	/* Past NUL bytes at start of the node. */
     STATE_PLAIN,	/* Use each byte of the node. */
@@ -530,6 +544,8 @@ typedef struct trystate_S
     char_u	ts_fidx;	/* index in fword[], case-folded bad word */
     char_u	ts_fidxtry;	/* ts_fidx at which bytes may be changed */
     char_u	ts_twordlen;	/* valid length of tword[] */
+    char_u	ts_prefixdepth;	/* stack depth for end of prefix or PREFIXTREE
+				 * or NOPREFIX */
 #ifdef FEAT_MBYTE
     char_u	ts_tcharlen;	/* number of bytes in tword character */
     char_u	ts_tcharidx;	/* current byte index in tword character */
@@ -546,6 +562,10 @@ typedef struct trystate_S
 #define DIFF_YES	1	/* different byte found */
 #define DIFF_INSERT	2	/* inserting character */
 
+/* special values ts_prefixdepth */
+#define PREFIXTREE	0xfe	/* walking through the prefix tree */
+#define NOPREFIX	0xff	/* not using prefixes */
+
 /* mode values for find_word */
 #define FIND_FOLDWORD	0	/* find word case-folded */
 #define FIND_KEEPWORD	1	/* find keep-case word */
@@ -601,9 +621,11 @@ static int was_banned __ARGS((suginfo_T 
 static void free_banned __ARGS((suginfo_T *su));
 static void rescore_suggestions __ARGS((suginfo_T *su));
 static int cleanup_suggestions __ARGS((garray_T *gap, int maxscore, int keep));
-static void spell_soundfold __ARGS((slang_T *slang, char_u *inword, char_u *res));
+static void spell_soundfold __ARGS((slang_T *slang, char_u *inword, int folded, char_u *res));
+static void spell_soundfold_sofo __ARGS((slang_T *slang, char_u *inword, char_u *res));
+static void spell_soundfold_sal __ARGS((slang_T *slang, char_u *inword, char_u *res));
 #ifdef FEAT_MBYTE
-static void spell_soundfold_w __ARGS((slang_T *slang, char_u *inword, char_u *res));
+static void spell_soundfold_wsal __ARGS((slang_T *slang, char_u *inword, char_u *res));
 #endif
 static int soundalike_score __ARGS((char_u *goodsound, char_u *badsound));
 static int spell_edit_score __ARGS((char_u *badword, char_u *goodword));
@@ -1107,16 +1129,16 @@ find_prefix(mip)
     char_u	*byts;
     idx_T	*idxs;
 
+    byts = slang->sl_pbyts;
+    if (byts == NULL)
+	return;			/* array is empty */
+
     /* We use the case-folded word here, since prefixes are always
      * case-folded. */
     ptr = mip->mi_fword;
     flen = mip->mi_fwordlen;    /* available case-folded bytes */
-    byts = slang->sl_pbyts;
     idxs = slang->sl_pidxs;
 
-    if (byts == NULL)
-	return;			/* array is empty */
-
     /*
      * Repeat advancing in the tree until:
      * - there is a byte that doesn't match,
@@ -1562,12 +1584,24 @@ slang_clear(lp)
     ga_clear(gap);
 
     gap = &lp->sl_sal;
-    while (gap->ga_len > 0)
-    {
-	smp = &((salitem_T *)gap->ga_data)[--gap->ga_len];
-	vim_free(smp->sm_lead);
-	vim_free(smp->sm_to);
-    }
+    if (lp->sl_sofo)
+	/* SOFOFROM and SOFOTO items: free lists of wide characters. */
+	for (i = 0; i < gap->ga_len; ++i)
+	    vim_free(((int **)gap->ga_data)[i]);
+    else
+	/* SAL items: free salitem_T items */
+	while (gap->ga_len > 0)
+	{
+	    smp = &((salitem_T *)gap->ga_data)[--gap->ga_len];
+	    vim_free(smp->sm_lead);
+	    /* Don't free sm_oneof and sm_rules, they point into sm_lead. */
+	    vim_free(smp->sm_to);
+#ifdef FEAT_MBYTE
+	    vim_free(smp->sm_lead_w);
+	    vim_free(smp->sm_oneof_w);
+	    vim_free(smp->sm_to_w);
+#endif
+	}
     ga_clear(gap);
 
     for (i = 0; i < lp->sl_prefixcnt; ++i)
@@ -1638,6 +1672,7 @@ spell_load_file(fname, lang, old_lp, sil
     salitem_T	*smp;
     int		rr;
     short	*first;
+    salfirst_T	*sfirst;
     idx_T	idx;
     int		c = 0;
 
@@ -1895,151 +1930,282 @@ formerr:
 	lp->sl_collapse = TRUE;
     if (i & SAL_REM_ACCENTS)
 	lp->sl_rem_accents = TRUE;
+    if (i & SAL_SOFO)
+	lp->sl_sofo = TRUE;
 
     cnt = (getc(fd) << 8) + getc(fd);		/* <salcount> */
     if (cnt < 0)
 	goto formerr;
 
-    gap = &lp->sl_sal;
-    if (ga_grow(gap, cnt) == FAIL)
-	goto endFAIL;
-
-    /* <sal> : <salfromlen> <salfrom> <saltolen> <salto> */
-    for (; gap->ga_len < cnt; ++gap->ga_len)
-    {
-	smp = &((salitem_T *)gap->ga_data)[gap->ga_len];
-	ccnt = getc(fd);			/* <salfromlen> */
+    if (lp->sl_sofo)
+    {
+	/*
+	 * SOFOFROM and SOFOTO items come in one <salfrom> and <salto>
+	 */
+	if (cnt != 1)
+	    goto formerr;
+
+	cnt = (getc(fd) << 8) + getc(fd);		/* <salfromlen> */
+	if (cnt < 0)
+	    goto formerr;
+	if ((bp = alloc(cnt + 1)) == NULL)
+	    goto endFAIL;
+	for (i = 0; i < cnt; ++i)
+	    bp[i] = getc(fd);				/* <salfrom> */
+	bp[i] = NUL;
+
+	ccnt = (getc(fd) << 8) + getc(fd);		/* <saltolen> */
 	if (ccnt < 0)
+	{
+	    vim_free(bp);
 	    goto formerr;
-	if ((p = alloc(ccnt + 2)) == NULL)
+	}
+	if ((fol = alloc(ccnt + 1)) == NULL)
+	{
+	    vim_free(bp);
 	    goto endFAIL;
-	smp->sm_lead = p;
-
-	/* Read up to the first special char into sm_lead. */
+	}
 	for (i = 0; i < ccnt; ++i)
-	{
-	    c = getc(fd);			/* <salfrom> */
-	    if (vim_strchr((char_u *)"0123456789(-<^$", c) != NULL)
-		break;
-	    *p++ = c;
-	}
-	smp->sm_leadlen = p - smp->sm_lead;
-	*p++ = NUL;
-
-	/* Put optional chars in sm_oneoff, if any. */
-	if (c == '(')
-	{
-	    smp->sm_oneoff = p;
-	    for (++i; i < ccnt; ++i)
-	    {
-		c = getc(fd);			/* <salfrom> */
-		if (c == ')')
-		    break;
-		*p++ = c;
-	    }
-	    *p++ = NUL;
-	    if (++i < ccnt)
-		c = getc(fd);
-	}
-	else
-	    smp->sm_oneoff = NULL;
-
-	/* Any following chars go in sm_rules. */
-	smp->sm_rules = p;
-	if (i < ccnt)
-	    *p++ = c;
-	for (++i; i < ccnt; ++i)
-	    *p++ = getc(fd);			/* <salfrom> */
-	*p++ = NUL;
-
-	ccnt = getc(fd);			/* <saltolen> */
-	if (ccnt < 0)
-	{
-	    vim_free(smp->sm_lead);
-	    goto formerr;
-	}
-	if ((p = alloc(ccnt + 1)) == NULL)
-	{
-	    vim_free(smp->sm_lead);
-	    goto endFAIL;
-	}
-	smp->sm_to = p;
-
-	for (i = 0; i < ccnt; ++i)
-	    *p++ = getc(fd);			/* <salto> */
-	*p++ = NUL;
+	    fol[i] = getc(fd);				/* <salto> */
+	fol[i] = NUL;
 
 #ifdef FEAT_MBYTE
 	if (has_mbyte)
 	{
-	    /* convert the multi-byte strings to wide char strings */
-	    smp->sm_lead_w = mb_str2wide(smp->sm_lead);
-	    smp->sm_leadlen = mb_charlen(smp->sm_lead);
-	    if (smp->sm_oneoff == NULL)
-		smp->sm_oneoff_w = NULL;
+	    char_u	*s;
+
+	    /* Use "sl_sal" as an array with 256 pointers to a list of wide
+	     * characters.  The index is the low byte of the character.
+	     * The list contains from-to pairs with a terminating NUL.
+	     * sl_sal_first[] is used for latin1 "from" characters. */
+	    gap = &lp->sl_sal;
+	    ga_init2(gap, sizeof(int *), 1);
+	    if (ga_grow(gap, 256) == FAIL)
+	    {
+sofoFAIL:
+		vim_free(bp);
+		vim_free(fol);
+		goto endFAIL;
+	    }
+	    vim_memset(gap->ga_data, 0, sizeof(int *) * 256);
+	    gap->ga_len = 256;
+
+	    /* First count the number of items for each list.  Temporarily use
+	     * sl_sal_first[] for this. */
+	    for (p = bp, s = fol; *p != NUL && *s != NUL; )
+	    {
+		c = mb_ptr2char_adv(&p);
+		mb_ptr_adv(s);
+		if (c >= 256)
+		    ++lp->sl_sal_first[c & 0xff];
+	    }
+	    if (*p != NUL || *s != NUL)	    /* lengths differ */
+		goto sofoerr;
+
+	    /* Allocate the lists. */
+	    for (i = 0; i < 256; ++i)
+		if (lp->sl_sal_first[i] > 0)
+		{
+		    p = alloc(sizeof(int) * (lp->sl_sal_first[i] * 2 + 1));
+		    if (p == NULL)
+			goto sofoFAIL;
+		    ((int **)gap->ga_data)[i] = (int *)p;
+		    *(int *)p = 0;
+		}
+
+	    /* Put the characters in sl_sal_first[] or a sl_sal list. */
+	    vim_memset(lp->sl_sal_first, 0, sizeof(salfirst_T) * 256);
+	    for (p = bp, s = fol; *p != NUL && *s != NUL; )
+	    {
+		c = mb_ptr2char_adv(&p);
+		i = mb_ptr2char_adv(&s);
+		if (c >= 256)
+		{
+		    int	*inp;
+
+		    /* Append the from-to chars at the end of the list with
+		     * the low byte. */
+		    inp = ((int **)gap->ga_data)[c & 0xff];
+		    while (*inp != 0)
+			++inp;
+		    *inp++ = c;		/* from char */
+		    *inp++ = i;		/* to char */
+		    *inp++ = NUL;	/* NUL at the end */
+		}
+		else
+		    /* mapping byte to char is done in sl_sal_first[] */
+		    lp->sl_sal_first[c] = i;
+	    }
+	}
+	else
+#endif
+	{
+	    /* mapping bytes to bytes is done in sl_sal_first[] */
+	    if (cnt != ccnt)
+	    {
+#ifdef FEAT_MBYTE
+sofoerr:
+#endif
+		vim_free(bp);
+		vim_free(fol);
+		goto formerr;
+	    }
+	    for (i = 0; i < cnt; ++i)
+		lp->sl_sal_first[bp[i]] = fol[i];
+	    lp->sl_sal.ga_len = 1;	/* indicates we have soundfolding */
+	}
+	vim_free(bp);
+	vim_free(fol);
+    }
+    else
+    {
+	/*
+	 * SAL items
+	 */
+	gap = &lp->sl_sal;
+	if (ga_grow(gap, cnt) == FAIL)
+	    goto endFAIL;
+
+	/* <sal> : <salfromlen> <salfrom> <saltolen> <salto> */
+	for (; gap->ga_len < cnt; ++gap->ga_len)
+	{
+	    smp = &((salitem_T *)gap->ga_data)[gap->ga_len];
+	    ccnt = getc(fd);			/* <salfromlen> */
+	    if (ccnt < 0)
+		goto formerr;
+	    if ((p = alloc(ccnt + 2)) == NULL)
+		goto endFAIL;
+	    smp->sm_lead = p;
+
+	    /* Read up to the first special char into sm_lead. */
+	    for (i = 0; i < ccnt; ++i)
+	    {
+		c = getc(fd);			/* <salfrom> */
+		if (vim_strchr((char_u *)"0123456789(-<^$", c) != NULL)
+		    break;
+		*p++ = c;
+	    }
+	    smp->sm_leadlen = p - smp->sm_lead;
+	    *p++ = NUL;
+
+	    /* Put (abc) chars in sm_oneof, if any. */
+	    if (c == '(')
+	    {
+		smp->sm_oneof = p;
+		for (++i; i < ccnt; ++i)
+		{
+		    c = getc(fd);			/* <salfrom> */
+		    if (c == ')')
+			break;
+		    *p++ = c;
+		}
+		*p++ = NUL;
+		if (++i < ccnt)
+		    c = getc(fd);
+	    }
 	    else
-		smp->sm_oneoff_w = mb_str2wide(smp->sm_oneoff);
-	    smp->sm_to_w = mb_str2wide(smp->sm_to);
-	    if (smp->sm_lead_w == NULL
-		    || (smp->sm_oneoff_w == NULL && smp->sm_oneoff != NULL)
-		    || smp->sm_to_w == NULL)
+		smp->sm_oneof = NULL;
+
+	    /* Any following chars go in sm_rules. */
+	    smp->sm_rules = p;
+	    if (i < ccnt)
+		/* store the char we got while checking for end of sm_lead */
+		*p++ = c;
+	    for (++i; i < ccnt; ++i)
+		*p++ = getc(fd);			/* <salfrom> */
+	    *p++ = NUL;
+
+	    ccnt = getc(fd);			/* <saltolen> */
+	    if (ccnt < 0)
 	    {
 		vim_free(smp->sm_lead);
-		vim_free(smp->sm_to);
-		vim_free(smp->sm_lead_w);
-		vim_free(smp->sm_oneoff_w);
-		vim_free(smp->sm_to_w);
+		goto formerr;
+	    }
+	    if ((p = alloc(ccnt + 1)) == NULL)
+	    {
+		vim_free(smp->sm_lead);
 		goto endFAIL;
 	    }
-	}
-#endif
-    }
-
-    /* Fill the first-index table. */
-    first = lp->sl_sal_first;
-    for (i = 0; i < 256; ++i)
-	first[i] = -1;
-    for (i = 0; i < gap->ga_len; ++i)
-    {
-	smp = &((salitem_T *)gap->ga_data)[i];
-#ifdef FEAT_MBYTE
-	if (has_mbyte)
-	    /* Use the lowest byte of the first character. */
-	    c = *smp->sm_lead_w & 0xff;
-	else
-#endif
-	    c = *smp->sm_lead;
-	if (first[c] == -1)
-	{
-	    first[c] = i;
+	    smp->sm_to = p;
+
+	    for (i = 0; i < ccnt; ++i)
+		*p++ = getc(fd);			/* <salto> */
+	    *p++ = NUL;
+
 #ifdef FEAT_MBYTE
 	    if (has_mbyte)
 	    {
-		int	j;
-
-		/* Make sure all entries with this byte are following each
-		 * other.  Move the ones down that are in the wrong position.
-		 * Do keep the right sequence. */
-		while (i + 1 < gap->ga_len && (*smp[1].sm_lead_w & 0xff) == c)
+		/* convert the multi-byte strings to wide char strings */
+		smp->sm_lead_w = mb_str2wide(smp->sm_lead);
+		smp->sm_leadlen = mb_charlen(smp->sm_lead);
+		if (smp->sm_oneof == NULL)
+		    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_lead_w == NULL
+			|| (smp->sm_oneof_w == NULL && smp->sm_oneof != NULL)
+			|| smp->sm_to_w == NULL)
 		{
-		    ++i;
-		    ++smp;
+		    vim_free(smp->sm_lead);
+		    vim_free(smp->sm_to);
+		    vim_free(smp->sm_lead_w);
+		    vim_free(smp->sm_oneof_w);
+		    vim_free(smp->sm_to_w);
+		    goto endFAIL;
 		}
-		for (j = 1; i + j < gap->ga_len; ++j)
-		    if ((*smp[j].sm_lead_w & 0xff) == c)
-		    {
-			salitem_T  tsal;
-
-			++i;
-			++smp;
-			--j;
-			tsal = smp[j];
-			mch_memmove(smp + 1, smp, sizeof(salitem_T) * j);
-			*smp = tsal;
-		    }
 	    }
 #endif
 	}
+
+	/* Fill the first-index table. */
+	sfirst = lp->sl_sal_first;
+	for (i = 0; i < 256; ++i)
+	    sfirst[i] = -1;
+	smp = (salitem_T *)gap->ga_data;
+	for (i = 0; i < gap->ga_len; ++i)
+	{
+#ifdef FEAT_MBYTE
+	    if (has_mbyte)
+		/* Use the lowest byte of the first character.  For latin1 it's
+		 * the character, for other encodings it should differ for most
+		 * characters. */
+		c = *smp[i].sm_lead_w & 0xff;
+	    else
+#endif
+		c = *smp[i].sm_lead;
+	    if (sfirst[c] == -1)
+	    {
+		sfirst[c] = i;
+#ifdef FEAT_MBYTE
+		if (has_mbyte)
+		{
+		    /* Make sure all entries with this byte are following each
+		     * other.  Move the ones that are in the wrong position.  Do
+		     * keep the same ordering! */
+		    while (i + 1 < gap->ga_len
+					   && (*smp[i + 1].sm_lead_w & 0xff) == c)
+			/* Skip over entry with same index byte. */
+			++i;
+
+		    for (n = 1; i + n < gap->ga_len; ++n)
+			if ((*smp[i + n].sm_lead_w & 0xff) == c)
+			{
+			    salitem_T  tsal;
+
+			    /* Move entry with same index byte after the entries
+			     * we already found. */
+			    ++i;
+			    --n;
+			    tsal = smp[i + n];
+			    mch_memmove(smp + i + 1, smp + i,
+							   sizeof(salitem_T) * n);
+			    smp[i] = tsal;
+			}
+		}
+#endif
+	    }
+	}
     }
 
     cnt = (getc(fd) << 8) + getc(fd);		/* <maplen> */
@@ -2711,6 +2877,8 @@ typedef struct spellinfo_S
 
     garray_T	si_rep;		/* list of fromto_T entries from REP lines */
     garray_T	si_sal;		/* list of fromto_T entries from SAL lines */
+    char_u	*si_sofofr;	/* SOFOFROM text */
+    char_u	*si_sofoto;	/* SOFOTO text */
     int		si_followup;	/* soundsalike: ? */
     int		si_collapse;	/* soundsalike: ? */
     int		si_rem_accents;	/* soundsalike: remove accents */
@@ -2776,6 +2944,7 @@ spell_read_aff(fname, spin)
     int		do_sal;
     int		do_map;
     int		do_midword;
+    int		do_sofo;
     int		found_map = FALSE;
     hashitem_T	*hi;
 
@@ -2811,6 +2980,9 @@ spell_read_aff(fname, spin)
     /* Only do MIDWORD line when not done in another .aff file already */
     do_midword = spin->si_midword == NULL;
 
+    /* Only do SOFOFROM and SOFOTO when not done in another .aff file already */
+    do_sofo = spin->si_sofofr == NULL;
+
     /*
      * Allocate and init the afffile_T structure.
      */
@@ -2886,6 +3058,7 @@ spell_read_aff(fname, spin)
 							       p_enc) == FAIL)
 		    smsg((char_u *)_("Conversion in %s not supported: from %s to %s"),
 					       fname, aff->af_enc, p_enc);
+		spin->si_conv.vc_fail = TRUE;
 #else
 		    smsg((char_u *)_("Conversion in %s not supported"), fname);
 #endif
@@ -3165,12 +3338,30 @@ spell_read_aff(fname, spin)
 								: items[2]);
 		}
 	    }
+	    else if (STRCMP(items[0], "SOFOFROM") == 0 && itemcnt == 2
+				     && (!do_sofo || spin->si_sofofr == NULL))
+	    {
+		if (do_sofo)
+		    spin->si_sofofr = vim_strsave(items[1]);
+	    }
+	    else if (STRCMP(items[0], "SOFOTO") == 0 && itemcnt == 2
+				     && (!do_sofo || spin->si_sofoto == NULL))
+	    {
+		if (do_sofo)
+		    spin->si_sofoto = vim_strsave(items[1]);
+	    }
 	    else
 		smsg((char_u *)_("Unrecognized item in %s line %d: %s"),
 						       fname, lnum, items[0]);
 	}
     }
 
+    if (do_sofo && (spin->si_sofofr == NULL) != (spin->si_sofoto == NULL))
+	smsg((char_u *)_("Missing SOFO%s line in %s"),
+			      spin->si_sofofr == NULL ? "FROM" : "TO", fname);
+    if (spin->si_sofofr != NULL && spin->si_sal.ga_len > 0)
+	smsg((char_u *)_("Both SAL and SOFO lines in %s"), fname);
+
     if (fol != NULL || low != NULL || upp != NULL)
     {
 	if (spin->si_clear_chartab)
@@ -3449,7 +3640,7 @@ spell_read_dic(fname, spin, affile)
 	hi = hash_lookup(&ht, dw, hash);
 	if (!HASHITEM_EMPTY(hi))
 	    smsg((char_u *)_("Duplicate word in %s line %d: %s"),
-							      fname, lnum, w);
+							     fname, lnum, dw);
 	else
 	    hash_add_item(&ht, hi, dw, hash);
 
@@ -3797,6 +3988,7 @@ spell_read_wordfile(fname, spin)
 			smsg((char_u *)_("Conversion in %s not supported: from %s to %s"),
 							  fname, line, p_enc);
 		    vim_free(enc);
+		    spin->si_conv.vc_fail = TRUE;
 #else
 		    smsg((char_u *)_("Conversion in %s not supported"), fname);
 #endif
@@ -4376,6 +4568,8 @@ write_vim_spell(fname, spin)
     qsort(spin->si_rep.ga_data, (size_t)spin->si_rep.ga_len,
 					       sizeof(fromto_T), rep_compare);
 
+    /* round 1: REP items
+     * round 2: SAL items (unless SOFO is used) */
     for (round = 1; round <= 2; ++round)
     {
 	if (round == 1)
@@ -4391,7 +4585,11 @@ write_vim_spell(fname, spin)
 		i |= SAL_COLLAPSE;
 	    if (spin->si_rem_accents)
 		i |= SAL_REM_ACCENTS;
+	    if (spin->si_sofofr != NULL && spin->si_sofoto != NULL)
+		i |= SAL_SOFO;
 	    putc(i, fd);			/* <salflags> */
+	    if (i & SAL_SOFO)
+		break;
 	}
 
 	put_bytes(fd, (long_u)gap->ga_len, 2);	/* <repcount> or <salcount> */
@@ -4410,6 +4608,20 @@ write_vim_spell(fname, spin)
 	}
     }
 
+    /* SOFOFROM and SOFOTO */
+    if (spin->si_sofofr != NULL && spin->si_sofoto != NULL)
+    {
+	put_bytes(fd, 1L, 2);				/* <salcount> */
+
+	l = STRLEN(spin->si_sofofr);
+	put_bytes(fd, (long_u)l, 2);			/* <salfromlen> */
+	fwrite(spin->si_sofofr, l, (size_t)1, fd);	/* <salfrom> */
+
+	l = STRLEN(spin->si_sofoto);
+	put_bytes(fd, (long_u)l, 2);			/* <saltolen> */
+	fwrite(spin->si_sofoto, l, (size_t)1, fd);	/* <salto> */
+    }
+
     put_bytes(fd, (long_u)spin->si_map.ga_len, 2);	/* <maplen> */
     if (spin->si_map.ga_len > 0)			/* <mapstr> */
 	fwrite(spin->si_map.ga_data, (size_t)spin->si_map.ga_len,
@@ -4869,6 +5081,8 @@ mkspell(fcount, fnames, ascii, overwrite
 	ga_clear(&spin.si_map);
 	ga_clear(&spin.si_prefcond);
 	vim_free(spin.si_midword);
+	vim_free(spin.si_sofofr);
+	vim_free(spin.si_sofoto);
 
 	/* Free the .aff file structures. */
 	for (i = 0; i < incount; ++i)
@@ -5535,7 +5749,7 @@ spell_suggest()
 	while (p > line && SPELL_ISWORDP(p))
 	    mb_ptr_back(line, p);
 	/* Forward to start of word. */
-	while (!SPELL_ISWORDP(p))
+	while (*p != NUL && !SPELL_ISWORDP(p))
 	    mb_ptr_adv(p);
 
 	if (!SPELL_ISWORDP(p))		/* No word found. */
@@ -5813,8 +6027,8 @@ spell_find_suggest(badptr, su, maxcount,
 	if (STRNCMP(buf, "expr:", 5) == 0)
 	{
 #ifdef FEAT_EVAL
-	    /* Evaluate an expression.  Skip this when called recursively
-	     * (using spellsuggest() in the expression). */
+	    /* Evaluate an expression.  Skip this when called recursively,
+	     * when using spellsuggest() in the expression. */
 	    if (!expr_busy)
 	    {
 		expr_busy = TRUE;
@@ -6151,8 +6365,8 @@ suggest_try_change(su)
     trystate_T	*sp;
     int		newscore;
     langp_T	*lp;
-    char_u	*byts;
-    idx_T	*idxs;
+    char_u	*byts, *fbyts, *pbyts;
+    idx_T	*idxs, *fidxs, *pidxs;
     int		depth;
     int		c, c2, c3;
     int		n = 0;
@@ -6182,22 +6396,42 @@ suggest_try_change(su)
 	 * "fword[]" the word we are trying to match with (initially the bad
 	 * word).
 	 */
-	byts = lp->lp_slang->sl_fbyts;
-	idxs = lp->lp_slang->sl_fidxs;
-
 	depth = 0;
-	stack[0].ts_state = STATE_START;
-	stack[0].ts_score = 0;
-	stack[0].ts_curi = 1;
-	stack[0].ts_fidx = 0;
-	stack[0].ts_fidxtry = 0;
-	stack[0].ts_twordlen = 0;
-	stack[0].ts_arridx = 0;
+	sp = &stack[0];
+	sp->ts_state = STATE_START;
+	sp->ts_score = 0;
+	sp->ts_curi = 1;
+	sp->ts_fidx = 0;
+	sp->ts_fidxtry = 0;
+	sp->ts_twordlen = 0;
+	sp->ts_arridx = 0;
 #ifdef FEAT_MBYTE
-	stack[0].ts_tcharlen = 0;
+	sp->ts_tcharlen = 0;
 #endif
 
 	/*
+	 * When there are postponed prefixes we need to use these first.  At
+	 * the end of the prefix we continue in the case-fold tree.
+	 */
+	fbyts = lp->lp_slang->sl_fbyts;
+	fidxs = lp->lp_slang->sl_fidxs;
+	pbyts = lp->lp_slang->sl_pbyts;
+	pidxs = lp->lp_slang->sl_pidxs;
+	if (pbyts != NULL)
+	{
+	    byts = pbyts;
+	    idxs = pidxs;
+	    sp->ts_prefixdepth = PREFIXTREE;
+	    sp->ts_state = STATE_NOPREFIX;	/* try without prefix first */
+	}
+	else
+	{
+	    byts = fbyts;
+	    idxs = fidxs;
+	    sp->ts_prefixdepth = NOPREFIX;
+	}
+
+	/*
 	 * Loop to find all suggestions.  At each round we either:
 	 * - For the current state try one operation, advance "ts_curi",
 	 *   increase "depth".
@@ -6210,6 +6444,7 @@ suggest_try_change(su)
 	    switch (sp->ts_state)
 	    {
 	    case STATE_START:
+	    case STATE_NOPREFIX:
 		/*
 		 * Start of node: Deal with NUL bytes, which means
 		 * tword[] may end here.
@@ -6218,6 +6453,40 @@ suggest_try_change(su)
 		len = byts[arridx];	    /* bytes in this node */
 		arridx += sp->ts_curi;	    /* index of current byte */
 
+		if (sp->ts_prefixdepth == PREFIXTREE)
+		{
+		    /* Skip over the NUL bytes, we use them later. */
+		    for (n = 0; n < len && byts[arridx + n] == 0; ++n)
+			;
+		    sp->ts_curi += n;
+
+		    /* At end of a prefix or at start of prefixtree: check for
+		     * following word. */
+		    if (byts[arridx] == 0 || sp->ts_state == STATE_NOPREFIX)
+		    {
+			sp->ts_state = STATE_START;
+			++depth;
+			stack[depth] = stack[depth - 1];
+			sp = &stack[depth];
+			sp->ts_prefixdepth = depth - 1;
+			byts = fbyts;
+			idxs = fidxs;
+			sp->ts_state = STATE_START;
+			sp->ts_curi = 1;   /* start just after length byte */
+			sp->ts_arridx = 0;
+
+			/* Move the prefix to preword[] so that
+			 * find_keepcap_word() works. */
+			prewordlen = splitoff = sp->ts_twordlen;
+			mch_memmove(preword, tword, splitoff);
+			break;
+		    }
+
+		    /* Always past NUL bytes now. */
+		    sp->ts_state = STATE_ENDNUL;
+		    break;
+		}
+
 		if (sp->ts_curi > len || byts[arridx] != 0)
 		{
 		    /* Past bytes in node and/or past NUL bytes. */
@@ -6232,6 +6501,31 @@ suggest_try_change(su)
 
 		flags = (int)idxs[arridx];
 
+		if (sp->ts_prefixdepth < MAXWLEN)
+		{
+		    /* There was a prefix before the word.  Check that the
+		     * prefix can be used with this word. */
+		    /* Count the length of the NULs in the prefix.  If there
+		     * are none this must be the first try without a prefix.
+		     */
+		    n = stack[sp->ts_prefixdepth].ts_arridx;
+		    len = pbyts[n++];
+		    for (c = 0; c < len && pbyts[n + c] == 0; ++c)
+			;
+		    if (c > 0)
+		    {
+			/* The prefix ID is stored two bytes above the flags. */
+			c = valid_word_prefix(c, n, (unsigned)flags >> 16,
+					      tword + splitoff, lp->lp_slang);
+			if (c == 0)
+			    break;
+
+			/* Use the WF_RARE flag for a rare prefix. */
+			if (c & WF_RAREPFX)
+			    flags |= WF_RARE;
+		    }
+		}
+
 		/*
 		 * Form the word with proper case in preword.
 		 * If there is a word from a previous split, append.
@@ -6945,6 +7239,14 @@ suggest_try_change(su)
 		/* Did all possible states at this level, go up one level. */
 		--depth;
 
+		if (depth >= 0 && stack[depth].ts_prefixdepth == PREFIXTREE)
+		{
+		    /* Continue in or go back to the prefix tree. */
+		    byts = pbyts;
+		    idxs = pidxs;
+		    splitoff = 0;
+		}
+
 		/* Don't check for CTRL-C too often, it takes time. */
 		line_breakcheck();
 	    }
@@ -7161,7 +7463,7 @@ score_comp_sal(su)
 	if (lp->lp_slang->sl_sal.ga_len > 0)
 	{
 	    /* soundfold the bad word */
-	    spell_soundfold(lp->lp_slang, su->su_fbadword, badsound);
+	    spell_soundfold(lp->lp_slang, su->su_fbadword, TRUE, badsound);
 
 	    for (i = 0; i < su->su_ga.ga_len; ++i)
 	    {
@@ -7213,7 +7515,7 @@ score_combine(su)
 	if (lp->lp_slang->sl_sal.ga_len > 0)
 	{
 	    /* soundfold the bad word */
-	    spell_soundfold(lp->lp_slang, su->su_fbadword, badsound);
+	    spell_soundfold(lp->lp_slang, su->su_fbadword, TRUE, badsound);
 
 	    for (i = 0; i < su->su_ga.ga_len; ++i)
 	    {
@@ -7320,14 +7622,12 @@ stp_sal_score(stp, su, slang, badsound)
 	    for (p = fword; *(p = skiptowhite(p)) != NUL; )
 		mch_memmove(p, p + 1, STRLEN(p));
 
-	spell_soundfold(slang, fword, badsound2);
+	spell_soundfold(slang, fword, TRUE, badsound2);
 	p = badsound2;
     }
 
-    /* Case-fold the word, sound-fold the word and compute the score for the
-     * difference. */
-    (void)spell_casefold(stp->st_word, STRLEN(stp->st_word), fword, MAXWLEN);
-    spell_soundfold(slang, fword, goodsound);
+    /* Sound-fold the word and compute the score for the difference. */
+    spell_soundfold(slang, stp->st_word, FALSE, goodsound);
 
     return soundalike_score(goodsound, p);
 }
@@ -7341,7 +7641,6 @@ suggest_try_soundalike(su)
 {
     char_u	salword[MAXWLEN];
     char_u	tword[MAXWLEN];
-    char_u	tfword[MAXWLEN];
     char_u	tsalword[MAXWLEN];
     idx_T	arridx[MAXWLEN];
     int		curi[MAXWLEN];
@@ -7362,7 +7661,7 @@ suggest_try_soundalike(su)
 	if (lp->lp_slang->sl_sal.ga_len > 0)
 	{
 	    /* soundfold the bad word */
-	    spell_soundfold(lp->lp_slang, su->su_fbadword, salword);
+	    spell_soundfold(lp->lp_slang, su->su_fbadword, TRUE, salword);
 
 	    /*
 	     * Go through the whole tree, soundfold each word and compare.
@@ -7406,18 +7705,10 @@ suggest_try_soundalike(su)
 			    if (round == 2 || (flags & WF_KEEPCAP) == 0)
 			    {
 				tword[depth] = NUL;
-				if (round == 1)
-				    spell_soundfold(lp->lp_slang,
-							     tword, tsalword);
-				else
-				{
-				    /* In keep-case tree need to case-fold the
-				     * word. */
-				    (void)spell_casefold(tword, depth,
-							     tfword, MAXWLEN);
-				    spell_soundfold(lp->lp_slang,
-							    tfword, tsalword);
-				}
+				/* Sound-fold.  Only in keep-case tree need to
+				 * case-fold the word. */
+				spell_soundfold(lp->lp_slang, tword,
+							round == 1, tsalword);
 
 				/* Compute the edit distance between the
 				 * sound-a-like words. */
@@ -7812,7 +8103,7 @@ rescore_suggestions(su)
 	if (lp->lp_slang->sl_sal.ga_len > 0)
 	{
 	    /* soundfold the bad word */
-	    spell_soundfold(lp->lp_slang, su->su_fbadword, sal_badword);
+	    spell_soundfold(lp->lp_slang, su->su_fbadword, TRUE, sal_badword);
 
 	    for (i = 0; i < su->su_ga.ga_len; ++i)
 	    {
@@ -7896,7 +8187,6 @@ eval_soundfold(word)
     char_u	*word;
 {
     langp_T	*lp;
-    char_u	fword[MAXWLEN];
     char_u	sound[MAXWLEN];
 
     if (curwin->w_p_spell && *curbuf->b_p_spl != NUL)
@@ -7905,11 +8195,8 @@ eval_soundfold(word)
 						   lp->lp_slang != NULL; ++lp)
 	    if (lp->lp_slang->sl_sal.ga_len > 0)
 	    {
-		/* word most be case-folded first. */
-		(void)spell_casefold(word, STRLEN(word), fword, MAXWLEN);
-
 		/* soundfold the word */
-		spell_soundfold(lp->lp_slang, fword, sound);
+		spell_soundfold(lp->lp_slang, word, FALSE, sound);
 		return vim_strsave(sound);
 	    }
 
@@ -7922,14 +8209,125 @@ eval_soundfold(word)
  * Turn "inword" into its sound-a-like equivalent in "res[MAXWLEN]".
  */
     static void
-spell_soundfold(slang, inword, res)
+spell_soundfold(slang, inword, folded, res)
+    slang_T	*slang;
+    char_u	*inword;
+    int		folded;	    /* "inword" is already case-folded */
+    char_u	*res;
+{
+    char_u	fword[MAXWLEN];
+    char_u	*word;
+
+    if (slang->sl_sofo)
+	/* SOFOFROM and SOFOTO used */
+	spell_soundfold_sofo(slang, inword, res);
+    else
+    {
+	/* SAL items used.  Requires the word to be case-folded. */
+	if (folded)
+	    word = inword;
+	else
+	{
+	    (void)spell_casefold(inword, STRLEN(inword), fword, MAXWLEN);
+	    word = fword;
+	}
+
+#ifdef FEAT_MBYTE
+	if (has_mbyte)
+	    spell_soundfold_wsal(slang, word, res);
+	else
+#endif
+	    spell_soundfold_sal(slang, word, res);
+    }
+}
+
+/*
+ * Perform sound folding of "inword" into "res" according to SOFOFROM and
+ * SOFOTO lines.
+ */
+    static void
+spell_soundfold_sofo(slang, inword, res)
+    slang_T	*slang;
+    char_u	*inword;
+    char_u	*res;
+{
+    char_u	*s;
+    int		ri = 0;
+    int		c;
+
+#ifdef FEAT_MBYTE
+    if (has_mbyte)
+    {
+	int	prevc = 0;
+	int	*ip;
+
+	/* The sl_sal_first[] table contains the translation for chars up to
+	 * 255, sl_sal the rest. */
+	for (s = inword; *s != NUL; )
+	{
+	    c = mb_ptr2char_adv(&s);
+	    if (enc_utf8 ? utf_class(c) == 0 : vim_iswhite(c))
+		c = ' ';
+	    else if (c < 256)
+		c = slang->sl_sal_first[c];
+	    else
+	    {
+		ip = ((int **)slang->sl_sal.ga_data)[c & 0xff];
+		if (ip == NULL)		/* empty list, can't match */
+		    c = NUL;
+		else
+		    for (;;)		/* find "c" in the list */
+		    {
+			if (*ip == 0)	/* not found */
+			{
+			    c = NUL;
+			    break;
+			}
+			if (*ip == c)	/* match! */
+			{
+			    c = ip[1];
+			    break;
+			}
+			ip += 2;
+		    }
+	    }
+
+	    if (c != NUL && c != prevc)
+	    {
+		ri += mb_char2bytes(c, res + ri);
+		if (ri + MB_MAXBYTES > MAXWLEN)
+		    break;
+		prevc = c;
+	    }
+	}
+    }
+    else
+#endif
+    {
+	/* The sl_sal_first[] table contains the translation. */
+	for (s = inword; (c = *s) != NUL; ++s)
+	{
+	    if (vim_iswhite(c))
+		c = ' ';
+	    else
+		c = slang->sl_sal_first[c];
+	    if (c != NUL && (ri == 0 || res[ri - 1] != c))
+		res[ri++] = c;
+	}
+    }
+
+    res[ri] = NUL;
+}
+
+    static void
+spell_soundfold_sal(slang, inword, res)
     slang_T	*slang;
     char_u	*inword;
     char_u	*res;
 {
     salitem_T	*smp;
     char_u	word[MAXWLEN];
-    char_u	*s;
+    char_u	*s = inword;
     char_u	*t;
     char_u	*pf;
     int		i, j, z;
@@ -7943,21 +8341,12 @@ spell_soundfold(slang, inword, res)
     int		p0 = -333;
     int		c0;
 
-#ifdef FEAT_MBYTE
-    if (has_mbyte)
-    {
-	/* Call the multi-byte version of this. */
-	spell_soundfold_w(slang, inword, res);
-	return;
-    }
-#endif
-
     /* Remove accents, if wanted.  We actually remove all non-word characters.
-     * But keep white space. */
+     * But keep white space.  We need a copy, the word may be changed here. */
     if (slang->sl_rem_accents)
     {
 	t = word;
-	for (s = inword; *s != NUL; )
+	while (*s != NUL)
 	{
 	    if (vim_iswhite(*s))
 	    {
@@ -7974,7 +8363,7 @@ spell_soundfold(slang, inword, res)
 	*t = NUL;
     }
     else
-	STRCPY(word, inword);
+	STRCPY(word, s);
 
     smp = (salitem_T *)slang->sl_sal.ga_data;
 
@@ -8011,9 +8400,9 @@ spell_soundfold(slang, inword, res)
 		    }
 		}
 
-		if ((pf = smp[n].sm_oneoff) != NULL)
+		if ((pf = smp[n].sm_oneof) != NULL)
 		{
-		    /* Check for match with one of the chars in "sm_oneoff". */
+		    /* Check for match with one of the chars in "sm_oneof". */
 		    while (*pf != NUL && *pf != word[i + k])
 			++pf;
 		    if (*pf == NUL)
@@ -8081,10 +8470,10 @@ spell_soundfold(slang, inword, res)
 			    }
 			    k0 += k - 1;
 
-			    if ((pf = smp[n0].sm_oneoff) != NULL)
+			    if ((pf = smp[n0].sm_oneof) != NULL)
 			    {
 				/* Check for match with one of the chars in
-				 * "sm_oneoff". */
+				 * "sm_oneof". */
 				while (*pf != NUL && *pf != word[i + k0])
 				    ++pf;
 				if (*pf == NUL)
@@ -8211,12 +8600,12 @@ spell_soundfold(slang, inword, res)
  * Multi-byte version of spell_soundfold().
  */
     static void
-spell_soundfold_w(slang, inword, res)
+spell_soundfold_wsal(slang, inword, res)
     slang_T	*slang;
     char_u	*inword;
     char_u	*res;
 {
-    salitem_T	*smp;
+    salitem_T	*smp = (salitem_T *)slang->sl_sal.ga_data;
     int		word[MAXWLEN];
     int		wres[MAXWLEN];
     int		l;
@@ -8266,8 +8655,6 @@ spell_soundfold_w(slang, inword, res)
     }
     word[n] = NUL;
 
-    smp = (salitem_T *)slang->sl_sal.ga_data;
-
     /*
      * This comes from Aspell phonet.cpp.
      * Converted from C++ to C.  Added support for multi-byte chars.
@@ -8282,11 +8669,13 @@ spell_soundfold_w(slang, inword, res)
 
 	if (n >= 0)
 	{
-	    /* check all rules for the same letter */
+	    /* check all rules for the same index byte */
 	    for (; ((ws = smp[n].sm_lead_w)[0] & 0xff) == (c & 0xff); ++n)
 	    {
 		/* Quickly skip entries that don't match the word.  Most
 		 * entries are less then three chars, optimize for that. */
+		if (c != ws[0])
+		    continue;
 		k = smp[n].sm_leadlen;
 		if (k > 1)
 		{
@@ -8302,9 +8691,9 @@ spell_soundfold_w(slang, inword, res)
 		    }
 		}
 
-		if ((pf = smp[n].sm_oneoff_w) != NULL)
+		if ((pf = smp[n].sm_oneof_w) != NULL)
 		{
-		    /* Check for match with one of the chars in "sm_oneoff". */
+		    /* Check for match with one of the chars in "sm_oneof". */
 		    while (*pf != NUL && *pf != word[i + k])
 			++pf;
 		    if (*pf == NUL)
@@ -8350,12 +8739,15 @@ spell_soundfold_w(slang, inword, res)
 		    if (slang->sl_followup && k > 1 && n0 >= 0
 					   && p0 != '-' && word[i + k] != NUL)
 		    {
-			/* test follow-up rule for "word[i + k]" */
+			/* Test follow-up rule for "word[i + k]"; loop over
+			 * all entries with the same index byte. */
 			for ( ; ((ws = smp[n0].sm_lead_w)[0] & 0xff)
 							 == (c0 & 0xff); ++n0)
 			{
 			    /* Quickly skip entries that don't match the word.
-			     * */
+			     */
+			    if (c0 != ws[0])
+				continue;
 			    k0 = smp[n0].sm_leadlen;
 			    if (k0 > 1)
 			    {
@@ -8373,10 +8765,10 @@ spell_soundfold_w(slang, inword, res)
 			    }
 			    k0 += k - 1;
 
-			    if ((pf = smp[n0].sm_oneoff_w) != NULL)
+			    if ((pf = smp[n0].sm_oneof_w) != NULL)
 			    {
 				/* Check for match with one of the chars in
-				 * "sm_oneoff". */
+				 * "sm_oneof". */
 				while (*pf != NUL && *pf != word[i + k0])
 				    ++pf;
 				if (*pf == NUL)
--- a/src/spell/he_IL.diff
+++ b/src/spell/he_IL.diff
@@ -1,5 +1,5 @@
 *** he_IL.orig.aff	Sat Jun 18 14:46:51 2005
---- he_IL.aff	Sat Jun 18 15:13:34 2005
+--- he_IL.aff	Wed Jun 29 17:24:12 2005
 ***************
 *** 2,3 ****
 --- 2,6 ----
@@ -8,3 +8,69 @@
 + PFXPOSTPONE
 + 
   # This file was generated automatically from data prepared
+*** he_IL.orig.dic	Sat Jun 18 14:47:00 2005
+--- he_IL.dic	Wed Jun 29 17:22:13 2005
+***************
+*** 318898,318902 ****
+  ëë
+- ëì
+  ëî
+- ëîä
+  ëù
+--- 318898,318900 ----
+***************
+*** 318911,318913 ****
+  ëùëîä
+- ëùì
+  ëùìë
+--- 318909,318910 ----
+***************
+*** 318935,318950 ****
+  îá
+- îä
+  îë
+- îì
+- îù
+- îùá
+  îùáë
+- îùä
+  îùë
+- îùëá
+  îùëë
+- îùëì
+  îùëî
+  îùëîä
+- îùì
+  îùìë
+--- 318932,318939 ----
+***************
+*** 318954,318964 ****
+  ù
+- ùá
+  ùáë
+- ùä
+  ùë
+- ùëá
+  ùëë
+- ùëì
+  ùëî
+- ùëîä
+  ùëù
+--- 318943,318948 ----
+***************
+*** 318978,318980 ****
+  ùëùîë
+- ùì
+  ùìë
+--- 318962,318963 ----
+***************
+*** 318996,319003 ****
+  ùî
+- ùîä
+  ùîë
+- ùîù
+  ùîùá
+  ùîùáë
+- ùîùä
+  ùîùë
+--- 318979,318983 ----
--- a/src/spell/nl_NL.diff
+++ b/src/spell/nl_NL.diff
@@ -1,13 +1,16 @@
 *** nl_NL.orig.aff	Wed Apr 20 11:48:16 2005
---- nl_NL.aff	Mon Jun 27 22:07:02 2005
+--- nl_NL.aff	Wed Jun 29 17:29:49 2005
 ***************
 *** 3,4 ****
---- 3,14 ----
+--- 3,17 ----
   
 + FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 + UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 + 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
 + MIDWORD	'-
 + 
 + KEP =
@@ -37,7 +40,7 @@
 ! SFX J 0 je [aeiou][bcdfgkpt] 
 ! SFX J 0 jes [aeiou][bcdfgkpt] 
   
---- 43,62 ----
+--- 46,65 ----
   SFX J N 18
 ! SFX J 0 tje [aeiou][aeiou]
 ! SFX J 0 tjes [aeiou][aeiou]
@@ -63,7 +66,7 @@
   REP ubi ibu
 ! REP croc krok 
   REP ten than
---- 263,265 ----
+--- 266,268 ----
   REP ubi ibu
 ! REP croc krok
   REP ten than
@@ -72,7 +75,7 @@
   REP capucino cappuccino
 ! REP celcius Celsius 
   REP kado cadeau
---- 298,300 ----
+--- 301,303 ----
   REP capucino cappuccino
 ! REP celcius Celsius
   REP kado cadeau
@@ -85,7 +88,7 @@
   REP kommittee comité
 ! REP kwis quiz 
   REP kwissen quizzen
---- 304,310 ----
+--- 307,313 ----
   REP committee comité
 ! REP komitee comité
 ! REP komittee comité
@@ -98,7 +101,7 @@
   REP copy kopij
 ! REP pitoresque pittoreske 
   REP reikweite reikwijdte
---- 312,314 ----
+--- 315,317 ----
   REP copy kopij
 ! REP pitoresque pittoreske
   REP reikweite reikwijdte
@@ -110,7 +113,7 @@
 ! REP kontekst context 
 ! REP korrekt correct 
   REP kritikus criticus
---- 324,329 ----
+--- 327,332 ----
   REP klup club
 ! REP wiskid whizzkid
 ! REP kontakt contact
@@ -119,7 +122,7 @@
   REP kritikus criticus
 ***************
 *** 333 ****
---- 343,466 ----
+--- 346,359 ----
   REP aflassen afgelasten
 + REP svp s.v.p.
 + REP zoz z.o.z.
@@ -134,116 +137,6 @@
 + MAP cç
 + MAP yÿý
 + MAP sß
-+ 
-+ # This comes from Aspell en_phonet.dat, version 1.1, 2000-01-07
-+ 
-+ 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
 *** nl_NL.orig.dic	Tue Apr 19 21:03:15 2005
 --- nl_NL.dic	Mon Jun 27 20:38:35 2005
 ***************
--- 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 Jun 28)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 28, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 29)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 29, compiled "