changeset 5362:ab1508486b12

Update runtime files. Add support for J.
author Bram Moolenaar <bram@vim.org>
date Sun, 22 Sep 2013 14:42:24 +0200
parents f0a6eb929df1
children 91f6a28e010d
files runtime/autoload/clojurecomplete.vim runtime/doc/change.txt runtime/doc/diff.txt runtime/doc/indent.txt runtime/doc/pi_vimball.txt runtime/doc/todo.txt runtime/doc/undo.txt runtime/doc/usr_45.txt runtime/doc/version5.txt runtime/doc/version7.txt runtime/filetype.vim runtime/ftplugin/clojure.vim runtime/ftplugin/j.vim runtime/indent/clojure.vim runtime/indent/j.vim runtime/syntax/apache.vim runtime/syntax/clojure.vim runtime/syntax/css.vim runtime/syntax/dircolors.vim runtime/syntax/j.vim runtime/syntax/vhdl.vim
diffstat 21 files changed, 1133 insertions(+), 1333 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/clojurecomplete.vim
+++ b/runtime/autoload/clojurecomplete.vim
@@ -1,20 +1,22 @@
 " Vim completion script
-" Language:     Clojure
-" Maintainer:   Sung Pae <self@sungpae.com>
-" URL:          https://github.com/guns/vim-clojure-static
-" License:      Same as Vim
-" Last Change:  05 February 2013
+" Language:	Clojure
+" Maintainer:	Sung Pae <self@sungpae.com>
+" URL:		https://github.com/guns/vim-clojure-static
+" License:	Same as Vim
+" Last Change:	08 September 2013
 
 " Special forms and public vars in clojure.core
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-002/vim_clojure_static.clj
-" Clojure 1.5.0-RC6
-let s:words = ["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-readably*","*read-eval*","*read-whitelist*","*source-path*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods",".","..","/","<","<=","=","==",">",">=","EMPTY-NODE","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc!","assoc","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","booleans","bound-fn","bound-fn*","bound?","butlast","byte","byte-array","bytes","case","cast","catch","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","concat","cond","cond->","cond->>","condp","conj!","conj","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","def","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj!","disj","dissoc!","dissoc","distinct","distinct?","do","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","doubles","drop","drop-last","drop-while","empty","empty?","ensure","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","finally","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","hash","hash-combine","hash-map","hash-set","identical?","identity","if","if-let","if-not","ifn?","import","in-ns","inc","inc'","init-proxy","instance?","int","int-array","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mod","monitor-enter","monitor-exit","munge","name","namespace","namespace-munge","neg?","new","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop!","pop","pop-thread-bindings","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","quot","quote","rand","rand-int","rand-nth","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","realized?","recur","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seque","sequence","sequential?","set!","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","slurp","some","some->","some->>","some-fn","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","symbol","symbol?","sync","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","throw","time","to-array","to-array-2d","trampoline","transient","tree-seq","true?","try","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","update-in","update-proxy","use","val","vals","var","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","when","when-first","when-let","when-not","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"]
+" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-005/clj/src/vim_clojure_static/generate.clj
+" Clojure version 1.5.1
+let s:words = ["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-readably*","*read-eval*","*source-path*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods",".","..","/","<","<=","=","==",">",">=","EMPTY-NODE","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc!","assoc","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","booleans","bound-fn","bound-fn*","bound?","butlast","byte","byte-array","bytes","case","cast","catch","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","concat","cond","cond->","cond->>","condp","conj!","conj","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","def","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj!","disj","dissoc!","dissoc","distinct","distinct?","do","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","doubles","drop","drop-last","drop-while","empty","empty?","ensure","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","finally","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","hash","hash-combine","hash-map","hash-set","identical?","identity","if","if-let","if-not","ifn?","import","in-ns","inc","inc'","init-proxy","instance?","int","int-array","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mod","monitor-enter","monitor-exit","munge","name","namespace","namespace-munge","neg?","new","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop!","pop","pop-thread-bindings","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","quot","quote","rand","rand-int","rand-nth","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","realized?","recur","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seque","sequence","sequential?","set!","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","slurp","some","some->","some->>","some-fn","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","symbol","symbol?","sync","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","throw","time","to-array","to-array-2d","trampoline","transient","tree-seq","true?","try","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","update-in","update-proxy","use","val","vals","var","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","when","when-first","when-let","when-not","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"]
 
 " Simple word completion omnifunc
 function! clojurecomplete#Complete(findstart, base)
-    if a:findstart
-        return searchpos('\<', 'bnW', line('.'))[1] - 1
-    else
-        return { 'words': filter(copy(s:words), 'v:val =~ "\\V\\^' . a:base . '"') }
-    endif
+	if a:findstart
+		return searchpos('\<', 'bnW', line('.'))[1] - 1
+	else
+		return { 'words': filter(copy(s:words), 'v:val =~ "\\V\\^' . a:base . '"') }
+	endif
 endfunction
