summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2013-09-22 14:42:24 +0200
committerBram Moolenaar <bram@vim.org>2013-09-22 14:42:24 +0200
commitf751704c8764284726e8857a47d6a503ab113bf2 (patch)
treed32c988c8eed8623ae5c064e390ff83226605a7c
parent0a3b19ec8695274c30b41ff8a2c9830b98689057 (diff)
downloadvim-f751704c8764284726e8857a47d6a503ab113bf2.tar.gz
Update runtime files. Add support for J.
-rw-r--r--runtime/autoload/clojurecomplete.vim28
-rw-r--r--runtime/doc/change.txt2
-rw-r--r--runtime/doc/diff.txt10
-rw-r--r--runtime/doc/indent.txt4
-rw-r--r--runtime/doc/pi_vimball.txt2
-rw-r--r--runtime/doc/todo.txt48
-rw-r--r--runtime/doc/undo.txt7
-rw-r--r--runtime/doc/usr_45.txt4
-rw-r--r--runtime/doc/version5.txt2
-rw-r--r--runtime/doc/version7.txt2
-rw-r--r--runtime/filetype.vim17
-rw-r--r--runtime/ftplugin/clojure.vim61
-rw-r--r--runtime/ftplugin/j.vim17
-rw-r--r--runtime/indent/clojure.vim574
-rw-r--r--runtime/indent/j.vim37
-rw-r--r--runtime/syntax/apache.vim11
-rw-r--r--runtime/syntax/clojure.vim207
-rw-r--r--runtime/syntax/css.vim532
-rw-r--r--runtime/syntax/dircolors.vim926
-rw-r--r--runtime/syntax/j.vim43
-rw-r--r--runtime/syntax/vhdl.vim64
21 files changed, 1199 insertions, 1399 deletions
diff --git a/runtime/autoload/clojurecomplete.vim b/runtime/autoload/clojurecomplete.vim
index 704ea074..aa8751f6 100644
--- 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
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index ea5a493d..96a9c8b4 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1126,7 +1126,7 @@ less than one line (the small delete register is used then). An exception is
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
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index ddf8aacd..96dff350 100644
--- 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 with the buffer, you can edit another
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.
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 74e08043..b700d15e 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -581,8 +581,8 @@ CLOJURE *ft-clojure-indent* *clojure-indent*
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.
diff --git a/runtime/doc/pi_vimball.txt b/runtime/doc/pi_vimball.txt
index 720d9478..bbc74988 100644
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -188,7 +188,7 @@ WINDOWS *vimball-windows*
* 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
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 9ce30c3f..0c61721c 100644
--- 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 extra information.
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 number. (Benoit Pierre, 2013 Aug 27,
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 work for "." after "cgn". (Dimitar
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 version and patch at the same time.
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 Aug 9)
: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 @@ Works OK for echo, just not for ":call" and ":call call()". (Ted, 2011 Mar
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. (Christian Brabandt, 2012 Dec)
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 relative file name ".mozilla/...".
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.
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index 2589a151..414a63b5 100644
--- 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 paths directly to undo files. Vim will
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.
diff --git a/runtime/doc/usr_45.txt b/runtime/doc/usr_45.txt
index 30369817..828ea6fe 100644
--- a/runtime/doc/usr_45.txt
+++ b/runtime/doc/usr_45.txt
@@ -328,8 +328,8 @@ actually use Vim to convert a file. Example: >
*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
diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt
index 15fe92a2..1cc6a255 100644
--- 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
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 4cf2e979..da82dcae 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -2395,7 +2395,7 @@ with special attributes were redrawn. Now only do this for characters that
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.
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 70c1fe13..26629bdb 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 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/share/alsa/alsa.conf,*/etc/asound.conf set
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 inittab
" 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
diff --git a/runtime/ftplugin/clojure.vim b/runtime/ftplugin/clojure.vim
index 91aba80f..2b935a57 100644
--- 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
diff --git a/runtime/ftplugin/j.vim b/runtime/ftplugin/j.vim
new file mode 100644
index 00000000..8e3bc67e
--- /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<"
diff --git a/runtime/indent/clojure.vim b/runtime/indent/clojure.vim
index 9a00fb32..7d0c2aa9 100644
--- 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
+
+" TODO: Indenting after multibyte characters is broken:
+" (let [Δ (if foo
+" bar ; Indent error
+" baz)])
-" Only load this indent file when no other was loaded.
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_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_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_align_multiline_strings')
- let g:clojure_align_multiline_strings = 0
- endif
-
- function! s:SynIdName()
- return synIDattr(synID(line("."), col("."), 0), "name")
- 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:IsParen()
- return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' &&
- \ s:SynIdName() !~? '\vstring|comment'
- 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:RestorePosition(value)
- let [b, l, c] = a:value
- if bufnr("%") != b
- execute b "buffer!"
- endif
- call setpos(".", [0, l, c, 0])
- 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
-
- let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat)
- return [pos[0], virtcol(pos)]
- endfunction
-
- 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
-
- " 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')
-
- if p != [0, 0]
- return p[1] - 1
- endif
-
- return indent(".")
- 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')
-
- " 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 now at toplevel.
- if nextParen == [0, 0]
- return 0
- endif
- call cursor(nextParen)
-
- call search('\S', 'W')
- if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>'
- return 1
- endif
-
- return 0
- 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
-
- " 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)
-
- " 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
-
- " 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
-
- " 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
-
- " 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
-
- " 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
-
- " 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 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
-
- normal! ge
- return virtcol(".") + 1
- endfunction
-
- setlocal indentexpr=GetClojureIndent()
+ 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_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_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
+
+ function! s:SynIdName()
+ return synIDattr(synID(line("."), col("."), 0), "name")
+ 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: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
+
+ 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
+
+ let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat)
+ return [pos[0], virtcol(pos)]
+ endfunction
+
+ 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
+
+ " 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')
+
+ 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: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 now at toplevel.
+ if nextParen == [0, 0]
+ return 0
+ endif
+ call cursor(nextParen)
+
+ 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! 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
+
+ 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])
+
+ " 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
+
+ " 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)
+
+ 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 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
+
+ " 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', '')
+
+ 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
+
+ call search('\v\_s', 'cW')
+ call search('\v\S', 'W')
+ if paren[0] < line(".")
+ return paren[1] + &shiftwidth - 1
+ endif
+
+ call search('\v\S', 'bW')
+ return virtcol(".") + 1
+ endfunction
+
+ 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
diff --git a/runtime/indent/j.vim b/runtime/indent/j.vim
new file mode 100644
index 00000000..056c20a4
--- /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
diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim
index db08ab45..322e4351 100644
--- 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 NOT
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
diff --git a/runtime/syntax/clojure.vim b/runtime/syntax/clojure.vim
index 3108148f..09b8b1dd 100644
--- 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
"
-" Maintainer: Sung Pae <self@sungpae.com>
-" URL: https://github.com/guns/vim-clojure-static
-" License: Same as Vim
-" Last Change: 05 February 2013
-
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
-endif
+" 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: 08 September 2013
-setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
+if exists("b:current_syntax")
+ finish
+endif
-" 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.core/doall clojure.core/dorun clojure.core/
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 *agent* *allow-unresolved-vars* *assert*
" * 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 match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained
-syntax region clojureString start=/L\="/ skip=/\\\\\|\\"/ end=/"/
+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 region clojureRegexp start=/L\=\#"/ skip=/\\\\\|\\"/ end=/"/
-
-syntax match clojureComment ";.*$" contains=clojureTodo,@Spell
+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 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
+
+" 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
-
-HiLink clojureConstant Constant
-HiLink clojureBoolean Boolean
-HiLink clojureCharacter Character
-HiLink clojureKeyword Keyword
-HiLink clojureNumber Number
-HiLink clojureString String
-HiLink clojureRegexp Constant
-
-HiLink clojureVariable Identifier
-HiLink clojureCond Conditional
-HiLink clojureDefine Define
-HiLink clojureException Exception
-HiLink clojureFunc Function
-HiLink clojureMacro Macro
-HiLink 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
-
-HiLink clojureComment Comment
-HiLink clojureTodo Todo
-
-HiLink clojureError Error
-
-HiLink clojureParen Delimiter
-
-delcommand HiLink
+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
+
+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
+
+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
+
+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
+
+highlight default link clojureComment Comment
+highlight default link clojureCommentTodo Todo
+
+highlight default link clojureError Error
+
+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
diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim
index 8b36b723..daca2e05 100644
--- 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:current_syntax == "css"
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 meta noframes noscript ol optgroup
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 time track video wbr
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
-
-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
-
-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\)"
-
+" 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
+
+" 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
+
+" @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 slategrey snow springgreen steelblue ta
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*important\>"
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 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
-
-" 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
-
-
-syn match cssAnimationProp contained "\<animation\(-\(name\|duration\|timing-function\|delay\|iteration-cout\|play-state\)\)\=\>"
+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 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\)\)\=\>"
+
+" animation-direction attributes
+syn keyword cssAnimationAttr contained alternate reverse
+syn match cssAnimationAttr contained "\<alternate-reverse\>"
+
+" 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
+
+" background-position attributes
+syn keyword cssBackgroundAttr contained left center right top bottom
+
+" background-repeat attributes
+syn match cssBackgroundAttr contained "\<no-repeat\>"
+syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
+syn keyword cssBackgroundAttr contained space round
+" background-size attributes
+syn keyword cssBackgroundAttr contained cover contain
-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\)\)\=\>"
+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 cssBackgroundProp contained "\<background\(-\(color\|image\|attachment\|position\|clip\|origin\|size\)\)\=\>"
-syn keyword cssBackgroundAttr contained center fixed over contain
-syn match cssBackgroundAttr contained "\<no-repeat\>"
-syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
-syn match cssBackgroundAttr contained "\<\(border\|content\|padding\)-box\>"
+" 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
-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-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 width
" 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\)\>"
-syn keyword cssGeneratedContentProp contained content quotes crop
+" font-style attributes
+syn keyword cssFontAttr contained italic oblique
+
+" 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 "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic
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 collapse separate show hide once always
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 ellipsis unrestricted suppress
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\)\)\=\>"
-syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
-syn match cssUIProp contained "\<outline-offset\>"
+" 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 keyword cssUIProp contained appearance icon resize
-syn keyword cssUIAttr contained window button menu field
+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\(-\(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 mix
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
+" mobile text
+syn match cssMobileTextProp contained "\<text-size-adjust\>"
-" 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\>"
-" 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=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEsca
" 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_syn_inits")
HiLink cssComment Comment
HiLink cssVendor Comment
+ HiLink cssHacks Comment
HiLink cssTagName Statement
HiLink cssDeprecated Error
HiLink cssSelectorOp Special
HiLink cssSelectorOp2 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 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 cssAttrComma Special
+
+ 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 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_syn_inits")
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_syn_inits")
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
diff --git a/runtime/syntax/dircolors.vim b/runtime/syntax/dircolors.vim
index fe1fcaec..c94d7206 100644
--- 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
-syn region dircolorsComment start='#' end='$' contains=dircolorsTodo,@Spell
+syntax region dircolorsComment start='#' end='$' contains=dircolorsTodo,@Spell
-syn keyword dircolorsKeyword TERM LEFT LEFTCODE RIGHT RIGHTCODE END ENDCODE
+syntax keyword dircolorsKeyword TERM LEFT LEFTCODE RIGHT RIGHTCODE END ENDCODE
-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
+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
-if exists("dircolors_is_slackware")
- syn keyword dircolorsKeyword COLOR OPTIONS EIGHTBIT
+" Slackware only, ignored by GNU dircolors.
+syntax keyword dircolorsKeyword COLOR OPTIONS EIGHTBIT
+
+syntax match dircolorsExtension '^\s*\zs[.*]\S\+'
+
+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
-
-syn match dircolorsColorPair contained '.*$'
- \ transparent contains=@dircolorsColors
-
-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
-
- 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
-
- 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\+\>'
+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
+
+function! s:set_guicolors() abort
+ let s:guicolors = {}
+
+ 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
+
+ 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, ';')
+
+ 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 &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
+if has('gui_running') || &t_Co != ''
+ call s:reset_colors()
+
+ autocmd CursorMoved,CursorMovedI <buffer> call s:preview_color('.')
+ autocmd CursorHold,CursorHoldI <buffer> call s:reset_colors()
endif
let b:current_syntax = "dircolors"
diff --git a/runtime/syntax/j.vim b/runtime/syntax/j.vim
new file mode 100644
index 00000000..6ba9366a
--- /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"
diff --git a/runtime/syntax/vhdl.vim b/runtime/syntax/vhdl.vim
index 5d978ccd..db51fa50 100644
--- 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\>\s"
" 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_syntax_inits")
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