{
  "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"
}