+
+" vim:sts=8:sw=8:ts=8:noet
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1126,7 +1126,7 @@ less than one line (the small delete reg
 made for the delete operator with these movement commands: |%|, |(|, |)|, |`|,
 |/|, |?|, |n|, |N|, |{| and |}|.  Register "1 is always used then (this is Vi
 compatible).  The "- register is used as well if the delete is within a line.
-Note that these character may be mapped.  E.g. |%| is mapped by the matchit
+Note that these characters may be mapped.  E.g. |%| is mapped by the matchit
 plugin.
    With each successive deletion or change, Vim shifts the previous contents
 of register 1 into register 2, 2 into 3, and so forth, losing the previous
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.4.  Last change: 2013 Jul 07
+*diff.txt*      For Vim version 7.4.  Last change: 2013 Sep 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -123,10 +123,14 @@ Since the option values are remembered w
 file for a moment and come back to the same file and be in diff mode again.
 
 							*:diffo* *:diffoff*
-:diffo[ff]	Switch off diff mode for the current window.
+:diffo[ff]	Switch off diff mode for the current window.  Resets related
+		options also when 'diff' was not set.
 
 :diffo[ff]!	Switch off diff mode for the current window and in all windows
-		in the current tab page where 'diff' is set.
+		in the current tab page where 'diff' is set.  Resetting
+		related options only happens in a window that has 'diff' set,
+		if the current window does not have 'diff' set then no options
+		in it are changed.
 
 The ":diffoff" command resets the relevant options to the values they had when
 using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode.
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -581,8 +581,8 @@ CLOJURE					*ft-clojure-indent* *clojure
 
 Clojure indentation differs somewhat from traditional Lisps, due in part to
 the use of square and curly brackets, and otherwise by community convention.
-These conventions are not always universally followed, so the Clojure indent
-script offers a few configurable options, listed below.
+These conventions are not universally followed, so the Clojure indent script
+offers a few configurable options, listed below.
 
 If the current vim does not include searchpairpos(), the indent script falls
 back to normal 'lisp' indenting, and the following options are ignored.
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -188,7 +188,7 @@ 4. Vimball History					*vimball-history*
 			  * Changed silent! to sil! (shorter)
 			  * Safed |'swf'| setting (during vimball extraction,
 			    its now turned off)
-	32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and
+	32 : May 19, 2010 * (Christian Brabandt) :so someplugin.vba and
 			    :so someplugin.vba.gz (and the other supported
 			    compression types) now works
 			  * (Jan Steffens) added support for xz compression
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2013 Sep 05
+*todo.txt*      For Vim version 7.4.  Last change: 2013 Sep 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -36,23 +36,47 @@ not be repeated below, unless there is e
 
 NFA engine mismatch, with example. (ZyX, 2013 Aug 29)
 
-php syntax file update. (Jason Woofenden, Aug 30)
+NFA engine difference, with test case. (Axel Bender, 2013 Sep 17)
+Comments from Vlad Irnov Sep 18.
 
 Problem positioning the cursor after auto-formatting without a comment. (Tor
 Perkins, 2013 Sep 1)
 
+Patch to fix test 92 and 93 failing in a bad way. (Hirohito Higashi, 2013 Sep
+11)
+
+Patch to fix using "p" in Visual block mode. (Christian Brabandt, 2013 Sep 19)
+
+Using \1 in pattern goes one line too far. (Bohr Shaw, 2013 Sep 5)
+Column is OK.  "/\v(^.+\n)\1/e" (John Little, Sep 5)
+Also, matches start of 2nd line, not the whole line.
+
+Error for incomplete help argument. (John Beckett, 2013 Sep 12)
+
 Popup menu: first item is not selected when typing more than one character?
 
 Patch to add async functionality. (Geoff Greer, 2013 Sep 1)
 
 Patch to avoid mouse cursor flickering. (Ken Takata,, 2013 Sep 2)
 
+Patch to make zg and zb work better. (Christian Brabandt, 2013 Sep 8)
+
+Patch to fix that VC10 does not stat() a symlink to a directory.
+(Ken Takata,, 2013 Sep 20)  Update Sep 21
+
 Should win_redr_custom() not be allowed to use recursively?
 (Yasuhiro Matsumoto, 2013 Aug 15)
 
 NFA engine combining character mismatch. (glts, 2013 Aug 27)
 Remark Dominique, Aug 27
 
+Patch to make Tcl 8.6 work. (Issue 167)
+
+Patch to make input() work while inside :normal. (Yasuhiro Matsumoto, 2013 Sep
+19)
+
+Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
+
 Issue 164: freeze on regexp search.
 
 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
@@ -61,7 +85,7 @@ Patch to fix substitute prompt with line
 third message)
 
 Patch to avoid problem with colon in file name. (Yasuhiro Matsumoto, 2013 Sep
-5) Only copy file name when needed.
+5) Only copy file name when needed: Sep 9.
 
 Include systemverilog file?  Two votes yes.
 
@@ -69,6 +93,10 @@ Wrapping around end of file does not wor
 Dimitrov)
 Patch by Christian Brabandt, 2013 Aug 22
 
+Clang error for integer overflow. (Dominique Pelle, 2013 Sep 21)
+
+Patch to add v:hlsearch. (ZyX, 2013 Sep 22)
+
 Problem with 'spellsuggest' file, only works for some words.
 (Cesar Romani, 2013 Aug 20)  Depends on file name? (Aug 24)
 Additional remark by glts: the suggested words are marked bad?
@@ -83,6 +111,11 @@ Patch to make has() check for Vim versio
 Several syntax file match "^\s*" which may get underlined if that's in the
 highlight group.  Add a "\zs" after it?
 
+Win32: When a directory name contains an exclamation mark, completion doesn't
+complete the contents of the directory.  No escaping for the "!"? (Jan
+Stocker, 2012 Jan 5; 2013 Aug 20)
+Patch 2013 Sept 10, test: Sept 11.
+
 Go through more coverity reports.
 
 With "$" in 'cpoptions' the popup menu isn't fully drawn. (Matti Niemenmaa,
@@ -99,7 +132,7 @@ Patches to fix this. (Ken Takata, 2013 A
 :help gives example for z?, but it does not work.  m? and t? do work.
 
 Patch to add funcref to Lua.  (Luis Carvalho, 2013 Sep 4)
-Missing tests.
+With tests: Sep 5.
 
 Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
 
@@ -131,10 +164,6 @@ 17)
 Patch by Christian Brabandt, 2013 Mar 23.
 Not 100% sure this is the right solution.
 
-Win32: When a directory name contains an exclamation mark, completion doesn't
-complete the contents of the directory.  No escaping for the "!"? (Jan
-Stocker, 2012 Jan 5; 2013 Aug 20)
-
 Patch to support expression argument to sort() instead of a function name.
 Yasuhiro Matsumoto, 2013 May 31.
 Or should we add a more general mechanism, like lambda functions?
@@ -184,6 +213,7 @@ Patch to make fold updates much faster. 
 
 TCL: With MSVC 2010 doesn't find Tcl_FindExecutable. (tux)
 Patch to define it. (Ken Takata, 2013 Aug 12)  Is this right?
+Probably not: http://code.google.com/p/vim/issues/detail?id=167
 
 MS-Windows: Patch to make tests copy files to avoid changing the fileformat of
 the files under version control. (Taro Muraoka, 2013 Jul 5)
@@ -992,8 +1022,6 @@ Also: swap files are in ~/tmp/  One has 
 Add v:motion_force. (Kana Natsuno, 2008 Dec 6)
 Maybe call it v:motiontype.
 
-Runtime files for Clojure. (Toralf Wittner, 2008 Jun 25)
-
 MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
 doesn't set 'ff' to "unix".  (Ben Fritz, 2008 Dec 5) Reusing the old buffer
 probably causes this.
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -1,4 +1,4 @@
-*undo.txt*      For Vim version 7.4.  Last change: 2013 Aug 22
+*undo.txt*      For Vim version 7.4.  Last change: 2013 Sep 08
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -249,8 +249,9 @@ a simple scheme that maps filesystem pat
 detect if an undo file is no longer synchronized with the file it was written
 for (with a hash of the file contents) and ignore it when the file was changed
 after the undo file was written, to prevent corruption.  An undo file is also
-ignored if its owner differs from the owner of the edited file.  Set 'verbose'
-to get a message about that when opening a file.
+ignored if its owner differs from the owner of the edited file, except when
+the owner of the undo file is the current user.  Set 'verbose' to get a
+message about that when opening a file.
 
 Undo files are normally saved in the same directory as the file.  This can be
 changed with the 'undodir' option.
--- a/runtime/doc/usr_45.txt
+++ b/runtime/doc/usr_45.txt
@@ -328,8 +328,8 @@ actually use Vim to convert a file.  Exa
 *45.5*	Entering language text
 
 Computer keyboards don't have much more than a hundred keys.  Some languages
-have thousands of characters, Unicode has ten thousands.  So how do you type
-these characters?
+have thousands of characters, Unicode has over hundred thousand.  So how do
+you type these characters?
    First of all, when you don't use too many of the special characters, you
 can use digraphs.  This was already explained in |24.9|.
    When you use a language that uses many more characters than keys on your
--- a/runtime/doc/version5.txt
+++ b/runtime/doc/version5.txt
@@ -2020,7 +2020,7 @@ File browser added					*file-browser-5.2
 
 The Win32, Athena and Motif GUI bring up a file requester if the user asks to
 ":browse" for the ":e", ":w", ":r", ":so", ":redirect" and
-":mkexrc/vimrc/vsess" commands.  ::browse e /foo/bar" opens the requester in
+":mkexrc/vimrc/vsess" commands.  ":browse e /foo/bar" opens the requester in
 the /foo/bar directory, so you can have nice mapping rhs's like ":browse so
 $vim/macros".  If no initial dir specified for ":browse e", can be compiled to
 either begin in the current directory, or that of the current buffer. (Negri
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -2395,7 +2395,7 @@ with special attributes were redrawn.  N
 actually are bold.  Speeds up displaying considerably.
 
 When only highlighting changes and the text is scrolled at the same time
-everything is redraw instead of using a scroll and updating the changed text.
+everything is redrawn instead of using a scroll and updating the changed text.
 E.g., when using ":match" to highlight a paren that the cursor landed on.
 Added SOME_VALID: Redraw the whole window but also try to scroll to minimize
 redrawing.
--- 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:	2013 Aug 03
+" Last Change:	2013 Sep 22
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -129,7 +129,7 @@ au BufNewFile,BufRead .asoundrc,*/usr/sh
 au BufNewFile,BufRead *.aml			setf aml
 
 " APT config file
-au BufNewFile,BufRead apt.conf                 setf aptconf
+au BufNewFile,BufRead apt.conf		       setf aptconf
 au BufNewFile,BufRead */.aptitude/config       setf aptconf
 au BufNewFile,BufRead */etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf} setf aptconf
 
@@ -952,6 +952,9 @@ au BufNewFile,BufRead inittab			setf ini
 " Inno Setup
 au BufNewFile,BufRead *.iss			setf iss
 
+" J
+au BufNewFile,BufRead *.ijs			setf j
+
 " JAL
 au BufNewFile,BufRead *.jal,*.JAL		setf jal
 
@@ -2092,7 +2095,7 @@ au BufNewFile,BufRead *.tak			setf tak
 
 " Task
 au BufRead,BufNewFile {pending,completed,undo}.data  setf taskdata
-au BufRead,BufNewFile *.task                    setf taskedit
+au BufRead,BufNewFile *.task			setf taskedit
 
 " Tcl (JACL too)
 au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
@@ -2217,12 +2220,12 @@ au BufNewFile,BufRead *.uc			setf uc
 au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
 
 " Upstart (init(8)) config files
-au BufNewFile,BufRead */usr/share/upstart/*.conf               setf upstart
-au BufNewFile,BufRead */usr/share/upstart/*.override           setf upstart
+au BufNewFile,BufRead */usr/share/upstart/*.conf	       setf upstart
+au BufNewFile,BufRead */usr/share/upstart/*.override	       setf upstart
 au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override  setf upstart
 au BufNewFile,BufRead */.init/*.conf,*/.init/*.override        setf upstart
-au BufNewFile,BufRead */.config/upstart/*.conf                 setf upstart
-au BufNewFile,BufRead */.config/upstart/*.override             setf upstart
+au BufNewFile,BufRead */.config/upstart/*.conf		       setf upstart
+au BufNewFile,BufRead */.config/upstart/*.override	       setf upstart
 
 " Vera
 au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
--- a/runtime/ftplugin/clojure.vim
+++ b/runtime/ftplugin/clojure.vim
@@ -1,22 +1,23 @@
 " Vim filetype plugin file
-" Language:     Clojure
-" Author:       Meikel Brandmeyer <mb@kotka.de>
+" Language:	Clojure
+" Author:	Meikel Brandmeyer <mb@kotka.de>
 "
-" Maintainer:   Sung Pae <self@sungpae.com>
-" URL:          https://github.com/guns/vim-clojure-static
-" License:      Same as Vim
-" Last Change:  30 January 2013
+" Maintainer:	Sung Pae <self@sungpae.com>
+" URL:		https://github.com/guns/vim-clojure-static
+" License:	Same as Vim
+" Last Change:	08 September 2013
 
-" Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
-    finish
+	finish
 endif
 let b:did_ftplugin = 1
 
 let s:cpo_save = &cpo
 set cpo&vim
 
-let b:undo_ftplugin = 'setlocal define< formatoptions< comments< commentstring<'
+let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring<'
+
+setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
 
 " There will be false positives, but this is better than missing the whole set
 " of user-defined def* definitions.
@@ -35,10 +36,10 @@ setlocal commentstring=;\ %s
 " 'completefunc' so that the user has some form of completion available when
 " 'omnifunc' is set and no REPL connection exists.
 for s:setting in ['omnifunc', 'completefunc']
-    if exists('&' . s:setting) && empty(eval('&' . s:setting))
-        execute 'setlocal ' . s:setting . '=clojurecomplete#Complete'
-        let b:undo_ftplugin .= ' | setlocal ' . s:setting . '<'
-    endif
+	if exists('&' . s:setting) && empty(eval('&' . s:setting))
+		execute 'setlocal ' . s:setting . '=clojurecomplete#Complete'
+		let b:undo_ftplugin .= ' | setlocal ' . s:setting . '<'
+	endif
 endfor
 
 " Take all directories of the CLOJURE_SOURCE_DIRS environment variable
@@ -46,34 +47,34 @@ endfor
 "
 " This is a legacy option for VimClojure users.
 if exists('$CLOJURE_SOURCE_DIRS')
-    for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':')
-        let s:dir = fnameescape(s:dir)
-        " Whitespace escaping for Windows
-        let s:dir = substitute(s:dir, '\', '\\\\', 'g')
-        let s:dir = substitute(s:dir, '\ ', '\\ ', 'g')
-        execute "setlocal path+=" . s:dir . "/**"
-    endfor
-    let b:undo_ftplugin .= ' | setlocal path<'
+	for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':')
+		let s:dir = fnameescape(s:dir)
+		" Whitespace escaping for Windows
+		let s:dir = substitute(s:dir, '\', '\\\\', 'g')
+		let s:dir = substitute(s:dir, '\ ', '\\ ', 'g')
+		execute "setlocal path+=" . s:dir . "/**"
+	endfor
+	let b:undo_ftplugin .= ' | setlocal path<'
 endif
 
 " Skip brackets in ignored syntax regions when using the % command
 if exists('loaded_matchit')
-    let b:match_words = &matchpairs
-    let b:match_skip = 's:comment\|string\|regex\|character'
-    let b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip'
+	let b:match_words = &matchpairs
+	let b:match_skip = 's:comment\|string\|regex\|character'
+	let b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip'
 endif
 
 " Win32 can filter files in the browse dialog
 if has("gui_win32") && !exists("b:browsefilter")
-    let b:browsefilter = "Clojure Source Files (*.clj)\t*.clj\n" .
-                       \ "ClojureScript Source Files (*.cljs)\t*.cljs\n" .
-                       \ "Java Source Files (*.java)\t*.java\n" .
-                       \ "All Files (*.*)\t*.*\n"
-    let b:undo_ftplugin .= ' | unlet! b:browsefilter'
+	let b:browsefilter = "Clojure Source Files (*.clj)\t*.clj\n" .
+			   \ "ClojureScript Source Files (*.cljs)\t*.cljs\n" .
+			   \ "Java Source Files (*.java)\t*.java\n" .
+			   \ "All Files (*.*)\t*.*\n"
+	let b:undo_ftplugin .= ' | unlet! b:browsefilter'
 endif
 
 let &cpo = s:cpo_save
 
 unlet! s:cpo_save s:setting s:dir
 
-" vim:sts=4 sw=4 et:
+" vim:sts=8:sw=8:ts=8:noet
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/j.vim
@@ -0,0 +1,17 @@
+" Vim filetype plugin
+" Language:	J
+" Maintainer:	David Bürgin <676c7473@gmail.com>
+" Last Change:	2013-09-21
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+setlocal iskeyword=48-57,65-90,_,97-122
+setlocal comments=:NB.
+setlocal commentstring=NB.\ %s
+setlocal formatoptions-=t formatoptions+=croql
+setlocal shiftwidth=2 softtabstop=2 expandtab
+
+let b:undo_ftplugin = "setl et< sts< sw< fo< cms< com< isk<"
--- a/runtime/indent/clojure.vim
+++ b/runtime/indent/clojure.vim
@@ -1,16 +1,20 @@
 " Vim indent file
-" Language:     Clojure
-" Author:       Meikel Brandmeyer <mb@kotka.de>
-" URL:          http://kotka.de/projects/clojure/vimclojure.html
+" Language:	Clojure
+" Author:	Meikel Brandmeyer <mb@kotka.de>
+" URL:		http://kotka.de/projects/clojure/vimclojure.html
 "
-" Maintainer:   Sung Pae <self@sungpae.com>
-" URL:          https://github.com/guns/vim-clojure-static
-" License:      Same as Vim
-" Last Change:  30 January 2013
+" Maintainer:	Sung Pae <self@sungpae.com>
+" URL:		https://github.com/guns/vim-clojure-static
+" License:	Same as Vim
+" Last Change:	08 September 2013
 
-" Only load this indent file when no other was loaded.
+" TODO: Indenting after multibyte characters is broken:
+"       (let [Δ (if foo
+"                bar    ; Indent error
+"                baz)])
+
 if exists("b:did_indent")
-    finish
+	finish
 endif
 let b:did_indent = 1
 
@@ -25,290 +29,277 @@ setlocal indentkeys=!,o,O
 
 if exists("*searchpairpos")
 
-    if !exists('g:clojure_maxlines')
-        let g:clojure_maxlines = 100
-    endif
+	if !exists('g:clojure_maxlines')
+		let g:clojure_maxlines = 100
+	endif
 
-    if !exists('g:clojure_fuzzy_indent')
-        let g:clojure_fuzzy_indent = 1
-    endif
+	if !exists('g:clojure_fuzzy_indent')
+		let g:clojure_fuzzy_indent = 1
+	endif
 
-    if !exists('g:clojure_fuzzy_indent_patterns')
-        let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']
-    endif
+	if !exists('g:clojure_fuzzy_indent_patterns')
+		let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']
+	endif
 
-    if !exists('g:clojure_fuzzy_indent_blacklist')
-        let g:clojure_fuzzy_indent_blacklist = ['-fn$', '\v^with-%(meta|out-str|loading-context)$']
-    endif
+	if !exists('g:clojure_fuzzy_indent_blacklist')
+		let g:clojure_fuzzy_indent_blacklist = ['-fn$', '\v^with-%(meta|out-str|loading-context)$']
+	endif
 
-    if !exists('g:clojure_special_indent_words')
-        let g:clojure_special_indent_words = 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'
-    endif
+	if !exists('g:clojure_special_indent_words')
+		let g:clojure_special_indent_words = 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'
+	endif
 
-    if !exists('g:clojure_align_multiline_strings')
-        let g:clojure_align_multiline_strings = 0
-    endif
+	if !exists('g:clojure_align_multiline_strings')
+		let g:clojure_align_multiline_strings = 0
+	endif
 
-    function! s:SynIdName()
-        return synIDattr(synID(line("."), col("."), 0), "name")
-    endfunction
+	function! s:SynIdName()
+		return synIDattr(synID(line("."), col("."), 0), "name")
+	endfunction
 
-    function! s:CurrentChar()
-        return getline('.')[col('.')-1]
-    endfunction
+	function! s:CurrentChar()
+		return getline('.')[col('.')-1]
+	endfunction
 
-    function! s:CurrentWord()
-        return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
-    endfunction
+	function! s:CurrentWord()
+		return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
+	endfunction
 
-    function! s:IsParen()
-        return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' &&
-             \ s:SynIdName() !~? '\vstring|comment'
-    endfunction
+	function! s:IsParen()
+		return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' &&
+		     \ s:SynIdName() !~? '\vstring|regex|comment|character'
+	endfunction
 
-    " Returns 1 if string matches a pattern in 'patterns', which may be a
-    " list of patterns, or a comma-delimited string of implicitly anchored
-    " patterns.
-    function! s:MatchesOne(patterns, string)
-        let list = type(a:patterns) == type([])
-                   \ ? a:patterns
-                   \ : map(split(a:patterns, ','), '"^" . v:val . "$"')
-        for pat in list
-            if a:string =~ pat | return 1 | endif
-        endfor
-    endfunction
+	" Returns 1 if string matches a pattern in 'patterns', which may be a
+	" list of patterns, or a comma-delimited string of implicitly anchored
+	" patterns.
+	function! s:MatchesOne(patterns, string)
+		let list = type(a:patterns) == type([])
+			   \ ? a:patterns
+			   \ : map(split(a:patterns, ','), '"^" . v:val . "$"')
+		for pat in list
+			if a:string =~ pat | return 1 | endif
+		endfor
+	endfunction
 
-    function! s:SavePosition()
-        let [ _b, l, c, _o ] = getpos(".")
-        let b = bufnr("%")
-        return [b, l, c]
-    endfunction
+	function! s:MatchPairs(open, close, stopat)
+		" Stop only on vector and map [ resp. {. Ignore the ones in strings and
+		" comments.
+		if a:stopat == 0
+			let stopat = max([line(".") - g:clojure_maxlines, 0])
+		else
+			let stopat = a:stopat
+		endif
 
-    function! s:RestorePosition(value)
-        let [b, l, c] = a:value
-        if bufnr("%") != b
-            execute b "buffer!"
-        endif
-        call setpos(".", [0, l, c, 0])
-    endfunction
+		let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat)
+		return [pos[0], virtcol(pos)]
+	endfunction
 
-    function! s:MatchPairs(open, close, stopat)
-        " Stop only on vector and map [ resp. {. Ignore the ones in strings and
-        " comments.
-        if a:stopat == 0
-            let stopat = max([line(".") - g:clojure_maxlines, 0])
-        else
-            let stopat = a:stopat
-        endif
+	function! s:ClojureCheckForStringWorker()
+		" Check whether there is the last character of the previous line is
+		" highlighted as a string. If so, we check whether it's a ". In this
+		" case we have to check also the previous character. The " might be the
+		" closing one. In case the we are still in the string, we search for the
+		" opening ". If this is not found we take the indent of the line.
+		let nb = prevnonblank(v:lnum - 1)
 
-        let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat)
-        return [pos[0], virtcol(pos)]
-    endfunction
+		if nb == 0
+			return -1
+		endif
 
-    function! s:ClojureCheckForStringWorker()
-        " Check whether there is the last character of the previous line is
-        " highlighted as a string. If so, we check whether it's a ". In this
-        " case we have to check also the previous character. The " might be the
-        " closing one. In case the we are still in the string, we search for the
-        " opening ". If this is not found we take the indent of the line.
-        let nb = prevnonblank(v:lnum - 1)
-
-        if nb == 0
-            return -1
-        endif
+		call cursor(nb, 0)
+		call cursor(0, col("$") - 1)
+		if s:SynIdName() !~? "string"
+			return -1
+		endif
 
-        call cursor(nb, 0)
-        call cursor(0, col("$") - 1)
-        if s:SynIdName() !~? "string"
-            return -1
-        endif
+		" This will not work for a " in the first column...
+		if s:CurrentChar() == '"'
+			call cursor(0, col("$") - 2)
+			if s:SynIdName() !~? "string"
+				return -1
+			endif
+			if s:CurrentChar() != '\\'
+				return -1
+			endif
+			call cursor(0, col("$") - 1)
+		endif
 
-        " This will not work for a " in the first column...
-        if s:CurrentChar() == '"'
-            call cursor(0, col("$") - 2)
-            if s:SynIdName() !~? "string"
-                return -1
-            endif
-            if s:CurrentChar() != '\\'
-                return -1
-            endif
-            call cursor(0, col("$") - 1)
-        endif
+		let p = searchpos('\(^\|[^\\]\)\zs"', 'bW')
 
-        let p = searchpos('\(^\|[^\\]\)\zs"', 'bW')
+		if p != [0, 0]
+			return p[1] - 1
+		endif
+
+		return indent(".")
+	endfunction
 
-        if p != [0, 0]
-            return p[1] - 1
-        endif
-
-        return indent(".")
-    endfunction
+	function! s:CheckForString()
+		let pos = getpos('.')
+		try
+			let val = s:ClojureCheckForStringWorker()
+		finally
+			call setpos('.', pos)
+		endtry
+		return val
+	endfunction
 
-    function! s:CheckForString()
-        let pos = s:SavePosition()
-        try
-            let val = s:ClojureCheckForStringWorker()
-        finally
-            call s:RestorePosition(pos)
-        endtry
-        return val
-    endfunction
+	function! s:ClojureIsMethodSpecialCaseWorker(position)
+		" Find the next enclosing form.
+		call search('\S', 'Wb')
 
-    function! s:ClojureIsMethodSpecialCaseWorker(position)
-        " Find the next enclosing form.
-        call search('\S', 'Wb')
+		" Special case: we are at a '(('.
+		if s:CurrentChar() == '('
+			return 0
+		endif
+		call cursor(a:position)
+
+		let nextParen = s:MatchPairs('(', ')', 0)
 
-        " Special case: we are at a '(('.
-        if s:CurrentChar() == '('
-            return 0
-        endif
-        call cursor(a:position)
+		" Special case: we are now at toplevel.
+		if nextParen == [0, 0]
+			return 0
+		endif
+		call cursor(nextParen)
 
-        let nextParen = s:MatchPairs('(', ')', 0)
+		call search('\S', 'W')
+		if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>'
+			return 1
+		endif
 
-        " Special case: we are now at toplevel.
-        if nextParen == [0, 0]
-            return 0
-        endif
-        call cursor(nextParen)
+		return 0
+	endfunction
 
-        call search('\S', 'W')
-        if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>'
-            return 1
-        endif
-
-        return 0
-    endfunction
+	function! s:IsMethodSpecialCase(position)
+		let pos = getpos('.')
+		try
+			let val = s:ClojureIsMethodSpecialCaseWorker(a:position)
+		finally
+			call setpos('.', pos)
+		endtry
+		return val
+	endfunction
 
-    function! s:IsMethodSpecialCase(position)
-        let pos = s:SavePosition()
-        try
-            let val = s:ClojureIsMethodSpecialCaseWorker(a:position)
-        finally
-            call s:RestorePosition(pos)
-        endtry
-        return val
-    endfunction
+	function! GetClojureIndent()
+		" Get rid of special case.
+		if line(".") == 1
+			return 0
+		endif
 
-    function! GetClojureIndent()
-        " Get rid of special case.
-        if line(".") == 1
-            return 0
-        endif
+		" We have to apply some heuristics here to figure out, whether to use
+		" normal lisp indenting or not.
+		let i = s:CheckForString()
+		if i > -1
+			return i + !!g:clojure_align_multiline_strings
+		endif
 
-        " We have to apply some heuristics here to figure out, whether to use
-        " normal lisp indenting or not.
-        let i = s:CheckForString()
-        if i > -1
-            return i + !!g:clojure_align_multiline_strings
-        endif
+		call cursor(0, 1)
 
-        call cursor(0, 1)
+		" Find the next enclosing [ or {. We can limit the second search
+		" to the line, where the [ was found. If no [ was there this is
+		" zero and we search for an enclosing {.
+		let paren = s:MatchPairs('(', ')', 0)
+		let bracket = s:MatchPairs('\[', '\]', paren[0])
+		let curly = s:MatchPairs('{', '}', bracket[0])
 
-        " Find the next enclosing [ or {. We can limit the second search
-        " to the line, where the [ was found. If no [ was there this is
-        " zero and we search for an enclosing {.
-        let paren = s:MatchPairs('(', ')', 0)
-        let bracket = s:MatchPairs('\[', '\]', paren[0])
-        let curly = s:MatchPairs('{', '}', bracket[0])
+		" In case the curly brace is on a line later then the [ or - in
+		" case they are on the same line - in a higher column, we take the
+		" curly indent.
+		if curly[0] > bracket[0] || curly[1] > bracket[1]
+			if curly[0] > paren[0] || curly[1] > paren[1]
+				return curly[1]
+			endif
+		endif
 
-        " In case the curly brace is on a line later then the [ or - in
-        " case they are on the same line - in a higher column, we take the
-        " curly indent.
-        if curly[0] > bracket[0] || curly[1] > bracket[1]
-            if curly[0] > paren[0] || curly[1] > paren[1]
-                return curly[1]
-            endif
-        endif
+		" If the curly was not chosen, we take the bracket indent - if
+		" there was one.
+		if bracket[0] > paren[0] || bracket[1] > paren[1]
+			return bracket[1]
+		endif
 
-        " If the curly was not chosen, we take the bracket indent - if
-        " there was one.
-        if bracket[0] > paren[0] || bracket[1] > paren[1]
-            return bracket[1]
-        endif
+		" There are neither { nor [ nor (, ie. we are at the toplevel.
+		if paren == [0, 0]
+			return 0
+		endif
 
-        " There are neither { nor [ nor (, ie. we are at the toplevel.
-        if paren == [0, 0]
-            return 0
-        endif
+		" Now we have to reimplement lispindent. This is surprisingly easy, as
+		" soon as one has access to syntax items.
+		"
+		" - Check whether we are in a special position after a word in
+		"   g:clojure_special_indent_words. These are special cases.
+		" - Get the next keyword after the (.
+		" - If its first character is also a (, we have another sexp and align
+		"   one column to the right of the unmatched (.
+		" - In case it is in lispwords, we indent the next line to the column of
+		"   the ( + sw.
+		" - If not, we check whether it is last word in the line. In that case
+		"   we again use ( + sw for indent.
+		" - In any other case we use the column of the end of the word + 2.
+		call cursor(paren)
 
-        " Now we have to reimplement lispindent. This is surprisingly easy, as
-        " soon as one has access to syntax items.
-        "
-        " - Check whether we are in a special position after a word in
-        "   g:clojure_special_indent_words. These are special cases.
-        " - Get the next keyword after the (.
-        " - If its first character is also a (, we have another sexp and align
-        "   one column to the right of the unmatched (.
-        " - In case it is in lispwords, we indent the next line to the column of
-        "   the ( + sw.
-        " - If not, we check whether it is last word in the line. In that case
-        "   we again use ( + sw for indent.
-        " - In any other case we use the column of the end of the word + 2.
-        call cursor(paren)
+		if s:IsMethodSpecialCase(paren)
+			return paren[1] + &shiftwidth - 1
+		endif
 
-        if s:IsMethodSpecialCase(paren)
-            return paren[1] + &shiftwidth - 1
-        endif
+		" In case we are at the last character, we use the paren position.
+		if col("$") - 1 == paren[1]
+			return paren[1]
+		endif
 
-        " In case we are at the last character, we use the paren position.
-        if col("$") - 1 == paren[1]
-            return paren[1]
-        endif
-
-        " In case after the paren is a whitespace, we search for the next word.
-        normal! l
-        if s:CurrentChar() == ' '
-            normal! w
-        endif
+		" In case after the paren is a whitespace, we search for the next word.
+		call cursor(0, col('.') + 1)
+		if s:CurrentChar() == ' '
+			call search('\v\S', 'W')
+		endif
 
-        " If we moved to another line, there is no word after the (. We
-        " use the ( position for indent.
-        if line(".") > paren[0]
-            return paren[1]
-        endif
+		" If we moved to another line, there is no word after the (. We
+		" use the ( position for indent.
+		if line(".") > paren[0]
+			return paren[1]
+		endif
 
-        " We still have to check, whether the keyword starts with a (, [ or {.
-        " In that case we use the ( position for indent.
-        let w = s:CurrentWord()
-        if stridx('([{', w[0]) > -1
-            return paren[1]
-        endif
+		" We still have to check, whether the keyword starts with a (, [ or {.
+		" In that case we use the ( position for indent.
+		let w = s:CurrentWord()
+		if stridx('([{', w[0]) > -1
+			return paren[1]
+		endif
 
-        " Test words without namespace qualifiers and leading reader macro
-        " metacharacters.
-        "
-        " e.g. clojure.core/defn and #'defn should both indent like defn.
-        let ww = substitute(w, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
+		" Test words without namespace qualifiers and leading reader macro
+		" metacharacters.
+		"
+		" e.g. clojure.core/defn and #'defn should both indent like defn.
+		let ww = substitute(w, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
 
-        if &lispwords =~ '\V\<' . ww . '\>'
-            return paren[1] + &shiftwidth - 1
-        endif
+		if &lispwords =~ '\V\<' . ww . '\>'
+			return paren[1] + &shiftwidth - 1
+		endif
 
-        if g:clojure_fuzzy_indent
-            \ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww)
-            \ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww)
-            return paren[1] + &shiftwidth - 1
-        endif
+		if g:clojure_fuzzy_indent
+			\ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww)
+			\ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww)
+			return paren[1] + &shiftwidth - 1
+		endif
 
-        normal! W
-        if paren[0] < line(".")
-            return paren[1] + &shiftwidth - 1
-        endif
+		call search('\v\_s', 'cW')
+		call search('\v\S', 'W')
+		if paren[0] < line(".")
+			return paren[1] + &shiftwidth - 1
+		endif
 
-        normal! ge
-        return virtcol(".") + 1
-    endfunction
+		call search('\v\S', 'bW')
+		return virtcol(".") + 1
+	endfunction
 
-    setlocal indentexpr=GetClojureIndent()
+	setlocal indentexpr=GetClojureIndent()
 
 else
 
-    " In case we have searchpairpos not available we fall back to
-    " normal lisp indenting.
-    setlocal indentexpr=
-    setlocal lisp
-    let b:undo_indent .= '| setlocal lisp<'
+	" In case we have searchpairpos not available we fall back to
+	" normal lisp indenting.
+	setlocal indentexpr=
+	setlocal lisp
+	let b:undo_indent .= '| setlocal lisp<'
 
 endif
 
@@ -390,9 +381,8 @@ setlocal lispwords+=while
 
 " Exception handling
 setlocal lispwords+=catch
-setlocal lispwords+=try " For aesthetics when enclosing single line
 
 let &cpo = s:save_cpo
 unlet! s:save_cpo
 
-" vim:sts=4 sw=4 et:
+" vim:sts=8:sw=8:ts=8:noet
new file mode 100644
--- /dev/null
+++ b/runtime/indent/j.vim
@@ -0,0 +1,37 @@
+" Vim indent file
+" Language:	J
+" Maintainer:	David Bürgin <676c7473@gmail.com>
+" Last Change:	2013-09-21
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetJIndent()
+setlocal indentkeys-=0{,0},\:,0#
+setlocal indentkeys+=0),=case.,=catch.,=catchd.,=catcht.,=do.,=else.,=elseif.,=end.,=fcase.
+
+let b:undo_indent = "setl indk< inde<"
+
+if exists("*GetJIndent")
+  finish
+endif
+
+function GetJIndent()
+  let prevlnum = prevnonblank(v:lnum-1)
+  if prevlnum == 0
+    return 0
+  endif
+
+  let indent = indent(prevlnum)
+  if getline(prevlnum) =~# '^\s*\%(case\|catch[dt]\=\|do\|else\%(if\)\=\|fcase\|for\%(_\a\k*\)\=\|if\|select\|try\|whil\%(e\|st\)\)\.'
+    if getline(prevlnum) !~# '\<end\.'
+      let indent += &shiftwidth
+    endif
+  endif
+  if getline(v:lnum) =~# '^\s*\%(case\|catch[dt]\=\|do\|else\%(if\)\=\|end\|fcase\)\.'
+    let indent -= &shiftwidth
+  endif
+  return indent
+endfunction
--- a/runtime/syntax/apache.vim
+++ b/runtime/syntax/apache.vim
@@ -1,11 +1,9 @@
 " Vim syntax file
-" This is a GENERATED FILE. Please always refer to source file at the URI below.
 " Language: Apache configuration (httpd.conf, srm.conf, access.conf, .htaccess)
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
 " License: This file can be redistribued and/or modified under the same terms
 "		as Vim itself.
-" Last Change: 2006-12-13
-" URL: http://trific.ath.cx/Ftp/vim/syntax/apache.vim
+" Last Change: 2013-09-16
 " Notes: Last synced with apache-2.2.3, version 1.x is no longer supported
 " TODO: see particular FIXME's scattered through the file
 "		make it really linewise?
@@ -30,7 +28,10 @@ syn keyword apacheFixme FIXME TODO XXX N
 syn case ignore
 syn match apacheAnything "\s[^>]*" contained
 syn match apacheError "\w\+" contained
-syn region apacheString start=+"+ end=+"+ skip=+\\\\\|\\\"+
+syn region apacheString start=+"+ end=+"+ skip=+\\\\\|\\\"+ oneline
+
+" Following is to prevent escaped quotes from being parsed as strings.
+syn match apacheSkipQuote +\\"+
 
 " Core and mpm
 syn keyword apacheDeclaration AccessFileName AddDefaultCharset AllowOverride AuthName AuthType ContentDigest DefaultType DocumentRoot ErrorDocument ErrorLog HostNameLookups IdentityCheck Include KeepAlive KeepAliveTimeout LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens TimeOut UseCanonicalName
--- a/runtime/syntax/clojure.vim
+++ b/runtime/syntax/clojure.vim
@@ -1,24 +1,22 @@
 " Vim syntax file
-" Language:     Clojure
-" Authors:      Toralf Wittner <toralf.wittner@gmail.com>
-"               modified by Meikel Brandmeyer <mb@kotka.de>
-" URL:          http://kotka.de/projects/clojure/vimclojure.html
+" Language:	Clojure
+" Authors:	Toralf Wittner <toralf.wittner@gmail.com>
+"		modified by Meikel Brandmeyer <mb@kotka.de>
+" URL:		http://kotka.de/projects/clojure/vimclojure.html
+"
+" Contributors:	Joel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes)
 "
-" Maintainer:   Sung Pae <self@sungpae.com>
-" URL:          https://github.com/guns/vim-clojure-static
-" License:      Same as Vim
-" Last Change:  05 February 2013
+" Maintainer:	Sung Pae <self@sungpae.com>
+" URL:		https://github.com/guns/vim-clojure-static
+" License:	Same as Vim
+" Last Change:	08 September 2013
 
-if version < 600
-    syntax clear
-elseif exists("b:current_syntax")
-    finish
+if exists("b:current_syntax")
+	finish
 endif
 
-setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
-
-" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-002/vim_clojure_static.clj
-" Clojure 1.5.0-RC6
+" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-005/clj/src/vim_clojure_static/generate.clj
+" Clojure version 1.5.1
 syntax keyword clojureConstant nil
 syntax keyword clojureBoolean false true
 syntax keyword clojureSpecial . catch clojure.core/fn clojure.core/let clojure.core/loop def do finally fn if let loop monitor-enter monitor-exit new quote recur set! throw try var
@@ -28,7 +26,7 @@ syntax keyword clojureRepeat clojure.cor
 syntax keyword clojureDefine clojure.core/definline clojure.core/definterface clojure.core/defmacro clojure.core/defmethod clojure.core/defmulti clojure.core/defn clojure.core/defn- clojure.core/defonce clojure.core/defprotocol clojure.core/defrecord clojure.core/defstruct clojure.core/deftype definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype
 syntax keyword clojureMacro -> ->> .. amap and areduce as-> assert binding bound-fn clojure.core/-> clojure.core/->> clojure.core/.. clojure.core/amap clojure.core/and clojure.core/areduce clojure.core/as-> clojure.core/assert clojure.core/binding clojure.core/bound-fn clojure.core/comment clojure.core/declare clojure.core/delay clojure.core/dosync clojure.core/doto clojure.core/extend-protocol clojure.core/extend-type clojure.core/for clojure.core/future clojure.core/gen-class clojure.core/gen-interface clojure.core/import clojure.core/io! clojure.core/lazy-cat clojure.core/lazy-seq clojure.core/letfn clojure.core/locking clojure.core/memfn clojure.core/ns clojure.core/or clojure.core/proxy clojure.core/proxy-super clojure.core/pvalues clojure.core/refer-clojure clojure.core/reify clojure.core/some-> clojure.core/some->> clojure.core/sync clojure.core/time clojure.core/with-bindings clojure.core/with-in-str clojure.core/with-loading-context clojure.core/with-local-vars clojure.core/with-open clojure.core/with-out-str clojure.core/with-precision clojure.core/with-redefs comment declare delay dosync doto extend-protocol extend-type for future gen-class gen-interface import io! lazy-cat lazy-seq letfn locking memfn ns or proxy proxy-super pvalues refer-clojure reify some-> some->> sync time with-bindings with-in-str with-loading-context with-local-vars with-open with-out-str with-precision with-redefs
 syntax keyword clojureFunc * *' + +' - -' ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods / < <= = == > >= accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root ancestors apply array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn* bound? butlast byte byte-array bytes cast char char-array char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version clojure.core/* clojure.core/*' clojure.core/+ clojure.core/+' clojure.core/- clojure.core/-' clojure.core/->ArrayChunk clojure.core/->Vec clojure.core/->VecNode clojure.core/->VecSeq clojure.core/-cache-protocol-fn clojure.core/-reset-methods clojure.core// clojure.core/< clojure.core/<= clojure.core/= clojure.core/== clojure.core/> clojure.core/>= clojure.core/accessor clojure.core/aclone clojure.core/add-classpath clojure.core/add-watch clojure.core/agent clojure.core/agent-error clojure.core/agent-errors clojure.core/aget clojure.core/alength clojure.core/alias clojure.core/all-ns clojure.core/alter clojure.core/alter-meta! clojure.core/alter-var-root clojure.core/ancestors clojure.core/apply clojure.core/array-map clojure.core/aset clojure.core/aset-boolean clojure.core/aset-byte clojure.core/aset-char clojure.core/aset-double clojure.core/aset-float clojure.core/aset-int clojure.core/aset-long clojure.core/aset-short clojure.core/assoc clojure.core/assoc! clojure.core/assoc-in clojure.core/associative? clojure.core/atom clojure.core/await clojure.core/await-for clojure.core/await1 clojure.core/bases clojure.core/bean clojure.core/bigdec clojure.core/bigint clojure.core/biginteger clojure.core/bit-and clojure.core/bit-and-not clojure.core/bit-clear clojure.core/bit-flip clojure.core/bit-not clojure.core/bit-or clojure.core/bit-set clojure.core/bit-shift-left clojure.core/bit-shift-right clojure.core/bit-test clojure.core/bit-xor clojure.core/boolean clojure.core/boolean-array clojure.core/booleans clojure.core/bound-fn* clojure.core/bound? clojure.core/butlast clojure.core/byte clojure.core/byte-array clojure.core/bytes clojure.core/cast clojure.core/char clojure.core/char-array clojure.core/char? clojure.core/chars clojure.core/chunk clojure.core/chunk-append clojure.core/chunk-buffer clojure.core/chunk-cons clojure.core/chunk-first clojure.core/chunk-next clojure.core/chunk-rest clojure.core/chunked-seq? clojure.core/class clojure.core/class? clojure.core/clear-agent-errors clojure.core/clojure-version clojure.core/coll? clojure.core/commute clojure.core/comp clojure.core/comparator clojure.core/compare clojure.core/compare-and-set! clojure.core/compile clojure.core/complement clojure.core/concat clojure.core/conj clojure.core/conj! clojure.core/cons clojure.core/constantly clojure.core/construct-proxy clojure.core/contains? clojure.core/count clojure.core/counted? clojure.core/create-ns clojure.core/create-struct clojure.core/cycle clojure.core/dec clojure.core/dec' clojure.core/decimal? clojure.core/delay? clojure.core/deliver clojure.core/denominator clojure.core/deref clojure.core/derive clojure.core/descendants clojure.core/destructure clojure.core/disj clojure.core/disj! clojure.core/dissoc clojure.core/dissoc! clojure.core/distinct clojure.core/distinct? clojure.core/double clojure.core/double-array clojure.core/doubles clojure.core/drop clojure.core/drop-last clojure.core/drop-while clojure.core/empty clojure.core/empty? clojure.core/ensure clojure.core/enumeration-seq clojure.core/error-handler clojure.core/error-mode clojure.core/eval clojure.core/even? clojure.core/every-pred clojure.core/every? clojure.core/ex-data clojure.core/ex-info clojure.core/extend clojure.core/extenders clojure.core/extends? clojure.core/false? clojure.core/ffirst clojure.core/file-seq clojure.core/filter clojure.core/filterv clojure.core/find clojure.core/find-keyword clojure.core/find-ns clojure.core/find-protocol-impl clojure.core/find-protocol-method clojure.core/find-var clojure.core/first clojure.core/flatten clojure.core/float clojure.core/float-array clojure.core/float? clojure.core/floats clojure.core/flush clojure.core/fn? clojure.core/fnext clojure.core/fnil clojure.core/force clojure.core/format clojure.core/frequencies clojure.core/future-call clojure.core/future-cancel clojure.core/future-cancelled? clojure.core/future-done? clojure.core/future? clojure.core/gensym clojure.core/get clojure.core/get-in clojure.core/get-method clojure.core/get-proxy-class clojure.core/get-thread-bindings clojure.core/get-validator clojure.core/group-by clojure.core/hash clojure.core/hash-combine clojure.core/hash-map clojure.core/hash-set clojure.core/identical? clojure.core/identity clojure.core/ifn? clojure.core/in-ns clojure.core/inc clojure.core/inc' clojure.core/init-proxy clojure.core/instance? clojure.core/int clojure.core/int-array clojure.core/integer? clojure.core/interleave clojure.core/intern clojure.core/interpose clojure.core/into clojure.core/into-array clojure.core/ints clojure.core/isa? clojure.core/iterate clojure.core/iterator-seq clojure.core/juxt clojure.core/keep clojure.core/keep-indexed clojure.core/key clojure.core/keys clojure.core/keyword clojure.core/keyword? clojure.core/last clojure.core/line-seq clojure.core/list clojure.core/list* clojure.core/list? clojure.core/load clojure.core/load-file clojure.core/load-reader clojure.core/load-string clojure.core/loaded-libs clojure.core/long clojure.core/long-array clojure.core/longs clojure.core/macroexpand clojure.core/macroexpand-1 clojure.core/make-array clojure.core/make-hierarchy clojure.core/map clojure.core/map-indexed clojure.core/map? clojure.core/mapcat clojure.core/mapv clojure.core/max clojure.core/max-key clojure.core/memoize clojure.core/merge clojure.core/merge-with clojure.core/meta clojure.core/method-sig clojure.core/methods clojure.core/min clojure.core/min-key clojure.core/mod clojure.core/munge clojure.core/name clojure.core/namespace clojure.core/namespace-munge clojure.core/neg? clojure.core/newline clojure.core/next clojure.core/nfirst clojure.core/nil? clojure.core/nnext clojure.core/not clojure.core/not-any? clojure.core/not-empty clojure.core/not-every? clojure.core/not= clojure.core/ns-aliases clojure.core/ns-imports clojure.core/ns-interns clojure.core/ns-map clojure.core/ns-name clojure.core/ns-publics clojure.core/ns-refers clojure.core/ns-resolve clojure.core/ns-unalias clojure.core/ns-unmap clojure.core/nth clojure.core/nthnext clojure.core/nthrest clojure.core/num clojure.core/number? clojure.core/numerator clojure.core/object-array clojure.core/odd? clojure.core/parents clojure.core/partial clojure.core/partition clojure.core/partition-all clojure.core/partition-by clojure.core/pcalls clojure.core/peek clojure.core/persistent! clojure.core/pmap clojure.core/pop clojure.core/pop! clojure.core/pop-thread-bindings clojure.core/pos? clojure.core/pr clojure.core/pr-str clojure.core/prefer-method clojure.core/prefers clojure.core/print clojure.core/print-ctor clojure.core/print-simple clojure.core/print-str clojure.core/printf clojure.core/println clojure.core/println-str clojure.core/prn clojure.core/prn-str clojure.core/promise clojure.core/proxy-call-with-super clojure.core/proxy-mappings clojure.core/proxy-name clojure.core/push-thread-bindings clojure.core/quot clojure.core/rand clojure.core/rand-int clojure.core/rand-nth clojure.core/range clojure.core/ratio? clojure.core/rational? clojure.core/rationalize clojure.core/re-find clojure.core/re-groups clojure.core/re-matcher clojure.core/re-matches clojure.core/re-pattern clojure.core/re-seq clojure.core/read clojure.core/read-line clojure.core/read-string clojure.core/realized? clojure.core/reduce clojure.core/reduce-kv clojure.core/reduced clojure.core/reduced? clojure.core/reductions clojure.core/ref clojure.core/ref-history-count clojure.core/ref-max-history clojure.core/ref-min-history clojure.core/ref-set clojure.core/refer clojure.core/release-pending-sends clojure.core/rem clojure.core/remove clojure.core/remove-all-methods clojure.core/remove-method clojure.core/remove-ns clojure.core/remove-watch clojure.core/repeat clojure.core/repeatedly clojure.core/replace clojure.core/replicate clojure.core/require clojure.core/reset! clojure.core/reset-meta! clojure.core/resolve clojure.core/rest clojure.core/restart-agent clojure.core/resultset-seq clojure.core/reverse clojure.core/reversible? clojure.core/rseq clojure.core/rsubseq clojure.core/satisfies? clojure.core/second clojure.core/select-keys clojure.core/send clojure.core/send-off clojure.core/send-via clojure.core/seq clojure.core/seq? clojure.core/seque clojure.core/sequence clojure.core/sequential? clojure.core/set clojure.core/set-agent-send-executor! clojure.core/set-agent-send-off-executor! clojure.core/set-error-handler! clojure.core/set-error-mode! clojure.core/set-validator! clojure.core/set? clojure.core/short clojure.core/short-array clojure.core/shorts clojure.core/shuffle clojure.core/shutdown-agents clojure.core/slurp clojure.core/some clojure.core/some-fn clojure.core/sort clojure.core/sort-by clojure.core/sorted-map clojure.core/sorted-map-by clojure.core/sorted-set clojure.core/sorted-set-by clojure.core/sorted? clojure.core/special-symbol? clojure.core/spit clojure.core/split-at clojure.core/split-with clojure.core/str clojure.core/string? clojure.core/struct clojure.core/struct-map clojure.core/subs clojure.core/subseq clojure.core/subvec clojure.core/supers clojure.core/swap! clojure.core/symbol clojure.core/symbol? clojure.core/take clojure.core/take-last clojure.core/take-nth clojure.core/take-while clojure.core/test clojure.core/the-ns clojure.core/thread-bound? clojure.core/to-array clojure.core/to-array-2d clojure.core/trampoline clojure.core/transient clojure.core/tree-seq clojure.core/true? clojure.core/type clojure.core/unchecked-add clojure.core/unchecked-add-int clojure.core/unchecked-byte clojure.core/unchecked-char clojure.core/unchecked-dec clojure.core/unchecked-dec-int clojure.core/unchecked-divide-int clojure.core/unchecked-double clojure.core/unchecked-float clojure.core/unchecked-inc clojure.core/unchecked-inc-int clojure.core/unchecked-int clojure.core/unchecked-long clojure.core/unchecked-multiply clojure.core/unchecked-multiply-int clojure.core/unchecked-negate clojure.core/unchecked-negate-int clojure.core/unchecked-remainder-int clojure.core/unchecked-short clojure.core/unchecked-subtract clojure.core/unchecked-subtract-int clojure.core/underive clojure.core/update-in clojure.core/update-proxy clojure.core/use clojure.core/val clojure.core/vals clojure.core/var-get clojure.core/var-set clojure.core/var? clojure.core/vary-meta clojure.core/vec clojure.core/vector clojure.core/vector-of clojure.core/vector? clojure.core/with-bindings* clojure.core/with-meta clojure.core/with-redefs-fn clojure.core/xml-seq clojure.core/zero? clojure.core/zipmap coll? commute comp comparator compare compare-and-set! compile complement concat conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn? fnext fnil force format frequencies future-call future-cancel future-cancelled? future-done? future? gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity ifn? in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last line-seq list list* list? load load-file load-reader load-string loaded-libs long long-array longs macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers print print-ctor print-simple print-str printf println println-str prn prn-str promise proxy-call-with-super proxy-mappings proxy-name push-thread-bindings quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reduced reduced? reductions ref ref-history-count ref-max-history ref-min-history ref-set refer release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off send-via seq seq? seque sequence sequential? set set-agent-send-executor! set-agent-send-off-executor! set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? take take-last take-nth take-while test the-ns thread-bound? to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? with-bindings* with-meta with-redefs-fn xml-seq zero? zipmap
-syntax keyword clojureVariable *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *default-data-reader-fn* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *read-whitelist* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* EMPTY-NODE char-escape-string char-name-string clojure.core/*1 clojure.core/*2 clojure.core/*3 clojure.core/*agent* clojure.core/*allow-unresolved-vars* clojure.core/*assert* clojure.core/*clojure-version* clojure.core/*command-line-args* clojure.core/*compile-files* clojure.core/*compile-path* clojure.core/*compiler-options* clojure.core/*data-readers* clojure.core/*default-data-reader-fn* clojure.core/*e clojure.core/*err* clojure.core/*file* clojure.core/*flush-on-newline* clojure.core/*fn-loader* clojure.core/*in* clojure.core/*math-context* clojure.core/*ns* clojure.core/*out* clojure.core/*print-dup* clojure.core/*print-length* clojure.core/*print-level* clojure.core/*print-meta* clojure.core/*print-readably* clojure.core/*read-eval* clojure.core/*read-whitelist* clojure.core/*source-path* clojure.core/*unchecked-math* clojure.core/*use-context-classloader* clojure.core/*verbose-defrecords* clojure.core/*warn-on-reflection* clojure.core/EMPTY-NODE clojure.core/char-escape-string clojure.core/char-name-string clojure.core/default-data-readers clojure.core/primitives-classnames clojure.core/print-dup clojure.core/print-method clojure.core/unquote clojure.core/unquote-splicing default-data-readers primitives-classnames print-dup print-method unquote unquote-splicing
+syntax keyword clojureVariable *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *default-data-reader-fn* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* EMPTY-NODE char-escape-string char-name-string clojure.core/*1 clojure.core/*2 clojure.core/*3 clojure.core/*agent* clojure.core/*allow-unresolved-vars* clojure.core/*assert* clojure.core/*clojure-version* clojure.core/*command-line-args* clojure.core/*compile-files* clojure.core/*compile-path* clojure.core/*compiler-options* clojure.core/*data-readers* clojure.core/*default-data-reader-fn* clojure.core/*e clojure.core/*err* clojure.core/*file* clojure.core/*flush-on-newline* clojure.core/*fn-loader* clojure.core/*in* clojure.core/*math-context* clojure.core/*ns* clojure.core/*out* clojure.core/*print-dup* clojure.core/*print-length* clojure.core/*print-level* clojure.core/*print-meta* clojure.core/*print-readably* clojure.core/*read-eval* clojure.core/*source-path* clojure.core/*unchecked-math* clojure.core/*use-context-classloader* clojure.core/*verbose-defrecords* clojure.core/*warn-on-reflection* clojure.core/EMPTY-NODE clojure.core/char-escape-string clojure.core/char-name-string clojure.core/default-data-readers clojure.core/primitives-classnames clojure.core/print-dup clojure.core/print-method clojure.core/unquote clojure.core/unquote-splicing default-data-readers primitives-classnames print-dup print-method unquote unquote-splicing
 
 " Keywords are symbols:
 "   static Pattern symbolPat = Pattern.compile("[:]?([\\D&&[^/]].*/)?([\\D&&[^/]][^/]*)");
@@ -36,13 +34,15 @@ syntax keyword clojureVariable *1 *2 *3 
 "   * Must not end in a : or /
 "   * Must not have two adjacent colons except at the beginning
 "   * Must not contain any reader metacharacters except for ' and #
-syntax match clojureKeyword "\v:{1,2}%([^ \n\r\t()\[\]{}";@^`~\\%/]+/)*[^ \n\r\t()\[\]{}";@^`~\\%/]+:@<!"
+syntax match clojureKeyword "\v<:{1,2}%([^ \n\r\t()\[\]{}";@^`~\\%/]+/)*[^ \n\r\t()\[\]{}";@^`~\\%/]+:@<!>"
 
