1 |
- {"information_for_contributors":["This file has been converted from https://github.com/dotnet/razor/blob/master/src/Razor/src/Microsoft.VisualStudio.RazorExtension/EmbeddedGrammars/aspnetcorerazor.tmLanguage.json","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."],"version":"https://github.com/dotnet/razor/commit/39159764277f3c80a786d8872eba7730da3d7ef0","name":"ASP.NET Razor","scopeName":"text.html.cshtml","injections":{"string.quoted.double.html":{"patterns":[{"include":"#explicit-razor-expression"},{"include":"#implicit-expression"}]},"string.quoted.single.html":{"patterns":[{"include":"#explicit-razor-expression"},{"include":"#implicit-expression"}]}},"patterns":[{"include":"#razor-control-structures"},{"include":"text.html.basic"}],"repository":{"razor-control-structures":{"patterns":[{"include":"#razor-comment"},{"include":"#razor-codeblock"},{"include":"#explicit-razor-expression"},{"include":"#escaped-transition"},{"include":"#directives"},{"include":"#transitioned-csharp-control-structures"},{"include":"#implicit-expression"}]},"optionally-transitioned-razor-control-structures":{"patterns":[{"include":"#razor-comment"},{"include":"#razor-codeblock"},{"include":"#explicit-razor-expression"},{"include":"#escaped-transition"},{"include":"#directives"},{"include":"#optionally-transitioned-csharp-control-structures"},{"include":"#implicit-expression"}]},"escaped-transition":{"name":"constant.character.escape.razor.transition","match":"@@"},"transition":{"match":"@","name":"keyword.control.cshtml.transition"},"razor-codeblock":{"name":"meta.structure.razor.codeblock","begin":"(@)(\\{)","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.codeblock.open"}},"contentName":"source.cs","patterns":[{"include":"#razor-codeblock-body"}],"end":"(\\})","endCaptures":{"1":{"name":"keyword.control.razor.directive.codeblock.close"}}},"razor-codeblock-body":{"patterns":[{"include":"#text-tag"},{"include":"#wellformed-html"},{"include":"#razor-single-line-markup"},{"include":"#optionally-transitioned-razor-control-structures"},{"include":"source.cs"}]},"razor-single-line-markup":{"match":"(\\@\\:)([^$]*)$","captures":{"1":{"name":"keyword.control.razor.singleLineMarkup"},"2":{"patterns":[{"include":"#razor-control-structures"},{"include":"text.html.basic"}]}}},"text-tag":{"begin":"(<text\\s*>)","beginCaptures":{"1":{"name":"keyword.control.cshtml.transition.textTag.open"}},"patterns":[{"include":"#wellformed-html"},{"include":"$self"}],"end":"(</text>)","endCaptures":{"1":{"name":"keyword.control.cshtml.transition.textTag.close"}}},"razor-comment":{"name":"meta.comment.razor","begin":"(@)(\\*)","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.comment.star"}},"contentName":"comment.block.razor","end":"(\\*)(@)","endCaptures":{"1":{"name":"keyword.control.razor.comment.star"},"2":{"patterns":[{"include":"#transition"}]}}},"wellformed-html":{"patterns":[{"include":"#void-tag"},{"include":"#non-void-tag"}]},"void-tag":{"name":"meta.tag.structure.$3.void.html","begin":"(?i)(<)(!)?(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)(?=\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"constant.character.escape.razor.tagHelperOptOut"},"3":{"name":"entity.name.tag.html"}},"patterns":[{"include":"text.html.basic#attribute"}],"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}}},"non-void-tag":{"begin":"(?=<(!)?([^/\\s>]+)(\\s|/?>))","end":"(</)(\\2)\\s*(>)|(/>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"patterns":[{"begin":"(<)(!)?([^/\\s>]+)(?=\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"constant.character.escape.razor.tagHelperOptOut"},"3":{"name":"entity.name.tag.html"}},"end":"(?=/?>)","patterns":[{"include":"#razor-control-structures"},{"include":"text.html.basic#attribute"}]},{"begin":">","beginCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"end":"(?=</)","patterns":[{"include":"#wellformed-html"},{"include":"$self"}]}]},"explicit-razor-expression":{"name":"meta.expression.explicit.cshtml","begin":"(@)\\(","beginCaptures":{"0":{"name":"keyword.control.cshtml"},"1":{"patterns":[{"include":"#transition"}]}},"patterns":[{"include":"source.cs#expression"}],"end":"\\)","endCaptures":{"0":{"name":"keyword.control.cshtml"}}},"implicit-expression":{"name":"meta.expression.implicit.cshtml","contentName":"source.cs","begin":"(?<![[:alpha:][:alnum:]])(@)","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]}},"patterns":[{"include":"#await-prefix"},{"include":"#implicit-expression-body"}],"end":"(?=[\\s<>\\{\\}\\)\\]'\"])"},"implicit-expression-body":{"patterns":[{"include":"#implicit-expression-invocation-start"},{"include":"#implicit-expression-accessor-start"}],"end":"(?=[\\s<>\\{\\}\\)\\]'\"])"},"implicit-expression-invocation-start":{"begin":"([_[:alpha:]][_[:alnum:]]*)(?=\\()","beginCaptures":{"1":{"name":"entity.name.function.cs"}},"patterns":[{"include":"#implicit-expression-continuation"}],"end":"(?=[\\s<>\\{\\}\\)\\]'\"])"},"implicit-expression-accessor-start":{"begin":"([_[:alpha:]][_[:alnum:]]*)","beginCaptures":{"1":{"name":"variable.other.object.cs"}},"patterns":[{"include":"#implicit-expression-continuation"}],"end":"(?=[\\s<>\\{\\}\\)\\]'\"])"},"implicit-expression-continuation":{"patterns":[{"include":"#balanced-parenthesis-csharp"},{"include":"#balanced-brackets-csharp"},{"include":"#implicit-expression-invocation"},{"include":"#implicit-expression-accessor"},{"include":"#implicit-expression-extension"}],"end":"(?=[\\s<>\\{\\}\\)\\]'\"])"},"implicit-expression-accessor":{"match":"(?<=\\.)[_[:alpha:]][_[:alnum:]]*","name":"variable.other.object.property.cs"},"implicit-expression-invocation":{"match":"(?<=\\.)[_[:alpha:]][_[:alnum:]]*(?=\\()","name":"entity.name.function.cs"},"implicit-expression-operator":{"patterns":[{"include":"#implicit-expression-dot-operator"},{"include":"#implicit-expression-null-conditional-operator"},{"include":"#implicit-expression-null-forgiveness-operator"}]},"implicit-expression-dot-operator":{"match":"(\\.)(?=[_[:alpha:]][_[:alnum:]]*)","captures":{"1":{"name":"punctuation.accessor.cs"}}},"implicit-expression-null-conditional-operator":{"match":"(\\?)(?=[.\\[])","captures":{"1":{"name":"keyword.operator.null-conditional.cs"}}},"implicit-expression-null-forgiveness-operator":{"match":"(\\!)(?=(?:\\.[_[:alpha:]][_[:alnum:]]*)|\\?|[\\[\\(])","captures":{"1":{"name":"keyword.operator.logical.cs"}}},"balanced-parenthesis-csharp":{"begin":"(\\()","beginCaptures":{"1":{"name":"punctuation.parenthesis.open.cs"}},"name":"razor.test.balanced.parenthesis","patterns":[{"include":"source.cs"}],"end":"(\\))","endCaptures":{"1":{"name":"punctuation.parenthesis.close.cs"}}},"balanced-brackets-csharp":{"begin":"(\\[)","beginCaptures":{"1":{"name":"punctuation.squarebracket.open.cs"}},"name":"razor.test.balanced.brackets","patterns":[{"include":"source.cs"}],"end":"(\\])","endCaptures":{"1":{"name":"punctuation.squarebracket.close.cs"}}},"directives":{"patterns":[{"include":"#code-directive"},{"include":"#functions-directive"},{"include":"#page-directive"},{"include":"#addTagHelper-directive"},{"include":"#removeTagHelper-directive"},{"include":"#tagHelperPrefix-directive"},{"include":"#model-directive"},{"include":"#inherits-directive"},{"include":"#implements-directive"},{"include":"#namespace-directive"},{"include":"#inject-directive"},{"include":"#attribute-directive"},{"include":"#section-directive"},{"include":"#layout-directive"},{"include":"#using-directive"},{"include":"#rendermode-directive"},{"include":"#preservewhitespace-directive"},{"include":"#typeparam-directive"}]},"code-directive":{"begin":"(@)(code)((?=\\{)|\\s+)","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.code"}},"patterns":[{"include":"#directive-codeblock"}],"end":"(?<=})|\\s"},"functions-directive":{"begin":"(@)(functions)((?=\\{)|\\s+)","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.functions"}},"patterns":[{"include":"#directive-codeblock"}],"end":"(?<=})|\\s"},"directive-codeblock":{"begin":"(\\{)","beginCaptures":{"1":{"name":"keyword.control.razor.directive.codeblock.open"}},"name":"meta.structure.razor.directive.codeblock","contentName":"source.cs","patterns":[{"include":"source.cs#class-or-struct-members"}],"end":"(\\})","endCaptures":{"1":{"name":"keyword.control.razor.directive.codeblock.close"}}},"page-directive":{"name":"meta.directive","match":"(@)(page)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.page"},"3":{"patterns":[{"include":"source.cs#string-literal"}]}}},"addTagHelper-directive":{"name":"meta.directive","match":"(@)(addTagHelper)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.addTagHelper"},"3":{"patterns":[{"include":"#tagHelper-directive-argument"}]}}},"removeTagHelper-directive":{"name":"meta.directive","match":"(@)(removeTagHelper)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.removeTagHelper"},"3":{"patterns":[{"include":"#tagHelper-directive-argument"}]}}},"tagHelperPrefix-directive":{"name":"meta.directive","match":"(@)(tagHelperPrefix)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.tagHelperPrefix"},"3":{"patterns":[{"include":"#tagHelper-directive-argument"}]}}},"tagHelper-directive-argument":{"patterns":[{"include":"source.cs#string-literal"},{"include":"#unquoted-string-argument"}]},"unquoted-string-argument":{"name":"string.quoted.double.cs","match":"[^$]+"},"model-directive":{"name":"meta.directive","match":"(@)(model)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.model"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"inherits-directive":{"name":"meta.directive","match":"(@)(inherits)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.inherits"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"implements-directive":{"name":"meta.directive","match":"(@)(implements)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.implements"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"layout-directive":{"name":"meta.directive","match":"(@)(layout)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.layout"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"namespace-directive":{"name":"meta.directive","match":"(@)(namespace)\\s+([^\\s]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.namespace"},"3":{"patterns":[{"include":"#namespace-directive-argument"}]}}},"namespace-directive-argument":{"match":"([_[:alpha:]][_[:alnum:]]*)(\\.)?","captures":{"1":{"name":"entity.name.type.namespace.cs"},"2":{"name":"punctuation.accessor.cs"}}},"inject-directive":{"name":"meta.directive","match":"(@)(inject)\\s*([\\S\\s]+?)?\\s*([_[:alpha:]][_[:alnum:]]*)?\\s*(?=$)","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.inject"},"3":{"patterns":[{"include":"source.cs#type"}]},"4":{"name":"entity.name.variable.property.cs"}}},"rendermode-directive":{"name":"meta.directive","match":"(@)(rendermode)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.rendermode"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"preservewhitespace-directive":{"name":"meta.directive","match":"(@)(preservewhitespace)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.preservewhitespace"},"3":{"patterns":[{"include":"source.cs#boolean-literal"}]}}},"typeparam-directive":{"name":"meta.directive","match":"(@)(typeparam)\\s+([^$]+)?","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.typeparam"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"attribute-directive":{"name":"meta.directive","begin":"(@)(attribute)\\b\\s+","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.attribute"}},"patterns":[{"include":"source.cs#attribute-section"}],"end":"(?<=\\])|$"},"section-directive":{"name":"meta.directive.block","begin":"(@)(section)\\b\\s+([_[:alpha:]][_[:alnum:]]*)?","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.razor.directive.section"},"3":{"name":"variable.other.razor.directive.sectionName"}},"patterns":[{"include":"#directive-markupblock"}],"end":"(?<=})"},"directive-markupblock":{"name":"meta.structure.razor.directive.markblock","begin":"(\\{)","beginCaptures":{"1":{"name":"keyword.control.razor.directive.codeblock.open"}},"patterns":[{"include":"$self"}],"end":"(\\})","endCaptures":{"1":{"name":"keyword.control.razor.directive.codeblock.close"}}},"using-directive":{"name":"meta.directive","match":"(@)(using)\\b\\s+(?!\\(|\\s)(.+?)?(;)?$","captures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.other.using.cs"},"3":{"patterns":[{"include":"#using-static-directive"},{"include":"#using-alias-directive"},{"include":"#using-standard-directive"}]},"4":{"name":"keyword.control.razor.optionalSemicolon"}}},"using-static-directive":{"match":"(static)\\b\\s+(.+)","captures":{"1":{"name":"keyword.other.static.cs"},"2":{"patterns":[{"include":"source.cs#type"}]}}},"using-alias-directive":{"match":"([_[:alpha:]][_[:alnum:]]*)\\b\\s*(=)\\s*(.+)\\s*","captures":{"1":{"name":"entity.name.type.alias.cs"},"2":{"name":"keyword.operator.assignment.cs"},"3":{"patterns":[{"include":"source.cs#type"}]}}},"using-standard-directive":{"match":"([_[:alpha:]][_[:alnum:]]*)\\s*","captures":{"1":{"name":"entity.name.type.namespace.cs"}}},"optionally-transitioned-csharp-control-structures":{"patterns":[{"include":"#using-statement-with-optional-transition"},{"include":"#if-statement-with-optional-transition"},{"include":"#else-part"},{"include":"#foreach-statement-with-optional-transition"},{"include":"#for-statement-with-optional-transition"},{"include":"#while-statement"},{"include":"#switch-statement-with-optional-transition"},{"include":"#lock-statement-with-optional-transition"},{"include":"#do-statement-with-optional-transition"},{"include":"#try-statement-with-optional-transition"}]},"transitioned-csharp-control-structures":{"patterns":[{"include":"#using-statement"},{"include":"#if-statement"},{"include":"#else-part"},{"include":"#foreach-statement"},{"include":"#for-statement"},{"include":"#while-statement"},{"include":"#switch-statement"},{"include":"#lock-statement"},{"include":"#do-statement"},{"include":"#try-statement"}]},"using-statement":{"name":"meta.statement.using.razor","begin":"(?:(@))(using)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.other.using.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"using-statement-with-optional-transition":{"name":"meta.statement.using.razor","begin":"(?:^\\s*|(@))(using)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.other.using.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"if-statement":{"name":"meta.statement.if.razor","begin":"(?:(@))(if)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.conditional.if.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"if-statement-with-optional-transition":{"name":"meta.statement.if.razor","begin":"(?:^\\s*|(@))(if)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.conditional.if.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"else-part":{"name":"meta.statement.else.razor","begin":"(?:^|(?<=}))\\s*(else)\\b\\s*?(?: (if))?\\s*?(?=[\\n\\(\\{])","beginCaptures":{"1":{"name":"keyword.control.conditional.else.cs"},"2":{"name":"keyword.control.conditional.if.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"for-statement":{"name":"meta.statement.for.razor","begin":"(?:(@))(for)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.loop.for.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"for-statement-with-optional-transition":{"name":"meta.statement.for.razor","begin":"(?:^\\s*|(@))(for)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.loop.for.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"foreach-statement":{"name":"meta.statement.foreach.razor","begin":"(?:(@)(await\\s+)?)(foreach)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"patterns":[{"include":"#await-prefix"}]},"3":{"name":"keyword.control.loop.foreach.cs"}},"patterns":[{"include":"#foreach-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"foreach-statement-with-optional-transition":{"name":"meta.statement.foreach.razor","begin":"(?:^\\s*|(@)(await\\s+)?)(foreach)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"patterns":[{"include":"#await-prefix"}]},"3":{"name":"keyword.control.loop.foreach.cs"}},"patterns":[{"include":"#foreach-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"foreach-condition":{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.parenthesis.open.cs"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.parenthesis.close.cs"}},"patterns":[{"match":"(?x)\n(?:\n (\\bvar\\b)|\n (?<type-name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name-and-type-args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type-args>\\s*<(?:[^<>]|\\g<type-args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name-and-type-args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g<identifier>)\\s+\n\\b(in)\\b","captures":{"1":{"name":"keyword.other.var.cs"},"2":{"patterns":[{"include":"source.cs#type"}]},"7":{"name":"entity.name.variable.local.cs"},"8":{"name":"keyword.control.loop.in.cs"}}},{"match":"(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)?\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+\n\\b(in)\\b","captures":{"1":{"name":"keyword.other.var.cs"},"2":{"patterns":[{"include":"source.cs#tuple-declaration-deconstruction-element-list"}]},"3":{"name":"keyword.control.loop.in.cs"}}},{"include":"source.cs#expression"}]},"do-statement":{"name":"meta.statement.do.razor","begin":"(?:(@))(do)\\b\\s","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.loop.do.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"do-statement-with-optional-transition":{"name":"meta.statement.do.razor","begin":"(?:^\\s*|(@))(do)\\b\\s","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.loop.do.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"while-statement":{"name":"meta.statement.while.razor","begin":"(?:(@)|^\\s*|(?<=})\\s*)(while)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.loop.while.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})|(;)","endCaptures":{"1":{"name":"punctuation.terminator.statement.cs"}}},"switch-statement":{"name":"meta.statement.switch.razor","begin":"(?:(@))(switch)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.switch.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#switch-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"switch-statement-with-optional-transition":{"name":"meta.statement.switch.razor","begin":"(?:^\\s*|(@))(switch)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.switch.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#switch-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"switch-code-block":{"name":"meta.structure.razor.csharp.codeblock.switch","begin":"(\\{)","beginCaptures":{"1":{"name":"punctuation.curlybrace.open.cs"}},"patterns":[{"include":"source.cs#switch-label"},{"include":"#razor-codeblock-body"}],"end":"(\\})","endCaptures":{"1":{"name":"punctuation.curlybrace.close.cs"}}},"lock-statement":{"name":"meta.statement.lock.razor","begin":"(?:(@))(lock)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.other.lock.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"lock-statement-with-optional-transition":{"name":"meta.statement.lock.razor","begin":"(?:^\\s*|(@))(lock)\\b\\s*(?=\\()","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.other.lock.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"try-statement":{"patterns":[{"include":"#try-block"},{"include":"#catch-clause"},{"include":"#finally-clause"}]},"try-statement-with-optional-transition":{"patterns":[{"include":"#try-block-with-optional-transition"},{"include":"#catch-clause"},{"include":"#finally-clause"}]},"try-block":{"name":"meta.statement.try.razor","begin":"(?:(@))(try)\\b\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.try.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"try-block-with-optional-transition":{"name":"meta.statement.try.razor","begin":"(?:^\\s*|(@))(try)\\b\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.try.cs"}},"patterns":[{"include":"#csharp-condition"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"catch-clause":{"name":"meta.statement.catch.razor","begin":"(?:^|(?<=}))\\s*(catch)\\b\\s*?(?=[\\n\\(\\{])","beginCaptures":{"1":{"name":"keyword.control.try.catch.cs"}},"patterns":[{"include":"#catch-condition"},{"include":"source.cs#when-clause"},{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"catch-condition":{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.parenthesis.open.cs"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.parenthesis.close.cs"}},"patterns":[{"match":"(?x)\n(?<type-name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name-and-type-args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type-args>\\s*<(?:[^<>]|\\g<type-args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name-and-type-args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?:(\\g<identifier>)\\b)?","captures":{"1":{"patterns":[{"include":"source.cs#type"}]},"6":{"name":"entity.name.variable.local.cs"}}}]},"finally-clause":{"name":"meta.statement.finally.razor","begin":"(?:^|(?<=}))\\s*(finally)\\b\\s*?(?=[\\n\\{])","beginCaptures":{"1":{"name":"keyword.control.try.finally.cs"}},"patterns":[{"include":"#csharp-code-block"},{"include":"#razor-codeblock-body"}],"end":"(?<=})"},"await-prefix":{"name":"keyword.other.await.cs","match":"(await)\\s+"},"csharp-code-block":{"name":"meta.structure.razor.csharp.codeblock","begin":"(\\{)","beginCaptures":{"1":{"name":"punctuation.curlybrace.open.cs"}},"patterns":[{"include":"#razor-codeblock-body"}],"end":"(\\})","endCaptures":{"1":{"name":"punctuation.curlybrace.close.cs"}}},"csharp-condition":{"begin":"(\\()","beginCaptures":{"1":{"name":"punctuation.parenthesis.open.cs"}},"patterns":[{"include":"source.cs#local-variable-declaration"},{"include":"source.cs#expression"},{"include":"source.cs#punctuation-comma"},{"include":"source.cs#punctuation-semicolon"}],"end":"(\\))","endCaptures":{"1":{"name":"punctuation.parenthesis.close.cs"}}}}}
|