mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
135 lines
23 KiB
VimL
135 lines
23 KiB
VimL
|
" 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
|
||
|
"
|
||
|
" 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
|
||
|
|
||
|
setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
|
||
|
|
||
|
" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-002/vim_clojure_static.clj
|
||
|
" Clojure 1.5.0-RC6
|
||
|
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
|
||
|
syntax keyword clojureException catch finally throw try
|
||
|
syntax keyword clojureCond case clojure.core/case clojure.core/cond clojure.core/cond-> clojure.core/cond->> clojure.core/condp clojure.core/if-let clojure.core/if-not clojure.core/when clojure.core/when-first clojure.core/when-let clojure.core/when-not cond cond-> cond->> condp if-let if-not when when-first when-let when-not
|
||
|
syntax keyword clojureRepeat clojure.core/doall clojure.core/dorun clojure.core/doseq clojure.core/dotimes clojure.core/while doall dorun doseq dotimes while
|
||
|
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 cloj
|
||
|
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
|
||
|
|
||
|
" Keywords are symbols:
|
||
|
" static Pattern symbolPat = Pattern.compile("[:]?([\\D&&[^/]].*/)?([\\D&&[^/]][^/]*)");
|
||
|
" But they:
|
||
|
" * 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 region clojureString start=/L\="/ skip=/\\\\\|\\"/ end=/"/
|
||
|
|
||
|
syntax match clojureCharacter "\\."
|
||
|
syntax match clojureCharacter "\\o[0-7]\{3\}"
|
||
|
syntax match clojureCharacter "\\u[0-9]\{4\}"
|
||
|
syntax match clojureCharacter "\\space"
|
||
|
syntax match clojureCharacter "\\tab"
|
||
|
syntax match clojureCharacter "\\newline"
|
||
|
syntax match clojureCharacter "\\return"
|
||
|
syntax match clojureCharacter "\\backspace"
|
||
|
syntax match clojureCharacter "\\formfeed"
|
||
|
|
||
|
let s:radixChars = "0123456789abcdefghijklmnopqrstuvwxyz"
|
||
|
for s:radix in range(2, 36)
|
||
|
execute 'syntax match clojureNumber "\c\<-\?' . s:radix . 'r[' . strpart(s:radixChars, 0, s:radix) . ']\+\>"'
|
||
|
endfor
|
||
|
unlet! s:radixChars 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 clojureVarArg "&"
|
||
|
|
||
|
syntax match clojureQuote "'"
|
||
|
syntax match clojureQuote "`"
|
||
|
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 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
|
||
|
|
||
|
" 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
|
||
|
|
||
|
let b:current_syntax = "clojure"
|
||
|
|
||
|
" vim:sts=4 sw=4 et:
|