" Vim syntax file " Language: Swill Templates " Maintainer: Jay Freeman " Last Change: 2007 Oct 6 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syn sync fromstart if b:swill == "clj" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlClojureCode elseif b:swill == "css" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlCssCode elseif b:swill == "html" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlHtmlCode elseif b:swill == "js" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlJsCode elseif b:swill == "mako" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlMakoCode elseif b:swill == "py" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlPythonCode elseif b:swill == "sql" syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlSqlCode else syn region swlAll \ start=+^+ \ end=+$+ \ contains=@swlCode endif " Numbers {{{ syn cluster swlNumber contains=swlDecNumber,swlHexNumber syn match swlHexNumber contained +\<-\?0x[0-9a-fA-F]\+\>+ syn match swlDecNumber contained +\<-\?[0-9]\+\>+ syn match swlDecNumber contained +\<-\?[0-9]\+\.[0-9]*\>+ syn match swlDecNumber contained +\<-\?\.[0-9]\+\>+ " }}} syn match swlOperator contained +\.+ syn match swlOperator contained +;+ syn keyword swlConstant contained true false null this syn keyword swlJsType contained class const enum export function let namespace type typeof interface var void Array Map Object any boolean number string syn keyword swlJsType contained Float32Array Float64Array Uint8Array Uint16Array Uint32Array syn keyword swlJsType contained abstract declare extends implements readonly static syn keyword swlJsSpecial contained public private protected syn match swlJsSpecial contained +@[a-zA-Z.]*+ syn keyword swlJsSpecial contained import from as super syn keyword swlJsStatement contained _assert async await break case catch continue default delete do else finally for in instanceof new of return switch try while with syn keyword swlIdentifier contained _catch _do _else _false _finally _for _function _if _in _new _null _return _this _throw _true _try _typeof _var _while _with syn keyword swlIdentifier contained _case _catch _default _delete _do _else _false _finally _for _function _if _in _new _null _return _switch _this _throw _true _try _typeof _var _while _with syn keyword swlJsSpecial contained constructor Packages Promise prototype undefined require syn match swlIdentifier contained +/\@+ syn match swlSpecial contained +_[_a-zA-Z0-9]*+ syn match swlJsStatement contained +\+ syn match swlJsStatement contained +\+ syn region swlJsStatement contained \ matchgroup=swlJsSpecial \ start=+if (+ \ end=+)[ \n]*throw new Error();+ \ oneline \ contains=@swlJsCode syn match swlSpecial contained +throw new Error();+ syn region swlInclude contained \ matchgroup=swlIncludeMarker \ start=+#<+ \ end=+>+ syn cluster swlSuper contains=swlScript,swlExpression,swlInclude,swlHtmlPythonScript,swlHtmlPythonDirective,swlMakoExpression syn cluster swlSub contains=swlHtmlTemplate,swlExpression,swlInclude,swlSqlTemplate,swlJsTemplate,swlCssTemplate,swlRegExTemplate,swlHtmlPythonScript,swlHtmlPythonDirective,swlMakoExpression syn cluster swlCode contains=@swlSub,swlJsStatement,swlJsType,swlParenthetical,@swlNumber,swlString,swlOperator,swlSpecial,swlConstant,swlJsRegEx,swlShortComment,swlLongComment,swlIdentifier syn match swlEscape contained +\\u[0-9a-fA-F]\{4\}+ syn match swlEscape contained +\\x[0-9a-fA-F]\{2\}+ syn match swlEscape contained +\\[^xu]+ syn match swlClose contained +[])}]+ syn region swlString contained \ start=+"+ \ end=+"+ \ contains=@swlSub,swlEscape syn region swlString contained \ start=+'+ \ end=+'+ \ contains=@swlSub,swlEscape syn region swlParenthetical contained \ matchgroup=swlOperator \ start=+{+ \ end=+}+ \ contains=@swlCode syn region swlParenthetical contained \ matchgroup=swlOperator \ start=+(+ \ end=+)+ \ contains=@swlCode "syn region swlHtmlPythonScript contained " \ matchgroup=swlMarker " \ start=+<%[=!]\?+ " \ end=+%>+ " \ contains=@swlPythonCode syn keyword swlTagName contained a abbr address b blockquote body cite code dd div dl dt em fieldset font h1 h2 h3 h4 h5 h6 head html i iframe img input label legend li link ol p pre small span strike strong sub sup table tbody td textarea tfoot th thead title tr tt type ul syn region swlShebang contained \ start=+#!+ \ end=+\n+ " Clojure Templates {{{ syn cluster swlClojureCode contains=swlClojureCharacter,swlClose,swlClojureComment,swlClojureConstant,swlClojureControl,swlClojureFunction,swlClojureKeyword,swlClojureIgnore,swlClojureLambda,swlClojureList,swlClojureLongComment,swlClojureMacro,swlClojureMap,swlClojureNamespace,@swlNumber,swlClojureParameter,swlClojureQuote,swlClojureRegEx,swlClojureScope,swlClojureSet,swlClojureShortComment,swlClojureSigil,swlClojureSpecial,swlClojureSQL,swlString,swlClojureType,swlClojureVariable,swlClojureVector "syn keyword swlClojureComment contained comment syn keyword swlClojureConstant contained false nil true syn match swlClojureKeyword contained +\<:.\{-}\>+ syn match swlClojureNamespace contained +\<\(.\>\@!\)*\/+ syn match swlClojureParameter contained +%[&1-9]\?+ syn match swlClojureScope contained +#>+ syn match swlClojureSigil contained +[@^]\<\|\>#+ syn match swlClojureType contained +\<[_$A-Za-z][_$A-Za-z0-9]*\(\.[_$A-Za-z][_$A-Za-z0-9]*\)\+\>+ syn match swlClojureQuote contained +\(['`]\|\~@\?\|#'\)+ syn match swlClojureCharacter +\\\([0-7]\{3\}\|u[0-9a-fA-F]\{4\}\|backspace\|formfeed\|newline\|return\|space\|tab\)\>\|\\.+ syn match swlClojureIgnore contained +#_+ syn region swlClojureIgnore contained \ matchgroup=swlClojureComment \ start=+#_(+ \ end=+)+ \ contains=@swlClojureCode syn region swlClojureLambda contained \ transparent \ matchgroup=swlSpecial \ start=+#(+ \ end=+)+ \ contains=@swlClojureCode syn region swlClojureList contained \ transparent \ matchgroup=swlSpecial \ start=+(+ \ end=+)+ \ contains=@swlClojureCode syn region swlClojureMap contained \ transparent \ matchgroup=swlSpecial \ start=+{+ \ end=+}+ \ contains=@swlClojureCode syn region swlClojureRegEx contained \ matchgroup=swlString \ start=+#"+ \ end=+"+ \ contains=@swlRegExCode syn region swlClojureSet contained \ transparent \ matchgroup=swlSpecial \ start=+#{+ \ end=+}+ \ contains=@swlClojureCode syn region swlClojureSQL contained \ matchgroup=swlSpecial \ start=+#?(+ \ end=+)+ \ contains=@swlSqlCode syn region swlClojureVector contained \ transparent \ matchgroup=swlSpecial \ start=+\[+ \ end=+\]+ \ contains=@swlClojureCode syn region swlClojureLongComment contained \ start=+#|+ \ end=+|#+ syn region swlClojureShortComment contained \ start=+;+ \ end=+\n+ syn region swlClojureShortComment contained \ start=+#!+ \ end=+\n+ syn region swlClojureComment contained \ matchgroup=swlClojureLongComment \ start=+(comment+ \ end=+)+ \ contains=@swlClojureCode syn keyword swlClojureControl contained if if-not if-let when when-not when-let when-first cond condp case try catch finally throw recur map mapcat reduce filter for doseq dorun doall dotimes map-indexed keep keep-indexed syn keyword swlClojureControl contained throw+ try+ syn keyword swlClojureSpecial contained . def do fn if let new quote var loop syn keyword swlClojureVariable contained *warn-on-reflection* this *assert* *agent* *ns* *in* *out* *err* *command-line-args* *print-meta* *print-readably* *print-length* *allow-unresolved-args* *compile-files* *compile-path* *file* *flush-on-newline* *math-context* *unchecked-math* *print-dup* *print-level* *use-context-classloader* *source-path* *clojure-version* *read-eval* *fn-loader* *1 *2 *3 *e syn keyword swlClojureMacro contained def- defn defn- defmacro defmulti defmethod defstruct defonce declare definline definterface defprotocol defrecord deftype and or -> assert with-out-str with-in-str with-open locking destructure ns dosync binding delay lazy-cons lazy-cat time assert with-precision with-local-vars .. doto memfn proxy amap areduce refer-clojure future lazy-seq letfn with-loading-context bound-fn extend extend-protocol extend-type reify with-bindings ->> syn keyword swlClojureFunction contained = not= not nil? false? true? complement identical? string? symbol? map? seq? vector? keyword? var? special-symbol? apply partial comp constantly identity comparator fn? re-matcher re-find re-matches re-groups re-seq re-pattern str pr prn print println pr-str prn-str print-str println-str newline macroexpand macroexpand-1 monitor-enter monitor-exit eval find-doc file-seq flush hash load load-file read read-line scan slurp subs sync test format printf loaded-libs use require load-reader load-string + - * / +' -' *' /' < <= == >= > dec dec' inc inc' min max neg? pos? quot rem zero? rand rand-int decimal? even? odd? float? integer? number? ratio? rational? bit-and bit-or bit-xor bit-not bit-shift-left bit-shift-right symbol keyword gensym count conj seq first rest ffirst fnext nfirst nnext second every? not-every? some not-any? concat reverse cycle interleave interpose split-at split-with take take-nth take-while drop drop-while repeat replicate iterate range into distinct sort sort-by zipmap line-seq butlast last nth nthnext next repeatedly tree-seq enumeration-seq iterator-seq coll? associative? empty? list? reversible? sequential? sorted? list list* cons peek pop vec vector peek pop rseq subvec array-map hash-map sorted-map sorted-map-by assoc assoc-in dissoc get get-in contains? find select-keys update-in key val keys vals merge merge-with max-key min-key create-struct struct-map struct accessor remove-method meta with-meta in-ns refer create-ns find-ns all-ns remove-ns import ns-name ns-map ns-interns ns-publics ns-imports ns-refers ns-resolve resolve ns-unmap name namespace require use set! find-var var-get var-set ref deref ensure alter ref-set commute agent send send-off agent-errors clear-agent-errors await await-for syn keyword swlClojureFunction contained instance? bean alength aget aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short make-array to-array to-array-2d into-array int long float double char boolean short byte parse add-classpath cast class get-proxy-class proxy-mappings update-proxy hash-set sorted-set set disj set? aclone add-watch alias alter-var-root ancestors await1 bases bigdec bigint bit-and-not bit-clear bit-flip bit-set bit-test counted char-escape-string char-name-string class? compare compile construct-proxy delay? derive descendants distinct? double-array doubles drop-last empty float-array floats force gen-class get-validator int-array ints isa? long-array longs make-hierarchy method-sig not-empty ns-aliases ns-unalias num partition parents pmap prefer-method primitives-classnames print-ctor print-dup print-method print-simple proxy-call-with-super proxy-super rationalize read-string remove remove-watch replace resultset-seq rsubseq seque set-validator! shutdown-agents subseq supers unchecked-add unchecked-dec unchecked-divide unchecked-inc unchecked-multiply unchecked-negate unchecked-subtract underive xml-seq trampoline atom compare-and-set! ifn? gen-interface intern init-proxy io! memoize proxy-name swap! release-pending-sends the-ns unquote while unchecked-remainder alter-meta! future-call methods mod pcalls prefers pvalues reset! realized? some-fn reset-meta! type vary-meta unquote-splicing sequence clojure-version counted? chunk-buffer chunk-append chunk chunk-first chunk-rest chunk-next chunk-cons chunked-seq? deliver future? future-done? future-cancel future-cancelled? get-method promise ref-history-count ref-min-history ref-max-history agent-error assoc! boolean-array booleans bound-fn* bound? byte-array bytes char-array char? chars conj! denominator disj! dissoc! error-handler error-mode extenders extends? find-protocol-impl find-protocol-method flatten frequencies get-thread-bindings group-by hash-combine juxt munge namespace-munge numerator object-array partition-all partition-by persistent! pop! pop-thread-bindings push-thread-bindings rand-nth reductions remove-all-methods restart-agent satisfies? set-error-handler! set-error-mode! short-array shorts shuffle sorted-set-by take-last thread-bound? transient vector-of with-bindings* fnil spit biginteger every-pred find-keyword unchecked-add-int unchecked-byte unchecked-char unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc-int unchecked-int unchecked-long unchecked-multiply-int unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract-int with-redefs with-redefs-f " }}} " Css Templates {{{ syn cluster swlCssCode contains=@swlSuper,swlCssBlock,swlCssClass,swlLongComment,swlTagName syn cluster swlCssStyle contains=@swlSuper,swlCssProperty,swlCssColor,swlCssNumber,swlCssUrl,swlCssConstant,swlCssSpecial,swlString,swlLongComment syn region swlCssUrl contained \ start=+url(+ \ end=+)+ syn match swlCssColor contained +#\<[0-9a-fA-F]\{3}\>+ syn match swlCssColor contained +#\<[0-9a-fA-F]\{6}\>+ syn match swlCssColor contained +\+ syn keyword swlCssConstant contained absolute armenian auto baseline block bold both center circle dashed decimal decimal-leading-zero disc dotted double georgian hidden inherit inside italic larger left lower-alpha lower-greek lower-latin lower-roman middle no-repeat none normal outside relative right upper-alpha upper-latin upper-roman smaller solid square top underline syn match swlCssConstant contained +\+ syn match swlCssConstant contained +\+ syn match swlCssConstant contained +\<\(sans\)\?-serif\>+ syn match swlCssNumber contained +\<-\?[0-9]\+\(\(em\|pt\|px\|s\)\>\|\>%\)\?+ syn match swlCssSpecial contained +\<-\(moz\|ms\|webkit\)-[-a-zA-Z0-9]*\>+ syn match swlCssSpecial contained +!\+ syn keyword swlCssProperty contained clear color content display ellipsis float left letter-spacing nowrap opacity outline overflow position top vertical-align visibility z-index syn keyword swlCssProperty contained bottom left right top syn match swlCssProperty contained "\" syn match swlCssProperty contained "\<\(box-sizing\|line-height\|white-space\)\>" syn match swlCssProperty contained "\" syn match swlCssProperty contained "\" syn match swlCssProperty contained "\<\(\(max\|min\)-\)\?\(height\|width\)\>" syn match swlCssProperty contained "\" syn match swlCssProperty contained "\" syn match swlCssProperty contained "\<\(margin\|padding\|border\)\(-\(top\|right\|bottom\|left\)\)\?\>" syn region swlCssBlock contained \ start=+{+ \ end=+}+ \ contains=@swlCssStyle " }}} " Html Templates {{{ syn cluster swlHtmlCode contains=@swlSuper,swlHtmlComment,swlHtmlDirective,swlHtmlScript,swlHtmlOpenTag,swlHtmlCloseTag,swlHtmlStyle,swlHtmlProcess,swlHtmlPythonScript,swlHtmlPythonDirective syn region swlHtmlOpenTag contained \ matchgroup=swlHtmlMarker \ start=+<%\@!+ \ end=+\(/ *\)\?>+ \ contains=@swlTagCode syn region swlHtmlCloseTag contained \ matchgroup=swlHtmlMarker \ start=++ \ contains=@swlTagCode syn region swlHtmlStyle contained \ matchgroup=swlMarker \ start=+]*>+ \ end=++ \ contains=@swlCssCode syn region swlHtmlScript contained \ matchgroup=swlMarker \ start=+]*>+ \ end=++ \ contains=@swlJsCode syn region swlHtmlComment contained \ start=++ syn region swlHtmlDirective contained \ matchgroup=swlMarker \ start=++ \ contains=@swlShtmlCode syn region swlHtmlPythonDirective contained \ matchgroup=swlMarker \ start=+<%@+ \ end=+%>+ \ contains=@swlPspCode syn region swlHtmlProcess contained \ start=++ " }}} " Python Templates {{{ syn cluster swlPythonCode contains=@swlSuper,swlPythonStatement,swlPythonType,swlPythonParenthetical,@swlNumber,swlString,swlOperator,swlSpecial,swlPythonConstant,swlIdentifier,swlPythonShortComment,swlPythonOperator syn keyword swlPythonConstant contained True False None self syn keyword swlPythonType contained bool buffer complex dict file float int list long str tuple syn keyword swlPythonStatement contained def elif else except finally for if import in pass return try while with syn keyword swlPythonOperator contained and is not or syn region swlPythonShortComment contained \ start=+#+ \ end=+\n+ syn match swlPythonStatement +#end+ syn region swlPythonParenthetical contained \ matchgroup=swlOperator \ start=+{+ \ end=+}+ \ contains=@swlPythonCode syn region swlPythonParenthetical contained \ matchgroup=swlOperator \ start=+(+ \ end=+)+ \ contains=@swlPythonCode " }}} " Psp Templates {{{ syn cluster swlPspCode contains=@swlSuper,swlPspDirective,swlString syn keyword swlPspDirective contained include file " }}} " Mako Templates {{{ syn cluster swlMakoCode contains=@swlHtmlCode,swlMakoExpression,swlMakoText,swlMakoDef,swlMakoDocComment,swlMakoBlock,swlMakoControl syn keyword swlMakoEnd contained enddef endfor endif endtry endwhile endwith syn region swlMakoBlock contained \ matchgroup=swlMarker \ start=+<%+ \ end=+%>+ \ contains=@swlPythonCode " XXX: improve matchgroup= syn region swlMakoDef contained \ matchgroup=swlHtmlMarker \ start=+<%def+ \ end=+>+ \ contains=@swlTagCode syn region swlMakoText contained \ start=+<%text>+ \ end=++ syn region swlMakoDocComment contained \ start=+<%doc>+ \ end=++ syn region swlMakoExpression contained \ matchgroup=swlMarker \ start=+${+ \ end=+}+ \ contains=@swlPythonCode syn region swlMakoControl contained \ matchgroup=swlMarker \ start=+^ *%+ \ end=+\n+ \ contains=@swlPythonCode,swlMakoEnd syn region swlHtmlPythonDirective contained \ matchgroup=swlMarker \ start=+<%include+ \ end=+/>+ \ contains=@swlPspCode syn region swlHtmlPythonDirective contained \ matchgroup=swlMarker \ start=+<%inherit+ \ end=+/>+ \ contains=@swlPspCode " }}} " Tag Templates {{{ syn cluster swlTagCode contains=@swlSuper,swlString,swlTagName,swlTagAttribute,swlTagOperator syn keyword swlTagName contained a img syn keyword swlTagAttribute contained class href rel src style syn match swlTagOperator contained +=+ " }}} " Shtml Templates {{{ syn cluster swlShtmlCode contains=@swlSuper,swlShtmlDirective,swlString syn keyword swlShtmlDirective contained elif else endif expr if include set value var virtual " }}} " Js Templates {{{ syn cluster swlJsCode contains=@swlSuper,swlShebang,swlJsStatement,swlJsType,swlJsParenthetical,@swlNumber,swlString,swlOperator,swlJsSpecial,swlSpecial,swlConstant,swlJsRegEx,swlShortComment,swlLongComment,swlIdentifier,swlMakoControl,swlMakoExpression,swlMakoBlock,swlJsMulti syn region swlJsMulti contained \ start=+`+ \ end=+`+ \ contains=@swlSub,swlEscape " XXX: support options, like g syn region swlJsRegEx contained \ matchgroup=swlMarker \ start=+/ \@!+ \ end=+/+ \ contains=@swlRegExCode syn region swlJsParenthetical contained \ matchgroup=swlOperator \ start=+{+ \ end=+}+ \ contains=@swlJsCode syn region swlJsParenthetical contained \ matchgroup=swlOperator \ start=+(+ \ end=+)+ \ contains=@swlJsCode " }}} " RegEx Templates {{{ syn cluster swlRegExCode contains=@swlSuper,swlEscape,swlRegExOp,swlRegExText,swlRegExGroup,swlRegExClose,swlRegExClass syn match swlRegExText contained +[^\\]+ syn match swlRegExOp contained +[.+?*^$|]+ syn match swlRegExClose contained +)+ syn match swlRegExRange contained +.-.+ syn region swlRegExClass contained \ matchgroup=swlRegExOp \ start=+\[^\?\]\?+ \ end=+\]+ \ contains=swlEscape,swlRegExText,swlRegExRange syn region swlRegExGroup contained \ matchgroup=swlRegExOp \ start=+(\(?:\?\)\?+ \ end=+)+ \ contains=@swlRegExCode " }}} " Sql Templates {{{ syn cluster swlSqlCode contains=@swlSuper,swlSqlStatement,swlSqlIdentifier,@swlNumber,swlSqlMarker,swlConstant,swlSqlType,swlSqlString,swlLongComment,swlSqlShortComment,swlSqlParenthetical,swlSqlClojure,swlSqlOperator,swlSqlArray,swlClose syn keyword swlSqlOperator contained and between exists ilike like is not or similar syn match swlSqlOperator contained "[<>]=\?\|+\|-\|:\?=\|!=\|;\|," syn match swlSqlOperator contained +||\|@@\|::\|\$\$+ syn region swlSqlArray contained \ matchgroup=swlSpecial \ start=+\[+ \ end=+\]+ \ contains=@swlSqlCode syn region swlSqlParenthetical contained \ matchgroup=swlSpecial \ start=+(+ \ end=+)+ \ contains=@swlSqlCode syn match swlSqlEscape contained +''+ syn region swlSqlString contained \ matchgroup=swlSqlString \ start=+'+ \ end=+'+ \ contains=swlSqlEscape syn keyword swlSqlStatement contained add alter as asc begin by cascade case check column commit constraint create declare delete default deferrable desc distinct drop else end enum first for foreign from function glob group having if in index inherits inner inout insert intersect into join key last left limit nulls offset on order out outer primary references rename replace return returning returns right rollback schema select sequence set table temporary then to truncate type union unique update user using values view when where with syn region swlSqlShortComment contained \ start=+--+ \ end=+\n+ syn match swlSqlMarker contained +?+ syn region swlSqlClojure contained \ matchgroup=swlSpecial \ start=+?\~\?+ \ end=+\>+ \ contains=@swlClojureCode syn region swlSqlClojure contained \ matchgroup=swlSpecial \ start=+?\~\?(+ \ end=+)+ \ contains=@swlClojureCode syn match swlSqlIdentifier contained +\<[_a-zA-Z][_a-zA-Z0-9]*\>+ syn region swlSqlIdentifier contained \ start=+"+ \ end=+"+ syn match swlSqlType contained +\