Path: blob/main/extensions/clojure/syntaxes/clojure.tmLanguage.json
3314 views
{1"information_for_contributors": [2"This file has been converted from https://github.com/atom/language-clojure/blob/master/grammars/clojure.cson",3"If you want to provide a fix or improvement, please create a pull request against the original repository.",4"Once accepted there, we are happy to receive an update request."5],6"version": "https://github.com/atom/language-clojure/commit/45bdb881501d0b8f8b707ca1d3fcc8b4b99fca03",7"name": "Clojure",8"scopeName": "source.clojure",9"patterns": [10{11"include": "#comment"12},13{14"include": "#shebang-comment"15},16{17"include": "#quoted-sexp"18},19{20"include": "#sexp"21},22{23"include": "#keyfn"24},25{26"include": "#string"27},28{29"include": "#vector"30},31{32"include": "#set"33},34{35"include": "#map"36},37{38"include": "#regexp"39},40{41"include": "#var"42},43{44"include": "#constants"45},46{47"include": "#dynamic-variables"48},49{50"include": "#metadata"51},52{53"include": "#namespace-symbol"54},55{56"include": "#symbol"57}58],59"repository": {60"comment": {61"begin": "(?<!\\\\);",62"beginCaptures": {63"0": {64"name": "punctuation.definition.comment.clojure"65}66},67"end": "$",68"name": "comment.line.semicolon.clojure"69},70"constants": {71"patterns": [72{73"match": "(nil)(?=(\\s|\\)|\\]|\\}))",74"name": "constant.language.nil.clojure"75},76{77"match": "(true|false)",78"name": "constant.language.boolean.clojure"79},80{81"match": "(##(?:Inf|-Inf|NaN))",82"name": "constant.numeric.symbol.clojure"83},84{85"match": "([-+]?\\d+/\\d+)",86"name": "constant.numeric.ratio.clojure"87},88{89"match": "([-+]?(?:(?:3[0-6])|(?:[12]\\d)|[2-9])[rR][0-9A-Za-z]+N?)",90"name": "constant.numeric.arbitrary-radix.clojure"91},92{93"match": "([-+]?0[xX][0-9a-fA-F]+N?)",94"name": "constant.numeric.hexadecimal.clojure"95},96{97"match": "([-+]?0[0-7]+N?)",98"name": "constant.numeric.octal.clojure"99},100{101"match": "([-+]?[0-9]+(?:(\\.|(?=[eEM]))[0-9]*([eE][-+]?[0-9]+)?)M?)",102"name": "constant.numeric.double.clojure"103},104{105"match": "([-+]?\\d+N?)",106"name": "constant.numeric.long.clojure"107},108{109"include": "#keyword"110}111]112},113"keyword": {114"match": "(?<=(\\s|\\(|\\[|\\{)):[\\w\\#\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))",115"name": "constant.keyword.clojure"116},117"keyfn": {118"patterns": [119{120"match": "(?<=(\\s|\\(|\\[|\\{))(if(-[-\\p{Ll}\\?]*)?|when(-[-\\p{Ll}]*)?|for(-[-\\p{Ll}]*)?|cond|do|let(-[-\\p{Ll}\\?]*)?|binding|loop|recur|fn|throw[\\p{Ll}\\-]*|try|catch|finally|([\\p{Ll}]*case))(?=(\\s|\\)|\\]|\\}))",121"name": "storage.control.clojure"122},123{124"match": "(?<=(\\s|\\(|\\[|\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\p{Ll}\\-]*))(?=(\\s|\\)|\\]|\\}))",125"name": "keyword.control.clojure"126}127]128},129"dynamic-variables": {130"match": "\\*[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\d]+\\*",131"name": "meta.symbol.dynamic.clojure"132},133"map": {134"begin": "(\\{)",135"beginCaptures": {136"1": {137"name": "punctuation.section.map.begin.clojure"138}139},140"end": "(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",141"endCaptures": {142"1": {143"name": "punctuation.section.map.end.trailing.clojure"144},145"2": {146"name": "punctuation.section.map.end.clojure"147}148},149"name": "meta.map.clojure",150"patterns": [151{152"include": "$self"153}154]155},156"metadata": {157"patterns": [158{159"begin": "(\\^\\{)",160"beginCaptures": {161"1": {162"name": "punctuation.section.metadata.map.begin.clojure"163}164},165"end": "(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",166"endCaptures": {167"1": {168"name": "punctuation.section.metadata.map.end.trailing.clojure"169},170"2": {171"name": "punctuation.section.metadata.map.end.clojure"172}173},174"name": "meta.metadata.map.clojure",175"patterns": [176{177"include": "$self"178}179]180},181{182"begin": "(\\^)",183"end": "(\\s)",184"name": "meta.metadata.simple.clojure",185"patterns": [186{187"include": "#keyword"188},189{190"include": "$self"191}192]193}194]195},196"quoted-sexp": {197"begin": "(['``]\\()",198"beginCaptures": {199"1": {200"name": "punctuation.section.expression.begin.clojure"201}202},203"end": "(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))",204"endCaptures": {205"1": {206"name": "punctuation.section.expression.end.trailing.clojure"207},208"2": {209"name": "punctuation.section.expression.end.trailing.clojure"210},211"3": {212"name": "punctuation.section.expression.end.clojure"213}214},215"name": "meta.quoted-expression.clojure",216"patterns": [217{218"include": "$self"219}220]221},222"regexp": {223"begin": "#\"",224"beginCaptures": {225"0": {226"name": "punctuation.definition.regexp.begin.clojure"227}228},229"end": "\"",230"endCaptures": {231"0": {232"name": "punctuation.definition.regexp.end.clojure"233}234},235"name": "string.regexp.clojure",236"patterns": [237{238"include": "#regexp_escaped_char"239}240]241},242"regexp_escaped_char": {243"match": "\\\\.",244"name": "constant.character.escape.clojure"245},246"set": {247"begin": "(\\#\\{)",248"beginCaptures": {249"1": {250"name": "punctuation.section.set.begin.clojure"251}252},253"end": "(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",254"endCaptures": {255"1": {256"name": "punctuation.section.set.end.trailing.clojure"257},258"2": {259"name": "punctuation.section.set.end.clojure"260}261},262"name": "meta.set.clojure",263"patterns": [264{265"include": "$self"266}267]268},269"sexp": {270"begin": "(\\()",271"beginCaptures": {272"1": {273"name": "punctuation.section.expression.begin.clojure"274}275},276"end": "(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))",277"endCaptures": {278"1": {279"name": "punctuation.section.expression.end.trailing.clojure"280},281"2": {282"name": "punctuation.section.expression.end.trailing.clojure"283},284"3": {285"name": "punctuation.section.expression.end.clojure"286}287},288"name": "meta.expression.clojure",289"patterns": [290{291"begin": "(?<=\\()(ns|declare|def[\\w\\d._:+=><!?*-]*|[\\w._:+=><!?*-][\\w\\d._:+=><!?*-]*/def[\\w\\d._:+=><!?*-]*)\\s+",292"beginCaptures": {293"1": {294"name": "keyword.control.clojure"295}296},297"end": "(?=\\))",298"name": "meta.definition.global.clojure",299"patterns": [300{301"include": "#metadata"302},303{304"include": "#dynamic-variables"305},306{307"match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",308"name": "entity.global.clojure"309},310{311"include": "$self"312}313]314},315{316"include": "#keyfn"317},318{319"include": "#constants"320},321{322"include": "#vector"323},324{325"include": "#map"326},327{328"include": "#set"329},330{331"include": "#sexp"332},333{334"match": "(?<=\\()(.+?)(?=\\s|\\))",335"captures": {336"1": {337"name": "entity.name.function.clojure"338}339},340"patterns": [341{342"include": "$self"343}344]345},346{347"include": "$self"348}349]350},351"shebang-comment": {352"begin": "^(#!)",353"beginCaptures": {354"1": {355"name": "punctuation.definition.comment.shebang.clojure"356}357},358"end": "$",359"name": "comment.line.shebang.clojure"360},361"string": {362"begin": "(?<!\\\\)(\")",363"beginCaptures": {364"1": {365"name": "punctuation.definition.string.begin.clojure"366}367},368"end": "(\")",369"endCaptures": {370"1": {371"name": "punctuation.definition.string.end.clojure"372}373},374"name": "string.quoted.double.clojure",375"patterns": [376{377"match": "\\\\.",378"name": "constant.character.escape.clojure"379}380]381},382"namespace-symbol": {383"patterns": [384{385"match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)/",386"captures": {387"1": {388"name": "meta.symbol.namespace.clojure"389}390}391}392]393},394"symbol": {395"patterns": [396{397"match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",398"name": "meta.symbol.clojure"399}400]401},402"var": {403"match": "(?<=(\\s|\\(|\\[|\\{)\\#)'[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))",404"name": "meta.var.clojure"405},406"vector": {407"begin": "(\\[)",408"beginCaptures": {409"1": {410"name": "punctuation.section.vector.begin.clojure"411}412},413"end": "(\\](?=[\\}\\]\\)\\s]*(?:;|$)))|(\\])",414"endCaptures": {415"1": {416"name": "punctuation.section.vector.end.trailing.clojure"417},418"2": {419"name": "punctuation.section.vector.end.clojure"420}421},422"name": "meta.vector.clojure",423"patterns": [424{425"include": "$self"426}427]428}429}430}431432