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