{ "name": "CFML (do not use)", "scopeName": "text.cfml.basic", "patterns": [ { "begin": "(?:^\\s+)?(\u003c)((?i:cfscript))(?![^\u003e]*/\u003e)", "end": "(\u003c/)((?i:cfscript))(\u003e)(?:\\s*\\n)?", "patterns": [ { "contentName": "source.cfscript.embedded.cfml", "begin": "(\u003e)", "end": "(?=\u003c/(?i:cfscript))", "patterns": [ { "include": "source.cfscript" } ], "beginCaptures": { "0": { "name": "meta.tag.block.cf.script.cfml" }, "1": { "name": "punctuation.definition.tag.end.cfml" } } } ], "captures": { "0": { "name": "meta.tag.block.cf.script.cfml" }, "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.script.cfml" }, "3": { "name": "punctuation.definition.tag.end.cfml" } } }, { "name": "meta.tag.block.cf.function.cfml", "begin": "(\u003c/?)((?i:cffunction))\\b", "end": "(\u003e)", "patterns": [ { "include": "#func-name-attribute" }, { "include": "#tag-stuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.function.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } }, { "name": "meta.tag.inline.cf.any.cfml", "contentName": "source.cfscript.embedded.cfml", "begin": "(\u003c)(?i:(cfset|cfreturn))\\b", "end": "((?:\\s?/)?\u003e)", "patterns": [ { "include": "#cfcomments" }, { "include": "source.cfscript" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.inline.declaration.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } }, { "name": "meta.tag.inline.cf.any.cfml", "begin": "(?x)\n\t\t\t\t(\u003c)\n\t\t\t\t\t(?i:\n\t\t\t\t\t\t(cf(queryparam|location|forward|import|param|break|abort|flush\n\t\t\t\t\t\t\t|setting|test|dump|content|include|catch|continue\n\t\t\t\t\t\t\t|file|log|object|invoke|throw|property|htmlhead\n\t\t\t\t\t\t\t|header|argument|exit|trace)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t)\n\t\t\t", "end": "((?:\\s?/)?\u003e)", "patterns": [ { "include": "#tag-stuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.inline.other.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } }, { "begin": "(?:^\\s+)?(\u003c)((?i:cfquery))\\b(?![^\u003e]*/\u003e)", "end": "(\u003c/)((?i:cfquery))(\u003e)(?:\\s*\\n)?", "patterns": [ { "name": "meta.tag.block.cf.output.cfml", "begin": "(?\u003c=cfquery)\\s", "end": "(?=\u003e)", "patterns": [ { "include": "#qry-name-attribute" }, { "include": "#tag-stuff" } ] }, { "contentName": "source.sql.embedded.cfml", "begin": "(\u003e)", "end": "(?=\u003c/(?i:cfquery))", "patterns": [ { "include": "#string-double-quoted" }, { "include": "#string-single-quoted" }, { "include": "#embedded-tags" }, { "name": "meta.tag.inline.cf.query-param.cfml", "begin": "(\u003c/?)((?i:(?:cfqueryparam))\\b)", "end": "((?:\\s?/)?\u003e)", "patterns": [ { "include": "#tag-stuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.inline.param.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } }, { "include": "#nest-hash" }, { "include": "source.sql" } ], "beginCaptures": { "0": { "name": "meta.tag.block.cf.query.cfml" }, "1": { "name": "punctuation.definition.tag.end.cfml" } } } ], "captures": { "0": { "name": "meta.tag.block.cf.query.cfml" }, "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.query.cfml" }, "3": { "name": "punctuation.definition.tag.end.cfml" } } }, { "include": "#embedded-tags" }, { "name": "meta.tag.block.cf.other.cfml", "begin": "(?x)\n\t\t\t\t(\u003c/?)\n\t\t\t\t(?i:\n\t\t\t\t\t(cf((output)|(savecontent)|([\\w\\-_.]+)))\n\t\t\t\t)\n\t\t\t\t\\b\n\t\t\t", "end": "(\u003e)", "patterns": [ { "include": "#tag-stuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.block.other.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } } ], "repository": { "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" } } } ] }, "cfmail": { "begin": "(?:^\\s+)?(\u003c)((?i:cfmail))\\b(?![^\u003e]*/\u003e)", "end": "(\u003c/)((?i:cfmail))(\u003e)(?:\\s*\\n)?", "patterns": [ { "name": "meta.tag.block.cf.mail.cfml", "begin": "(?\u003c=cfmail)\\s", "end": "(?=\u003e)", "patterns": [ { "include": "#tag-stuff" } ] }, { "contentName": "meta.scope.between-mail-tags.cfml", "begin": "(\u003e)", "end": "(?=\u003c/(?i:cfmail))", "patterns": [ { "include": "#nest-hash" }, { "include": "text.html.cfm" } ], "beginCaptures": { "0": { "name": "meta.tag.block.cf.mail.cfml" }, "1": { "name": "punctuation.definition.tag.end.cfml" } } } ], "captures": { "0": { "name": "meta.tag.block.cf.mail.cfml" }, "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.mail.cfml" }, "3": { "name": "punctuation.definition.tag.end.cfml" } } }, "cfoutput": { "begin": "(?:^\\s+)?(\u003c)((?i:cfoutput))\\b(?![^\u003e]*/\u003e)", "end": "(\u003c/)((?i:cfoutput))(\u003e)(?:\\s*\\n)?", "patterns": [ { "name": "meta.tag.block.cf.output.cfml", "begin": "(?\u003c=cfoutput)\\s", "end": "(?=\u003e)", "patterns": [ { "include": "#tag-stuff" } ] }, { "contentName": "meta.scope.between-output-tags.cfml", "begin": "(\u003e)", "end": "(?=\u003c/(?i:cfoutput))", "patterns": [ { "include": "#nest-hash" }, { "include": "text.html.cfm" } ], "beginCaptures": { "0": { "name": "meta.tag.block.cf.output.cfml" }, "1": { "name": "punctuation.definition.tag.end.cfml" } } } ], "captures": { "0": { "name": "meta.tag.block.cf.output.cfml" }, "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.output.cfml" }, "3": { "name": "punctuation.definition.tag.end.cfml" } } }, "conditionals": { "patterns": [ { "name": "meta.tag.block.cf.conditional.cfml", "contentName": "source.cfscript.embedded.cfml", "begin": "(\u003c/?)((?i:cfif))\\b", "end": "(\u003e)", "patterns": [ { "include": "source.cfscript" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.conditional.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } }, { "name": "meta.tag.inline.cf.conditional.cfml", "contentName": "source.cfscript.embedded.cfml", "begin": "(\u003c/?)(?i:(cfelseif|cfelse))", "end": "(\u003e)", "patterns": [ { "include": "source.cfscript" } ], "captures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.conditional.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } } ] }, "embedded-tags": { "patterns": [ { "include": "#cfcomments" }, { "include": "#conditionals" }, { "include": "#flow-control" }, { "include": "#exception-handling" }, { "include": "#cfoutput" }, { "include": "#cfmail" } ] }, "entities": { "patterns": [ { "name": "constant.character.entity.cfml", "match": "(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)", "captures": { "1": { "name": "punctuation.definition.entity.cfml" }, "3": { "name": "punctuation.definition.entity.cfml" } } }, { "name": "invalid.illegal.bad-ampersand.cfml", "match": "\u0026" } ] }, "exception-handling": { "patterns": [ { "name": "meta.tag.block.cf.exceptions.cfml", "begin": "(?x)\n\t\t\t\t\t\t(\u003c/?)\n\t\t\t\t\t\t(?i:\n\t\t\t\t\t\t\t(cftry)|(cfcatch)|(cflock)|(cffinally|cferror|cfrethrow|cfthrow)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t", "end": "(\u003e)", "patterns": [ { "include": "#tag-stuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.exception.try.cfml" }, "3": { "name": "entity.name.tag.cf.exception.catch.cfml" }, "4": { "name": "entity.name.tag.cf.lock.cfml" }, "5": { "name": "entity.name.tag.cf.exception.other.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } } ] }, "flow-control": { "patterns": [ { "name": "meta.tag.block.cf.flow-control.cfml", "begin": "(?x)\n\t\t\t\t\t\t(\u003c/?)\n\t\t\t\t\t\t(?i:\n\t\t\t\t\t\t\t(cfloop)|(cfswitch)|(cf(?:default)?case)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t", "end": "(\u003e)", "patterns": [ { "include": "#tag-stuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.begin.cfml" }, "2": { "name": "entity.name.tag.cf.flow-control.loop.cfml" }, "3": { "name": "entity.name.tag.cf.flow-control.switch.cfml" }, "4": { "name": "entity.name.tag.cf.flow-control.case.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.cfml" } } } ] }, "func-name-attribute": { "name": "meta.attribute-with-value.name.cfml", "begin": "\\b(name)\\b\\s*(=)", "end": "(?\u003c='|\")", "patterns": [ { "name": "string.quoted.double.cfml", "contentName": "meta.toc-list.function.cfml", "begin": "\"", "end": "\"", "patterns": [ { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cfml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.cfml" } } }, { "name": "string.quoted.single.cfml", "contentName": "meta.toc-list.function.cfml", "begin": "'", "end": "'", "patterns": [ { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cfml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.cfml" } } } ], "captures": { "1": { "name": "entity.other.attribute-name.cfml" }, "2": { "name": "punctuation.separator.key-value.cfml" } } }, "nest-hash": { "patterns": [ { "name": "string.escaped.hash.cfml", "match": "##" }, { "name": "invalid.illegal.unescaped.hash.cfml", "match": "(?x)\n\t\t\t\t\t\t\t(\\#)\n\t\t\t\t\t\t\t(?!\t\t# zero width negative lookahead assertion\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t([\\w$]+\t# assertion for plain variables or function names including currency symbol \"$\"\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t(\\[.*\\])\t\t\t\t# asserts a match for anything in square brackets\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\(.*\\))\t\t\t\t# or anything in parens\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\.[\\w$]+)\t\t\t\t# or zero or more \"dot\" notated variables\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\s*[\\+\\-\\*\\/\u0026]\\s*[\\w$]+)\t# or simple arithmentic operators + concatenation\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\s*\u0026\\s*[\"|'].+[\"|']) \t# or concatenation with a quoted string\n\t\t\t\t\t\t\t\t\t\t)*\t\t# asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t(\\(.*\\))\t # asserts a match for anything in parens\n\t\t\t\t\t\t\t\t)\\#\t\t# asserts closing hash\n\t\t\t\t\t\t\t)" }, { "name": "meta.name.interpolated.hash.cfml", "contentName": "source.cfscript.embedded.cfml", "begin": "(?x)\n\t\t\t\t\t\t\t(\\#)\n\t\t\t\t\t\t\t(?=\t\t# zero width negative lookahead assertion\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t([\\w$]+\t# assertion for plain variables or function names including currency symbol \"$\"\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t(\\[.*\\])\t\t\t\t# asserts a match for anything in square brackets\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\(.*\\))\t\t\t\t# or anything in parens\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\.[\\w$]+)\t\t\t\t# or zero or more \"dot\" notated variables\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\s*[\\+\\-\\*\\/\u0026]\\s*[\\w$]+)\t# or simple arithmentic operators + concatenation\n\t\t\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t\t\t(\\s*\u0026\\s*[\"|'].+[\"|']) \t# or concatenation with a quoted string\n\t\t\t\t\t\t\t\t\t\t)*\t\t# asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t|\n\t\t\t\t\t\t\t\t\t(\\(.*\\))\t # asserts a match for anything in parens\n\t\t\t\t\t\t\t\t)\\#\t\t# asserts closing hash\n\t\t\t\t\t\t\t)", "end": "(#)", "patterns": [ { "include": "source.cfscript" } ], "beginCaptures": { "1": { "name": "punctuation.definition.hash.begin.cfml" } }, "endCaptures": { "1": { "name": "punctuation.definition.hash.end.cfml" } } } ] }, "qry-name-attribute": { "name": "meta.attribute-with-value.name.cfml", "begin": "\\b(name)\\b\\s*(=)", "end": "(?\u003c='|\")", "patterns": [ { "name": "string.quoted.double.cfml", "contentName": "meta.toc-list.query.cfml", "begin": "\"", "end": "\"", "patterns": [ { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cfml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.cfml" } } }, { "name": "string.quoted.single.cfml", "contentName": "meta.toc-list.query.name.cfml", "begin": "'", "end": "'", "patterns": [ { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cfml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.cfml" } } } ], "captures": { "1": { "name": "entity.other.attribute-name.cfml" }, "2": { "name": "punctuation.separator.key-value.cfml" } } }, "string-double-quoted": { "name": "string.quoted.double.cfml", "begin": "\"", "end": "\"", "patterns": [ { "include": "#nest-hash" }, { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cfml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.cfml" } } }, "string-single-quoted": { "name": "string.quoted.single.cfml", "begin": "'", "end": "'", "patterns": [ { "include": "#nest-hash" }, { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.cfml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.cfml" } } }, "tag-generic-attribute": { "name": "entity.other.attribute-name.cfml", "match": "\\b([a-zA-Z\\-:]+)" }, "tag-stuff": { "patterns": [ { "include": "#cfcomments" }, { "include": "#tag-generic-attribute" }, { "include": "#string-double-quoted" }, { "include": "#string-single-quoted" } ] } } }