-syntax region clojureString start=/L\="/ skip=/\\\\\|\\"/ end=/"/
+syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained
+
+syntax region clojureString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape
 
 syntax match clojureCharacter "\\."
-syntax match clojureCharacter "\\o[0-7]\{3\}"
-syntax match clojureCharacter "\\u[0-9]\{4\}"
+syntax match clojureCharacter "\\o\%([0-3]\o\{2\}\|\o\{1,2\}\)"
+syntax match clojureCharacter "\\u\x\{4\}"
 syntax match clojureCharacter "\\space"
 syntax match clojureCharacter "\\tab"
 syntax match clojureCharacter "\\newline"
@@ -50,16 +50,17 @@ syntax match clojureCharacter "\\return"
 syntax match clojureCharacter "\\backspace"
 syntax match clojureCharacter "\\formfeed"
 
-let s:radixChars = "0123456789abcdefghijklmnopqrstuvwxyz"
+syntax match clojureSymbol "\v%([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x00-\x7F]))*[#:]@<!"
+
+let s:radix_chars = "0123456789abcdefghijklmnopqrstuvwxyz"
 for s:radix in range(2, 36)
-    execute 'syntax match clojureNumber "\c\<-\?' . s:radix . 'r[' . strpart(s:radixChars, 0, s:radix) . ']\+\>"'
+	execute 'syntax match clojureNumber "\v\c<[-+]?' . s:radix . 'r[' . strpart(s:radix_chars, 0, s:radix) . ']+>"'
 endfor
