{ "name": "Gleam", "patterns": [ { "include": "#comments" }, { "include": "#keywords" }, { "include": "#strings" }, { "include": "#constant" }, { "include": "#entity" }, { "include": "#discards" } ], "repository": { "keywords": { "patterns": [ { "name": "keyword.control.gleam", "match": "\\b(as|use|case|if|fn|import|let|assert|pub|type|opaque|const|todo|panic|else|echo)\\b" }, { "name": "keyword.operator.arrow.gleam", "match": "(<\\-|\\->)" }, { "name": "keyword.operator.pipe.gleam", "match": "\\|>" }, { "name": "keyword.operator.splat.gleam", "match": "\\.\\." }, { "name": "keyword.operator.comparison.gleam", "match": "(==|!=)" }, { "name": "keyword.operator.comparison.float.gleam", "match": "(<=\\.|>=\\.|<\\.|>\\.)" }, { "name": "keyword.operator.comparison.int.gleam", "match": "(<=|>=|<|>)" }, { "name": "keyword.operator.logical.gleam", "match": "(&&|\\|\\|)" }, { "name": "keyword.operator.string.gleam", "match": "<>" }, { "name": "keyword.operator.other.gleam", "match": "\\|" }, { "name": "keyword.operator.arithmetic.float.gleam", "match": "(\\+\\.|\\-\\.|/\\.|\\*\\.)" }, { "name": "keyword.operator.arithmetic.int.gleam", "match": "(\\+|\\-|/|\\*|%)" }, { "name": "keyword.operator.assignment.gleam", "match": "=" } ] }, "strings": { "name": "string.quoted.double.gleam", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.gleam", "match": "\\\\." } ] }, "comments": { "patterns": [ { "name": "comment.line.gleam", "match": "//.*" } ] }, "constant": { "patterns": [ { "include": "#binary_number" }, { "include": "#octal_number" }, { "include": "#hexadecimal_number" }, { "include": "#decimal_number" }, { "name": "entity.name.type.gleam", "match": "[[:upper:]][[:alnum:]]*" } ] }, "binary_number": { "name": "constant.numeric.binary.gleam", "match": "\\b0[bB][01_]*\\b", "patterns": [] }, "octal_number": { "name": "constant.numeric.octal.gleam", "match": "\\b0[oO][0-7_]*\\b", "patterns": [] }, "decimal_number": { "name": "constant.numeric.decimal.gleam", "match": "\\b([0-9][0-9_]*)(\\.([0-9_]*)?(e-?[0-9]+)?)?\\b", "patterns": [] }, "hexadecimal_number": { "name": "constant.numeric.hexadecimal.gleam", "match": "\\b0[xX][0-9a-fA-F_]+\\b", "patterns": [] }, "entity": { "patterns": [ { "begin": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*\\(", "end": "\\)", "patterns": [ { "include": "$self" } ], "captures": { "1": { "name": "entity.name.function.gleam" } } }, { "name": "variable.parameter.gleam", "match": "\\b([[:lower:]][[:word:]]*):\\s" }, { "name": "entity.name.namespace.gleam", "match": "\\b([[:lower:]][[:word:]]*):" } ] }, "discards": { "name": "comment.unused.gleam", "match": "\\b_(?:[[:word:]]+)?\\b" } }, "scopeName": "source.gleam", "fileTypes": ["gleam"] }