{
  "name": "CFScript (do not use)",
  "scopeName": "source.cfscript",
  "patterns": [
    {
      "include": "#comments"
    },
    {
      "include": "#cfcomments"
    },
    {
      "include": "#component-operators"
    },
    {
      "include": "#functions"
    },
    {
      "include": "#tag-operators"
    },
    {
      "include": "#cfscript-code"
    }
  ],
  "repository": {
    "braces": {
      "patterns": [
        {
          "name": "meta.brace.curly.cfscript",
          "match": "{|}"
        },
        {
          "name": "meta.brace.round.cfscript",
          "match": "\\(|\\)"
        },
        {
          "begin": "([\\w]+)?\\s*(\\[)",
          "end": "\\]",
          "patterns": [
            {
              "include": "#strings"
            },
            {
              "name": "punctuation.definition.set.seperator.cfscript",
              "match": ","
            },
            {
              "include": "$self"
            }
          ],
          "beginCaptures": {
            "1": {
              "name": "variable.other.set.cfscript"
            },
            "2": {
              "name": "punctuation.definition.set.begin.cfscript"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.set.end.cfscript"
            }
          }
        }
      ]
    },
    "cfcomments": {
      "patterns": [
        {
          "name": "comment.line.cfml",
          "match": "\u003c!---.*---\u003e"
        },
        {
          "name": "comment.block.cfml",
          "begin": "\u003c!---",
          "end": "---\u003e",
          "patterns": [
            {
              "include": "#cfcomments"
            }
          ],
          "captures": {
            "0": {
              "name": "punctuation.definition.comment.cfml"
            }
          }
        }
      ]
    },
    "cfscript-code": {
      "patterns": [
        {
          "include": "#braces"
        },
        {
          "include": "#closures"
        },
        {
          "include": "#sql-code"
        },
        {
          "include": "#keywords"
        },
        {
          "include": "#function-call"
        },
        {
          "include": "#constants"
        },
        {
          "include": "#variables"
        },
        {
          "include": "#strings"
        }
      ]
    },
    "closures": {
      "name": "meta.closure.cfscript",
      "begin": "(?i:\\b(function))\\b",
      "end": "(?={)",
      "patterns": [
        {
          "include": "#parameters"
        }
      ],
      "beginCaptures": {
        "1": {
          "name": "storage.closure.cfscript"
        }
      }
    },
    "comment-block": {
      "name": "comment.block.cfscript",
      "begin": "/\\*",
      "end": "\\*/",
      "captures": {
        "0": {
          "name": "punctuation.definition.comment.cfscript"
        }
      }
    },
    "comments": {
      "patterns": [
        {
          "name": "comment.block.empty.cfscript",
          "match": "/\\*\\*/",
          "captures": {
            "0": {
              "name": "punctuation.definition.comment.cfscript"
            }
          }
        },
        {
          "include": "text.html.javadoc"
        },
        {
          "include": "#comment-block"
        },
        {
          "match": "((//).*?[^\\s])\\s*$\\n?",
          "captures": {
            "1": {
              "name": "comment.line.double-slash.cfscript"
            },
            "2": {
              "name": "punctuation.definition.comment.cfscript"
            }
          }
        }
      ]
    },
    "component-extends-attribute": {
      "name": "meta.component.attribute-with-value.extends.cfml",
      "begin": "\\b(extends)\\b\\s*(=)\\s*(?=\")",
      "end": "(?=[\\s{])",
      "patterns": [
        {
          "name": "string.quoted.double.cfml",
          "contentName": "meta.component-operator.extends.value.cfscript",
          "begin": "\"",
          "end": "\"",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.cfscript"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.cfscript"
            }
          }
        },
        {
          "name": "string.quoted.single.cfscript",
          "contentName": "meta.component-operator.extends.value.cfscript",
          "begin": "'",
          "end": "'",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.cfscript"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.cfscript"
            }
          }
        }
      ],
      "captures": {
        "1": {
          "name": "entity.name.tag.operator-attribute.extends.cfml"
        },
        "2": {
          "name": "keyword.operator.assignment.cfscript"
        }
      }
    },
    "component-operators": {
      "patterns": [
        {
          "name": "meta.operator.cfscript meta.class.component.cfscript",
          "begin": "(?x)\n                        \\b\n                        (?i:\n                        (component)\n                        )\n                        \\b\n                        \\s+\n                        (?![\\.\\/\u003e=,#\\)])\n                    ",
          "end": "(?=[;{\\(])",
          "patterns": [
            {
              "include": "#component-extends-attribute"
            },
            {
              "name": "entity.other.attribute-name.cfscript",
              "match": "(?i:(\\w+)\\s*(?=\\=))"
            },
            {
              "include": "#cfscript-code"
            }
          ],
          "beginCaptures": {
            "1": {
              "name": "entity.name.tag.operator.component.cfscript"
            }
          }
        }
      ]
    },
    "constants": {
      "patterns": [
        {
          "name": "constant.numeric.cfscript",
          "match": "(?x)(\n                            (\\b[0-9]+)\n                            |\n                            (\\.[0-9]+[0-9\\.]*) # decimals\n                            |\n                            (0(x|X)[0-9a-fA-F]+) # hex\n                            # matches really large double/floats\n                            |(\\.[0-9]+)((e|E)(\\+|-)?[0-9]+)?([LlFfUuDd]|UL|ul)?\n                            )\\b\n                        "
        },
        {
          "name": "constant.language.cfscript",
          "match": "\\b(?i:(true|false|null))\\b"
        },
        {
          "name": "constant.other.cfscript",
          "match": "\\b_?([A-Z][A-Z0-9_]+)\\b"
        }
      ]
    },
    "function-call": {
      "name": "meta.function-call.cfscript",
      "begin": "(?x)\n                (?i:\n                    (abs|acos|addsoaprequestheader|addsoapresponseheader|ajaxlink|ajaxonload|applicationstop\n                    |arrayappend|arrayavg|arrayclear|arraycontains|arraydelete|arraydeleteat\n                    |arrayfind|arrayfindnocase|arrayinsertat|arrayisdefined|arrayisempty|arraylen\n                    |arraymax|arraymin|arraynew|arrayprepend|arrayresize|arrayset|arraysort|arraysum\n                    |arrayswap|arraytolist|asc|asin|atn|authenticatedcontext|authenticateduser|binarydecode\n                    |binaryencode|bitand|bitmaskclear|bitmaskread|bitmaskset|bitnot|bitor|bitshln|bitshrn\n                    |bitxor|cacheget|cachegetallids|cachegetmetadata|cachegetproperties|cachegetsession\n                    |cacheput|cacheremove|cachesetproperties|ceiling|charsetdecode|charsetencode|chr\n                    |cjustify|compare|comparenocase|cos|createdate|createdatetime|createobject|createodbcdate\n                    |createodbcdatetime|createodbctime|createtime|createtimespan|createuuid|dateadd|datecompare\n                    |dateconvert|datediff|dateformat|datepart|day|dayofweek|dayofweekasstring|dayofyear\n                    |daysinmonth|daysinyear|decimalformat|decrementvalue|decrypt|decryptbinary\n                    |deleteclientvariable|deserializejson|de|directorycreate|directorydelete|directoryexists\n                    |directorylist|directoryrename|dollarformat|dotnettocftype|duplicate|encrypt|encryptbinary\n                    |entitydelete|entityload|entityloadbyexample|entityloadbypk|entitymerge|entitynew\n                    |entityreload|entitysave|entitytoquery|evaluate|exp|expandpath|fileclose|filecopy\n                    |filedelete|fileexists|fileiseof|filemove|fileopen|fileread|filereadbinary|filereadline\n                    |fileseek|filesetaccessmode|filesetattribute|filesetlastmodified|fileskipbytes|fileupload\n                    |fileuploadall|filewrite|filewriteline|find|findnocase|findoneof|firstdayofmonth|fix\n                    |formatbasen|generatesecretkey|getauthuser|getbasetagdata|getbasetaglist|getbasetemplatepath\n                    |getclientvariableslist|getcomponentmetadata|getcontextroot|getcurrenttemplatepath\n                    |getdirectoryfrompath|getencoding|getexception|getfilefrompath|getfileinfo\n                    |getfunctioncalledname|getfunctionlist|getgatewayhelper|gethttprequestdata|gethttptimestring\n                    |getk2serverdoccount|getk2serverdoccountlimit|getlocale|getlocaledisplayname|getlocalhostip\n                    |getmetadata|getmetricdata|getpagecontext|getrequest|getrequesturi|getprinterinfo|getprinterlist|getprofilesections\n                    |getprofilestring|getreadableimageformats|getsoaprequest|getsoaprequestheader|getsoapresponse\n                    |getsoapresponseheader|gettempdirectory|gettempfile|gettemplatepath|gettickcount\n                    |gettimezoneinfo|gettoken|getuserroles|getvfsmetadata|getwriteableimageformats|hash|hour\n                    |htmlcodeformat|htmleditformat|iif|imageaddborder|imageblur|imageclearrect|imagecopy\n                    |imagecrop|imagedrawarc|imagedrawbeveledrect|imagedrawcubiccurve|imagedrawline|imagedrawlines\n                    |imagedrawoval|imagedrawpoint|imagedrawquadraticcurve|imagedrawrect|imagedrawroundrect\n                    |imagedrawtext|imageflip|imagegetblob|imagegetbufferedimage|imagegetexifmetadata|imagegetexiftag\n                    |imagegetheight|imagegetiptcmetadata|imagegetiptctag|imagegetwidth|imagegrayscale|imageinfo\n                    |imagenegative|imagenew|imageoverlay|imagepaste|imageread|imagereadbase64|imageresize\n                    |imagerotate|imagerotatedrawingaxis|imagescaletofit|imagesetantialiasing|imagesetbackgroundcolor\n                    |imagesetdrawingcolor|imagesetdrawingstroke|imagesetdrawingtransparency|imagesharpen|imageshear\n                    |imagesheardrawingaxis|imagetranslate|imagetranslatedrawingaxis|imagewrite|imagewritebase64\n                    |imagexordrawingmode|incrementvalue|inputbasen|insert|int|isarray|isauthenticated|isauthorized\n                    |isbinary|isboolean|iscustomfunction|isdate|isddx|isdebugmode|isdefined|isimage|isimagefile\n                    |isinstanceof|isipv6|isjson|isk2serverabroker|isk2serverdoccountexceeded|isk2serveronline|isleapyear\n                    |islocalhost|isnull|isnumeric|isnumericdate|isobject|ispdffile|ispdfobject|isprotected|isquery\n                    |issimplevalue|issoaprequest|isspreadsheetfile|isspreadsheetobject|isstruct|isuserinanyrole\n                    |isuserinrole|isuserloggedin|isvalid|iswddx|isxml|isxmlattribute|isxmldoc|isxmlelem|isxmlnode\n                    |isxmlroot|javacast|jsstringformat|lcase|left|len|listappend|listchangedelims|listcontains\n                    |listcontainsnocase|listdeleteat|listfind|listfindnocase|listfirst|listgetat|listinsertat\n                    |listlast|listlen|listprepend|listqualify|listrest|listsetat|listsort|listtoarray|listvaluecount\n                    |listvaluecountnocase|ljustify|location|log|log10|lscurrencyformat|lsdateformat|lseurocurrencyformat\n                    |lsiscurrency|lsisdate|lsisnumeric|lsnumberformat|lsparsecurrency|lsparsedatetime|lsparseeurocurrency\n                    |lsparsenumber|lstimeformat|ltrim|max|mid|min|minute|month|monthasstring|now|numberformat|objectequals\n                    |objectload|objectsave|ormclearsession|ormclosesession|ormcloseallsessions|ormevictcollection\n                    |ormevictentity|ormevictqueries|ormexecutequery|ormflush|ormflushall|ormgetsession|ormgetsessionfactory\n                    |ormreload|paragraphformat|parameterexists|parsedatetime|pi|precisionevaluate|preservesinglequotes\n                    |quarter|queryaddcolumn|queryaddrow|queryconvertforgrid|querynew|querysetcell|quotedvaluelist\n                    |rand|randomize|randrange|refind|refindnocase|rematch|rematchnocase|releasecomobject|removechars\n                    |repeatstring|replace|replacelist|replacenocase|rereplace|rereplacenocase|reverse|right|rjustify\n                    |round|rtrim|second|sendgatewaymessage|serializejson|setencoding|setlocale|setprofilestring\n                    |setvariable|sgn|sin|sleep|spanexcluding|spanincluding|spreadsheetaddcolumn|spreadsheetaddimage\n                    |spreadsheetaddfreezepane|spreadsheetaddinfo|spreadsheetaddrow|spreadsheetaddrows|spreadsheetaddsplitpane\n                    |spreadsheetcreatesheet|spreadsheetdeletecolumn|spreadsheetdeletecolumns|spreadsheetdeleterow\n                    |spreadsheetdeleterows|spreadsheetformatcell|spreadsheetformatcolumn|spreadsheetformatcellrange\n                    |spreadsheetformatcolumns|spreadsheetformatrow|spreadsheetformatrows|spreadsheetgetcellcomment\n                    |spreadsheetgetcellformula|spreadsheetgetcellvalue|spreadsheetinfo|spreadsheetmergecells\n                    |spreadsheetnew|spreadsheetread|spreadsheetreadbinary|spreadsheetremovesheet|spreadsheetsetactivesheet\n                    |spreadsheetsetactivesheetnumber|spreadsheetsetcellcomment|spreadsheetsetcellformula|spreadsheetsetcellvalue\n                    |spreadsheetsetcolumnwidth|spreadsheetsetfooter|spreadsheetsetheader|spreadsheetsetrowheight\n                    |spreadsheetshiftcolumnsspreadsheetshiftrows|spreadsheetwrite|sqr|stripcr|structappend|structclear\n                    |structcopy|structcount|structdelete|structfind|structfindkey|structfindvalue|structget|structinsert\n                    |structisempty|structkeyarray|structkeyexists|structkeylist|structnew|structsort|structupdate|tan\n                    |threadjoin|threadterminate|throw|timeformat|tobase64|tobinary|toscript|tostring|trace|transactioncommit\n                    |transactionrollback|transactionsetsavepoint|trim|ucase|urldecode|urlencodedformat|urlsessionformat\n                    |val|valuelist|verifyclient|week|wrap|writedump|writelog|writeoutput|xmlchildpos|xmlelemnew\n                    |xmlformat|xmlgetnodetype|xmlnew|xmlparse|xmlsearch|xmltransform|xmlvalidate|year|yesnoformat)\n                    |\n                    (\\w+)\n                )\n                \\s*\n                (\\()\n            ",
      "end": "(\\))",
      "patterns": [
        {
          "name": "punctuation.definition.seperator.arguments.cfscript",
          "match": ","
        },
        {
          "name": "entity.other.method-parameter.cfscript",
          "match": "(?i:(\\w+)\\s*(?=\\=))"
        },
        {
          "include": "#cfcomments"
        },
        {
          "include": "#comments"
        },
        {
          "include": "#tag-operators"
        },
        {
          "include": "#cfscript-code"
        }
      ],
      "beginCaptures": {
        "1": {
          "name": "support.function.cfscript"
        },
        "2": {
          "name": "entity.name.function-call.cfscript"
        },
        "3": {
          "name": "punctuation.definition.arguments.begin.cfscript"
        }
      },
      "endCaptures": {
        "1": {
          "name": "punctuation.definition.arguments.end.cfscript"
        }
      }
    },
    "function-properties": {
      "patterns": [
        {
          "name": "entity.other.attribute-name.output.cfscript",
          "match": "\\b(?i:output)"
        },
        {
          "name": "entity.other.attribute-name.any.cfscript",
          "match": "\\b([\\w]+)"
        }
      ]
    },
    "functions": {
      "name": "meta.function.cfscript",
      "begin": "(?x)^\\s*\n                    (?:\n                        (?: # optional access-control modifier and return-type\n                            (?i:\\b(private|package|public|remote)\\s+)? # access-control.modifier\n                            (?i:\\b\n                                (void)\n                                |\n                                (any|array|binary|boolean|component|date|guid|numeric|query|string|struct|xml|uuid) # return-type.primitive\n                                |\n                                ([A-Za-z0-9_\\.$]+) #return-type component/object (may need additional tokens)\n                            )?\n                        )\n                    )\n                    \\s*\n                    (?i:(function)) # storage.function\n                    \\s+\n                    (?:\n                        (init) # entity.name.function.contructor\n                        |\n                        ([\\w\\$]+) # entity.name.function\n                    )\\b\n                ",
      "end": "(?={)",
      "patterns": [
        {
          "include": "#parameters"
        },
        {
          "include": "#comments"
        },
        {
          "include": "#function-properties"
        },
        {
          "include": "#cfscript-code"
        }
      ],
      "beginCaptures": {
        "1": {
          "name": "storage.modifier.access-control.cfscript"
        },
        "2": {
          "name": "storage.type.return-type.void.cfscript"
        },
        "3": {
          "name": "storage.type.return-type.primitive.cfscript"
        },
        "4": {
          "name": "storage.type.return-type.object.cfscript"
        },
        "5": {
          "name": "storage.type.function.cfscript"
        },
        "6": {
          "name": "entity.name.function.constructor.cfscript"
        },
        "7": {
          "name": "entity.name.function.cfscript"
        }
      }
    },
    "keywords": {
      "patterns": [
        {
          "name": "keyword.other.new.cfscript",
          "match": "\\b(?i:new)\\b"
        },
        {
          "name": "keyword.operator.comparison.cfscript",
          "match": "(===?|!|!=|\u003c=|\u003e=|\u003c|\u003e)"
        },
        {
          "name": "keyword.operator.decision.cfscript",
          "match": "\\b(?i:(GREATER|LESS|THAN|EQUAL\\s+TO|DOES|CONTAINS|EQUAL|EQ|NEQ|LT|LTE|LE|GT|GTE|GE|AND|IS))\\b"
        },
        {
          "name": "keyword.operator.increment-decrement.cfscript",
          "match": "(\\-\\-|\\+\\+)"
        },
        {
          "name": "keyword.operator.arithmetic.cfscript",
          "match": "(?i:(\\^|\\-|\\+|\\*|\\/|\\\\|%|\\-=|\\+=|\\*=|\\/=|%=|\\bMOD\\b))"
        },
        {
          "name": "keyword.operator.concat.cfscript",
          "match": "(\u0026|\u0026=)"
        },
        {
          "name": "keyword.operator.assignment.cfscript",
          "match": "(=)"
        },
        {
          "name": "keyword.operator.logical.cfscript",
          "match": "\\b(?i:(NOT|!|AND|\u0026\u0026|OR|\\|\\||XOR|EQV|IMP))\\b"
        },
        {
          "name": "keyword.operator.ternary.cfscript",
          "match": "(\\?|:)"
        },
        {
          "name": "punctuation.terminator.cfscript",
          "match": ";"
        }
      ]
    },
    "nest_hash": {
      "patterns": [
        {
          "name": "string.escaped.hash.cfscript",
          "match": "##"
        },
        {
          "name": "meta.inline.hash.cfscript",
          "contentName": "source.cfscript.embedded.cfscript",
          "begin": "(#)(?=.*#)",
          "end": "(#)",
          "patterns": [
            {
              "include": "#cfscript-code"
            }
          ],
          "beginCaptures": {
            "1": {
              "name": "punctuation.definition.hash.begin.cfscript"
            }
          },
          "endCaptures": {
            "1": {
              "name": "punctuation.definition.hash.end.cfscript"
            }
          }
        }
      ]
    },
    "parameters": {
      "patterns": [
        {
          "name": "meta.function.parameters.cfscript",
          "begin": "(\\()",
          "end": "(\\))",
          "patterns": [
            {
              "name": "keyword.other.required.argument.cfscript",
              "match": "(?i:required)"
            },
            {
              "include": "#storage-types"
            },
            {
              "name": "keyword.operator.argument-assignment.cfscript",
              "match": "(=)"
            },
            {
              "name": "constant.language.boolean.argument.cfscript",
              "match": "(?i:false|true|no|yes)"
            },
            {
              "name": "variable.parameter.cfscript",
              "match": "(?i:\\w)"
            },
            {
              "name": "punctuation.definition.seperator.parameter.cfscript",
              "match": ","
            },
            {
              "include": "#strings"
            }
          ],
          "beginCaptures": {
            "1": {
              "name": "punctuation.definition.parameters.begin.cfscript"
            }
          },
          "endCaptures": {
            "1": {
              "name": "punctuation.definition.parameters.end.cfscript"
            }
          }
        }
      ]
    },
    "sql-code": {
      "patterns": [
        {
          "name": "source.sql.embedded.cfscript",
          "begin": "([\\w+\\.]+)\\.((?i:setsql))\\(\\s*[\"|']",
          "end": "([\"|']\\s*\\))",
          "patterns": [
            {
              "include": "#nest_hash"
            },
            {
              "include": "source.sql"
            }
          ],
          "beginCaptures": {
            "1": {
              "name": "entity.name.function.query.cfscript, meta.toc-list.query.cfscript"
            },
            "2": {
              "name": "support.function.cfscript"
            }
          },
          "endCaptures": {
            "1": {
              "name": "punctuation.parenthesis.end.cfscript"
            }
          }
        }
      ]
    },
    "storage-types": {
      "patterns": [
        {
          "name": "storage.type.primitive.cfscript",
          "match": "\\b(?i:(function|string|date|struct|array|void|binary|numeric|boolean|query|xml|uuid|any))\\b"
        }
      ]
    },
    "string-quoted-double": {
      "name": "string.quoted.double.cfscript",
      "begin": "\"",
      "end": "\"(?!\")",
      "patterns": [
        {
          "name": "constant.character.escape.quoted.double.cfscript",
          "match": "(\"\")"
        },
        {
          "include": "#nest_hash"
        }
      ],
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.begin.cfscript"
        }
      },
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.end.cfscript"
        }
      }
    },
    "string-quoted-single": {
      "name": "string.quoted.single.cfscript",
      "begin": "'",
      "end": "'(?!')",
      "patterns": [
        {
          "name": "constant.character.escape.quoted.single.cfscript",
          "match": "('')"
        },
        {
          "include": "#nest_hash"
        }
      ],
      "beginCaptures": {
        "0": {
          "name": "punctuation.definition.string.begin.cfscript"
        }
      },
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.string.end.cfscript"
        }
      }
    },
    "strings": {
      "patterns": [
        {
          "include": "#string-quoted-double"
        },
        {
          "include": "#string-quoted-single"
        }
      ]
    },
    "tag-operators": {
      "patterns": [
        {
          "name": "keyword.control.operator.conditional.cfscript",
          "match": "\\b(else\\s+if|else|if)\\b"
        },
        {
          "name": "keyword.control.operator.switch.cfscript",
          "match": "\\b(switch|case|default)\\b"
        },
        {
          "name": "meta.operator.cfscript",
          "begin": "(?x)^[\\s}]*\n                        (?i:\n                        (lock)|(transaction)|(thread)|(abort)\n                        |(exit)|(include)|(param)|(thread)|(import)\n                        |(rethrow|throw)|(property)|(interface)|(location)\n                        |(break)|(pageencoding)|(schedule)|(return)|(try|catch|finally)\n                        |(for|in|do|while|break|continue)\n                        |(trace)|(savecontent)|(http|httpparam)\n                        )\n                        \\b\n                        \\s*\n                        (?![^\\w|\"|'|\\(|{|;])\n                    ",
          "end": "(;)|({)",
          "patterns": [
            {
              "begin": "\\(",
              "end": "\\)",
              "patterns": [
                {
                  "name": "punctuation.definition.seperator.arguments.cfscript",
                  "match": ","
                },
                {
                  "name": "entity.other.operator-parameter.cfscript",
                  "match": "(?i:(\\w+)\\s*(?=\\=))"
                },
                {
                  "include": "#cfscript-code"
                }
              ],
              "beginCaptures": {
                "0": {
                  "name": "meta.brace.curly.cfscript"
                }
              },
              "endCaptures": {
                "0": {
                  "name": "meta.brace.curly.cfscript"
                }
              }
            },
            {
              "name": "entity.other.attribute-name.cfscript",
              "match": "(?i:(\\w+)\\s*(?=\\=))"
            },
            {
              "include": "#cfcomments"
            },
            {
              "include": "#comments"
            },
            {
              "include": "#cfscript-code"
            }
          ],
          "beginCaptures": {
            "1": {
              "name": "entity.name.tag.operator.lock.cfscript"
            },
            "10": {
              "name": "keyword.control.operator.catch-exception.cfscript"
            },
            "11": {
              "name": "entity.name.tag.operator.property.cfscript"
            },
            "12": {
              "name": "entity.name.tag.operator.interface.cfscript"
            },
            "13": {
              "name": "entity.name.tag.operator.location.cfscript"
            },
            "14": {
              "name": "keyword.control.operator.break.cfscript"
            },
            "15": {
              "name": "entity.name.tag.operator.pageencoding.cfscript"
            },
            "16": {
              "name": "entity.name.tag.operator.schedule.cfscript"
            },
            "17": {
              "name": "keyword.control.operator.return.cfscript"
            },
            "18": {
              "name": "keyword.control.operator.catch-exception.cfscript"
            },
            "19": {
              "name": "keyword.control.operator.loop.cfscript"
            },
            "2": {
              "name": "entity.name.tag.operator.transaction.cfscript"
            },
            "20": {
              "name": "entity.name.tag.operator.trace.cfscript"
            },
            "21": {
              "name": "entity.name.tag.operator.savecontent.cfscript"
            },
            "22": {
              "name": "entity.name.tag.operator.http.cfscript"
            },
            "3": {
              "name": "entity.name.tag.operator.thread.cfscript"
            },
            "4": {
              "name": "keyword.control.operator.abort.cfscript"
            },
            "5": {
              "name": "keyword.control.operator.exit.cfscript"
            },
            "6": {
              "name": "entity.name.tag.operator.include.cfscript"
            },
            "7": {
              "name": "entity.name.tag.operator.param.cfscript"
            },
            "8": {
              "name": "entity.name.tag.operator.thread.cfscript"
            },
            "9": {
              "name": "entity.name.tag.operator.import.cfscript"
            }
          },
          "endCaptures": {
            "1": {
              "name": "punctuation.terminator.cfscript"
            },
            "3": {
              "name": "meta.brace.curly.cfscript"
            }
          }
        }
      ]
    },
    "variables": {
      "patterns": [
        {
          "name": "storage.modifier.var.cfscript",
          "match": "\\b(?i:var)\\b"
        },
        {
          "name": "variable.language.cfscript",
          "match": "\\b(?i:(this|key))(?!\\.)"
        },
        {
          "name": "punctuation.definition.seperator.variable.cfscript",
          "match": "(\\.)"
        },
        {
          "match": "(?x)\n                    (?i:\n                        \\b\n                        (application|arguments|attributes|caller|cgi|client|\n                            cookie|flash|form|local|request|server|session|\n                            this|thistag|thread|thread local|url|variables|\n                            super|self|argumentcollection)\n                        \\b\n                        |\n                        (\\w+)\n                    )",
          "captures": {
            "1": {
              "name": "variable.language.cfscript"
            },
            "2": {
              "name": "variable.other.cfscript"
            }
          }
        }
      ]
    }
  }
}