{
    "aliases": [
        "tk"
    ],
    "keywords": "after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",
    "contains": [
        {
            "className": "comment",
            "begin": ";[ \\t]*#",
            "end": "$",
            "contains": [
                {
                    "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
                },
                {
                    "className": "doctag",
                    "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                    "relevance": 0
                }
            ]
        },
        {
            "className": "comment",
            "begin": "^[ \\t]*#",
            "end": "$",
            "contains": [
                {
                    "$ref": "#contains.0.contains.0"
                },
                {
                    "className": "doctag",
                    "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
                    "relevance": 0
                }
            ]
        },
        {
            "beginKeywords": "proc",
            "end": "[\\{]",
            "excludeEnd": true,
            "contains": [
                {
                    "className": "title",
                    "begin": "[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",
                    "end": "[ \\t\\n\\r]",
                    "endsWithParent": true,
                    "excludeEnd": true
                }
            ]
        },
        {
            "excludeEnd": true,
            "variants": [
                {
                    "begin": "\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",
                    "end": "[^a-zA-Z0-9_\\}\\$]"
                },
                {
                    "begin": "\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",
                    "end": "(\\))?[^a-zA-Z0-9_\\}\\$]"
                }
            ]
        },
        {
            "className": "string",
            "contains": [
                {
                    "begin": "\\\\[\\s\\S]",
                    "relevance": 0
                }
            ],
            "variants": [
                {
                    "className": "string",
                    "begin": "\"",
                    "end": "\"",
                    "illegal": null,
                    "contains": [
                        {
                            "$ref": "#contains.4.contains.0"
                        }
                    ]
                }
            ]
        },
        {
            "className": "number",
            "variants": [
                {
                    "className": "number",
                    "begin": "\\b(0b[01]+)",
                    "relevance": 0
                },
                {
                    "className": "number",
                    "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
                    "relevance": 0
                }
            ]
        }
    ]
}