-unlet! s:radixChars s:radix
+unlet! s:radix_chars s:radix
 
-syntax match clojureNumber "\<-\=[0-9]\+\(\.[0-9]*\)\=\(M\|\([eE][-+]\?[0-9]\+\)\)\?\>"
-syntax match clojureNumber "\<-\=[0-9]\+N\?\>"
-syntax match clojureNumber "\<-\=0x[0-9a-fA-F]\+\>"
-syntax match clojureNumber "\<-\=[0-9]\+/[0-9]\+\>"
+syntax match clojureNumber "\v<[-+]?%(0\o*|0x\x+|[1-9]\d*)N?>"
+syntax match clojureNumber "\v<[-+]?%(0|[1-9]\d*|%(0|[1-9]\d*)\.\d*)%(M|[eE][-+]?\d+)?>"
+syntax match clojureNumber "\v<[-+]?%(0|[1-9]\d*)/%(0|[1-9]\d*)>"
 
 syntax match clojureVarArg "&"
 
@@ -69,66 +70,110 @@ syntax match clojureUnquote "\~"
 syntax match clojureUnquote "\~@"
 syntax match clojureMeta "\^"
 syntax match clojureDeref "@"
-syntax match clojureAnonArg "%\(\d\|&\)\?"
-syntax match clojureDispatch "\v#[\^\'\=\<]?"
+syntax match clojureDispatch "\v#[\^'=<_]?"
+
+" Clojure permits no more than 20 params.
+syntax match clojureAnonArg "%\(20\|1\d\|[1-9]\|&\)\?"
+
+syntax match  clojureRegexpEscape "\v\\%([\\tnrfae()\[\]{}^$*?+]|c\u|0[0-3]?\o{1,2}|x%(\x{2}|\{\x{1,6}\})|u\x{4})" contained display
+syntax region clojureRegexpQuoted start=/\\Q/ms=e+1 skip=/\\\\\|\\"/ end=/\\E/me=s-1 end=/"/me=s-1 contained
+syntax region clojureRegexpQuote  start=/\\Q/       skip=/\\\\\|\\"/ end=/\\E/       end=/"/me=s-1 contains=clojureRegexpQuoted keepend contained
+
+" Character property classes
+" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-005/clj/src/vim_clojure_static/generate.clj
+" Java version 1.7.0_40
+syntax match clojureRegexpPosixCharClass "\v\\[pP]\{%(Blank|P%(unct|rint)|Digit|Graph|A%(l%(pha|num)|SCII)|XDigit|Space|Upper|Lower|Cntrl)\}" contained display
+syntax match clojureRegexpJavaCharClass "\v\\[pP]\{java%(U%(pperCase|nicodeIdentifier%(Start|Part))|Mirrored|Alphabetic|SpaceChar|D%(efined|igit)|Whitespace|L%(etter%(OrDigit)?|owerCase)|TitleCase|I%(de%(ographic|ntifierIgnorable)|SOControl)|JavaIdentifier%(Start|Part))\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\cIs%(blank|hex%(digit|_digit)|uppercase|digit|control|a%(ssigned|l%(phabetic|num))|graph|ideographic|p%(rint|unctuation)|titlecase|w%(hite%(_space|space)|ord)|l%(owercase|etter)|noncharacter%(codepoint|_code_point))\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP][MLNPSZC]" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(C[fonsc]?|L[DmloutC]?|S[kmoc]?|P[edfiosc]?|M[enc]?|Z[lps]?|N[dlo]?)\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{%(Is|gc\=|general_category\=)?%(C[fonsc]?|L[DmloutC]?|S[kmoc]?|P[edfiosc]?|M[enc]?|Z[lps]?|N[dlo]?)\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(Is|sc\=|script\=)%(h%(ira%(gana)?|an%([io]|g%(ul)?|unoo)?|ebr%(ew)?)|yi%(ii)?|java%(nese)?|c%(prt|y%(r%(illic|l)|priot)|h%(er%(okee)?|am)|uneiform|o%(mmon|pt%(ic)?)|a%(n%(adian_aboriginal|s)|ri%(an)?))|i%(mperial_aramaic|tal|n%(herited|scriptional_pa%(rthian|hlavi)))|a%(r%(ab%(ic)?|m%([in]|enian))|v%(st|estan))|g%(oth%(ic)?|u%(j%(arati|r)|r%(mukhi|u))|lag%(olitic)?|eor%(gian)?|re%(k|ek))|b%(u%(gi%(nese)?|h%(d|id))|ra%(i%(lle)?|h%(mi)?)|a%(mum?|t%(k|ak)|li%(nese)?)|opo%(mofo)?|eng%(ali)?)|s%(ha%(w|vian)|und%(anese)?|y%(r%(iac|c)|lo%(ti_nagri)?)|inh%(ala)?|a%(ur%(ashtra)?|rb|m%(r|aritan)))|d%(srt|e%(va%(nagari)?|seret))|l%(a%(na|oo?|t%(n|in))|epc%(ha)?|i%(n%(ear_b|b)|mbu?|su)|y%([dc]i%(an)?))|p%(h%(oenician|nx|li|ag%(s_pa)?)|rti)|e%(gyp%(tian_hieroglyphs)?|thi%(opic)?)|r%(jng|un%(ic|r)|ejang)|u%(nknown|gar%(itic)?)|vaii?|n%(koo?|ew_tai_lue)|m%(y%(mr|anmar)|tei|a%(nd%(aic)?|layalam)|ong%(olian)?|eetei_mayek|lym)|z%(inh|yyy|zzz)|t%(glg|fng|i%(finagh|b%(t|etan))|ha%(i|a%(na)?)|elu%(gu)?|a%(i_%(viet|le|tham)|l[eu]|g%(alog|b%(anwa)?)|vt|m%(l|il)))|x%(sux|peo)|o%(r%(iya|kh|ya)|sma%(nya)?|g%(am|ham)|l%(ck|d_%(south_arabian|turkic|italic|persian)|_chiki))|k%(a%(takana|yah_li|n%(nada|a)|li|ithi)|h%(m%(r|er)|ar%(oshthi)?)|thi|nda))\}" contained display
+syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\c%(In|blk\=|block\=)%(s%(a%(maritan|urashtra)|mall%(_form_variants| form variants|formvariants)|inhala|y%(loti%(nagri|[_ ]nagri)|riac)|havian|p%(ecials|acing%(modifierletters|_modifier_letters| modifier letters))|u%(p%(erscripts%(andsubscripts|_and_subscripts| and subscripts)|plementa%(ry%( private use area-[ab]|_private_use_area_[ab]|privateusearea-[ab])|l%( %(arrows-[ab]|punctuation|mathematical operators)|arrows-[ab]|_%(punctuation|mathematical_operators|arrows_[ab])|punctuation|mathematicaloperators)))|ndanese|rrogates_area))|l%(a%(o|tin%(_%(extended_%(a%(dditional)?|[dcb])|1_supplement)| extended%(-[dacb]| additional)|-1%( supplement|supplement)|extended%(additional|-[dacb])))|e%(pcha|tterlike%(symbols|[_ ]symbols))|y[cd]ian|i%(su|mbu|near%(b%(ideograms|syllabary)|_b_%(ideograms|syllabary)| b %(ideograms|syllabary)))|ow%([_ ]surrogates|surrogates))|b%(a%(sic%(latin|[_ ]latin)|tak|linese|mum%([_ ]supplement|supplement)?)|yzantine%(_musical_symbols| musical symbols|musicalsymbols)|engali|u%(ginese|hid)|lock%(elements|[_ ]elements)|ra%(hmi|ille%([ _]patterns|patterns))|o%(x%(drawing|[_ ]drawing)|pomofo%([ _]extended|extended)?))|t%(a%(g%(s|alog|banwa)|mil|i%( %(viet|xuan jing symbols|le|tham)|viet|le|_%(xuan_jing_symbols|viet|le|tham)|tham|xuanjingsymbols))|ha%(i|ana)|elugu|i%(finagh|betan)|ransport%(_and_map_symbols| and map symbols|andmapsymbols))|n%(ew%(_tai_lue| tai lue|tailue)|umber%([ _]forms|forms)|ko)|m%(iscellaneous%(_%(mathematical_symbols_[ab]|symbols%(_and_%(arrows|pictographs))?|technical)|mathematicalsymbols-[ab]|technical| %(symbols%( and %(arrows|pictographs))?|mathematical symbols-[ab]|technical)|symbols%(and%(arrows|pictographs))?)|eetei%(mayek|[_ ]mayek)|a%(ndaic|thematical%(alphanumericsymbols|operators|_%(alphanumeric_symbols|operators)| %(operators|alphanumeric symbols))|hjong%(tiles|[_ ]tiles)|layalam)|yanmar%(_extended_a|extended-a| extended-a)?|o%(difier%( tone letters|toneletters|_tone_letters)|ngolian)|usical%(symbols|[_ ]symbols))|p%(h%(a%(gs[-_]pa|istos%(disc|[_ ]disc))|o%(netic%(_extensions%(_supplement)?| extensions%( supplement)?|extensions%(supplement)?)|enician))|rivate%(usearea|_use_area| use area)|laying%(cards|[_ ]cards))|javanese|u%(garitic|nified%(_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?|canadianaboriginalsyllabics%(extended)?))|o%(riya|gham|l%([ _]chiki|d%(turkic|_%(south_arabian|turkic|italic|persian)|italic|persian| %(south arabian|turkic|italic|persian)|southarabian)|chiki)|smanya|ptical%(_character_recognition| character recognition|characterrecognition))|v%(e%(dic%(extensions|[_ ]extensions)|rtical%([ _]forms|forms))|a%(i|riation%(_selectors%(_supplement)?| selectors%( supplement)?|selectors%(supplement)?)))|a%(vestan|l%(phabetic%(_presentation_forms| presentation forms|presentationforms)|chemical%(symbols|[_ ]symbols))|ncient%( %(symbols|greek %(musical notation|numbers))|symbols|greek%(musicalnotation|numbers)|_%(symbols|greek_%(musical_notation|numbers)))|egean%([ _]numbers|numbers)|r%(menian|rows|abic%( %(presentation forms-[ab]|supplement)|_%(presentation_forms_[ab]|supplement)|presentationforms-[ab]|supplement)?))|i%(nscriptional%(pa%(rthian|hlavi)|%([_ ]pa%(rthian|hlavi)))|deographic%( description characters|descriptioncharacters|_description_characters)|pa%(extensions|[_ ]extensions)|mperial%(aramaic|[_ ]aramaic))|yi%(%([_ ]%(radicals|syllables))|radicals|syllables|jing%(hexagramsymbols|_hexagram_symbols| hexagram symbols))|k%(a%(yah%(li|[_ ]li)|n%(nada|bun|a%([_ ]supplement|supplement)|gxi%(radicals|[_ ]radicals))|ithi|takana%(phoneticextensions|_phonetic_extensions| phonetic extensions)?)|h%(aroshthi|mer%(symbols|[_ ]symbols)?))|d%(e%(vanagari%([ _]extended|extended)?|seret)|omino%(tiles|[_ ]tiles)|ingbats)|g%(lagolitic|othic|reek%(andcoptic| %(and coptic|extended)|extended|_extended)?|u%(rmukhi|jarati)|e%(o%(metric%([_ ]shapes|shapes)|rgian%([_ ]supplement|supplement)?)|neral%(punctuation|[_ ]punctuation)))|e%(nclosed%( %(ideographic supplement|cjk letters and months|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|moticons|thiopic%(extended%(-a)?| %(extended%(-a)?|supplement)|_%(extended%(_a)?|supplement)|supplement)?|gyptian%(hieroglyphs|[_ ]hieroglyphs))|r%(ejang|u%(nic|mi%(numeralsymbols|_numeral_symbols| numeral symbols)))|c%(jk%(_%(compatibility%(_%(ideographs%(_supplement)?|forms))?|radicals_supplement|unified_ideographs%(_extension_[dacb])?|s%(trokes|ymbols_and_punctuation))|compatibility%(ideographs%(supplement)?|forms)?|unifiedideographs%(extension[dacb])?|radicalssupplement|s%(ymbolsandpunctuation|trokes)| %(unified ideographs%( extension [dacb])?|s%(trokes|ymbols and punctuation)|radicals supplement|compatibility%( %(forms|ideographs%( supplement)?))?))|h%(am|erokee)|u%(neiform%(_numbers_and_punctuation| numbers and punctuation|numbersandpunctuation)?|rrency%(symbols|[_ ]symbols))|y%(rillic%(_%(extended_[ab]|supplementary)| %(extended-[ab]|supplement%(ary)?)|extended-[ab]|supplement%(ary)?)?|priot%([_ ]syllabary|syllabary))|o%(ntrol%(pictures|[_ ]pictures)|unting%(rodnumerals|_rod_numerals| rod numerals)|m%(bining%(halfmarks|diacriticalmarks%(forsymbols|supplement)?| %(marks for symbols|half marks|diacritical marks%( %(for symbols|supplement))?)|marksforsymbols|_%(marks_for_symbols|half_marks|diacritical_marks%(_supplement)?))|mon%( indic number forms|indicnumberforms|_indic_number_forms))|ptic)|arian)|h%(i%(ragana|gh%(_%(private_use_surrogates|surrogates)| %(private use surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew|a%(n%(unoo|gul%(jamo%(extended-[ab])?| %(jamo%( extended-[ab])?|syllables|compatibility jamo)|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)|syllables|compatibilityjamo))|lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms))))\}" contained display
 
-syntax region clojureRegexp start=/L\=\#"/ skip=/\\\\\|\\"/ end=/"/
+syntax match   clojureRegexpPredefinedCharClass "\v%(\\[dDsSwW]|\.)" contained display
+syntax cluster clojureRegexpCharPropertyClasses contains=clojureRegexpPosixCharClass,clojureRegexpJavaCharClass,clojureRegexpUnicodeCharClass
+syntax cluster clojureRegexpCharClasses         contains=clojureRegexpPredefinedCharClass,clojureRegexpCharClass,@clojureRegexpCharPropertyClasses
+syntax region  clojureRegexpCharClass           start="\[" skip=/\\\\\|\\]/ end="]" contained contains=clojureRegexpPredefinedCharClass,@clojureRegexpCharPropertyClasses
+syntax match   clojureRegexpBoundary            "\\[bBAGZz]"                     contained display
+syntax match   clojureRegexpBoundary            "[$^]"                           contained display
+syntax match   clojureRegexpQuantifier          "[?*+][?+]\="                    contained display
+syntax match   clojureRegexpQuantifier          "\v\{\d+%(,|,\d+)?}\??"          contained display
+syntax match   clojureRegexpOr                  "|"                              contained display
+syntax match   clojureRegexpBackRef             "\v\\%([1-9]\d*|k\<[a-zA-z]+\>)" contained display
 
-syntax match clojureComment ";.*$" contains=clojureTodo,@Spell
+" Mode modifiers, mode-modified spans, lookaround, regular and atomic
+" grouping, and named-capturing.
+syntax match clojureRegexpMod "\v\(@<=\?:"                        contained display
+syntax match clojureRegexpMod "\v\(@<=\?[xdsmiuU]*-?[xdsmiuU]+:?" contained display
+syntax match clojureRegexpMod "\v\(@<=\?%(\<?[=!]|\>)"            contained display
+syntax match clojureRegexpMod "\v\(@<=\?\<[a-zA-Z]+\>"            contained display
+
+syntax region clojureRegexpGroup start="(" skip=/\\\\\|\\)/ end=")" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses
+syntax region clojureRegexp start=/\#"/ skip=/\\\\\|\\"/ end=/"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend
+
+syntax keyword clojureCommentTodo contained FIXME XXX TODO FIXME: XXX: TODO:
+
+syntax match clojureComment ";.*$" contains=clojureCommentTodo,@Spell
 syntax match clojureComment "#!.*$"
