Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Fix to Clojure syntax highlighting in Sublime Text to treat commas as whitespace
--- /Users/davidf/Desktop/Clojure.old.tmLanguage 2012-07-03 18:36:29.000000000 -0700
+++ /Users/davidf/Desktop/Clojure.new.tmLanguage 2013-09-01 18:41:36.000000000 -0700
@@ -329,7 +329,7 @@
</dict>
<dict>
<key>begin</key>
- <string>[^\s]</string>
+ <string>[^\s,]</string>
<key>end</key>
<string>[^\]]</string>
<key>name</key>
@@ -609,7 +609,7 @@
</dict>
<dict>
<key>begin</key>
- <string>[^\s]</string>
+ <string>[^\s,]</string>
<key>end</key>
<string>[^\]]</string>
<key>name</key>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>comment</key>
<string>Symbol pattern : [a-zA-Z+!\-_?0-9*~#@'`/.$=]</string>
<key>fileTypes</key>
<array>
<string>clj</string>
</array>
<key>foldingStartMarker</key>
<string>(?x)^ [ \t]* \(
(?&lt;par&gt;
( [^()\n]++ | \( \g&lt;par&gt; \)? )*+
)
$</string>
<key>foldingStopMarker</key>
<string>^\s*$</string>
<key>keyEquivalent</key>
<string>^~C</string>
<key>name</key>
<string>Clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#function</string>
</dict>
<dict>
<key>include</key>
<string>#function_multi_method</string>
</dict>
<dict>
<key>include</key>
<string>#macro</string>
</dict>
<dict>
<key>include</key>
<string>#namespace</string>
</dict>
<dict>
<key>include</key>
<string>#sexpr</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>all</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function</string>
</dict>
<dict>
<key>include</key>
<string>#function_multi_method</string>
</dict>
<dict>
<key>include</key>
<string>#lambda</string>
</dict>
<dict>
<key>include</key>
<string>#macro</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#expr</string>
</dict>
<dict>
<key>include</key>
<string>#sexpr</string>
</dict>
</array>
</dict>
<key>binding</key>
<dict>
<key>comment</key>
<string>consume bindings to the end, dual recursive with binding_exp</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>comment</key>
<string>TODO: merge with parameters ??</string>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.parameters.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_variable</string>
</dict>
<dict>
<key>match</key>
<string>\&amp;</string>
<key>name</key>
<string>keyword.operator.varargs.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>keyword.operator.symbolargs.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#parameters</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_map</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#binding_exp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>comment</key>
<string>TODO: merge with map ??</string>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.parameters.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_variable</string>
</dict>
<dict>
<key>match</key>
<string>(:as|:or|:keys|:strs|:syms)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>keyword.operator.symbolargs.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#parameters</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_map</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#binding_exp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(:let|:when|:while)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.symbolargs.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding.symbolargs.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#binding_exp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>comment</key>
<string>symbol matching</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding.symbole.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>variable.parameter.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#binding_exp</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>[^\s,]</string>
<key>end</key>
<string>[^\]]</string>
<key>name</key>
<string>invalid.illegal.bindings.clojure</string>
</dict>
</array>
</dict>
<key>binding_exp</key>
<dict>
<key>comment</key>
<string>consume bindings to the end, dual recursive with binding</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#operator_special</string>
</dict>
<dict>
<key>begin</key>
<string>(\(\)|{}|\[\]|#{})</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.constant.language.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=#?\()</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.sexp.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=#?\()</string>
<key>end</key>
<string>(?&lt;=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function</string>
</dict>
<dict>
<key>include</key>
<string>#function_multi_method</string>
</dict>
<dict>
<key>include</key>
<string>#lambda</string>
</dict>
<dict>
<key>include</key>
<string>#macro</string>
</dict>
<dict>
<key>include</key>
<string>#sexpr</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\[)</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.begin.clojure</string>
</dict>
</dict>
<key>comment</key>
<string>TODO: merge with vector</string>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\{)</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.begin.clojure</string>
</dict>
</dict>
<key>comment</key>
<string>TODO: merge with map</string>
<key>end</key>
<string>}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=#\{)</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.set.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#set</string>
</dict>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=")|(?=\\)|(?=\:)|(?=\#")</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.string.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>comment</key>
<string>symbol matching</string>
<key>end</key>
<string>(?=\])</string>
<key>name</key>
<string>meta.structure.binding_exp.symbole.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>[^\s,]</string>
<key>end</key>
<string>[^\]]</string>
<key>name</key>
<string>invalid.illegal.bindings.clojure</string>
</dict>
</array>
</dict>
<key>bindings_form</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>comment</key>
<string>bindings followed by all</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.bindings.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#binding</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>comment</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(;;).*(;;)$\n?</string>
<key>name</key>
<string>comment.line.semicolon.double.banner.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(;;).*$\n?</string>
<key>name</key>
<string>comment.line.semicolon.double.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.clojure</string>
</dict>
</dict>
<key>match</key>
<string>^(;).*$\n?</string>
<key>name</key>
<string>comment.line.semicolon.start.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(;).*$\n?</string>
<key>name</key>
<string>comment.line.semicolon.clojure</string>
</dict>
</array>
</dict>
<key>expr</key>
<dict>
<key>name</key>
<string>meta.expr.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#vector</string>
</dict>
<dict>
<key>include</key>
<string>#map</string>
</dict>
<dict>
<key>include</key>
<string>#set</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<key>function</key>
<dict>
<key>begin</key>
<string>\(\s*(defn\-?)\s</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.type.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.terminator.function.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>match</key>
<string>\s*</string>
</dict>
<dict>
<key>include</key>
<string>#function_name</string>
</dict>
<dict>
<key>include</key>
<string>#function_body_comment</string>
</dict>
</array>
</dict>
<key>function_body</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\(\s*(?=\[)</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.body.code.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=\[)</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.function.body.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>function_body_comment</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.quoted.double.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.quoted.double.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>string.docstring.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_escape</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.metadata.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#metadata_patterns</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#function_body</string>
</dict>
</array>
</dict>
<key>function_multi_method</key>
<dict>
<key>begin</key>
<string>\(\s*(defmethod\-?)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.type.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.multi_method.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>meta.function.multi_method.name.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function_name</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#operator_special</string>
</dict>
<dict>
<key>begin</key>
<string>(\(\)|{}|\[\]|#{})</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.constant.language.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=#?\()</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.sexp.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=#?\()</string>
<key>end</key>
<string>(?&lt;=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function</string>
</dict>
<dict>
<key>include</key>
<string>#function_multi_method</string>
</dict>
<dict>
<key>include</key>
<string>#lambda</string>
</dict>
<dict>
<key>include</key>
<string>#macro</string>
</dict>
<dict>
<key>include</key>
<string>#sexpr</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\[)</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\[)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.begin.clojure</string>
</dict>
</dict>
<key>comment</key>
<string>TODO: merge with vector</string>
<key>end</key>
<string>(\])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])\s*</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\{)</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\{)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.begin.clojure</string>
</dict>
</dict>
<key>comment</key>
<string>TODO: merge with map</string>
<key>end</key>
<string>}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=#\{)</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.set.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#set</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=")|(?=\\)|(?=\:)|(?=\#")</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.string.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>comment</key>
<string>symbol matching</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.structure.multi_method_exp.symbole.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?&lt;=[a-zA-Z+!\-_?0-9*~#@'`/.$=])(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol_java_inherited_class</string>
</dict>
<dict>
<key>include</key>
<string>#keyword</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_body</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>comment</key>
<string>Need to match a single expression like binding-exp</string>
</dict>
</array>
</dict>
<key>function_name</key>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>comment</key>
<string>symbol matching</string>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>entity.name.function.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>begin</key>
<string>-(?=[a-zA-Z+!\-_?*~#@'`/.$=])</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.prefix.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<key>genclass_parameters</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#gencommon_parameters</string>
</dict>
<dict>
<key>begin</key>
<string>(:extends)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>meta.other.genclass.extends.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol_java_inherited_class</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(:implements)\s+(\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.other.genclass.implements.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol_java_inherited_class</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(:constructors)\s+(\{)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>meta.other.genclass.constructors.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.other.genclass.constructor.signature.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>comment</key>
<string>TODO: make a rule java Class (storage)</string>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>storage.type.java.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(:exposes)\s+(\{)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>meta.other.genclass.exposes.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\{</string>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>meta.other.genclass.exposes.get_set.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>:(get|set)</string>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>match</key>
<string>:(init|main|factory|state|prefix|load-impl-ns|implements|constructors|exposes|impl-ns|exposes-methods|methods)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<key>gencommon_parameters</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>begin</key>
<string>(:name)\s+(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>meta.other.genclass.name.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>entity.name.namespace.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(:methods)\s+(\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.other.genclass.methods.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.other.genclass.method.signature.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.other.genclass.method.args.signature.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>comment</key>
<string>TODO: make a rule java Class (storage)</string>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>storage.type.java.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=]+\s*])</string>
<key>end</key>
<string>.|$</string>
<key>name</key>
<string>storage.type.java.genclass.return_type.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>geninterface_parameters</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#gencommon_parameters</string>
</dict>
<dict>
<key>begin</key>
<string>(:extends)\s+(\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>meta.other.genclass.implements.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol_java_inherited_class</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>keyword</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b((if-not|if|cond|do|let|loop|recur|throw|try|catch|finally|new|trampoline)\b|(set!|swap!|compare-and-set!))(?![*+!_?\-])</string>
<key>name</key>
<string>keyword.control.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(monitor-enter|monitor-exit|assoc|touch|drop|take|concat|prn|into|cons|first|flatten|rest|frest|rrest|second|lazy-cat|lazy-cons|conj|await|range|iterate)\b(?![*+!_?\-])</string>
<key>name</key>
<string>keyword.other.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(str|print(ln)?|eval|def|defmacro|defn|quote|var|fn|defmulti|defmethod|map|list|hash-map|vector|agent|declare|intern|macroexpand|macroexpand-1)\b(?![*+!_?\-])</string>
<key>name</key>
<string>storage.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(-&gt;|\.\.|amap|and|areduce|assert|binding|comment|cond|definline|(def[a-z\-]*)|defmatch|defmethod|defmulti|defn|defn-|defonce|defstruct|delay|doc|doseq|dosync|dotimes|doto|fn|for|if-let|lazy-cons|let|locking|loop|memfn|ns|or|prefer-method|proxy-super|proxy|refer-clojure|remove-method|sync|time|when-first|when-let|when-not|when|while|with-in-str|with-local-vars|with-open|with-out-str|with-precision|memoize)\b(?![*+!_?\-])</string>
<key>name</key>
<string>support.function.match.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.mark.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(rational|associative|branch|class|coll|contains|decimal|delay|distinct|empty|end|even|every|false|float|fn|identical|instance|integer|isa|keyword|list|map|neg|nil|not-any|not-every|number|odd|pos|ratio|reversible|seq|sequential|set|sorted|special-symbol|string|symbol|true|var|zero|vector|ifn)(\?)(?![*+!_?\-])</string>
<key>name</key>
<string>support.function.tester.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.mark.clojure</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.other.mark.clojure</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.other.mark.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(not(=)|list(\*)|io(!))(?![*+!_?\-])</string>
<key>name</key>
<string>support.function.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(zipper|zipmap|xml-zip|xml-seq|with-meta|vector-zip|vector|vec|var-set|var-get|vals|val|use|update-proxy|update-in|up|union|underive|unchecked-subtract|unchecked-negate|unchecked-multiply|unchecked-inc|unchecked-divide|unchecked-dec|unchecked-add|tree-seq|to-array-2d|to-array|test|take-while|take-nth|symbol|supers|subvec|subseq|subs|struct-map|struct|str|split-with|split-at|sorted-set|sorted-map-by|sorted-map|sort-by|sort|some|slurp|shutdown-agents|short|set-validator|set|seque|seq-zip|seq|send-off|send|select-keys|select|rsubseq|rseq|root|rights|right|rfirst|reverse|resultset-seq|resolve|require|replicate|replace|repeatedly|repeat|rename-keys|rename|remove-ns|remove|rem|refer|ref-set|ref|reduce|read-string|read-line|read|re-seq|re-pattern|re-matches|re-matcher|re-groups|re-find|rationalize|rand-int|rand|quot|pvec|psummary|psort|proxy-mappings|project|prn-str|println-str|println|printf|print-str|print|preduce|pr-str|pr|pop|pmin|pmax|pmap|pfilter-nils|pfilter-dupes|peek|pdistinct|path|partition|partial|parse|parents|par|pany|num|nthrest|nth|ns-unmap|ns-unalias|ns-resolve|ns-refers|ns-publics|ns-name|ns-map|ns-interns|ns-imports|ns-aliases|not=|not-empty|not|node|next|newline|namespace|name|min-key|min|meta|merge-with|merge|max-key|max|matchexpand-1|matchexpand|mapcat|map-invert|map|make-node|make-hierarchy|make-array|long-array|long|loaded-libs|load-string|load-reader|load-file|load|list*|list|line-seq|lefts|left|last|keyword|keys|key|join|iterator-seq|into-array|intersection|interpose|interleave|int-array|int|inspect-tree|inspect-table|insert-right|insert-left|insert-child|index|inc|in-ns|import|identity|hash-set|hash-map|hash|get-validator|get-proxy-class|get-in|get|gensym|gen-class|gen-interface|gen-and-save-class|gen-and-load-class|format|force|fnseq|flush|float-array|float|find-var|find-ns|find-doc|find|filter|file-seq|ffirst|eval|enumeration-seq|ensure|empty|edit|drop-while|drop-last|down|double-array|double|dorun|doall|distinct|dissoc|disj|difference|descendants|derive|deref|dec|cycle|create-struct|create-ns|count|construct-proxy|constantly|conj|complement|compare|comparator|comp|commute|clojure.set|clojure.parallel|clojure.inspector|clear-agent-errors|class|children|char|cast|cache-seq|byte|butlast|boolean|bit-xor|bit-test|bit-shift-right|bit-shift-left|bit-set|bit-or|bit-not|bit-flip|bit-clear|bit-and-not|bit-and|bigint|bigdec|bean|bases|await-for|assoc-in|aset-short|aset-long|aset-int|aset-float|aset-double|aset-char|aset-byte|aset-boolean|aset|array-map|apply|append-child|ancestors|alter-var-root|alter|all-ns|alias|alength|aget|agent-errors|agent|add-classpath|aclone|accessor|compile|longs|doubles|ints|floats|atom)\b(?![*+!_?\-])</string>
<key>name</key>
<string>support.function.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b(true|false|nil)\b(?![*+!_?\-])</string>
<key>name</key>
<string>constant.language.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(\(\)|{}|\[\]|#{})</string>
<key>name</key>
<string>constant.language.clojure</string>
</dict>
<dict>
<key>comment</key>
<string>TODO : clean this ?</string>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b:(private|doc|test|tag)\b(?![*+!_?\-])</string>
<key>name</key>
<string>storage.modifier.clojure</string>
</dict>
<dict>
<key>comment</key>
<string>TODO : clean this ?</string>
<key>match</key>
<string>(?&lt;![*+!_?\-])\b:(file|line|name|ns|match|argslist)\b(?![*+!_?\-])</string>
<key>name</key>
<string>support.variable.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![*+!_?\-])\*(agent|allow-unresolved-vars|command-line-args|compile-files|compile-path|err|file|flush-on-newline|in|macro-meta|math-context|ns|out|print-dup|print-length|print-level|print-meta|print-readably|proxy-classes|use-context-classloader|warn-on-reflection)\*(?![*+!_?\-])</string>
<key>name</key>
<string>support.variable.global.clojure</string>
</dict>
</array>
</dict>
<key>lambda</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\(\s*(fn)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.type.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.lambda.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#function_name</string>
</dict>
<dict>
<key>include</key>
<string>#function_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(#)\(</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.type.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.lambda.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#sexpr_special</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>macro</key>
<dict>
<key>begin</key>
<string>\(\s*(\b(defmacro\-?))\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.type.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.macro.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>match</key>
<string>\s*</string>
</dict>
<dict>
<key>include</key>
<string>#function_name</string>
</dict>
<dict>
<key>include</key>
<string>#function_body_comment</string>
</dict>
</array>
</dict>
<key>map</key>
<dict>
<key>begin</key>
<string>{(?!})</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;!{)}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<key>metadata</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#?\^{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>punctuation.metadata.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#metadata_patterns</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>#?\^"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>string.metadata.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.punctuation.definition.metadata.begin.clojure</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.java.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(#?\^)([a-zA-Z+!\-_?0-9*/.$=]+)</string>
<key>name</key>
<string>punctuation.metadata.class.clojure</string>
</dict>
</array>
</dict>
<key>metadata_patterns</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(:tag|:doc|:arglists|:private|:macro|:name|:ns|:inline-arities|:inline|:line|:file)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>support.other.keyword.namespace.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=:tag)\s+([a-zA-Z+!\-_?0-9*/.$=]+)</string>
<key>name</key>
<string>storage.type.java.clojure</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=:doc)\s+"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.quoted.double.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>string.quoted.double.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>string.docstring.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_escape</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<key>namespace</key>
<dict>
<key>begin</key>
<string>\(\s*(ns)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.namespace.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.namespace.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>entity.name.namespace.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#namespace_body</string>
</dict>
</array>
</dict>
<key>namespace_body</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(:refer-clojure|:require|:use|:import|:load|:exclude|:as|:only)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>support.other.keyword.namespace.clojure</string>
</dict>
<dict>
<key>begin</key>
<string>\(\s*(:gen-class)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.keyword.genclass.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.function.genclass_form.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#genclass_parameters</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#namespace_body</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#namespace_body</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>number</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.arithmetic.ratio.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(-|\+)?\b[0-9]+(/)[0-9]+\b</string>
<key>name</key>
<string>constant.numeric.float.ratio.clojure</string>
</dict>
<dict>
<key>match</key>
<string>[-+]?\b[0-9]+((\.[0-9]+([eE][-+]?[0-9]+)?)|((\.[0-9]+)?[eE][-+]?[0-9]+))?\b</string>
<key>name</key>
<string>constant.numeric.float.clojure</string>
</dict>
<dict>
<key>match</key>
<string>[-+]?\b[0-9]+(((\.[0-9])?+([eE][-+]?[0-9]+)?)|((\.[0-9]+)?[eE][-+]?[0-9]+))[M]?\b</string>
<key>name</key>
<string>constant.numeric.big_decimal.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.arithmetic.octal.clojure</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.integer.octal.clojure</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>invalid.illegal.integer.octal.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(-|\+)?\b(0)([0-7]+|([89]))([0-9]*)\b</string>
<key>name</key>
<string>constant.numeric.integer.octal.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(-|\+)?\b[0-9]+\b</string>
<key>name</key>
<string>constant.numeric.integer.clojure</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.arithmetic.hexa.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(-|\+)?\b(0[xX])[0-9A-Fa-f]+\b</string>
<key>name</key>
<string>constant.numeric.integer.hexa.clojure</string>
</dict>
</array>
</dict>
<key>operator</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?&lt;![a-zA-Z0-9*+!_?\-])(\*|/|\&lt;|\&lt;=|=|==|\&gt;|\&gt;=|-\&gt;)(?![a-zA-Z0-9*+!_?\-])</string>
<key>name</key>
<string>keyword.operator.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![a-zA-Z0-9*+!_?\-])(-|\+)(?![a-zA-Z0-9*+!_?\-])</string>
<key>name</key>
<string>keyword.operator.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;![a-zA-Z0-9*+!_?\-])(\.|\.\.)(?![a-zA-Z0-9*+!_?\-])</string>
<key>name</key>
<string>keyword.operator.class.clojure</string>
</dict>
<dict>
<key>match</key>
<string>%(\d+|&amp;)?</string>
<key>name</key>
<string>variable.parameter.literal.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#operator_special</string>
</dict>
</array>
</dict>
<key>operator_special</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>`|~@|~</string>
<key>name</key>
<string>keyword.control.operator.clojure</string>
</dict>
<dict>
<key>match</key>
<string>#'|@</string>
<key>name</key>
<string>storage.type.function.type.clojure</string>
</dict>
<dict>
<key>match</key>
<string>'</string>
<key>name</key>
<string>constant.other.quote</string>
</dict>
<dict>
<key>match</key>
<string>\^</string>
<key>name</key>
<string>constant.other.metadata.read.clojure</string>
</dict>
</array>
</dict>
<key>parameters</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.parameters.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\&amp;</string>
<key>name</key>
<string>keyword.operator.varargs.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>keyword.operator.symbolargs.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_variable</string>
</dict>
<dict>
<key>include</key>
<string>#parameters</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_map</string>
</dict>
</array>
</dict>
<key>parameters_body</key>
<dict>
<key>name</key>
<string>meta.function.body</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_function</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\])</string>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.function.body.code.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>parameters_function</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.vector.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.parameters.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\&amp;</string>
<key>name</key>
<string>keyword.operator.varargs.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(:as)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>keyword.operator.symbolargs.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_variable</string>
</dict>
<dict>
<key>include</key>
<string>#parameters</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_map</string>
</dict>
</array>
</dict>
<key>parameters_map</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.map.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.parameters.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#parameters_variable</string>
</dict>
<dict>
<key>match</key>
<string>(:as|:or|:keys|:strs|:syms)(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>keyword.operator.symbolargs.clojure</string>
</dict>
<dict>
<key>include</key>
<string>#parameters</string>
</dict>
<dict>
<key>include</key>
<string>#parameters_map</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<key>parameters_variable</key>
<dict>
<key>begin</key>
<string>(?=[a-zA-Z+!\-_?0-9*~@'`/.$=])</string>
<key>comment</key>
<string>symbol matching TODO:operator number =&gt; error ?</string>
<key>end</key>
<string>(?![a-zA-Z+!\-_?0-9*~#@'`/.$=])</string>
<key>name</key>
<string>variable.parameter.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword</string>
</dict>
<dict>
<key>include</key>
<string>#operator</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
</array>
</dict>
<key>set</key>
<dict>
<key>begin</key>
<string>#{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.set.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.set.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.set.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<key>sexpr</key>
<dict>
<key>begin</key>
<string>\((?!\))</string>
<key>end</key>
<string>(?&lt;!\()\)</string>
<key>name</key>
<string>meta.sexpr.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#sexpr_special</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
<key>sexpr_special</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\()\s*(let|loop|doseq|dotimes|binding|for|if-let|when-let|with-local-vars|with-open)\s+(?=\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.function.let_form.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#bindings_form</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()\s*(def|declare|defstruct|defonce|defmulti)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.variable.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.function.def_form.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>match</key>
<string>\s*</string>
</dict>
<dict>
<key>include</key>
<string>#function_name</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=$|.)</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()\s*(prefer-method)\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.variable.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.function.def_form.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
<dict>
<key>match</key>
<string>\s*</string>
</dict>
<dict>
<key>include</key>
<string>#function_name</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=$|.)</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#symbol_java_inherited_class</string>
</dict>
<dict>
<key>include</key>
<string>#all</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\()\s*(instance(\?))\s+</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.tester.clojure</string>
</dict>