{ "fileTypes": [ "io" ], "keyEquivalent": "^~I", "name": "Io", "patterns": [ { "captures": { "1": { "name": "meta.empty-parenthesis.io" } }, "comment": "we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob", "match": "\\((\\))" }, { "captures": { "1": { "name": "meta.comma-parenthesis.io" } }, "comment": "We want to do the same for ,) -- Seckar; same as above -- Rob", "match": "\\,(\\))" }, { "match": "\\b(if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b", "name": "keyword.control.io" }, { "begin": "/\\*", "captures": { "0": { "name": "punctuation.definition.comment.io" } }, "end": "\\*/", "name": "comment.block.io" }, { "begin": "(^[ \\t]+)?(?=//)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.io" } }, "end": "(?!\\G)", "patterns": [ { "begin": "//", "beginCaptures": { "0": { "name": "punctuation.definition.comment.io" } }, "end": "\\n", "name": "comment.line.double-slash.io" } ] }, { "begin": "(^[ \\t]+)?(?=#)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.io" } }, "end": "(?!\\G)", "patterns": [ { "begin": "#", "beginCaptures": { "0": { "name": "punctuation.definition.comment.io" } }, "end": "\\n", "name": "comment.line.number-sign.io" } ] }, { "comment": "I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob", "match": "\\b(self|sender|target|proto|protos|parent)\\b", "name": "variable.language.io" }, { "match": "<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(and|or)\\b", "name": "keyword.operator.io" }, { "match": "\\bGL[\\w_]+\\b", "name": "constant.other.io" }, { "match": "\\b([A-Z](\\w+)?)\\b", "name": "support.class.io" }, { "match": "\\b(clone|call|init|method|list|vector|block|(\\w+(?=\\s*\\()))\\b", "name": "support.function.io" }, { "match": "\\b(gl(u|ut)?[A-Z]\\w+)\\b", "name": "support.function.open-gl.io" }, { "begin": "\"\"\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.io" } }, "end": "\"\"\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.io" } }, "name": "string.quoted.triple.io", "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.io" } ] }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.io" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.io" } }, "name": "string.quoted.double.io", "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.io" } ] }, { "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b", "name": "constant.numeric.io" }, { "match": "(Lobby)\\b", "name": "variable.other.global.io" }, { "match": "\\b(TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b", "name": "constant.language.io" } ], "scopeName": "source.io", "uuid": "BD798537-3548-47F3-A6AB-7FB95C45DB83" }