{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "information_for_contributors": [ "Largely converted from - https://github.com/microsoft/vscode/blob/main/extensions/clojure/syntaxes/clojure.tmLanguage.json" ], "name": "OpenGOAL", "scopeName": "source.opengoal", "patterns": [ { "include": "#comment" }, { "include": "#quoted-sexp" }, { "include": "#sexp" }, { "include": "#keyfn" }, { "include": "#string" }, { "include": "#regexp" }, { "include": "#var" }, { "include": "#constants" }, { "include": "#symbol" }, { "include": "#readerMacros" } ], "repository": { "comment": { "patterns": [ { "begin": ";", "beginCaptures": { "0": { "name": "punctuation.definition.comment.opengoal" } }, "end": "$", "name": "comment.line.semicolon.opengoal" }, { "begin": "#\\|", "end": "\\|#", "name": "comment.block.opengoal" } ] }, "constants": { "patterns": [ { "match": "(none|#f)(?=(\\s|\\)|\\]|\\}))", "name": "constant.language.nil.opengoal" }, { "match": "(#t|#f)", "name": "constant.language.boolean.opengoal" }, { "match": "([-+]?\\d+/\\d+)", "name": "constant.numeric.ratio.opengoal" }, { "match": "([-+]?(?:(?:3[0-6])|(?:[12]\\d)|[2-9])[rR][0-9A-Za-z]+N?)", "name": "constant.numeric.arbitrary-radix.opengoal" }, { "match": "([-+]?0[xX][0-9a-fA-F]+N?)", "name": "constant.numeric.hexadecimal.opengoal" }, { "match": "([-+]?0[0-7]+N?)", "name": "constant.numeric.octal.opengoal" }, { "match": "([-+]?[0-9]+(?:(\\.|(?=[eEM]))[0-9]*([eE][-+]?[0-9]+)?)M?)", "name": "constant.numeric.double.opengoal" }, { "match": "([-+]?\\d+N?)", "name": "constant.numeric.long.opengoal" }, { "include": "#keyword" } ] }, "keyword": { "match": "(?<=(\\s|\\(|\\[|\\{)):[\\w\\#\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))", "name": "constant.keyword.opengoal" }, "keyfn": { "patterns": [ { "match": "(?<=(\\s|\\(|\\[|\\{))(if(-[-\\p{Ll}\\?]*)?|when(-[-\\p{Ll}]*)?|unless(-[-\\p{Ll}]*)?|cond|do|let(-[-\\p{Ll}\\?]*)?|lambda|throw[\\p{Ll}\\-]*|([\\p{Ll}]*case))(?=(\\s|\\)|\\]|\\}))", "name": "storage.control.opengoal" }, { "match": "(?<=(\\s|\\(|\\[|\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\p{Ll}\\-]*))(?=(\\s|\\)|\\]|\\}))", "name": "keyword.control.opengoal" } ] }, "quoted-sexp": { "begin": "(['``]\\()", "beginCaptures": { "1": { "name": "keyword.operator.opengoal punctuation.section.expression.begin.opengoal" } }, "end": "(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))", "endCaptures": { "1": { "name": "punctuation.section.expression.end.trailing.opengoal" }, "2": { "name": "punctuation.section.expression.end.trailing.opengoal" }, "3": { "name": "punctuation.section.expression.end.opengoal" } }, "name": "meta.quoted-expression.opengoal", "patterns": [ { "include": "$self" } ] }, "regexp": { "begin": "#\"", "beginCaptures": { "0": { "name": "punctuation.definition.regexp.begin.opengoal" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.regexp.end.opengoal" } }, "name": "string.regexp.opengoal", "patterns": [ { "include": "#regexp_escaped_char" } ] }, "regexp_escaped_char": { "match": "\\\\.", "name": "constant.character.escape.opengoal" }, "sexp": { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.section.expression.begin.opengoal" } }, "end": "(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))", "endCaptures": { "1": { "name": "punctuation.section.expression.end.trailing.opengoal" }, "2": { "name": "punctuation.section.expression.end.trailing.opengoal" }, "3": { "name": "punctuation.section.expression.end.opengoal" } }, "name": "meta.expression.opengoal", "patterns": [ { "begin": "(?<=\\()(ns|declare|def[\\w\\d._:+=>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)", "name": "entity.global.opengoal" }, { "include": "$self" } ] }, { "include": "#comment" }, { "include": "#keyfn" }, { "include": "#constants" }, { "include": "#sexp" }, { "match": "(?<=\\()(.+?)(?=\\s|\\))", "captures": { "1": { "name": "entity.name.function.opengoal" } }, "patterns": [ { "include": "$self" } ] }, { "include": "$self" } ] }, "string": { "begin": "(?\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)", "name": "meta.symbol.opengoal" } ] }, "var": { "match": "(?<=(\\s|\\(|\\[|\\{)\\#)'[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))", "name": "meta.var.opengoal" }, "readerMacros": { "match": "('|,@|`|,|&->)", "name": "keyword.operator.opengoal" } } }