-syntax match clojureComment "#_"
 
-syntax keyword clojureTodo contained FIXME XXX TODO FIXME: XXX: TODO:
-
-syntax region clojureSexp   matchgroup=clojureParen start="("  matchgroup=clojureParen end=")"  contains=TOP,@Spell
-syntax region clojureVector matchgroup=clojureParen start="\[" matchgroup=clojureParen end="\]" contains=TOP,@Spell
-syntax region clojureMap    matchgroup=clojureParen start="{"  matchgroup=clojureParen end="}"  contains=TOP,@Spell
+syntax region clojureSexp   matchgroup=clojureParen start="("  matchgroup=clojureParen end=")" contains=TOP,@Spell
+syntax region clojureVector matchgroup=clojureParen start="\[" matchgroup=clojureParen end="]" contains=TOP,@Spell
+syntax region clojureMap    matchgroup=clojureParen start="{"  matchgroup=clojureParen end="}" contains=TOP,@Spell
 
 " Highlight superfluous closing parens, brackets and braces.
 syntax match clojureError "]\|}\|)"
 
 syntax sync fromstart
 
-if version >= 600
-    command -nargs=+ HiLink highlight default link <args>
-else
-    command -nargs=+ HiLink highlight link <args>
-endif
+highlight default link clojureConstant		Constant
+highlight default link clojureBoolean		Boolean
+highlight default link clojureCharacter		Character
+highlight default link clojureKeyword		Keyword
+highlight default link clojureNumber		Number
+highlight default link clojureString		String
+highlight default link clojureStringEscape	Character
 
-HiLink clojureConstant  Constant
-HiLink clojureBoolean   Boolean
-HiLink clojureCharacter Character
-HiLink clojureKeyword   Keyword
-HiLink clojureNumber    Number
-HiLink clojureString    String
-HiLink clojureRegexp    Constant
+highlight default link clojureRegexp			Constant
+highlight default link clojureRegexpEscape		Character
+highlight default link clojureRegexpCharClass		SpecialChar
+highlight default link clojureRegexpPosixCharClass	clojureRegexpCharClass
+highlight default link clojureRegexpJavaCharClass	clojureRegexpCharClass
+highlight default link clojureRegexpUnicodeCharClass	clojureRegexpCharClass
+highlight default link clojureRegexpPredefinedCharClass	clojureRegexpCharClass
+highlight default link clojureRegexpBoundary		SpecialChar
+highlight default link clojureRegexpQuantifier		SpecialChar
+highlight default link clojureRegexpMod			SpecialChar
+highlight default link clojureRegexpOr			SpecialChar
+highlight default link clojureRegexpBackRef		SpecialChar
+highlight default link clojureRegexpGroup		clojureRegexp
+highlight default link clojureRegexpQuoted		clojureString
+highlight default link clojureRegexpQuote		clojureRegexpBoundary
 
-HiLink clojureVariable  Identifier
-HiLink clojureCond      Conditional
-HiLink clojureDefine    Define
-HiLink clojureException Exception
-HiLink clojureFunc      Function
-HiLink clojureMacro     Macro
-HiLink clojureRepeat    Repeat
+highlight default link clojureVariable	Identifier
+highlight default link clojureCond	Conditional
+highlight default link clojureDefine	Define
+highlight default link clojureException	Exception
+highlight default link clojureFunc	Function
+highlight default link clojureMacro	Macro
+highlight default link clojureRepeat	Repeat
 
-HiLink clojureSpecial   Special
-HiLink clojureVarArg    Special
-HiLink clojureQuote     SpecialChar
-HiLink clojureUnquote   SpecialChar
-HiLink clojureMeta      SpecialChar
-HiLink clojureDeref     SpecialChar
-HiLink clojureAnonArg   SpecialChar
-HiLink clojureDispatch  SpecialChar
+highlight default link clojureSpecial	Special
+highlight default link clojureVarArg	Special
+highlight default link clojureQuote	SpecialChar
+highlight default link clojureUnquote	SpecialChar
+highlight default link clojureMeta	SpecialChar
+highlight default link clojureDeref	SpecialChar
+highlight default link clojureAnonArg	SpecialChar
+highlight default link clojureDispatch	SpecialChar
 
-HiLink clojureComment   Comment
-HiLink clojureTodo      Todo
+highlight default link clojureComment		Comment
+highlight default link clojureCommentTodo	Todo
 
-HiLink clojureError     Error
+highlight default link clojureError	Error
 
-HiLink clojureParen     Delimiter
-
-delcommand HiLink
+highlight default link clojureParen	Delimiter
 
 let b:current_syntax = "clojure"
 
-" vim:sts=4 sw=4 et:
+" vim:sts=8:sw=8:ts=8:noet:smc=0
--- a/runtime/syntax/css.vim
+++ b/runtime/syntax/css.vim
@@ -6,7 +6,7 @@
 "               Nikolai Weibull (Add CSS2 support)
 " Maintainer:   Jules Wang      <w.jq0722@gmail.com>
 " URL:          https://github.com/JulesWang/css.vim
-" Last Change:  2013 Jul 23
+" Last Change:  2013 Aug 28
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -21,6 +21,9 @@ elseif exists("b:current_syntax") && b:c
   finish
 endif
 
+" Required for cssHacks
+setlocal iskeyword-=_
+
 let s:cpo_save = &cpo
 set cpo&vim
 
@@ -37,12 +40,12 @@ syn keyword cssTagName link map menu met
 syn keyword cssTagName option p param pre q s samp script select small
 syn keyword cssTagName span strike strong style sub sup table tbody td
 syn keyword cssTagName textarea tfoot th thead title tr tt ul u var
-syn keyword cssTagName object
+syn keyword cssTagName object svg
 
-" HTML5 new tags 5*6=30
-syn keyword cssTagName article aside audio bdi canvas command
-syn keyword cssTagName datalist details embed figcaption figure footer
-syn keyword cssTagName header hgroup keygen mark meter nav
+" 34 HTML5 tags
+syn keyword cssTagName article aside audio bdi canvas command data
+syn keyword cssTagName datalist details dialog embed figcaption figure footer
+syn keyword cssTagName header hgroup keygen main mark menuitem meter nav
 syn keyword cssTagName output progress rt rp ruby section
 syn keyword cssTagName source summary time track video wbr
 
@@ -50,14 +53,12 @@ syn keyword cssTagName source summary ti
 syn keyword cssDeprecated acronym applet basefont big center dir
 syn keyword cssDeprecated font frame frameset noframes strike tt
 
-"syn match cssTagName "\<table\>"
 syn match cssTagName "\*"
 
 " selectors
-syn match cssSelectorOp "[,>+]"
+syn match cssSelectorOp "[,>+~]"
 syn match cssSelectorOp2 "[~|^$*]\?=" contained
-" FIXME: add HTML5 attribute
-syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" transparent contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
+syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
 
 " .class and #id
 syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+"
@@ -68,26 +69,57 @@ catch /^.*/
 syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
 endtry
 
-syn match cssTagName "@page\>" nextgroup=cssDefinition
-" FIXME: use cssVendor here
-syn match cssTagName "@\(-\(webkit\|moz\|o\|ms\)-\)\=keyframes\>" nextgroup=cssDefinition
+" digits
+syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators
+syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators
+syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\)" contains=cssUnitDecorators
+syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)" contains=cssUnitDecorators
+syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)" contains=cssUnitDecorators
+syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)" contains=cssUnitDecorators
+
+
+" @media
+syn match cssMedia "@media\>"  nextgroup=cssMediaType,cssMediaFeature,cssMediaBlock,cssMediaComma,cssMediaKeyword2 skipwhite skipnl
+syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv all contained skipwhite skipnl nextgroup=cssMediaFeature,cssMediaBlock
+syn match cssMediaFeature /\(and\)\=\s*(.\{-})/ contained skipwhite skipnl contains=cssMediaProp,cssValueLength,cssMediaKeyword,cssValueInteger,cssMediaAttr,cssVendor nextgroup=cssMediaFeature,cssMediaBlock,cssMediaComma
+syn keyword cssMediaKeyword and contained
+syn keyword cssMediaKeyword2 only not contained nextgroup=cssMediaType skipwhite skipnl
+
+syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssTagName,cssClassName,cssIdentifier,cssPseudoClass,cssSelectorOp,cssSelectorOp2,cssAttributeSelector fold
+syn match cssMediaComma "," nextgroup=cssMediaType,cssMediaKeyword2 skipwhite skipnl contained
 
-syn match cssMedia "@media\>" nextgroup=cssMediaType skipwhite skipnl
-syn keyword cssMediaType contained screen print aural braile embosed handheld projection ty tv all nextgroup=cssMediaComma,cssMediaBlock skipwhite skipnl
-"syn match cssMediaComma "," nextgroup=cssMediaType skipwhite skipnl
-syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=cssTagName,cssError,cssComment,cssDefinition,cssURL,cssUnicodeEscape,cssIdentifier
+" Reference: http://www.w3.org/TR/css3-mediaqueries/
+syn keyword cssMediaProp contained width height orientation monochrome scan grid
+syn match cssMediaProp contained /\(\(device\)-\)\=aspect-ratio/
+syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-pixel-ratio/
+syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-\(height\|width\)/
+syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(height\|width\|resolution\|color\(-index\)\=\)/
+syn keyword cssMediaAttr contained portrait landscape progressive interlace
 
-syn match cssValueInteger contained "[-+]\=\d\+"
-syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\="
-syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\)"
-syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)"
-syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)"
-syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)"
+" @page
+syn match cssPage "@page\>"  nextgroup=cssPagePseudo,cssDefinition  skipwhite skipnl
+syn match cssPagePseudo /:\(left\|right\|first\|\)/ nextgroup=cssDefinition contained skipwhite skipnl
+syn match cssPageHeaderProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained
+syn keyword cssPageProp content size contained
 
+" @keyframe
+syn match cssKeyFrame "@\(-.*-\)\=keyframes\>\(\s*\<\S*\>\)\="  nextgroup=cssKeyFrameBlock contains=cssVendor skipwhite skipnl
+syn region cssKeyFrameBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssKeyFrameSelector,cssDefinition
+syn match cssKeyFrameSelector /\(\d*%\|from\|to\)\=/  contained skipwhite skipnl
+
+" @import
+syn region cssInclude start=/@import\>/ end=/\ze;/ contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType,cssStringQ,cssStringQQ
+syn region cssInclude start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment
+syn region cssInclude start=/@namespace\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment
+
+" @font-face
+" http://www.w3.org/TR/css3-fonts/#at-font-face-rule
 syn match cssFontDescriptor "@font-face\>" nextgroup=cssFontDescriptorBlock skipwhite skipnl
 syn region cssFontDescriptorBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssComment,cssError,cssUnicodeEscape,cssFontProp,cssFontAttr,cssCommonAttr,cssStringQ,cssStringQQ,cssFontDescriptorProp,cssValue.*,cssFontDescriptorFunction,cssUnicodeRange,cssFontDescriptorAttr
-syn match cssFontDescriptorProp contained "\<\(unicode-range\|unit-per-em\|panose-1\|cap-height\|x-height\|definition-src\)\>"
-syn keyword cssFontDescriptorProp contained src stemv stemh slope ascent descent widths bbox baseline centerline mathline topline
+"syn match cssFontDescriptorProp contained "\<\(unicode-range\|unit-per-em\|panose-1\|cap-height\|x-height\|definition-src\)\>"
+"syn keyword cssFontDescriptorProp contained src stemv stemh slope ascent descent widths bbox baseline centerline mathline topline
+syn keyword cssFontDescriptorProp contained src
+syn match cssFontDescriptorProp contained "\<unicode-range\>"
 syn keyword cssFontDescriptorAttr contained all
 syn region cssFontDescriptorFunction contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline keepend
 syn match cssUnicodeRange contained "U+[0-9A-Fa-f?]\+"
@@ -124,7 +156,7 @@ syn keyword cssColor contained slategray
 syn keyword cssColor contained thistle tomato turquoise violet wheat
 syn keyword cssColor contained whitesmoke yellowgreen
 
-" FIXME: These are actually case-insentivie too, but (a) specs recommend using
+" FIXME: These are actually case-insensitive too, but (a) specs recommend using
 " mixed-case (b) it's hard to highlight the word `Background' correctly in
 " all situations
 syn case match
@@ -135,48 +167,73 @@ syn match cssImportant contained "!\s*im
 
 syn match cssColor contained "\<transparent\>"
 syn match cssColor contained "\<white\>"
-syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>"
-syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>"
+syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>" contains=cssUnitDecorators
+syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>" contains=cssUnitDecorators
 
-syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline keepend
-syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\)\s*(" end=")" oneline keepend
-syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\)\s*(" end=")" oneline keepend
-syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear\|radial\)-gradient\s*(" end=")" oneline keepend
-syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y|\Z\)\=\|translate\(3d\|X\|Y|\Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y|\Z\)\=\|perspective\)\s*(" end=")" oneline keepend
+syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" oneline extend
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline  contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline  contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline  contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma
+syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y\|Z\)\=\|translate\(3d\|X\|Y\|Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y\|Z\)\=\|perspective\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
+syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at
+syn match cssFunctionComma contained ","
+
+" Common Prop and Attr
+syn keyword cssCommonAttr contained auto none inherit all default normal
+syn keyword cssCommonAttr contained top bottom center stretch hidden visible
+"------------------------------------------------
+" CSS Animations
+" http://www.w3.org/TR/css3-animations/
+syn match cssAnimationProp contained "\<animation\(-\(delay\|direction\|duration\|fill-mode\|name\|play-state\|timing-function\)\)\=\>"
 
-" Prop and Attr
-" Reference: http://www.w3schools.com/cssref/default.asp
-syn keyword cssCommonAttr contained auto none inherit all
-syn keyword cssCommonAttr contained top bottom
-syn keyword cssCommonAttr contained medium normal
+" animation-direction attributes
+syn keyword cssAnimationAttr contained alternate reverse
+syn match cssAnimationAttr contained "\<alternate-reverse\>"
 
-
-syn match cssAnimationProp contained "\<animation\(-\(name\|duration\|timing-function\|delay\|iteration-cout\|play-state\)\)\=\>"
+" animation-fill-mode attributes
+syn keyword cssAnimationAttr contained forwards backwards both
 
+" animation-play-state attributes
+syn keyword cssAnimationAttr contained running paused
+"------------------------------------------------
+"  CSS Backgrounds and Borders Module Level 3
+"  http://www.w3.org/TR/css3-background/
+syn match cssBackgroundProp contained "\<background\(-\(attachment\|clip\|color\|image\|origin\|position\|repeat\|size\)\)\=\>"
+" background-attachment attributes
+syn keyword cssBackgroundAttr contained scroll fixed local
 
-syn keyword cssAnimationAttr contained infinite alternate paused running
-" bugfix: escape linear-gradient
-syn match cssAnimationAttr contained "\<linear\(-gradient\)\@!\>"
-syn match cssAnimationAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
+" background-position attributes
+syn keyword cssBackgroundAttr contained left center right top bottom
 
-syn match cssBackgroundProp contained "\<background\(-\(color\|image\|attachment\|position\|clip\|origin\|size\)\)\=\>"
-syn keyword cssBackgroundAttr contained center fixed over contain
+" background-repeat attributes
 syn match cssBackgroundAttr contained "\<no-repeat\>"
 syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
-syn match cssBackgroundAttr contained "\<\(border\|content\|padding\)-box\>"
+syn keyword cssBackgroundAttr contained space round
+
+" background-size attributes
+syn keyword cssBackgroundAttr contained cover contain
 
+syn match cssBorderProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
+syn match cssBorderProp contained "\<border\(-\(top\|bottom\)-\(left\|right\)\)\=-radius\>"
+syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
+syn match cssBorderProp contained "\<box-decoration-break\>"
+syn match cssBorderProp contained "\<box-shadow\>"
 
-syn match cssBorderOutlineProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
-syn match cssBorderOutlineProp contained "\<outline\(-\(width\|style\|color\)\)\=\>"
-syn match cssBorderOutlineProp contained "\<border-\(top\|bottom\)-\(left\|right\)\(-radius\)\=\>"
-syn match cssBorderOutlineProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
-syn match cssBorderOutlineProp contained "\<border-radius\>"
-syn keyword cssBorderOutlineAttr contained thin thick medium
-syn keyword cssBorderOutlineAttr contained dotted dashed solid double groove ridge inset outset
-syn keyword cssBorderOutlineAttr contained hidden visible scroll collapse
-syn keyword cssBorderOutlineAttr contained stretch round
+" border-image attributes
+syn keyword cssBorderAttr contained stretch repeat round space fill
+
+" border-style attributes
+syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset
 
+" border-width attributes
+syn keyword cssBorderAttr contained thin thick medium
 
+" box-decoration-break attributes
+syn keyword cssBorderAttr contained clone slice
+"------------------------------------------------
+
+syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
+syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
 syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
 syn match cssBoxProp contained "\<rotation\(-point\)=\>"
 syn keyword cssBoxAttr contained visible hidden scroll auto
@@ -193,30 +250,51 @@ syn keyword cssDimensionProp contained w
 
 " shadow and sizing are in other property groups
 syn match cssFlexibleBoxProp contained "\<box-\(align\|direction\|flex\|ordinal-group\|orient\|pack\|shadow\|sizing\)\>"
-syn keyword cssFlexibleBoxAttr contained start end center baseline stretch
-syn keyword cssFlexibleBoxAttr contained normal reverse
+syn keyword cssFlexibleBoxAttr contained start end baseline
+syn keyword cssFlexibleBoxAttr contained reverse
 syn keyword cssFlexibleBoxAttr contained single mulitple
 syn keyword cssFlexibleBoxAttr contained horizontal
-" bugfix: escape vertial-align
-syn match cssFlexibleBoxAttr contained "\<vertical\(-align\)\@!\>"
+syn match cssFlexibleBoxAttr contained "\<vertical\(-align\)\@!\>" "escape vertical-align
 syn match cssFlexibleBoxAttr contained "\<\(inline\|block\)-axis\>"
 
-
-syn match cssFontProp contained "\<font\(-\(family\|style\|variant\|weight\|size\(-adjust\)\=\|stretch\)\)\=\>"
-syn match cssFontAttr contained "\<\(sans-\)\=\<serif\>"
-syn match cssFontAttr contained "\<small\(-\(caps\|caption\)\)\=\>"
-syn match cssFontAttr contained "\<x\{1,2\}-\(large\|small\)\>"
+" CSS Fonts Module Level 3
+" http://www.w3.org/TR/css-fonts-3/
+syn match cssFontProp contained "\<font\(-\(family\|\|feature-settings\|kerning\|language-override\|size\(-adjust\)\=\|stretch\|style\|synthesis\|variant\(-\(alternates\|caps\|east-asian\|ligatures\|numeric\|position\)\)\=\|weight\)\)\=\>"
+" font attributes
+syn keyword cssFontAttr contained icon menu caption
+syn match cssFontAttr contained "\<small-\(caps\|caption\)\>"
 syn match cssFontAttr contained "\<message-box\>"
 syn match cssFontAttr contained "\<status-bar\>"
-syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\|status-bar\)-\)\=\(condensed\|expanded\)\>"
-syn keyword cssFontAttr contained cursive fantasy monospace italic oblique
-syn keyword cssFontAttr contained bold bolder light lighter larger smaller
-syn keyword cssFontAttr contained icon menu caption
-syn keyword cssFontAttr contained large smaller larger narrower wider
-syn keyword cssFontAttr contained Courier Arial Georgia Times
+syn keyword cssFontAttr contained larger smaller
+syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>"
+
+" font-family attributes
+syn match cssFontAttr contained "\<\(sans-\)\=serif\>"
+syn keyword cssFontAttr contained Antiqua Arial Black Book Charcoal Comic Courier Dingbats Gadget Geneva Georgia Grande Helvetica Impact Linotype Lucida MS Monaco Neue New Palatino Roboto Roman Symbol Tahoma Times Trebuchet Unicode Verdana Webdings Wingdings York Zapf
+syn keyword cssFontAttr contained cursive fantasy monospace
+
+" font-feature-settings attributes
+syn keyword cssFontAttr contained on off
+
+" font-stretch attributes
+syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>"
 
+" font-style attributes
+syn keyword cssFontAttr contained italic oblique
 
-syn keyword cssGeneratedContentProp contained content quotes crop
+" font-variant-caps attributes
+syn match cssFontAttr contained "\<\(all-\)\=\(small-\|petite-\|titling-\)caps\>"
+syn keyword cssFontAttr contained unicase
+
+" font-weight attributes
+syn keyword cssFontAttr contained bold bolder lighter
+"------------------------------------------------
+
+" Webkit specific property/attributes
+syn match cssFontProp contained "\<font-smooth\>"
+syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>"
+
+syn keyword cssGeneratedContentProp contained quotes crop
 syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
 syn match cssGeneratedContentProp contained "\<move-to\>"
 syn match cssGeneratedContentProp contained "\<page-policy\>"
@@ -234,22 +312,16 @@ syn match cssListAttr contained "\<\(dec
 syn keyword cssListAttr contained disc circle square hebrew armenian georgian
 syn keyword cssListAttr contained inside outside
 
-
-syn match cssMarginProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
-
 syn match cssMultiColumnProp contained "\<column\(-\(\break-\(after\|before\)\|count\|gap\|rule\(-\(color\|style\|width\)\)\=\)\|span\|width\)\=\>"
 
-
-syn match cssPaddingProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
-
 syn keyword cssPositioningProp contained bottom clear clip display float left
 syn keyword cssPositioningProp contained position right top visibility
 syn match cssPositioningProp contained "\<z-index\>"
-syn keyword cssPositioningAttr contained block inline compact
-syn match cssPositioningAttr contained "\<table\(-\(row-gorup\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
+syn keyword cssPositioningAttr contained block compact
+syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
 syn keyword cssPositioningAttr contained left right both
 syn match cssPositioningAttr contained "\<list-item\>"
-syn match cssPositioningAttr contained "\<inline-\(block\|table\)\>"
+syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\)\)\=\>"
 syn keyword cssPositioningAttr contained static relative absolute fixed
 
 syn match cssPrintProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
@@ -262,18 +334,18 @@ syn keyword cssTableAttr contained fixed
 
 syn keyword cssTextProp contained color direction
 syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
-syn match cssTextProp contained "\<text-\(justify\|\outline\|overflow\|warp\|align-last\)\>"
+syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>"
 syn match cssTextProp contained "\<word-\(break\|\wrap\)\>"
 syn match cssTextProp contained "\<white-space\>"
 syn match cssTextProp contained "\<hanging-punctuation\>"
 syn match cssTextProp contained "\<punctuation-trim\>"
 syn match cssTextAttr contained "\<line-through\>"
-syn match cssTextAttr contained "\<text-indent\>"
 syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
 syn keyword cssTextAttr contained ltr rtl embed nowrap
 syn keyword cssTextAttr contained underline overline blink sub super middle
 syn keyword cssTextAttr contained capitalize uppercase lowercase
-syn keyword cssTextAttr contained center justify baseline sub super
+syn keyword cssTextAttr contained justify baseline sub super
+syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed
 syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
 syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
 syn keyword cssTextAttr contained start end adjacent
@@ -283,22 +355,69 @@ syn keyword cssTextAttr contained clip e
 syn match cssTextAttr contained "\<break-all\>"
 syn match cssTextAttr contained "\<break-word\>"
 syn keyword cssTextAttr contained hyphenate
-
+syn match cssTextAttr contained "\<bidi-override\>"
 
 syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
 syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
 syn match cssTransformProp contained "\<backface-visibility\>"
 
+" CSS Transitions
+" http://www.w3.org/TR/css3-transitions/
 syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
 
+" transition-time-function attributes
+syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>"
+syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
+syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>"
+"------------------------------------------------
+" CSS Basic User Interface Module Level 3 (CSS3 UI)
+" http://www.w3.org/TR/css3-ui/
+syn match cssUIProp contained "\<box-sizing\>"
+syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>"
+
+syn keyword cssUIProp contained cursor
+syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>"
+syn keyword cssUIAttr contained crosshair help move pointer alias copy
+syn keyword cssUIAttr contained progress wait text cell move
+syn match cssUIAttr contained "\<context-menu\>"
+syn match cssUIAttr contained "\<no-drop\>"
+syn match cssUIAttr contained "\<not-allowed\>"
+syn match cssUIAttr contained "\<all-scroll\>"
+syn match cssUIAttr contained "\<\(vertical-\)\=text\>"
+syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>"
+
+syn match cssUIProp contained "\<ime-mode\>"
+syn keyword cssUIAttr contained active inactive disabled
+
 syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
-syn match cssUIProp contained "\<outline-offset\>"
-syn match cssUIProp contained "\<box-sizing\>"
-syn keyword cssUIProp contained appearance icon resize
-syn keyword cssUIAttr contained window button menu field
+syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>"
+syn keyword cssUIAttr contained invert
+
+syn keyword cssUIProp contained icon resize
+syn keyword cssUIAttr contained both horizontal vertical
+
+syn match cssUIProp contained "\<text-overflow\>"
+syn keyword cssUIAttr contained clip ellipsis
+
+" Already highlighted Props:  font content
+"------------------------------------------------
+" Webkit/iOS specific attributes
+syn match cssUIAttr contained '\(preserve-3d\)'
+" IE specific attributes
+syn match cssIEUIAttr contained '\(bicubic\)'
+
+" Webkit/iOS specific properties
+syn match cssUIProp contained '\(tap-highlight-color\|user-select\|touch-callout\)'
+" IE specific properties
+syn match cssIEUIProp contained '\(interpolation-mode\|zoom\|filter\)'
+
+" Webkit/Firebox specific properties/attributes
+syn keyword cssUIProp contained appearance
+syn keyword cssUIAttr contained window button field icon document menu
+
 
 syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
-syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numerals\)\)\=\)\>"
+syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>"
 syn keyword cssAuralProp contained volume during azimuth elevation stress richness
 syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
 syn keyword cssAuralAttr contained silent
@@ -307,48 +426,39 @@ syn keyword cssAuralAttr contained non m
 syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
 syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
 syn keyword cssAuralAttr contained leftwards rightwards behind
-syn keyword cssAuralAttr contained below level above higher
-syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\)\>"
+syn keyword cssAuralAttr contained below level above lower higher
+syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>"
 syn keyword cssAuralAttr contained faster slower
 syn keyword cssAuralAttr contained male female child code digits continuous
-syn match cssAuralAttr contained "\<lower\>"
-
-" cursor
-syn keyword cssUIProp contained cursor
-syn match cssUIAttr contained "\<[ns]\=[ew]\=-resize\>"
-syn keyword cssUIAttr contained crosshair default help move pointer
-syn keyword cssUIAttr contained progress wait
 
-" FIXME: I could not find them in reference
-syn keyword cssUIAttr contained invert maker size zoom
-syn match cssRenderAttr contained "\<run-in\>"
-syn match cssRenderAttr contained "\<text-rendering\>"
-syn match cssRenderAttr contained "\<font-smoothing\>"
-syn match cssRenderProp contained "\<marker-offset\>"
-syn match cssRenderAttr contained "\<bidi-override\>"
+" mobile text
+syn match cssMobileTextProp contained "\<text-size-adjust\>"
+
 
 
-" FIXME: This allows cssMediaBlock before the semicolon, which is wrong.
-syn region cssInclude start="@import" end=";" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
 syn match cssBraces contained "[{}]"
 syn match cssError contained "{@<>"
-syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition
+syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks keepend fold
 syn match cssBraceError "}"
+syn match cssAttrComma ","
 
 " Pseudo class
-syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssPseudoClassId,cssUnicodeEscape
-syn keyword cssPseudoClassId link visited active hover focus before after left right lang
-syn match cssPseudoClassId contained "\<first\(-\(line\|letter\|child\)\)\=\>"
-" FIXME: handle functions.
-"syn region cssPseudoClassLang matchgroup=cssPseudoClassId start="lang(" end=")"
-syn match cssPseudoClassId contained "\<\(last\|only\|nth\|nth-last\)-child\>"
-syn match cssPseudoClassId contained "\<\(first\|last\|only\|nth\|nth-last\)-of-type\>"
-syn keyword cssPseudoClassId root empty target enable disabled checked not invalid
-syn match cssPseudoClassId contained  "::\(-moz-\)\=selection"
+" http://www.w3.org/TR/css3-selectors/
+syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
+syn keyword cssPseudoClassId contained link visited active hover before after left right
+syn keyword cssPseudoClassId contained root empty target enable disabled checked invalid
+syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
+syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
+syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")"
+" ------------------------------------
+" Vendor specific properties
+syn match cssPseudoClassId contained  "\<selection\>"
+syn match cssPseudoClassId contained  "\<focus\(-inner\)\=\>"
+syn match cssPseudoClassId contained  "\<\(input-\)\=placeholder\>"
+
 
 " Comment
 syn region cssComment start="/\*" end="\*/" contains=@Spell
-syn region cssComment start="//" skip="\\$" end="$" keepend contains=@Spell
 
 syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
 syn match cssSpecialCharQQ +\\"+ contained
@@ -359,6 +469,26 @@ syn region cssStringQ start=+'+ skip=+\\
 " Vendor Prefix
 syn match cssVendor contained "\(-\(webkit\|moz\|o\|ms\)-\)"
 
+" Various CSS Hack characters
+" In earlier versions of IE (6 and 7), one can prefix property names
+" with a _ or * to isolate those definitions to particular versions of IE
+" This is purely decorative and therefore we assign to the same highlight
+" group to cssVendor, for more information:
+" http://www.paulirish.com/2009/browser-specific-css-hacks/
+syn match cssHacks contained /\(_\|*\)/
+
+" Misc highlight groups
+syntax match cssUnitDecorators /\(#\|-\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained
+syntax match cssNoise contained /\(:\|;\|\/\)/
+
+" Attr Enhance
+" Some keywords are both Prop and Attr, so we have to handle them
+syn region cssAttrRegion start=/:/ end=/;/ contained keepend contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssTransitionHackProp,cssAttrComma,cssNoise
+
+" Hack for transition
+" The 'transition' Prop has Props after ':'.
+syn region cssAttrRegion start=/transition\s*:/ end=/;/ contained keepend contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssTransitionHackProp,cssAttrComma,cssNoise
+
 
 if main_syntax == "css"
   syn sync minlines=10
@@ -377,73 +507,76 @@ if version >= 508 || !exists("did_css_sy
 
   HiLink cssComment Comment
   HiLink cssVendor Comment
+  HiLink cssHacks Comment
   HiLink cssTagName Statement
   HiLink cssDeprecated Error
   HiLink cssSelectorOp Special
   HiLink cssSelectorOp2 Special
+  HiLink cssAttrComma Special
 
-  HiLink cssAnimationProp StorageClass
-  HiLink cssBackgroundProp StorageClass
-  HiLink cssBorderOutlineProp StorageClass
-  HiLink cssBoxProp StorageClass
-  HiLink cssColorProp StorageClass
-  HiLink cssContentForPagedMediaProp StorageClass
-  HiLink cssDimensionProp StorageClass
-  HiLink cssFlexibleBoxProp StorageClass
-  HiLink cssFontProp StorageClass
-  HiLink cssGeneratedContentProp StorageClass
-  HiLink cssGridProp StorageClass
-  HiLink cssHyerlinkProp StorageClass
-  HiLink cssLineboxProp StorageClass
-  HiLink cssListProp StorageClass
-  HiLink cssMarginProp StorageClass
-  HiLink cssMarqueeProp StorageClass
-  HiLink cssMultiColumnProp StorageClass
-  HiLink cssPaddingProp StorageClass
-  HiLink cssPagedMediaProp StorageClass
-  HiLink cssPositioningProp StorageClass
-  HiLink cssPrintProp StorageClass
-  HiLink cssRubyProp StorageClass
-  HiLink cssSpeechProp StorageClass
-  HiLink cssTableProp StorageClass
-  HiLink cssTextProp StorageClass
-  HiLink cssTransformProp StorageClass
-  HiLink cssTransitionProp StorageClass
-  HiLink cssUIProp StorageClass
-  HiLink cssAuralProp StorageClass
-  HiLink cssRenderProp StorageClass
+  HiLink cssAnimationProp cssProp
+  HiLink cssBackgroundProp cssProp
+  HiLink cssBorderProp cssProp
+  HiLink cssBoxProp cssProp
+  HiLink cssColorProp cssProp
+  HiLink cssContentForPagedMediaProp cssProp
+  HiLink cssDimensionProp cssProp
+  HiLink cssFlexibleBoxProp cssProp
+  HiLink cssFontProp cssProp
+  HiLink cssGeneratedContentProp cssProp
+  HiLink cssGridProp cssProp
+  HiLink cssHyerlinkProp cssProp
+  HiLink cssLineboxProp cssProp
+  HiLink cssListProp cssProp
+  HiLink cssMarqueeProp cssProp
+  HiLink cssMultiColumnProp cssProp
+  HiLink cssPagedMediaProp cssProp
+  HiLink cssPositioningProp cssProp
+  HiLink cssPrintProp cssProp
+  HiLink cssRubyProp cssProp
+  HiLink cssSpeechProp cssProp
+  HiLink cssTableProp cssProp
+  HiLink cssTextProp cssProp
+  HiLink cssTransformProp cssProp
+  HiLink cssTransitionProp cssProp
+  HiLink cssUIProp cssProp
+  HiLink cssIEUIProp cssProp
+  HiLink cssAuralProp cssProp
+  HiLink cssRenderProp cssProp
+  HiLink cssMobileTextProp cssProp
 
-  HiLink cssAnimationAttr Type
-  HiLink cssBackgroundAttr Type
-  HiLink cssBorderOutlineAttr Type
-  HiLink cssBoxAttr Type
-  HiLink cssColorAttr Type
-  HiLink cssContentForPagedMediaAttr Type
-  HiLink cssDimensionAttr Type
-  HiLink cssFlexibleBoxAttr Type
-  HiLink cssFontAttr Type
-  HiLink cssGeneratedContentAttr Type
-  HiLink cssGridAttr Type
-  HiLink cssHyerlinkAttr Type
-  HiLink cssLineboxAttr Type
-  HiLink cssListAttr Type
-  HiLink cssMarginAttr Type
-  HiLink cssMarqueeAttr Type
-  HiLink cssMultiColumnAttr Type
-  HiLink cssPaddingAttr Type
-  HiLink cssPagedMediaAttr Type
-  HiLink cssPositioningAttr Type
-  HiLink cssPrintAttr Type
-  HiLink cssRubyAttr Type
-  HiLink cssSpeechAttr Type
-  HiLink cssTableAttr Type
-  HiLink cssTextAttr Type
-  HiLink cssTransformAttr Type
-  HiLink cssTransitionAttr Type
-  HiLink cssUIAttr Type
-  HiLink cssAuralAttr Type
-  HiLink cssRenderAttr Type
-  HiLink cssCommonAttr Type
+  HiLink cssAnimationAttr cssAttr
+  HiLink cssBackgroundAttr cssAttr
+  HiLink cssBorderAttr cssAttr
+  HiLink cssBoxAttr cssAttr
+  HiLink cssContentForPagedMediaAttr cssAttr
+  HiLink cssDimensionAttr cssAttr
+  HiLink cssFlexibleBoxAttr cssAttr
+  HiLink cssFontAttr cssAttr
+  HiLink cssGeneratedContentAttr cssAttr
+  HiLink cssGridAttr cssAttr
+  HiLink cssHyerlinkAttr cssAttr
+  HiLink cssLineboxAttr cssAttr
+  HiLink cssListAttr cssAttr
+  HiLink cssMarginAttr cssAttr
+  HiLink cssMarqueeAttr cssAttr
+  HiLink cssMultiColumnAttr cssAttr
+  HiLink cssPaddingAttr cssAttr
+  HiLink cssPagedMediaAttr cssAttr
+  HiLink cssPositioningAttr cssAttr
+  HiLink cssGradientAttr cssAttr
+  HiLink cssPrintAttr cssAttr
+  HiLink cssRubyAttr cssAttr
+  HiLink cssSpeechAttr cssAttr
+  HiLink cssTableAttr cssAttr
+  HiLink cssTextAttr cssAttr
+  HiLink cssTransformAttr cssAttr
+  HiLink cssTransitionAttr cssAttr
+  HiLink cssUIAttr cssAttr
+  HiLink cssIEUIAttr cssAttr
+  HiLink cssAuralAttr cssAttr
+  HiLink cssRenderAttr cssAttr
+  HiLink cssCommonAttr cssAttr
 
   HiLink cssPseudoClassId PreProc
   HiLink cssPseudoClassLang Constant
@@ -456,6 +589,7 @@ if version >= 508 || !exists("did_css_sy
   HiLink cssFunction Constant
   HiLink cssURL String
   HiLink cssFunctionName Function
+  HiLink cssFunctionComma Function
   HiLink cssColor Constant
   HiLink cssIdentifier Function
   HiLink cssInclude Include
@@ -467,15 +601,31 @@ if version >= 508 || !exists("did_css_sy
   HiLink cssUnicodeEscape Special
   HiLink cssStringQQ String
   HiLink cssStringQ String
+  HiLink cssAttributeSelector String
   HiLink cssMedia Special
   HiLink cssMediaType Special
   HiLink cssMediaComma Normal
+  HiLink cssMediaFeature Normal
+  HiLink cssMediaKeyword Statement
+  HiLink cssMediaKeyword2 Statement
+  HiLink cssMediaProp cssProp
+  HiLink cssMediaAttr cssAttr
+  HiLink cssPage Special
+  HiLink cssPagePseudo PreProc
+  HiLink cssPageHeaderProp PreProc
+  HiLink cssPageProp cssProp
+  HiLink cssKeyFrame Special
+  HiLink cssKeyFrameSelector Constant
   HiLink cssFontDescriptor Special
   HiLink cssFontDescriptorFunction Constant
-  HiLink cssFontDescriptorProp StorageClass
-  HiLink cssFontDescriptorAttr Type
+  HiLink cssFontDescriptorProp cssProp
+  HiLink cssFontDescriptorAttr cssAttr
   HiLink cssUnicodeRange Constant
   HiLink cssClassName Function
+  HiLink cssProp StorageClass
+  HiLink cssAttr Constant
+  HiLink cssUnitDecorators Number
+  HiLink cssNoise Noise
   delcommand HiLink
 endif
 
--- a/runtime/syntax/dircolors.vim
+++ b/runtime/syntax/dircolors.vim
@@ -1,751 +1,213 @@
 " Vim syntax file
-" Language:         dircolors(1) input file
-" Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2012-04-25
+" Language:        dircolors(1) input file
+" Maintainer:      Jan Larres <jan@majutsushi.net>
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2013-08-17
 
 if exists("b:current_syntax")
-  finish
+    finish
 endif
 
 let s:cpo_save = &cpo
 set cpo&vim
 
-syn keyword dircolorsTodo       contained FIXME TODO XXX NOTE
+syntax keyword dircolorsTodo    FIXME TODO XXX NOTE contained
+
+syntax region  dircolorsComment start='#' end='$' contains=dircolorsTodo,@Spell
+
+syntax keyword dircolorsKeyword TERM LEFT LEFTCODE RIGHT RIGHTCODE END ENDCODE
 
-syn region  dircolorsComment    start='#' end='$' contains=dircolorsTodo,@Spell
-
-syn keyword dircolorsKeyword    TERM LEFT LEFTCODE RIGHT RIGHTCODE END ENDCODE
+syntax keyword dircolorsKeyword NORMAL NORM FILE RESET DIR LNK LINK SYMLINK
+                              \ MULTIHARDLINK FIFO SOCK DOOR BLK CHR ORPHAN
+                              \ MISSING PIPE BLOCK CHR EXEC SETUID SETGID
+                              \ CAPABILITY STICKY_OTHER_WRITABLE
+                              \ OTHER_WRITABLE STICKY
 
-syn keyword dircolorsKeyword    NORMAL NORM FILE DIR LNK LINK SYMLINK ORPHAN
-                                \ RESET MULTIHARDLINK CAPABILITY SETUID SETGID
-                                \ STICKY STICKY_OTHER_WRITABLE OTHER_WRITABLE 
-                                \ MISSING FIFO PIPE SOCK BLK BLOCK CHR CHAR
-                                \ DOOR EXEC
-                                \ nextgroup=@dircolorsColors skipwhite
+" Slackware only, ignored by GNU dircolors.
+syntax keyword dircolorsKeyword COLOR OPTIONS EIGHTBIT
+
+syntax match dircolorsExtension '^\s*\zs[.*]\S\+'
 
-if exists("dircolors_is_slackware")
-  syn keyword dircolorsKeyword  COLOR OPTIONS EIGHTBIT
+syntax match dircolorsEscape '\\[abefnrtv?_\\^#]'
+syntax match dircolorsEscape '\\[0-9]\{3}'
+syntax match dircolorsEscape '\\x[0-9a-f]\{3}'
+
+if !has('gui_running') && &t_Co == ''
+    syntax match dircolorsNumber '\<\d\+\>'
+    highlight default link dircolorsNumber Number
 endif
 
-syn match   dircolorsExtension  '^\s*\zs[.*]\S\+'
-                                \ nextgroup=dircolorsColorPair skipwhite
+highlight default link dircolorsTodo      Todo
+highlight default link dircolorsComment   Comment
+highlight default link dircolorsKeyword   Keyword
+highlight default link dircolorsExtension Identifier
+highlight default link dircolorsEscape    Special
 
-syn match   dircolorsColorPair  contained '.*$'
-                                \ transparent contains=@dircolorsColors
+function! s:set_guicolors() abort
+    let s:guicolors = {}
 
-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
+    let s:guicolors[0]  = "Black"
+    let s:guicolors[1]  = "DarkRed"
+    let s:guicolors[2]  = "DarkGreen"
+    let s:guicolors[3]  = "DarkYellow"
+    let s:guicolors[4]  = "DarkBlue"
+    let s:guicolors[5]  = "DarkMagenta"
+    let s:guicolors[6]  = "DarkCyan"
+    let s:guicolors[7]  = "Gray"
+    let s:guicolors[8]  = "DarkGray"
+    let s:guicolors[9]  = "Red"
+    let s:guicolors[10] = "Green"
+    let s:guicolors[11] = "Yellow"
+    let s:guicolors[12] = "Blue"
+    let s:guicolors[13] = "Magenta"
+    let s:guicolors[14] = "Cyan"
+    let s:guicolors[15] = "White"
+
+    let xterm_palette = ["00", "5f", "87", "af", "d7", "ff"]
+
+    let cur_col = 16
+
+    for r in xterm_palette
+        for g in xterm_palette
+            for b in xterm_palette
+                let s:guicolors[cur_col] = '#' . r . g . b
+                let cur_col += 1
+            endfor
+        endfor
+    endfor
 
-  syn match dircolorsBold       contained '\<0\=1\>'
-  syn match dircolorsUnderline  contained '\<0\=4\>'
-  syn match dircolorsBlink      contained '\<0\=5\>'
-  syn match dircolorsReverse    contained '\<0\=7\>'
-  syn match dircolorsInvisible  contained '\<0\=8\>'
-  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 || has("gui_running")
-  syn cluster dircolorsColors   contains=dircolorsColor0,
-                                \ 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
+    for i in range(24)
+        let g = i * 0xa + 8
+        let s:guicolors[i + 232] = '#' . g . g . g
+    endfor
+endfunction
+
+function! s:get_hi_str(color, place) abort
+    if a:color >= 0 && a:color <= 255
+        if has('gui_running')
+            return ' gui' . a:place . '=' . s:guicolors[a:color]
+        elseif a:color <= 7 || &t_Co == 256 || &t_Co == 88
+            return ' cterm' . a:place . '=' . a:color
+        endif
+    endif
+    return ''
+endfunction
+
+function! s:get_256color(colors) abort
+    if len(a:colors) >= 2 " May be fewer while editing
+        let [_five, color] = remove(a:colors, 0, 1)
+        if _five != '5' || color == ''
+            return -1
+        else
+            return str2nr(color)
+        endif
+    else
+        return -1
+    endif
+endfunction
+
+function! s:preview_color(linenr) abort
+    let line = getline(a:linenr)
+    let defline = matchlist(line, '^\v([A-Z_]+|[*.]\S+)\s+([0-9;]+)')
+    if empty(defline)
+        return
+    endif
+
+    let colordef = defline[2]
+
+    let colors = split(colordef, ';')
 
-  syn match dircolorsColor0     contained '\<0\=0\>'
-  syn match dircolorsColor1     contained '\<0\=1\>'
-  syn match dircolorsColor2     contained '\<0\=2\>'
-  syn match dircolorsColor3     contained '\<0\=3\>'
-  syn match dircolorsColor4     contained '\<0\=4\>'
-  syn match dircolorsColor5     contained '\<0\=5\>'
-  syn match dircolorsColor6     contained '\<0\=6\>'
-  syn match dircolorsColor7     contained '\<0\=7\>'
-  syn match dircolorsColor8     contained '\<0\=8\>'
-  syn match dircolorsColor9     contained '\<0\=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\+\>'
+    let hi_str = ''
+    let hi_attrs = []
+    while len(colors) > 0
+        let item = str2nr(remove(colors, 0))
+        if item == 1
+            call add(hi_attrs, 'bold')
+        elseif item == 3
+            call add(hi_attrs, 'italic')
+        elseif item == 4
+            call add(hi_attrs, 'underline')
+        elseif item == 7
+            call add(hi_attrs, 'inverse')
+        elseif item >= 30 && item <= 37
+            " ANSI SGR foreground color
+            let hi_str .= s:get_hi_str(item - 30, 'fg')
+        elseif item >= 40 && item <= 47
+            " ANSI SGR background color
+            let hi_str .= s:get_hi_str(item - 40, 'bg')
+        elseif item == 38
+            " Foreground for terminals with 88/256 color support
+            let color = s:get_256color(colors)
+            if color == -1
+                break
+            endif
+            let hi_str .= s:get_hi_str(color, 'fg')
+        elseif item == 48
+            " Background for terminals with 88/256 color support
+            let color = s:get_256color(colors)
+            if color == -1
+                break
+            endif
+            let hi_str .= s:get_hi_str(color, 'bg')
+        endif
+    endwhile
+
+    if hi_str == '' && empty(hi_attrs)
+        return
+    endif
+
+    " Check whether we have already defined this color
+    redir => s:currentmatch
+    silent! execute 'syntax list'
+    redir END
+
+    if s:currentmatch !~# '\/\\_s\\zs' . colordef . '\\ze\\_s\/'
+        " Append the buffer number to avoid problems with other dircolors
+        " buffers interfering
+        let bufnr = bufnr('%')
+        execute 'syntax match dircolorsColor' . b:dc_next_index . '_' . bufnr .
+              \ ' "\_s\zs' . colordef . '\ze\_s"'
+        let hi_attrs_str = ''
+        if !empty(hi_attrs)
+            if has('gui_running')
+                let hi_attrs_str = ' gui=' . join(hi_attrs, ',')
+            else
+                let hi_attrs_str = ' cterm=' . join(hi_attrs, ',')
+            endif
+        endif
+        execute 'highlight default dircolorsColor' . b:dc_next_index . '_' .
+              \ bufnr . hi_str . hi_attrs_str
+        let b:dc_next_index += 1
+    endif
+endfunction
+
+" Avoid accumulating too many definitions while editing
+function! s:reset_colors() abort
+    if b:dc_next_index > 0
+        let bufnr = bufnr('%')
+        for i in range(b:dc_next_index)
+            execute 'syntax clear dircolorsColor' . i . '_' . bufnr
+            execute 'highlight clear dircolorsColor' . i . '_' . bufnr
+        endfor
+        let b:dc_next_index = 0
+    endif
+
+    for linenr in range(1, line('$'))
+        call s:preview_color(linenr)
+    endfor
+endfunction
+
+let b:dc_next_index = 0
+
+if has('gui_running')
+    call s:set_guicolors()
 endif
 
-hi def link dircolorsTodo       Todo
-hi def link dircolorsComment    Comment
-hi def link dircolorsKeyword    Keyword
-hi def link dircolorsExtension  Keyword
+if has('gui_running') || &t_Co != ''
+    call s:reset_colors()
 
-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 || has("gui_running")
-  hi def    dircolorsColor0     ctermfg=0   guifg=Black
-  hi def    dircolorsColor1     ctermfg=1   guifg=DarkRed
-  hi def    dircolorsColor2     ctermfg=2   guifg=DarkGreen
-  hi def    dircolorsColor3     ctermfg=3   guifg=DarkYellow
-  hi def    dircolorsColor4     ctermfg=4   guifg=DarkBlue
-  hi def    dircolorsColor5     ctermfg=5   guifg=DarkMagenta
-  hi def    dircolorsColor6     ctermfg=6   guifg=DarkCyan
-  hi def    dircolorsColor7     ctermfg=7   guifg=Gray
-  hi def    dircolorsColor8     ctermfg=8   guifg=DarkGray
-  hi def    dircolorsColor9     ctermfg=9   guifg=Red
-  hi def    dircolorsColor10    ctermfg=10  guifg=Green
-  hi def    dircolorsColor11    ctermfg=11  guifg=Yellow
-  hi def    dircolorsColor12    ctermfg=12  guifg=Blue
-  hi def    dircolorsColor13    ctermfg=13  guifg=Magenta
-  hi def    dircolorsColor14    ctermfg=14  guifg=Cyan
-  hi def    dircolorsColor15    ctermfg=15  guifg=White
-  hi def    dircolorsColor16    ctermfg=16  guifg=#000000
-  hi def    dircolorsColor17    ctermfg=17  guifg=#00005f
-  hi def    dircolorsColor18    ctermfg=18  guifg=#000087
-  hi def    dircolorsColor19    ctermfg=19  guifg=#0000af
-  hi def    dircolorsColor20    ctermfg=20  guifg=#0000d7
-  hi def    dircolorsColor21    ctermfg=21  guifg=#0000ff
-  hi def    dircolorsColor22    ctermfg=22  guifg=#005f00
-  hi def    dircolorsColor23    ctermfg=23  guifg=#005f5f
-  hi def    dircolorsColor24    ctermfg=24  guifg=#005f87
-  hi def    dircolorsColor25    ctermfg=25  guifg=#005faf
-  hi def    dircolorsColor26    ctermfg=26  guifg=#005fd7
-  hi def    dircolorsColor27    ctermfg=27  guifg=#005fff
-  hi def    dircolorsColor28    ctermfg=28  guifg=#008700
-  hi def    dircolorsColor29    ctermfg=29  guifg=#00875f
-  hi def    dircolorsColor30    ctermfg=30  guifg=#008787
-  hi def    dircolorsColor31    ctermfg=31  guifg=#0087af
-  hi def    dircolorsColor32    ctermfg=32  guifg=#0087d7
-  hi def    dircolorsColor33    ctermfg=33  guifg=#0087ff
-  hi def    dircolorsColor34    ctermfg=34  guifg=#00af00
-  hi def    dircolorsColor35    ctermfg=35  guifg=#00af5f
-  hi def    dircolorsColor36    ctermfg=36  guifg=#00af87
-  hi def    dircolorsColor37    ctermfg=37  guifg=#00afaf
-  hi def    dircolorsColor38    ctermfg=38  guifg=#00afd7
-  hi def    dircolorsColor39    ctermfg=39  guifg=#00afff
-  hi def    dircolorsColor40    ctermfg=40  guifg=#00d700
-  hi def    dircolorsColor41    ctermfg=41  guifg=#00d75f
-  hi def    dircolorsColor42    ctermfg=42  guifg=#00d787
-  hi def    dircolorsColor43    ctermfg=43  guifg=#00d7af
-  hi def    dircolorsColor44    ctermfg=44  guifg=#00d7d7
-  hi def    dircolorsColor45    ctermfg=45  guifg=#00d7ff
-  hi def    dircolorsColor46    ctermfg=46  guifg=#00ff00
-  hi def    dircolorsColor47    ctermfg=47  guifg=#00ff5f
-  hi def    dircolorsColor48    ctermfg=48  guifg=#00ff87
-  hi def    dircolorsColor49    ctermfg=49  guifg=#00ffaf
-  hi def    dircolorsColor50    ctermfg=50  guifg=#00ffd7
-  hi def    dircolorsColor51    ctermfg=51  guifg=#00ffff
-  hi def    dircolorsColor52    ctermfg=52  guifg=#5f0000
-  hi def    dircolorsColor53    ctermfg=53  guifg=#5f005f
-  hi def    dircolorsColor54    ctermfg=54  guifg=#5f0087
-  hi def    dircolorsColor55    ctermfg=55  guifg=#5f00af
-  hi def    dircolorsColor56    ctermfg=56  guifg=#5f00d7
-  hi def    dircolorsColor57    ctermfg=57  guifg=#5f00ff
-  hi def    dircolorsColor58    ctermfg=58  guifg=#5f5f00
-  hi def    dircolorsColor59    ctermfg=59  guifg=#5f5f5f
-  hi def    dircolorsColor60    ctermfg=60  guifg=#5f5f87
-  hi def    dircolorsColor61    ctermfg=61  guifg=#5f5faf
-  hi def    dircolorsColor62    ctermfg=62  guifg=#5f5fd7
-  hi def    dircolorsColor63    ctermfg=63  guifg=#5f5fff
-  hi def    dircolorsColor64    ctermfg=64  guifg=#5f8700
-  hi def    dircolorsColor65    ctermfg=65  guifg=#5f875f
-  hi def    dircolorsColor66    ctermfg=66  guifg=#5f8787
-  hi def    dircolorsColor67    ctermfg=67  guifg=#5f87af
-  hi def    dircolorsColor68    ctermfg=68  guifg=#5f87d7
-  hi def    dircolorsColor69    ctermfg=69  guifg=#5f87ff
-  hi def    dircolorsColor70    ctermfg=70  guifg=#5faf00
-  hi def    dircolorsColor71    ctermfg=71  guifg=#5faf5f
-  hi def    dircolorsColor72    ctermfg=72  guifg=#5faf87
-  hi def    dircolorsColor73    ctermfg=73  guifg=#5fafaf
-  hi def    dircolorsColor74    ctermfg=74  guifg=#5fafd7
-  hi def    dircolorsColor75    ctermfg=75  guifg=#5fafff
-  hi def    dircolorsColor76    ctermfg=76  guifg=#5fd700
-  hi def    dircolorsColor77    ctermfg=77  guifg=#5fd75f
-  hi def    dircolorsColor78    ctermfg=78  guifg=#5fd787
-  hi def    dircolorsColor79    ctermfg=79  guifg=#5fd7af
-  hi def    dircolorsColor80    ctermfg=80  guifg=#5fd7d7
-  hi def    dircolorsColor81    ctermfg=81  guifg=#5fd7ff
-  hi def    dircolorsColor82    ctermfg=82  guifg=#5fff00
-  hi def    dircolorsColor83    ctermfg=83  guifg=#5fff5f
-  hi def    dircolorsColor84    ctermfg=84  guifg=#5fff87
-  hi def    dircolorsColor85    ctermfg=85  guifg=#5fffaf
-  hi def    dircolorsColor86    ctermfg=86  guifg=#5fffd7
-  hi def    dircolorsColor87    ctermfg=87  guifg=#5fffff
-  hi def    dircolorsColor88    ctermfg=88  guifg=#870000
-  hi def    dircolorsColor89    ctermfg=89  guifg=#87005f
-  hi def    dircolorsColor90    ctermfg=90  guifg=#870087
-  hi def    dircolorsColor91    ctermfg=91  guifg=#8700af
-  hi def    dircolorsColor92    ctermfg=92  guifg=#8700d7
-  hi def    dircolorsColor93    ctermfg=93  guifg=#8700ff
-  hi def    dircolorsColor94    ctermfg=94  guifg=#875f00
-  hi def    dircolorsColor95    ctermfg=95  guifg=#875f5f
-  hi def    dircolorsColor96    ctermfg=96  guifg=#875f87
-  hi def    dircolorsColor97    ctermfg=97  guifg=#875faf
-  hi def    dircolorsColor98    ctermfg=98  guifg=#875fd7
-  hi def    dircolorsColor99    ctermfg=99  guifg=#875fff
-  hi def    dircolorsColor100   ctermfg=100 guifg=#878700
-  hi def    dircolorsColor101   ctermfg=101 guifg=#87875f
-  hi def    dircolorsColor102   ctermfg=102 guifg=#878787
-  hi def    dircolorsColor103   ctermfg=103 guifg=#8787af
-  hi def    dircolorsColor104   ctermfg=104 guifg=#8787d7
-  hi def    dircolorsColor105   ctermfg=105 guifg=#8787ff
-  hi def    dircolorsColor106   ctermfg=106 guifg=#87af00
-  hi def    dircolorsColor107   ctermfg=107 guifg=#87af5f
-  hi def    dircolorsColor108   ctermfg=108 guifg=#87af87
-  hi def    dircolorsColor109   ctermfg=109 guifg=#87afaf
-  hi def    dircolorsColor110   ctermfg=110 guifg=#87afd7
-  hi def    dircolorsColor111   ctermfg=111 guifg=#87afff
-  hi def    dircolorsColor112   ctermfg=112 guifg=#87d700
-  hi def    dircolorsColor113   ctermfg=113 guifg=#87d75f
-  hi def    dircolorsColor114   ctermfg=114 guifg=#87d787
-  hi def    dircolorsColor115   ctermfg=115 guifg=#87d7af
-  hi def    dircolorsColor116   ctermfg=116 guifg=#87d7d7
-  hi def    dircolorsColor117   ctermfg=117 guifg=#87d7ff
-  hi def    dircolorsColor118   ctermfg=118 guifg=#87ff00
-  hi def    dircolorsColor119   ctermfg=119 guifg=#87ff5f
-  hi def    dircolorsColor120   ctermfg=120 guifg=#87ff87
-  hi def    dircolorsColor121   ctermfg=121 guifg=#87ffaf
-  hi def    dircolorsColor122   ctermfg=122 guifg=#87ffd7
-  hi def    dircolorsColor123   ctermfg=123 guifg=#87ffff
-  hi def    dircolorsColor124   ctermfg=124 guifg=#af0000
-  hi def    dircolorsColor125   ctermfg=125 guifg=#af005f
-  hi def    dircolorsColor126   ctermfg=126 guifg=#af0087
-  hi def    dircolorsColor127   ctermfg=127 guifg=#af00af
-  hi def    dircolorsColor128   ctermfg=128 guifg=#af00d7
-  hi def    dircolorsColor129   ctermfg=129 guifg=#af00ff
-  hi def    dircolorsColor130   ctermfg=130 guifg=#af5f00
-  hi def    dircolorsColor131   ctermfg=131 guifg=#af5f5f
-  hi def    dircolorsColor132   ctermfg=132 guifg=#af5f87
-  hi def    dircolorsColor133   ctermfg=133 guifg=#af5faf
-  hi def    dircolorsColor134   ctermfg=134 guifg=#af5fd7
-  hi def    dircolorsColor135   ctermfg=135 guifg=#af5fff
-  hi def    dircolorsColor136   ctermfg=136 guifg=#af8700
-  hi def    dircolorsColor137   ctermfg=137 guifg=#af875f
-  hi def    dircolorsColor138   ctermfg=138 guifg=#af8787
-  hi def    dircolorsColor139   ctermfg=139 guifg=#af87af
-  hi def    dircolorsColor140   ctermfg=140 guifg=#af87d7
-  hi def    dircolorsColor141   ctermfg=141 guifg=#af87ff
-  hi def    dircolorsColor142   ctermfg=142 guifg=#afaf00
-  hi def    dircolorsColor143   ctermfg=143 guifg=#afaf5f
-  hi def    dircolorsColor144   ctermfg=144 guifg=#afaf87
-  hi def    dircolorsColor145   ctermfg=145 guifg=#afafaf
-  hi def    dircolorsColor146   ctermfg=146 guifg=#afafd7
-  hi def    dircolorsColor147   ctermfg=147 guifg=#afafff
-  hi def    dircolorsColor148   ctermfg=148 guifg=#afd700
-  hi def    dircolorsColor149   ctermfg=149 guifg=#afd75f
-  hi def    dircolorsColor150   ctermfg=150 guifg=#afd787
-  hi def    dircolorsColor151   ctermfg=151 guifg=#afd7af
-  hi def    dircolorsColor152   ctermfg=152 guifg=#afd7d7
-  hi def    dircolorsColor153   ctermfg=153 guifg=#afd7ff
-  hi def    dircolorsColor154   ctermfg=154 guifg=#afff00
-  hi def    dircolorsColor155   ctermfg=155 guifg=#afff5f
-  hi def    dircolorsColor156   ctermfg=156 guifg=#afff87
-  hi def    dircolorsColor157   ctermfg=157 guifg=#afffaf
-  hi def    dircolorsColor158   ctermfg=158 guifg=#afffd7
-  hi def    dircolorsColor159   ctermfg=159 guifg=#afffff
-  hi def    dircolorsColor160   ctermfg=160 guifg=#d70000
-  hi def    dircolorsColor161   ctermfg=161 guifg=#d7005f
-  hi def    dircolorsColor162   ctermfg=162 guifg=#d70087
-  hi def    dircolorsColor163   ctermfg=163 guifg=#d700af
-  hi def    dircolorsColor164   ctermfg=164 guifg=#d700d7
-  hi def    dircolorsColor165   ctermfg=165 guifg=#d700ff
-  hi def    dircolorsColor166   ctermfg=166 guifg=#d75f00
-  hi def    dircolorsColor167   ctermfg=167 guifg=#d75f5f
-  hi def    dircolorsColor168   ctermfg=168 guifg=#d75f87
-  hi def    dircolorsColor169   ctermfg=169 guifg=#d75faf
-  hi def    dircolorsColor170   ctermfg=170 guifg=#d75fd7
-  hi def    dircolorsColor171   ctermfg=171 guifg=#d75fff
-  hi def    dircolorsColor172   ctermfg=172 guifg=#d78700
-  hi def    dircolorsColor173   ctermfg=173 guifg=#d7875f
-  hi def    dircolorsColor174   ctermfg=174 guifg=#d78787
-  hi def    dircolorsColor175   ctermfg=175 guifg=#d787af
-  hi def    dircolorsColor176   ctermfg=176 guifg=#d787d7
-  hi def    dircolorsColor177   ctermfg=177 guifg=#d787ff
-  hi def    dircolorsColor178   ctermfg=178 guifg=#d7af00
-  hi def    dircolorsColor179   ctermfg=179 guifg=#d7af5f
-  hi def    dircolorsColor180   ctermfg=180 guifg=#d7af87
-  hi def    dircolorsColor181   ctermfg=181 guifg=#d7afaf
-  hi def    dircolorsColor182   ctermfg=182 guifg=#d7afd7
-  hi def    dircolorsColor183   ctermfg=183 guifg=#d7afff
-  hi def    dircolorsColor184   ctermfg=184 guifg=#d7d700
-  hi def    dircolorsColor185   ctermfg=185 guifg=#d7d75f
-  hi def    dircolorsColor186   ctermfg=186 guifg=#d7d787
-  hi def    dircolorsColor187   ctermfg=187 guifg=#d7d7af
-  hi def    dircolorsColor188   ctermfg=188 guifg=#d7d7d7
-  hi def    dircolorsColor189   ctermfg=189 guifg=#d7d7ff
-  hi def    dircolorsColor190   ctermfg=190 guifg=#d7ff00
-  hi def    dircolorsColor191   ctermfg=191 guifg=#d7ff5f
-  hi def    dircolorsColor192   ctermfg=192 guifg=#d7ff87
-  hi def    dircolorsColor193   ctermfg=193 guifg=#d7ffaf
-  hi def    dircolorsColor194   ctermfg=194 guifg=#d7ffd7
-  hi def    dircolorsColor195   ctermfg=195 guifg=#d7ffff
-  hi def    dircolorsColor196   ctermfg=196 guifg=#ff0000
-  hi def    dircolorsColor197   ctermfg=197 guifg=#ff005f
-  hi def    dircolorsColor198   ctermfg=198 guifg=#ff0087
-  hi def    dircolorsColor199   ctermfg=199 guifg=#ff00af
-  hi def    dircolorsColor200   ctermfg=200 guifg=#ff00d7
-  hi def    dircolorsColor201   ctermfg=201 guifg=#ff00ff
-  hi def    dircolorsColor202   ctermfg=202 guifg=#ff5f00
-  hi def    dircolorsColor203   ctermfg=203 guifg=#ff5f5f
-  hi def    dircolorsColor204   ctermfg=204 guifg=#ff5f87
-  hi def    dircolorsColor205   ctermfg=205 guifg=#ff5faf
-  hi def    dircolorsColor206   ctermfg=206 guifg=#ff5fd7
-  hi def    dircolorsColor207   ctermfg=207 guifg=#ff5fff
-  hi def    dircolorsColor208   ctermfg=208 guifg=#ff8700
-  hi def    dircolorsColor209   ctermfg=209 guifg=#ff875f
-  hi def    dircolorsColor210   ctermfg=210 guifg=#ff8787
-  hi def    dircolorsColor211   ctermfg=211 guifg=#ff87af
-  hi def    dircolorsColor212   ctermfg=212 guifg=#ff87d7
-  hi def    dircolorsColor213   ctermfg=213 guifg=#ff87ff
-  hi def    dircolorsColor214   ctermfg=214 guifg=#ffaf00
-  hi def    dircolorsColor215   ctermfg=215 guifg=#ffaf5f
-  hi def    dircolorsColor216   ctermfg=216 guifg=#ffaf87
-  hi def    dircolorsColor217   ctermfg=217 guifg=#ffafaf
-  hi def    dircolorsColor218   ctermfg=218 guifg=#ffafd7
-  hi def    dircolorsColor219   ctermfg=219 guifg=#ffafff
-  hi def    dircolorsColor220   ctermfg=220 guifg=#ffd700
-  hi def    dircolorsColor221   ctermfg=221 guifg=#ffd75f
-  hi def    dircolorsColor222   ctermfg=222 guifg=#ffd787
-  hi def    dircolorsColor223   ctermfg=223 guifg=#ffd7af
-  hi def    dircolorsColor224   ctermfg=224 guifg=#ffd7d7
-  hi def    dircolorsColor225   ctermfg=225 guifg=#ffd7ff
-  hi def    dircolorsColor226   ctermfg=226 guifg=#ffff00
-  hi def    dircolorsColor227   ctermfg=227 guifg=#ffff5f
-  hi def    dircolorsColor228   ctermfg=228 guifg=#ffff87
-  hi def    dircolorsColor229   ctermfg=229 guifg=#ffffaf
-  hi def    dircolorsColor230   ctermfg=230 guifg=#ffffd7
-  hi def    dircolorsColor231   ctermfg=231 guifg=#ffffff
-  hi def    dircolorsColor232   ctermfg=232 guifg=#080808
-  hi def    dircolorsColor233   ctermfg=233 guifg=#121212
-  hi def    dircolorsColor234   ctermfg=234 guifg=#1c1c1c
-  hi def    dircolorsColor235   ctermfg=235 guifg=#262626
-  hi def    dircolorsColor236   ctermfg=236 guifg=#303030
-  hi def    dircolorsColor237   ctermfg=237 guifg=#3a3a3a
-  hi def    dircolorsColor238   ctermfg=238 guifg=#444444
-  hi def    dircolorsColor239   ctermfg=239 guifg=#4e4e4e
-  hi def    dircolorsColor240   ctermfg=240 guifg=#585858
-  hi def    dircolorsColor241   ctermfg=241 guifg=#626262
-  hi def    dircolorsColor242   ctermfg=242 guifg=#6c6c6c
-  hi def    dircolorsColor243   ctermfg=243 guifg=#767676
-  hi def    dircolorsColor244   ctermfg=244 guifg=#808080
-  hi def    dircolorsColor245   ctermfg=245 guifg=#8a8a8a
-  hi def    dircolorsColor246   ctermfg=246 guifg=#949494
-  hi def    dircolorsColor247   ctermfg=247 guifg=#9e9e9e
-  hi def    dircolorsColor248   ctermfg=248 guifg=#a8a8a8
-  hi def    dircolorsColor249   ctermfg=249 guifg=#b2b2b2
-  hi def    dircolorsColor250   ctermfg=250 guifg=#bcbcbc
-  hi def    dircolorsColor251   ctermfg=251 guifg=#c6c6c6
-  hi def    dircolorsColor252   ctermfg=252 guifg=#d0d0d0
-  hi def    dircolorsColor253   ctermfg=253 guifg=#dadada
-  hi def    dircolorsColor254   ctermfg=254 guifg=#e4e4e4
-  hi def    dircolorsColor255   ctermfg=255 guifg=#eeeeee
-else
-  hi def link dircolorsNumber     Number
+    autocmd CursorMoved,CursorMovedI <buffer> call s:preview_color('.')
+    autocmd CursorHold,CursorHoldI   <buffer> call s:reset_colors()
 endif
 
 let b:current_syntax = "dircolors"
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/j.vim
@@ -0,0 +1,43 @@
+" Vim syntax file
+" Language:	J
+" Maintainer:	David Bürgin <676c7473@gmail.com>
+" Last Change:	2013-09-21
+
+if exists("b:current_syntax")
+  finish
+endif
+
+syntax case match
+syntax sync minlines=50
+
+syn match jControl /\<\%(assert\|break\|case\|catch[dt]\=\|continue\|do\|else\%(if\)\=\|end\|fcase\|for\|if\|return\|select\|throw\|try\|whil\%(e\|st\)\)\./
+syn match jControl /\<\%(for\|goto\|label\)_\a\k*\./
+
+syn region jString oneline start=/'/ skip=/''/ end=/'/
+
+" Patterns for numbers in general, rational numbers, numbers with explicit
+" base, infinities, and numbers with extended precision.
+"
+" Matching J numbers is difficult. The regular expression used for the general
+" case roughly embodies this grammar sketch:
+"
+"         EXP     := /_?\d+(\.\d*)?([eE]_?\d+)?/
+"         COMP    := EXP  |  EXP (j|a[dr]) EXP
+"         PIEU    := COMP  |  COMP [px] COMP
+"
+" For the rest, a compromise between correctness and practicality was made.
+" See http://www.jsoftware.com/help/dictionary/dcons.htm for reference.
+syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\%(\%(j\|a[dr]\)_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\)\=\%([px]_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\%(\%(j\|a[dr]\)_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\)\=\)\=/
+syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=r_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=/
+syn match jNumber /\<_\=\d\+\%([eE]\d\+\)\=b_\=[0-9a-z]\+/
+syn match jNumber /\<__\=\>/
+syn match jNumber /\<_\=\d\+x\>/
+
+syn match jComment /NB\..*$/
+
+hi def link jControl Statement
+hi def link jString String
+hi def link jNumber Number
+hi def link jComment Comment
+
+let b:current_syntax = "j"
--- a/runtime/syntax/vhdl.vim
+++ b/runtime/syntax/vhdl.vim
@@ -1,12 +1,12 @@
 " Vim syntax file
 " Language:	VHDL
-" Maintainer:	Czo <Olivier.Sirol@lip6.fr>
+" Maintainer:	Daniel Kho <daniel.kho@tauhop.com>
+" Previous Maintainer:	Czo <Olivier.Sirol@lip6.fr>
 " Credits:	Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
-" Last Change:	2012 Jun 01
-" 		(Dominique Pelle added @Spell)
+" Last Changed:	2012 Feb 03 by Thilo Six
+" $Id: vhdl.vim,v 1.1 2004/06/13 15:34:56 vimboss Exp $
 
-" VHSIC Hardware Description Language
-" Very High Scale Integrated Circuit
+" VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -22,8 +22,8 @@ set cpo&vim
 " This is not VHDL. I use the C-Preprocessor cpp to generate different binaries
 " from one VHDL source file. Unfortunately there is no preprocessor for VHDL
 " available. If you don't like this, please remove the following lines.
-syn match cDefine "^#ifdef[ ]\+[A-Za-z_]\+"
-syn match cDefine "^#endif"
+"syn match cDefine "^#ifdef[ ]\+[A-Za-z_]\+"
+"syn match cDefine "^#endif"
 
 " case is not significant
 syn case ignore
@@ -31,11 +31,14 @@ syn case ignore
 " VHDL keywords
 syn keyword vhdlStatement access after alias all assert
 syn keyword vhdlStatement architecture array attribute
+syn keyword vhdlStatement assume assume_guarantee
 syn keyword vhdlStatement begin block body buffer bus
 syn keyword vhdlStatement case component configuration constant
-syn keyword vhdlStatement disconnect downto
+syn keyword vhdlStatement context cover
+syn keyword vhdlStatement default disconnect downto
 syn keyword vhdlStatement elsif end entity exit
 syn keyword vhdlStatement file for function
+syn keyword vhdlStatement fairness force
 syn keyword vhdlStatement generate generic group guarded
 syn keyword vhdlStatement impure in inertial inout is
 syn keyword vhdlStatement label library linkage literal loop
@@ -43,12 +46,17 @@ syn keyword vhdlStatement map
 syn keyword vhdlStatement new next null
 syn keyword vhdlStatement of on open others out
 syn keyword vhdlStatement package port postponed procedure process pure
+syn keyword vhdlStatement parameter property protected
 syn keyword vhdlStatement range record register reject report return
+syn keyword vhdlStatement release restrict restrict_guarantee
 syn keyword vhdlStatement select severity signal shared
 syn keyword vhdlStatement subtype
+syn keyword vhdlStatement sequence strong
 syn keyword vhdlStatement then to transport type
 syn keyword vhdlStatement unaffected units until use
-syn keyword vhdlStatement variable wait when while with
+syn keyword vhdlStatement variable
+syn keyword vhdlStatement vmode vprop vunit
+syn keyword vhdlStatement wait when while with
 syn keyword vhdlStatement note warning error failure
 
 " Special match for "if" and "else" since "else if" shouldn't be highlighted.
@@ -60,6 +68,7 @@ syn match   vhdlNone      "\<else\s\+if\
 " Predefined VHDL types
 syn keyword vhdlType bit bit_vector
 syn keyword vhdlType character boolean integer real time
+syn keyword vhdlType boolean_vector integer_vector real_vector time_vector
 syn keyword vhdlType string severity_level
 " Predefined standard ieee VHDL types
 syn keyword vhdlType positive natural signed unsigned
@@ -67,11 +76,11 @@ syn keyword vhdlType line text
 syn keyword vhdlType std_logic std_logic_vector
 syn keyword vhdlType std_ulogic std_ulogic_vector
 " Predefined non standard VHDL types for Mentor Graphics Sys1076/QuickHDL
-syn keyword vhdlType qsim_state qsim_state_vector
-syn keyword vhdlType qsim_12state qsim_12state_vector
-syn keyword vhdlType qsim_strength
+"syn keyword vhdlType qsim_state qsim_state_vector
+"syn keyword vhdlType qsim_12state qsim_12state_vector
+"syn keyword vhdlType qsim_strength
 " Predefined non standard VHDL types for Alliance VLSI CAD
-syn keyword vhdlType mux_bit mux_vector reg_bit reg_vector wor_bit wor_vector
+"syn keyword vhdlType mux_bit mux_vector reg_bit reg_vector wor_bit wor_vector
 
 " array attributes
 syn match vhdlAttribute "\'high"
@@ -122,14 +131,14 @@ syn case match
 " Values for standard VHDL types
 syn match vhdlVector "\'[0L1HXWZU\-\?]\'"
 " Values for non standard VHDL types qsim_12state for Mentor Graphics Sys1076/QuickHDL
-syn keyword vhdlVector S0S S1S SXS S0R S1R SXR S0Z S1Z SXZ S0I S1I SXI
+"syn keyword vhdlVector S0S S1S SXS S0R S1R SXR S0Z S1Z SXZ S0I S1I SXI
 syn case ignore
 
 syn match  vhdlVector "B\"[01_]\+\""
 syn match  vhdlVector "O\"[0-7_]\+\""
 syn match  vhdlVector "X\"[0-9a-f_]\+\""
 syn match  vhdlCharacter "'.'"
-syn region vhdlString start=+"+  end=+"+ contains=@Spell
+syn region vhdlString start=+"+  end=+"+
 
 " floating numbers
 syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
@@ -151,9 +160,15 @@ syn match   vhdlSpecial  "[().,;]"
 syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
 syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
 
-syn match vhdlComment "--.*$" contains=@Spell
+syn keyword vhdlTodo contained TODO FIXME
+
+syn region vhdlComment start="/\*" end="\*/" contains=vhdlTodo,@Spell
+syn match vhdlComment "--.*" contains=vhdlTodo,@Spell
 " syn match vhdlGlobal "[\'$#~!%@?\^\[\]{}\\]"
 
+"Modify the following as needed.  The trade-off is performance versus functionality.
+syn sync minlines=200
+
 " 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
@@ -165,19 +180,20 @@ if version >= 508 || !exists("did_vhdl_s
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink cDefine       PreProc
+"  HiLink cDefine       PreProc
   HiLink vhdlSpecial   Special
   HiLink vhdlStatement Statement
-  HiLink vhdlCharacter String
+  HiLink vhdlCharacter Character
   HiLink vhdlString    String
-  HiLink vhdlVector    String
-  HiLink vhdlBoolean   String
+  HiLink vhdlVector    Number
+  HiLink vhdlBoolean   Number
+  HiLink vhdlTodo      Todo
   HiLink vhdlComment   Comment
-  HiLink vhdlNumber    String
-  HiLink vhdlTime      String
+  HiLink vhdlNumber    Number
+  HiLink vhdlTime      Number
   HiLink vhdlType      Type
-  HiLink vhdlOperator  Type
-  HiLink vhdlGlobal    Error
+  HiLink vhdlOperator  Special
+"  HiLink vhdlGlobal    Error
   HiLink vhdlAttribute Type
 
   delcommand HiLink