From c05fb4369e1e439977df48860c9b52b38d879711 Mon Sep 17 00:00:00 2001 From: Jordi Ramos Date: Mon, 15 Apr 2024 13:37:10 -0700 Subject: [PATCH 1/3] fix html-razor textmate - added textmate grammar to both razor and html (test) files so that we can correctly label razor components that are within html tags. We will need to update the html grammar used in razor as well - updated tests to reflect the desire behavior, note that we changed some of the classification from existing tests as they were not correctly labeling razor grammar in html tags either --- .../syntaxes/aspnetcorerazor.tmLanguage.json | 10 + .../syntaxes/aspnetcorerazor.tmLanguage.yml | 1928 +++--- .../embeddedGrammars/html.tmLanguage.json | 5298 +++++++++-------- .../__snapshots__/grammarTests.test.ts.snap | 878 ++- .../tests/grammarTests.test.ts | 194 +- .../tests/htmlDynamicAttribute.ts | 33 + 6 files changed, 4529 insertions(+), 3812 deletions(-) create mode 100644 test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts diff --git a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json index b82283682..920f4a125 100644 --- a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json +++ b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json @@ -14,6 +14,16 @@ } ], "repository": { + "expression": { + "patterns": [ + { + "include": "#explicit-razor-expression" + }, + { + "include": "#implicit-expression" + } + ] + }, "razor-control-structures": { "patterns": [ { diff --git a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml index 66867921f..f036968da 100644 --- a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml +++ b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml @@ -1,961 +1,967 @@ -name: ASP.NET Razor -scopeName: text.aspnetcorerazor -fileTypes: - - 'razor' - - 'cshtml' -patterns: - - include: '#razor-control-structures' - - include: 'text.html.basic' - -repository: - - # Razor control structures, including C# control structures that require an '@' - 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' - -# Razor control structures, including C# control structures that don't require an '@' (ie, are nested in a C# context) - 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 Code Block ------------ - - 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: '()' - beginCaptures: - 1: { name: 'keyword.control.cshtml.transition.textTag.open' } - patterns: - - include: '#wellformed-html' - - include: '$self' - end: '()' - endCaptures: - 1: { name: 'keyword.control.cshtml.transition.textTag.close' } - -# --------- Razor Comment ----------- - - 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']} - -# ---------- HTML ------------ - - wellformed-html: - patterns: - - include: '#void-tag' - - include: '#non-void-tag' - - # Void tags are well-known tags that do not have an end tag *and* are not required to be self-closing. - # https://html.spec.whatwg.org/multipage/syntax.html#void-elements - 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' } - - # This is some complicated trickery to be able to detect & match - # self-closing components as well as *matching* elements with begin/end tags, - # more-or-less copied from microsoft/TypeScript-TmLanguage's TSX grammar. - # Basically - we match both ways a tag can be closed (self-closing or an end tag), - # and leave the inner patterns to figure out which one we matched. - non-void-tag: - begin: '(?=<(!)?([^/\s>]+)(\s|/?>))' - end: '()|(/>)' # The \2 back-references the second capture in 'begin', for matching tags - 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: '(?=\{\}\)\]''"])' - - implicit-expression-body: - patterns: - - include: '#implicit-expression-invocation-start' - - include: '#implicit-expression-accessor-start' - end: '(?=[\s<>\{\}\)\]''"])' - - # CSharp colors method invocations differently than accessors - # This captures situations where you do @SomeMethod() - implicit-expression-invocation-start: - begin: '([_[:alpha:]][_[:alnum:]]*)(?=\()' - beginCaptures: - 1: { name: 'entity.name.function.cs' } - patterns: - - include: '#implicit-expression-continuation' - end: '(?=[\s<>\{\}\)\]''"])' - - # CSharp colors property accessors differently than methods - # This captures situations where you do @SomeProperty - 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 ------------ - - 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 and @functions <<<<< - - 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 <<<<< - - 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, @removeTagHelper and @tagHelperPrefix <<<<< - - 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, layout, @implements and @inherits <<<<< - - 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 <<<<< - - 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 <<<<< - - 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 <<<<< - - 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 <<<<< - - 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 <<<<< - - 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 <<<<< - - 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 <<<<< - - 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 <<<<< - - 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' } - - # ---------- Razor C# Control Structures ------------ - - 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' - # while is incompatible with optional transitions because @do { } \n while { } is valid everywhere, and textmate only matches - # one line at a time - - 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 (...) { ... } <<<<< - - 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 (...) { ... } <<<<< - - 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 [if (...)] { ... } <<<<< - - 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 (...) { ... } <<<<< - - 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 (...) { ... } <<<<< - - 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: '(?<=})' - - # This condition is pulled directly from the C# grammar for foreach statements - foreach-condition: - begin: '\(' - beginCaptures: - 0: { name: 'punctuation.parenthesis.open.cs' } - end: '\)' - endCaptures: - 0: { name: 'punctuation.parenthesis.close.cs' } - patterns: - - match: |- - (?x) - (?: - (\bvar\b)| - (? - (?: - (?: - (?:(?@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification - (? # identifier + type arguments (if any) - \g\s* - (?\s*<(?:[^<>]|\g)+>\s*)? - ) - (?:\s*\.\s*\g)* | # Are there any more names being dotted into? - (?\s*\((?:[^\(\)]|\g)+\)) - ) - (?:\s*\?\s*)? # nullable suffix? - (?:\s*\[(?:\s*,\s*)*\]\s*)* # array suffix? - ) - ) - )\s+ - (\g)\s+ - \b(in)\b - captures: - 1: { name: 'keyword.other.var.cs' } - 2: - patterns: - - include: 'source.cs#type' - # '3': ? is a sub-expression. It's final value is not considered. - # '4': ? is a sub-expression. It's final value is not considered. - # '5': ? is a sub-expression. It's final value is not considered. - # '6': ? is a sub-expression. It's final value is not considered. - 7: { name: 'entity.name.variable.local.cs' } - 8: { name: 'keyword.control.loop.in.cs' } - - match: |- - (?x) # match foreach (var (x, y) in ...) - (?:\b(var)\b\s*)? - (?\((?:[^\(\)]|\g)+\))\s+ - \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 (...) while { ... } <<<<< - - 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 (...) { ... } <<<<< - - 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 (...) { ... } <<<<< - - 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 (...) { ... } <<<<< - - 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 { ... } [catch|finally] (...) { ... } <<<<< - - 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: '(?<=})' - - # This condition is pulled directly from the C# grammar for catch clauses - catch-condition: - begin: '\(' - beginCaptures: - 0: { name: 'punctuation.parenthesis.open.cs' } - end: '\)' - endCaptures: - 0: { name: 'punctuation.parenthesis.close.cs' } - patterns: - - match: |- - (?x) - (? - (?: - (?: - (?:(?@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification - (? # identifier + type arguments (if any) - \g\s* - (?\s*<(?:[^<>]|\g)+>\s*)? - ) - (?:\s*\.\s*\g)* | # Are there any more names being dotted into? - (?\s*\((?:[^\(\)]|\g)+\)) - ) - (?:\s*\?\s*)? # nullable suffix? - (?:\s*\[(?:\s*,\s*)*\]\s*)* # array suffix? - ) - )\s* - (?:(\g)\b)? - captures: - 1: - patterns: - - include: 'source.cs#type' - # '2': ? is a sub-expression. It's final value is not considered. - # '3': ? is a sub-expression. It's final value is not considered. - # '4': ? is a sub-expression. It's final value is not considered. - # '5': ? is a sub-expression. It's final value is not considered. - 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: '(?<=})' - - # ---------- Misc C# ------------ - - 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' } +name: ASP.NET Razor +scopeName: text.aspnetcorerazor +fileTypes: + - 'razor' + - 'cshtml' +patterns: + - include: '#razor-control-structures' + - include: 'text.html.basic' + +repository: + + # Razor control structures, including C# control structures that require an '@' + 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' + +# Razor control structures, including C# control structures that don't require an '@' (ie, are nested in a C# context) + 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' + + # a clause to combine the explicit and implicit razor expressions, used by the html grammar + expression: + patterns: + - include: '#explicit-razor-expression' + - include: '#implicit-expression' + + escaped-transition: + name: constant.character.escape.razor.transition + match: '@@' + + transition: + match: '@' + name: keyword.control.cshtml.transition + +# ---------- Razor Code Block ------------ + + 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: '()' + beginCaptures: + 1: { name: 'keyword.control.cshtml.transition.textTag.open' } + patterns: + - include: '#wellformed-html' + - include: '$self' + end: '()' + endCaptures: + 1: { name: 'keyword.control.cshtml.transition.textTag.close' } + +# --------- Razor Comment ----------- + + 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']} + +# ---------- HTML ------------ + + wellformed-html: + patterns: + - include: '#void-tag' + - include: '#non-void-tag' + + # Void tags are well-known tags that do not have an end tag *and* are not required to be self-closing. + # https://html.spec.whatwg.org/multipage/syntax.html#void-elements + 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' } + + # This is some complicated trickery to be able to detect & match + # self-closing components as well as *matching* elements with begin/end tags, + # more-or-less copied from microsoft/TypeScript-TmLanguage's TSX grammar. + # Basically - we match both ways a tag can be closed (self-closing or an end tag), + # and leave the inner patterns to figure out which one we matched. + non-void-tag: + begin: '(?=<(!)?([^/\s>]+)(\s|/?>))' + end: '()|(/>)' # The \2 back-references the second capture in 'begin', for matching tags + 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: '(?=\{\}\)\]''"])' + + implicit-expression-body: + patterns: + - include: '#implicit-expression-invocation-start' + - include: '#implicit-expression-accessor-start' + end: '(?=[\s<>\{\}\)\]''"])' + + # CSharp colors method invocations differently than accessors + # This captures situations where you do @SomeMethod() + implicit-expression-invocation-start: + begin: '([_[:alpha:]][_[:alnum:]]*)(?=\()' + beginCaptures: + 1: { name: 'entity.name.function.cs' } + patterns: + - include: '#implicit-expression-continuation' + end: '(?=[\s<>\{\}\)\]''"])' + + # CSharp colors property accessors differently than methods + # This captures situations where you do @SomeProperty + 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 ------------ + + 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 and @functions <<<<< + + 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 <<<<< + + 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, @removeTagHelper and @tagHelperPrefix <<<<< + + 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, layout, @implements and @inherits <<<<< + + 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 <<<<< + + 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 <<<<< + + 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 <<<<< + + 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 <<<<< + + 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 <<<<< + + 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 <<<<< + + 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 <<<<< + + 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 <<<<< + + 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' } + + # ---------- Razor C# Control Structures ------------ + + 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' + # while is incompatible with optional transitions because @do { } \n while { } is valid everywhere, and textmate only matches + # one line at a time + - 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 (...) { ... } <<<<< + + 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 (...) { ... } <<<<< + + 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 [if (...)] { ... } <<<<< + + 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 (...) { ... } <<<<< + + 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 (...) { ... } <<<<< + + 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: '(?<=})' + + # This condition is pulled directly from the C# grammar for foreach statements + foreach-condition: + begin: '\(' + beginCaptures: + 0: { name: 'punctuation.parenthesis.open.cs' } + end: '\)' + endCaptures: + 0: { name: 'punctuation.parenthesis.close.cs' } + patterns: + - match: |- + (?x) + (?: + (\bvar\b)| + (? + (?: + (?: + (?:(?@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification + (? # identifier + type arguments (if any) + \g\s* + (?\s*<(?:[^<>]|\g)+>\s*)? + ) + (?:\s*\.\s*\g)* | # Are there any more names being dotted into? + (?\s*\((?:[^\(\)]|\g)+\)) + ) + (?:\s*\?\s*)? # nullable suffix? + (?:\s*\[(?:\s*,\s*)*\]\s*)* # array suffix? + ) + ) + )\s+ + (\g)\s+ + \b(in)\b + captures: + 1: { name: 'keyword.other.var.cs' } + 2: + patterns: + - include: 'source.cs#type' + # '3': ? is a sub-expression. It's final value is not considered. + # '4': ? is a sub-expression. It's final value is not considered. + # '5': ? is a sub-expression. It's final value is not considered. + # '6': ? is a sub-expression. It's final value is not considered. + 7: { name: 'entity.name.variable.local.cs' } + 8: { name: 'keyword.control.loop.in.cs' } + - match: |- + (?x) # match foreach (var (x, y) in ...) + (?:\b(var)\b\s*)? + (?\((?:[^\(\)]|\g)+\))\s+ + \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 (...) while { ... } <<<<< + + 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 (...) { ... } <<<<< + + 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 (...) { ... } <<<<< + + 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 (...) { ... } <<<<< + + 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 { ... } [catch|finally] (...) { ... } <<<<< + + 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: '(?<=})' + + # This condition is pulled directly from the C# grammar for catch clauses + catch-condition: + begin: '\(' + beginCaptures: + 0: { name: 'punctuation.parenthesis.open.cs' } + end: '\)' + endCaptures: + 0: { name: 'punctuation.parenthesis.close.cs' } + patterns: + - match: |- + (?x) + (? + (?: + (?: + (?:(?@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification + (? # identifier + type arguments (if any) + \g\s* + (?\s*<(?:[^<>]|\g)+>\s*)? + ) + (?:\s*\.\s*\g)* | # Are there any more names being dotted into? + (?\s*\((?:[^\(\)]|\g)+\)) + ) + (?:\s*\?\s*)? # nullable suffix? + (?:\s*\[(?:\s*,\s*)*\]\s*)* # array suffix? + ) + )\s* + (?:(\g)\b)? + captures: + 1: + patterns: + - include: 'source.cs#type' + # '2': ? is a sub-expression. It's final value is not considered. + # '3': ? is a sub-expression. It's final value is not considered. + # '4': ? is a sub-expression. It's final value is not considered. + # '5': ? is a sub-expression. It's final value is not considered. + 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: '(?<=})' + + # ---------- Misc C# ------------ + + 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' } diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json index ef850d941..1bc7a1c2a 100644 --- a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json @@ -1,2643 +1,2655 @@ -{ - "information_for_contributors": [ - "This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist", - "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/textmate/html.tmbundle/commit/0c3d5ee54de3a993f747f54186b73a4d2d3c44a2", - "name": "HTML", - "scopeName": "text.html.basic", - "injections": { - "R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": { - "comment": "Uses R: to ensure this matches after any other injections.", - "patterns": [ - { - "match": "<", - "name": "invalid.illegal.bad-angle-bracket.html" - } - ] - } - }, - "patterns": [ - { - "include": "#xml-processing" - }, - { - "include": "#comment" - }, - { - "include": "#doctype" - }, - { - "include": "#cdata" - }, - { - "include": "#tags-valid" - }, - { - "include": "#tags-invalid" - }, - { - "include": "#entities" - } - ], - "repository": { - "attribute": { - "patterns": [ - { - "begin": "(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "HTML5 attributes, not event handlers", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "begin": "style(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "HTML5 style attribute", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.style.html", - "patterns": [ - { - "begin": "=", - "beginCaptures": { - "0": { - "name": "punctuation.separator.key-value.html" - } - }, - "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", - "patterns": [ - { - "begin": "(?=[^\\s=<>`/]|/(?!>))", - "end": "(?!\\G)", - "name": "meta.embedded.line.css", - "patterns": [ - { - "captures": { - "0": { - "name": "source.css" - } - }, - "match": "([^\\s\"'=<>`/]|/(?!>))+", - "name": "string.unquoted.html" - }, - { - "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.html" - } - }, - "contentName": "source.css", - "end": "(\")", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.html" - }, - "1": { - "name": "source.css" - } - }, - "name": "string.quoted.double.html", - "patterns": [ - { - "include": "#entities" - } - ] - }, - { - "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.html" - } - }, - "contentName": "source.css", - "end": "(')", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.html" - }, - "1": { - "name": "source.css" - } - }, - "name": "string.quoted.single.html", - "patterns": [ - { - "include": "#entities" - } - ] - } - ] - }, - { - "match": "=", - "name": "invalid.illegal.unexpected-equals-sign.html" - } - ] - } - ] - }, - { - "begin": "on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "HTML5 attributes, event handlers", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.event-handler.$1.html", - "patterns": [ - { - "begin": "=", - "beginCaptures": { - "0": { - "name": "punctuation.separator.key-value.html" - } - }, - "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", - "patterns": [ - { - "begin": "(?=[^\\s=<>`/]|/(?!>))", - "end": "(?!\\G)", - "name": "meta.embedded.line.js", - "patterns": [ - { - "captures": { - "0": { - "name": "source.js" - }, - "1": { - "patterns": [ - { - "include": "source.js" - } - ] - } - }, - "match": "(([^\\s\"'=<>`/]|/(?!>))+)", - "name": "string.unquoted.html" - }, - { - "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.html" - } - }, - "contentName": "source.js", - "end": "(\")", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.html" - }, - "1": { - "name": "source.js" - } - }, - "name": "string.quoted.double.html", - "patterns": [ - { - "captures": { - "0": { - "patterns": [ - { - "include": "source.js" - } - ] - } - }, - "match": "([^\\n\"/]|/(?![/*]))+" - }, - { - "begin": "//", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.js" - } - }, - "end": "(?=\")|\\n", - "name": "comment.line.double-slash.js" - }, - { - "begin": "/\\*", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.begin.js" - } - }, - "end": "(?=\")|\\*/", - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.end.js" - } - }, - "name": "comment.block.js" - } - ] - }, - { - "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.html" - } - }, - "contentName": "source.js", - "end": "(')", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.html" - }, - "1": { - "name": "source.js" - } - }, - "name": "string.quoted.single.html", - "patterns": [ - { - "captures": { - "0": { - "patterns": [ - { - "include": "source.js" - } - ] - } - }, - "match": "([^\\n'/]|/(?![/*]))+" - }, - { - "begin": "//", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.js" - } - }, - "end": "(?=')|\\n", - "name": "comment.line.double-slash.js" - }, - { - "begin": "/\\*", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.begin.js" - } - }, - "end": "(?=')|\\*/", - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.end.js" - } - }, - "name": "comment.block.js" - } - ] - } - ] - }, - { - "match": "=", - "name": "invalid.illegal.unexpected-equals-sign.html" - } - ] - } - ] - }, - { - "begin": "(data-[a-z\\-]+)(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "HTML5 attributes, data-*", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.data-x.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "begin": "(align|bgcolor|border)(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "invalid.deprecated.entity.other.attribute-name.html" - } - }, - "comment": "HTML attributes, deprecated", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "Anything else that is valid", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.unrecognized.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "match": "[^\\s>]+", - "name": "invalid.illegal.character-not-allowed-here.html" - } - ] - }, - "attribute-interior": { - "patterns": [ - { - "begin": "=", - "beginCaptures": { - "0": { - "name": "punctuation.separator.key-value.html" - } - }, - "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", - "patterns": [ - { - "match": "([^\\s\"'=<>`/]|/(?!>))+", - "name": "string.unquoted.html" - }, - { - "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.html" - } - }, - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.html" - } - }, - "name": "string.quoted.double.html", - "patterns": [ - { - "include": "#entities" - } - ] - }, - { - "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.html" - } - }, - "end": "'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.html" - } - }, - "name": "string.quoted.single.html", - "patterns": [ - { - "include": "#entities" - } - ] - }, - { - "match": "=", - "name": "invalid.illegal.unexpected-equals-sign.html" - } - ] - } - ] - }, - "cdata": { - "begin": "", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.cdata.html" - }, - "comment": { - "begin": "", - "name": "comment.block.html", - "patterns": [ - { - "match": "\\G-?>", - "name": "invalid.illegal.characters-not-allowed-here.html" - }, - { - "match": ")", - "name": "invalid.illegal.characters-not-allowed-here.html" - }, - { - "match": "--!>", - "name": "invalid.illegal.characters-not-allowed-here.html" - } - ] - }, - "core-minus-invalid": { - "comment": "This should be the root pattern array includes minus #tags-invalid", - "patterns": [ - { - "include": "#xml-processing" - }, - { - "include": "#comment" - }, - { - "include": "#doctype" - }, - { - "include": "#cdata" - }, - { - "include": "#tags-valid" - }, - { - "include": "#entities" - } - ] - }, - "doctype": { - "begin": "", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.doctype.html", - "patterns": [ - { - "match": "\\G(?i:DOCTYPE)", - "name": "entity.name.tag.html" - }, - { - "begin": "\"", - "end": "\"", - "name": "string.quoted.double.html" - }, - { - "match": "[^\\s>]+", - "name": "entity.other.attribute-name.html" - } - ] - }, - "entities": { - "patterns": [ - { - "captures": { - "1": { - "name": "punctuation.definition.entity.html" - }, - "912": { - "name": "punctuation.definition.entity.html" - } - }, - "comment": "Yes this is a bit ridiculous, there are quite a lot of these", - "match": "(?x)\n\t\t\t\t\t\t(&)\t(?=[a-zA-Z])\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\n\t\t\t\t\t\t | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\n\t\t\t\t\t\t | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\n\t\t\t\t\t\t | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\n\t\t\t\t\t\t | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\n\t\t\t\t\t\t | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\n\t\t\t\t\t\t | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\n\t\t\t\t\t\t | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\n\t\t\t\t\t\t | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\n\t\t\t\t\t\t | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\n\t\t\t\t\t\t | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\n\t\t\t\t\t\t | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\n\t\t\t\t\t\t | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\n\t\t\t\t\t\t | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\n\t\t\t\t\t\t | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\n\t\t\t\t\t\t | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\n\t\t\t\t\t\t | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\n\t\t\t\t\t\t | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\n\t\t\t\t\t\t | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\n\t\t\t\t\t\t | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\n\t\t\t\t\t\t | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\n\t\t\t\t\t\t | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\n\t\t\t\t\t\t | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\n\t\t\t\t\t\t | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\n\t\t\t\t\t\t | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\n\t\t\t\t\t\t | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(;)\n\t\t\t\t\t", - "name": "constant.character.entity.named.$2.html" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.entity.html" - }, - "3": { - "name": "punctuation.definition.entity.html" - } - }, - "match": "(&)#[0-9]+(;)", - "name": "constant.character.entity.numeric.decimal.html" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.entity.html" - }, - "3": { - "name": "punctuation.definition.entity.html" - } - }, - "match": "(&)#[xX][0-9a-fA-F]+(;)", - "name": "constant.character.entity.numeric.hexadecimal.html" - }, - { - "match": "&(?=[a-zA-Z0-9]+;)", - "name": "invalid.illegal.ambiguous-ampersand.html" - } - ] - }, - "math": { - "patterns": [ - { - "begin": "(?i)(<)(math)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.structure.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()", - "endCaptures": { - "0": { - "name": "meta.tag.structure.$2.end.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.element.structure.$2.html", - "patterns": [ - { - "begin": "(?)\\G", - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - } - ], - "repository": { - "attribute": { - "patterns": [ - { - "begin": "(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "Anything else that is valid", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.unrecognized.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "match": "[^\\s>]+", - "name": "invalid.illegal.character-not-allowed-here.html" - } - ] - }, - "tags": { - "patterns": [ - { - "include": "#comment" - }, - { - "include": "#cdata" - }, - { - "captures": { - "0": { - "name": "meta.tag.structure.math.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.structure.math.$2.html" - }, - { - "begin": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.structure.math.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.inline.math.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.inline.math.$2.html" - }, - { - "begin": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.inline.math.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.object.math.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.object.math.$2.html" - }, - { - "begin": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.object.math.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.other.invalid.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.illegal.unrecognized-tag.html" - }, - "4": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "6": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.other.invalid.html" - }, - { - "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.other.invalid.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.illegal.unrecognized-tag.html" - }, - "4": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "6": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.other.invalid.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "include": "#tags-invalid" - } - ] - } - } - }, - "svg": { - "patterns": [ - { - "begin": "(?i)(<)(svg)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.structure.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()", - "endCaptures": { - "0": { - "name": "meta.tag.structure.$2.end.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.element.structure.$2.html", - "patterns": [ - { - "begin": "(?)\\G", - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - } - ], - "repository": { - "attribute": { - "patterns": [ - { - "begin": "(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", - "beginCaptures": { - "0": { - "name": "entity.other.attribute-name.html" - } - }, - "comment": "Anything else that is valid", - "end": "(?=\\s*+[^=\\s])", - "name": "meta.attribute.unrecognized.$1.html", - "patterns": [ - { - "include": "#attribute-interior" - } - ] - }, - { - "match": "[^\\s>]+", - "name": "invalid.illegal.character-not-allowed-here.html" - } - ] - }, - "tags": { - "patterns": [ - { - "include": "#comment" - }, - { - "include": "#cdata" - }, - { - "captures": { - "0": { - "name": "meta.tag.metadata.svg.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.metadata.svg.$2.html" - }, - { - "begin": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.metadata.svg.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.structure.svg.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.structure.svg.$2.html" - }, - { - "begin": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.structure.svg.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.inline.svg.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.inline.svg.$2.html" - }, - { - "begin": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.inline.svg.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.object.svg.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.object.svg.$2.html" - }, - { - "begin": "(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.object.svg.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "5": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.other.svg.$2.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - }, - "4": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "6": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.other.svg.$2.html" - }, - { - "begin": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.other.svg.$2.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - }, - "4": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "6": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.other.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "captures": { - "0": { - "name": "meta.tag.other.invalid.void.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.illegal.unrecognized-tag.html" - }, - "4": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "6": { - "name": "punctuation.definition.tag.end.html" - } - }, - "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", - "name": "meta.element.other.invalid.html" - }, - { - "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", - "beginCaptures": { - "0": { - "name": "meta.tag.other.invalid.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.illegal.unrecognized-tag.html" - }, - "4": { - "patterns": [ - { - "include": "#attribute" - } - ] - }, - "6": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(?i)()|(/>)|(?=)\\G", - "end": "(?=/>)|>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.other.invalid.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#tags" - } - ] - }, - { - "include": "#tags-invalid" - } - ] - } - } - }, - "tags-invalid": { - "patterns": [ - { - "begin": "(]*))(?)", - "endCaptures": { - "1": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.other.$2.html", - "patterns": [ - { - "include": "#attribute" - } - ] - } - ] - }, - "tags-valid": { - "patterns": [ - { - "begin": "(^[ \\t]+)?(?=<(?i:style)\\b(?!-))", - "beginCaptures": { - "1": { - "name": "punctuation.whitespace.embedded.leading.html" - } - }, - "end": "(?!\\G)([ \\t]*$\\n?)?", - "endCaptures": { - "1": { - "name": "punctuation.whitespace.embedded.trailing.html" - } - }, - "patterns": [ - { - "begin": "(?i)(<)(style)(?=\\s|/?>)", - "beginCaptures": { - "0": { - "name": "meta.tag.metadata.style.start.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "(?i)((<)/)(style)\\s*(>)", - "endCaptures": { - "0": { - "name": "meta.tag.metadata.style.end.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "source.css-ignored-vscode" - }, - "3": { - "name": "entity.name.tag.html" - }, - "4": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.embedded.block.html", - "patterns": [ - { - "begin": "\\G", - "captures": { - "1": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "(>)", - "name": "meta.tag.metadata.style.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?!\\G)", - "end": "(?=)", - "endCaptures": { - "0": { - "name": "meta.tag.metadata.script.end.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.embedded.block.html", - "patterns": [ - { - "begin": "\\G", - "end": "(?=/)", - "patterns": [ - { - "begin": "(>)", - "beginCaptures": { - "0": { - "name": "meta.tag.metadata.script.start.html" - }, - "1": { - "name": "punctuation.definition.tag.end.html" - } - }, - "end": "((<))(?=/(?i:script))", - "endCaptures": { - "0": { - "name": "meta.tag.metadata.script.end.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "source.js-ignored-vscode" - } - }, - "patterns": [ - { - "begin": "\\G", - "end": "(?=\t\t\t\t\t\t\t\t\t\t\t# Tag without type attribute\n\t\t\t\t\t\t\t\t\t\t\t\t | type(?=[\\s=])\n\t\t\t\t\t\t\t\t\t\t\t\t \t(?!\\s*=\\s*\n\t\t\t\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''\t\t\t\t\t\t\t\t# Empty\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t | \"\"\t\t\t\t\t\t\t\t\t# Values\n\t\t\t\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(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\t\t\t\t\t\t\t# Text mime-types\n\t\t\t\t\t\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\t\tjavascript(1\\.[0-5])?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | x-javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | jscript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | livescript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | babel\t\t\t\t\t\t# Javascript variant currently\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t# recognized as such\n\t\t\t\t\t\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 | application/\t\t\t\t\t# Application mime-types\n\t\t\t\t\t\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\t\t(x-)?javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\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 | module\n\t\t\t\t\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[\\s\"'>]\n\t\t\t\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)\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)", - "name": "meta.tag.metadata.script.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?ix:\n\t\t\t\t\t\t\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t('|\"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\n\t\t\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\tx-handlebars\n\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-(handlebars-)?|ng-)?template\n\t\t\t\t\t\t\t\t\t\t\t\t\t | html\n\t\t\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[\\s\"'>]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)", - "end": "((<))(?=/(?i:script))", - "endCaptures": { - "0": { - "name": "meta.tag.metadata.script.end.html" - }, - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "text.html.basic" - } - }, - "patterns": [ - { - "begin": "\\G", - "end": "(>)", - "endCaptures": { - "1": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.script.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?!\\G)", - "end": "(?=)", - "endCaptures": { - "1": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.script.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?!\\G)", - "end": "(?=)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.$2.void.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(noscript|title)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(col|hr|input)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.$2.void.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(area|br|wbr)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.$2.void.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.$2.void.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)((basefont|isindex))(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.metadata.$2.void.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.structure.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.inline.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)((frame))(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.$2.void.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)((applet))(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.deprecated.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.object.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.illegal.no-longer-supported.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.other.$2.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "(?i)()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - }, - "3": { - "name": "invalid.illegal.no-longer-supported.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.other.$2.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "include": "#math" - }, - { - "include": "#svg" - }, - { - "begin": "(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "/?>", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.custom.start.html", - "patterns": [ - { - "include": "#attribute" - } - ] - }, - { - "begin": "()", - "beginCaptures": { - "1": { - "name": "punctuation.definition.tag.begin.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.tag.end.html" - } - }, - "name": "meta.tag.custom.end.html", - "patterns": [ - { - "include": "#attribute" - } - ] - } - ] - }, - "xml-processing": { - "begin": "(<\\?)(xml)", - "captures": { - "1": { - "name": "punctuation.definition.tag.html" - }, - "2": { - "name": "entity.name.tag.html" - } - }, - "end": "(\\?>)", - "name": "meta.tag.metadata.processing.xml.html", - "patterns": [ - { - "include": "#attribute" - } - ] - } - } -} +{ + "information_for_contributors": [ + "This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist", + "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/textmate/html.tmbundle/commit/0c3d5ee54de3a993f747f54186b73a4d2d3c44a2", + "name": "HTML", + "scopeName": "text.html.basic", + "injections": { + "R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": { + "comment": "Uses R: to ensure this matches after any other injections.", + "patterns": [ + { + "match": "<", + "name": "invalid.illegal.bad-angle-bracket.html" + } + ] + } + }, + "patterns": [ + { + "include": "#xml-processing" + }, + { + "include": "#comment" + }, + { + "include": "#doctype" + }, + { + "include": "#cdata" + }, + { + "include": "#tags-valid" + }, + { + "include": "#tags-invalid" + }, + { + "include": "#entities" + } + ], + "repository": { + "attribute": { + "patterns": [ + { + "begin": "(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "HTML5 attributes, not event handlers", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "begin": "style(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "HTML5 style attribute", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.style.html", + "patterns": [ + { + "begin": "=", + "beginCaptures": { + "0": { + "name": "punctuation.separator.key-value.html" + } + }, + "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", + "patterns": [ + { + "begin": "(?=[^\\s=<>`/]|/(?!>))", + "end": "(?!\\G)", + "name": "meta.embedded.line.css", + "patterns": [ + { + "captures": { + "0": { + "name": "source.css" + } + }, + "match": "([^\\s\"'=<>`/]|/(?!>))+", + "name": "string.unquoted.html" + }, + { + "begin": "\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.html" + } + }, + "contentName": "source.css", + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.html" + }, + "1": { + "name": "source.css" + } + }, + "name": "string.quoted.double.html", + "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, + { + "include": "#entities" + } + ] + }, + { + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.html" + } + }, + "contentName": "source.css", + "end": "(')", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.html" + }, + "1": { + "name": "source.css" + } + }, + "name": "string.quoted.single.html", + "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, + { + "include": "#entities" + } + ] + } + ] + }, + { + "match": "=", + "name": "invalid.illegal.unexpected-equals-sign.html" + } + ] + } + ] + }, + { + "begin": "on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "HTML5 attributes, event handlers", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.event-handler.$1.html", + "patterns": [ + { + "begin": "=", + "beginCaptures": { + "0": { + "name": "punctuation.separator.key-value.html" + } + }, + "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", + "patterns": [ + { + "begin": "(?=[^\\s=<>`/]|/(?!>))", + "end": "(?!\\G)", + "name": "meta.embedded.line.js", + "patterns": [ + { + "captures": { + "0": { + "name": "source.js" + }, + "1": { + "patterns": [ + { + "include": "source.js" + } + ] + } + }, + "match": "(([^\\s\"'=<>`/]|/(?!>))+)", + "name": "string.unquoted.html" + }, + { + "begin": "\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.html" + } + }, + "contentName": "source.js", + "end": "(\")", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.html" + }, + "1": { + "name": "source.js" + } + }, + "name": "string.quoted.double.html", + "patterns": [ + { + "captures": { + "0": { + "patterns": [ + { + "include": "source.js" + } + ] + } + }, + "match": "([^\\n\"/]|/(?![/*]))+" + }, + { + "begin": "//", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.js" + } + }, + "end": "(?=\")|\\n", + "name": "comment.line.double-slash.js" + }, + { + "begin": "/\\*", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.begin.js" + } + }, + "end": "(?=\")|\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.end.js" + } + }, + "name": "comment.block.js" + } + ] + }, + { + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.html" + } + }, + "contentName": "source.js", + "end": "(')", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.html" + }, + "1": { + "name": "source.js" + } + }, + "name": "string.quoted.single.html", + "patterns": [ + { + "captures": { + "0": { + "patterns": [ + { + "include": "source.js" + } + ] + } + }, + "match": "([^\\n'/]|/(?![/*]))+" + }, + { + "begin": "//", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.js" + } + }, + "end": "(?=')|\\n", + "name": "comment.line.double-slash.js" + }, + { + "begin": "/\\*", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.begin.js" + } + }, + "end": "(?=')|\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.end.js" + } + }, + "name": "comment.block.js" + } + ] + } + ] + }, + { + "match": "=", + "name": "invalid.illegal.unexpected-equals-sign.html" + } + ] + } + ] + }, + { + "begin": "(data-[a-z\\-]+)(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "HTML5 attributes, data-*", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.data-x.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "begin": "(align|bgcolor|border)(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "invalid.deprecated.entity.other.attribute-name.html" + } + }, + "comment": "HTML attributes, deprecated", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "Anything else that is valid", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.unrecognized.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "match": "[^\\s>]+", + "name": "invalid.illegal.character-not-allowed-here.html" + } + ] + }, + "attribute-interior": { + "patterns": [ + { + "begin": "=", + "beginCaptures": { + "0": { + "name": "punctuation.separator.key-value.html" + } + }, + "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)", + "patterns": [ + { + "match": "([^\\s\"'=<>`/]|/(?!>))+", + "name": "string.unquoted.html" + }, + { + "begin": "\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.html" + } + }, + "end": "\"", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.html" + } + }, + "name": "string.quoted.double.html", + "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, + { + "include": "#entities" + } + ] + }, + { + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.html" + } + }, + "end": "'", + "endCaptures": { + "0": { + "name": "punctuation.definition.string.end.html" + } + }, + "name": "string.quoted.single.html", + "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, + { + "include": "#entities" + } + ] + }, + { + "match": "=", + "name": "invalid.illegal.unexpected-equals-sign.html" + } + ] + } + ] + }, + "cdata": { + "begin": "", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.cdata.html" + }, + "comment": { + "begin": "", + "name": "comment.block.html", + "patterns": [ + { + "match": "\\G-?>", + "name": "invalid.illegal.characters-not-allowed-here.html" + }, + { + "match": ")", + "name": "invalid.illegal.characters-not-allowed-here.html" + }, + { + "match": "--!>", + "name": "invalid.illegal.characters-not-allowed-here.html" + } + ] + }, + "core-minus-invalid": { + "comment": "This should be the root pattern array includes minus #tags-invalid", + "patterns": [ + { + "include": "#xml-processing" + }, + { + "include": "#comment" + }, + { + "include": "#doctype" + }, + { + "include": "#cdata" + }, + { + "include": "#tags-valid" + }, + { + "include": "#entities" + } + ] + }, + "doctype": { + "begin": "", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.doctype.html", + "patterns": [ + { + "match": "\\G(?i:DOCTYPE)", + "name": "entity.name.tag.html" + }, + { + "begin": "\"", + "end": "\"", + "name": "string.quoted.double.html" + }, + { + "match": "[^\\s>]+", + "name": "entity.other.attribute-name.html" + } + ] + }, + "entities": { + "patterns": [ + { + "captures": { + "1": { + "name": "punctuation.definition.entity.html" + }, + "912": { + "name": "punctuation.definition.entity.html" + } + }, + "comment": "Yes this is a bit ridiculous, there are quite a lot of these", + "match": "(?x)\n\t\t\t\t\t\t(&)\t(?=[a-zA-Z])\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\n\t\t\t\t\t\t | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\n\t\t\t\t\t\t | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\n\t\t\t\t\t\t | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\n\t\t\t\t\t\t | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\n\t\t\t\t\t\t | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\n\t\t\t\t\t\t | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\n\t\t\t\t\t\t | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\n\t\t\t\t\t\t | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\n\t\t\t\t\t\t | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\n\t\t\t\t\t\t | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\n\t\t\t\t\t\t | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\n\t\t\t\t\t\t | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\n\t\t\t\t\t\t | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\n\t\t\t\t\t\t | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\n\t\t\t\t\t\t | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\n\t\t\t\t\t\t | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\n\t\t\t\t\t\t | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\n\t\t\t\t\t\t | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\n\t\t\t\t\t\t | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\n\t\t\t\t\t\t | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\n\t\t\t\t\t\t | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\n\t\t\t\t\t\t | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\n\t\t\t\t\t\t | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\n\t\t\t\t\t\t | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\n\t\t\t\t\t\t | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(;)\n\t\t\t\t\t", + "name": "constant.character.entity.named.$2.html" + }, + { + "captures": { + "1": { + "name": "punctuation.definition.entity.html" + }, + "3": { + "name": "punctuation.definition.entity.html" + } + }, + "match": "(&)#[0-9]+(;)", + "name": "constant.character.entity.numeric.decimal.html" + }, + { + "captures": { + "1": { + "name": "punctuation.definition.entity.html" + }, + "3": { + "name": "punctuation.definition.entity.html" + } + }, + "match": "(&)#[xX][0-9a-fA-F]+(;)", + "name": "constant.character.entity.numeric.hexadecimal.html" + }, + { + "match": "&(?=[a-zA-Z0-9]+;)", + "name": "invalid.illegal.ambiguous-ampersand.html" + } + ] + }, + "math": { + "patterns": [ + { + "begin": "(?i)(<)(math)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.structure.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()", + "endCaptures": { + "0": { + "name": "meta.tag.structure.$2.end.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.element.structure.$2.html", + "patterns": [ + { + "begin": "(?)\\G", + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + } + ], + "repository": { + "attribute": { + "patterns": [ + { + "begin": "(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "Anything else that is valid", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.unrecognized.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "match": "[^\\s>]+", + "name": "invalid.illegal.character-not-allowed-here.html" + } + ] + }, + "tags": { + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#cdata" + }, + { + "captures": { + "0": { + "name": "meta.tag.structure.math.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.structure.math.$2.html" + }, + { + "begin": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.structure.math.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.inline.math.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.inline.math.$2.html" + }, + { + "begin": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.inline.math.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.object.math.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.object.math.$2.html" + }, + { + "begin": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.object.math.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.other.invalid.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.illegal.unrecognized-tag.html" + }, + "4": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "6": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.other.invalid.html" + }, + { + "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.other.invalid.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.illegal.unrecognized-tag.html" + }, + "4": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "6": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.other.invalid.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "include": "#tags-invalid" + } + ] + } + } + }, + "svg": { + "patterns": [ + { + "begin": "(?i)(<)(svg)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.structure.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()", + "endCaptures": { + "0": { + "name": "meta.tag.structure.$2.end.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.element.structure.$2.html", + "patterns": [ + { + "begin": "(?)\\G", + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + } + ], + "repository": { + "attribute": { + "patterns": [ + { + "begin": "(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)", + "beginCaptures": { + "0": { + "name": "entity.other.attribute-name.html" + } + }, + "comment": "Anything else that is valid", + "end": "(?=\\s*+[^=\\s])", + "name": "meta.attribute.unrecognized.$1.html", + "patterns": [ + { + "include": "#attribute-interior" + } + ] + }, + { + "match": "[^\\s>]+", + "name": "invalid.illegal.character-not-allowed-here.html" + } + ] + }, + "tags": { + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#cdata" + }, + { + "captures": { + "0": { + "name": "meta.tag.metadata.svg.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.metadata.svg.$2.html" + }, + { + "begin": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.metadata.svg.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.structure.svg.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.structure.svg.$2.html" + }, + { + "begin": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.structure.svg.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.inline.svg.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.inline.svg.$2.html" + }, + { + "begin": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.inline.svg.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.object.svg.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.object.svg.$2.html" + }, + { + "begin": "(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.object.svg.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "5": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.other.svg.$2.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + }, + "4": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "6": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.other.svg.$2.html" + }, + { + "begin": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.other.svg.$2.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + }, + "4": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "6": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.other.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "captures": { + "0": { + "name": "meta.tag.other.invalid.void.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.illegal.unrecognized-tag.html" + }, + "4": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "6": { + "name": "punctuation.definition.tag.end.html" + } + }, + "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))", + "name": "meta.element.other.invalid.html" + }, + { + "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?", + "beginCaptures": { + "0": { + "name": "meta.tag.other.invalid.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.illegal.unrecognized-tag.html" + }, + "4": { + "patterns": [ + { + "include": "#attribute" + } + ] + }, + "6": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(?i)()|(/>)|(?=)\\G", + "end": "(?=/>)|>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.other.invalid.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#tags" + } + ] + }, + { + "include": "#tags-invalid" + } + ] + } + } + }, + "tags-invalid": { + "patterns": [ + { + "begin": "(]*))(?)", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.other.$2.html", + "patterns": [ + { + "include": "#attribute" + } + ] + } + ] + }, + "tags-valid": { + "patterns": [ + { + "begin": "(^[ \\t]+)?(?=<(?i:style)\\b(?!-))", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.embedded.leading.html" + } + }, + "end": "(?!\\G)([ \\t]*$\\n?)?", + "endCaptures": { + "1": { + "name": "punctuation.whitespace.embedded.trailing.html" + } + }, + "patterns": [ + { + "begin": "(?i)(<)(style)(?=\\s|/?>)", + "beginCaptures": { + "0": { + "name": "meta.tag.metadata.style.start.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "(?i)((<)/)(style)\\s*(>)", + "endCaptures": { + "0": { + "name": "meta.tag.metadata.style.end.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "source.css-ignored-vscode" + }, + "3": { + "name": "entity.name.tag.html" + }, + "4": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.embedded.block.html", + "patterns": [ + { + "begin": "\\G", + "captures": { + "1": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "(>)", + "name": "meta.tag.metadata.style.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?!\\G)", + "end": "(?=)", + "endCaptures": { + "0": { + "name": "meta.tag.metadata.script.end.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.embedded.block.html", + "patterns": [ + { + "begin": "\\G", + "end": "(?=/)", + "patterns": [ + { + "begin": "(>)", + "beginCaptures": { + "0": { + "name": "meta.tag.metadata.script.start.html" + }, + "1": { + "name": "punctuation.definition.tag.end.html" + } + }, + "end": "((<))(?=/(?i:script))", + "endCaptures": { + "0": { + "name": "meta.tag.metadata.script.end.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "source.js-ignored-vscode" + } + }, + "patterns": [ + { + "begin": "\\G", + "end": "(?=\t\t\t\t\t\t\t\t\t\t\t# Tag without type attribute\n\t\t\t\t\t\t\t\t\t\t\t\t | type(?=[\\s=])\n\t\t\t\t\t\t\t\t\t\t\t\t \t(?!\\s*=\\s*\n\t\t\t\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''\t\t\t\t\t\t\t\t# Empty\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t | \"\"\t\t\t\t\t\t\t\t\t# Values\n\t\t\t\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(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\t\t\t\t\t\t\t# Text mime-types\n\t\t\t\t\t\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\t\tjavascript(1\\.[0-5])?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | x-javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | jscript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | livescript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | babel\t\t\t\t\t\t# Javascript variant currently\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t# recognized as such\n\t\t\t\t\t\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 | application/\t\t\t\t\t# Application mime-types\n\t\t\t\t\t\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\t\t(x-)?javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\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 | module\n\t\t\t\t\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[\\s\"'>]\n\t\t\t\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)\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)", + "name": "meta.tag.metadata.script.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?ix:\n\t\t\t\t\t\t\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t('|\"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\n\t\t\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\tx-handlebars\n\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-(handlebars-)?|ng-)?template\n\t\t\t\t\t\t\t\t\t\t\t\t\t | html\n\t\t\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[\\s\"'>]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)", + "end": "((<))(?=/(?i:script))", + "endCaptures": { + "0": { + "name": "meta.tag.metadata.script.end.html" + }, + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "text.html.basic" + } + }, + "patterns": [ + { + "begin": "\\G", + "end": "(>)", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.script.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?!\\G)", + "end": "(?=)", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.script.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?!\\G)", + "end": "(?=)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.$2.void.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(noscript|title)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(col|hr|input)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.$2.void.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(area|br|wbr)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.$2.void.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.$2.void.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)((basefont|isindex))(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.metadata.$2.void.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.structure.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.inline.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)((frame))(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.$2.void.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)((applet))(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.deprecated.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.object.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.illegal.no-longer-supported.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.other.$2.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "(?i)()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + }, + "3": { + "name": "invalid.illegal.no-longer-supported.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.other.$2.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "include": "#math" + }, + { + "include": "#svg" + }, + { + "begin": "(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "/?>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.custom.start.html", + "patterns": [ + { + "include": "#attribute" + } + ] + }, + { + "begin": "()", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": ">", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.end.html" + } + }, + "name": "meta.tag.custom.end.html", + "patterns": [ + { + "include": "#attribute" + } + ] + } + ] + }, + "xml-processing": { + "begin": "(<\\?)(xml)", + "captures": { + "1": { + "name": "punctuation.definition.tag.html" + }, + "2": { + "name": "entity.name.tag.html" + } + }, + "end": "(\\?>)", + "name": "meta.tag.metadata.processing.xml.html", + "patterns": [ + { + "include": "#attribute" + } + ] + } + } +} diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap index 901635556..18a5b8aa0 100644 --- a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap @@ -4480,7 +4480,10 @@ exports[`Grammar tests Explicit Expressions In Attributes Double Quotes Class ex - token from 5 to 10 (class) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, entity.other.attribute-name.html - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, punctuation.separator.key-value.html - token from 11 to 12 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, punctuation.definition.string.begin.html - - token from 12 to 30 (@(NavMenuCssClass)) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html + - token from 12 to 13 (@) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 13 to 14 (() with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 14 to 29 (NavMenuCssClass) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 29 to 30 ()) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 30 to 31 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 31 to 32 (>) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 32 to 34 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 23 to 25 (( - - token from 0 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html - - token from 12 to 20 (notValid) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html, entity.other.attribute-name.html - - token from 20 to 21 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html - - token from 21 to 22 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html, punctuation.separator.key-value.html - - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html - - token from 23 to 38 (Html.DisplayFor) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html, string.unquoted.html - - token from 38 to 45 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - - token from 46 to 48 (() with scopes text.aspnetcorerazor + - token from 0 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 12 to 20 (notValid) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 20 to 21 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 21 to 22 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.assignment.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 23 to 27 (Html) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.object.cs + - token from 27 to 28 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.accessor.cs + - token from 28 to 38 (DisplayFor) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 38 to 39 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 39 to 45 (object) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 45 to 46 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 46 to 47 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs Line: (_) => Model, - - token from 0 to 30 ( (_) => Model,) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 17 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 17 to 18 (_) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.variable.parameter.cs + - token from 18 to 19 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 20 to 22 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 23 to 28 (Model) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 28 to 29 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "name", - - token from 0 to 24 ( "name",) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 21 (name) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 21 to 22 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 22 to 23 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "someName", - - token from 0 to 28 ( "someName",) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 25 (someName) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 25 to 26 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 26 to 27 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: new { }) - - token from 0 to 25 ( new { })) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 19 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 20 to 21 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 21 to 22 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 22 to 23 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 23 to 24 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: }) - - token from 0 to 11 ( })) with scopes text.aspnetcorerazor + - token from 0 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 8 to 9 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 9 to 10 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: )"> - - token from 0 to 3 ()">) with scopes text.aspnetcorerazor + - token from 0 to 1 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 1 to 2 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 2 to 3 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 3 to 5 () with scopes text.aspnetcorerazor, meta.tag.structure.button.end.html, punctuation.definition.tag.end.html @@ -4590,7 +4633,12 @@ exports[`Grammar tests Explicit Expressions In Attributes Double Quotes Onclick - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html - token from 17 to 18 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.begin.html - - token from 18 to 36 (@(ToggleNavMenu())) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 20 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 20 to 33 (ToggleNavMenu) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 33 to 34 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 34 to 35 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 35 to 36 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 36 to 37 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 37 to 38 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 38 to 40 ((){1,2,3}[0] + await GetValueAsync() ?? someArray[await DoMoreAsync(() => {})])) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 20 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 20 to 23 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 23 to 24 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 24 to 25 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 25 to 26 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 26 to 29 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 29 to 30 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 30 to 35 (Array) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.type.cs + - token from 35 to 36 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 36 to 39 (int) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 40 to 41 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 41 to 42 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 42 to 43 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 43 to 44 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 44 to 45 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 45 to 46 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 46 to 47 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 47 to 48 (3) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 48 to 49 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 49 to 50 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 50 to 51 (0) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 51 to 52 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 52 to 53 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 53 to 54 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 54 to 55 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 55 to 60 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 60 to 61 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 61 to 74 (GetValueAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 74 to 75 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 75 to 81 (string) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 81 to 82 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 82 to 83 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 83 to 84 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 84 to 85 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 85 to 87 (??) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.null-coalescing.cs + - token from 87 to 88 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 88 to 97 (someArray) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.object.property.cs + - token from 97 to 98 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 98 to 103 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 103 to 104 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 104 to 115 (DoMoreAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 115 to 116 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 116 to 117 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 117 to 118 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 118 to 119 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 119 to 121 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 121 to 122 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 122 to 123 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 123 to 124 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 124 to 125 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 125 to 126 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 126 to 127 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 127 to 128 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 128 to 129 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 129 to 131 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 35 to 37 () with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 32 to 34 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 23 to 25 (( - - token from 0 to 48 ( notValid = Html.DisplayFor() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 12 to 20 (notValid) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 20 to 21 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 21 to 22 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.assignment.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 23 to 27 (Html) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.object.cs + - token from 27 to 28 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.accessor.cs + - token from 28 to 38 (DisplayFor) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 38 to 39 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 39 to 45 (object) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 45 to 46 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 46 to 47 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs Line: (_) => Model, - - token from 0 to 30 ( (_) => Model,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 17 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 17 to 18 (_) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.variable.parameter.cs + - token from 18 to 19 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 20 to 22 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 23 to 28 (Model) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 28 to 29 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "name", - - token from 0 to 24 ( "name",) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 21 (name) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 21 to 22 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 22 to 23 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "someName", - - token from 0 to 28 ( "someName",) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 25 (someName) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 25 to 26 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 26 to 27 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: new { }) - - token from 0 to 25 ( new { })) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 19 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 20 to 21 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 21 to 22 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 22 to 23 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 23 to 24 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: }) - - token from 0 to 11 ( })) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 8 to 9 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 9 to 10 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: )'> - - token from 0 to 1 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 1 to 2 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 2 to 3 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 3 to 5 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 38 to 40 ((){1,2,3}[0] + await GetValueAsync() ?? someArray[await DoMoreAsync(() => {})])) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 20 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 20 to 23 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 23 to 24 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 24 to 25 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 25 to 26 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 26 to 29 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 29 to 30 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 30 to 35 (Array) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.type.cs + - token from 35 to 36 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 36 to 39 (int) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 40 to 41 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 41 to 42 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 42 to 43 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 43 to 44 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 44 to 45 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 45 to 46 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 46 to 47 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 47 to 48 (3) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 48 to 49 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 49 to 50 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 50 to 51 (0) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 51 to 52 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 52 to 53 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 53 to 54 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 54 to 55 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 55 to 60 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 60 to 61 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 61 to 74 (GetValueAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 74 to 75 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 75 to 81 (string) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 81 to 82 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 82 to 83 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 83 to 84 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 84 to 85 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 85 to 87 (??) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.null-coalescing.cs + - token from 87 to 88 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 88 to 97 (someArray) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.object.property.cs + - token from 97 to 98 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 98 to 103 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 103 to 104 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 104 to 115 (DoMoreAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 115 to 116 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 116 to 117 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 117 to 118 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 118 to 119 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 119 to 121 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 121 to 122 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 122 to 123 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 123 to 124 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 124 to 125 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 125 to 126 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 126 to 127 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 127 to 128 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 128 to 129 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 129 to 131 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 35 to 37 (Test + - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.begin.html + - token from 1 to 7 (button) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, entity.name.tag.html + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html + - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html + - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html + - token from 17 to 18 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.begin.html + - token from 18 to 36 (myFunction("test")) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 36 to 37 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html + - token from 37 to 38 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html + - token from 38 to 42 (Test) with scopes text.aspnetcorerazor + - token from 42 to 44 () with scopes text.aspnetcorerazor, meta.tag.structure.button.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute razor inside attribute 1`] = ` +"Line:
+ - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.begin.html + - token from 1 to 4 (div) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, entity.name.tag.html + - token from 4 to 5 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html + - token from 5 to 7 (id) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, entity.other.attribute-name.html + - token from 7 to 8 (=) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, punctuation.separator.key-value.html + - token from 8 to 9 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 9 to 10 (@) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 10 to 11 (() with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 11 to 12 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 12 to 13 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 13 to 14 ()) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 14 to 15 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 15 to 16 (>) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html + - token from 16 to 17 ( ) with scopes text.aspnetcorerazor + - token from 17 to 19 () with scopes text.aspnetcorerazor, meta.tag.structure.div.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute single quotes in side double quotes 1`] = ` +"Line: + - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.begin.html + - token from 1 to 7 (button) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, entity.name.tag.html + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html + - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html + - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html + - token from 17 to 18 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 18 to 36 (myFunction('test')) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 36 to 37 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 37 to 38 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html + - token from 38 to 42 (Test) with scopes text.aspnetcorerazor + - token from 42 to 44 () with scopes text.aspnetcorerazor, meta.tag.structure.button.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute using @viewData 1`] = ` +"Line: Test + - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, punctuation.definition.tag.begin.html + - token from 1 to 2 (a) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, entity.name.tag.html + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html + - token from 3 to 11 (asp-page) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, entity.other.attribute-name.html + - token from 11 to 12 (=) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, punctuation.separator.key-value.html + - token from 12 to 13 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 13 to 14 (@) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 14 to 22 (ViewData) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 22 to 23 ([) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 23 to 24 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 24 to 28 (Page) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs + - token from 28 to 29 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 29 to 30 (]) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 30 to 31 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 31 to 32 (>) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, punctuation.definition.tag.end.html + - token from 32 to 36 (Test) with scopes text.aspnetcorerazor + - token from 36 to 38 () with scopes text.aspnetcorerazor, meta.tag.inline.a.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute using data string array 1`] = ` +"Line:

Test

+ - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, punctuation.definition.tag.begin.html + - token from 1 to 2 (p) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, entity.name.tag.html + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html + - token from 3 to 20 (data-string-array) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, entity.other.attribute-name.html + - token from 20 to 21 (=) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, punctuation.separator.key-value.html + - token from 21 to 22 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 22 to 32 (['test', ') with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html + - token from 32 to 33 (@) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 33 to 42 (Localizer) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 42 to 43 ([) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 43 to 44 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 44 to 48 (test) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs + - token from 48 to 49 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 49 to 50 (]) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 50 to 52 (']) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html + - token from 52 to 53 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 53 to 54 (>) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, punctuation.definition.tag.end.html + - token from 54 to 58 (Test) with scopes text.aspnetcorerazor + - token from 58 to 60 () with scopes text.aspnetcorerazor, meta.tag.structure.p.end.html, punctuation.definition.tag.end.html +" +`; + exports[`Grammar tests Implicit Expressions Awaited method invocation 1`] = ` "Line: @await AsyncMethod() - token from 0 to 1 (@) with scopes text.aspnetcorerazor, meta.expression.implicit.cshtml, keyword.control.cshtml.transition @@ -5048,7 +5388,11 @@ exports[`Grammar tests Implicit Expressions In Attributes Double Quotes Awaited - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html - token from 17 to 18 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.begin.html - - token from 18 to 38 (@await AsyncMethod()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 25 (await ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, keyword.other.await.cs + - token from 25 to 36 (AsyncMethod) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, entity.name.function.cs + - token from 36 to 37 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 37 to 38 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 38 to 39 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 30 to 32 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 (@DateTime.Now

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 21 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 21 to 22 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 22 to 30 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 30 to 31 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs + - token from 31 to 34 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 34 to 38 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html - token from 38 to 39 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 21 to 23 ( - - token from 0 to 6 (() =>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 3 to 5 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs Line: { - - token from 0 to 2 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.open.cs Line: var x = 123; - - token from 0 to 17 ( var x = 123;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 15 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 15 to 16 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: var y = true; - - token from 0 to 18 ( var y = true;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 16 (true) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.language.boolean.true.cs + - token from 16 to 17 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: - - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis Line: return y ? x : 457; - - token from 0 to 24 ( return y ? x : 457;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 10 (return) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.control.flow.return.cs + - token from 10 to 11 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 11 to 12 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 12 to 13 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 13 to 14 (?) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.question-mark.cs + - token from 14 to 15 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 15 to 16 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 16 to 17 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 17 to 18 (:) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.colon.cs + - token from 18 to 19 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 19 to 22 (457) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 22 to 23 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: })"> - - token from 0 to 2 (})) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.close.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 2 to 3 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 3 to 4 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 4 to 6 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 36 to 38 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 ( 456)) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 27 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 27 to 29 (!.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs + - token from 29 to 32 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, entity.name.function.cs + - token from 32 to 33 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 33 to 34 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 34 to 35 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 35 to 39 (1234) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 39 to 40 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 40 to 41 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, keyword.operator.arithmetic.cs + - token from 41 to 42 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 42 to 46 (5678) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 46 to 47 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 47 to 48 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 48 to 51 (abc) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 51 to 52 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 52 to 53 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 53 to 54 (!) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.logical.cs + - token from 54 to 55 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.accessor.cs + - token from 55 to 62 (Current) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.object.property.cs + - token from 62 to 64 (, ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 64 to 65 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 65 to 66 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 66 to 67 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 67 to 68 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 68 to 69 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 69 to 70 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 70 to 71 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 71 to 72 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 72 to 80 (getValue) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 80 to 81 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 81 to 82 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 82 to 83 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 83 to 85 (?.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs + - token from 85 to 93 (ToString) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 93 to 94 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 94 to 97 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 97 to 98 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 98 to 99 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 99 to 100 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 100 to 101 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 101 to 102 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 102 to 104 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs + - token from 104 to 105 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 105 to 108 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 108 to 109 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 109 to 110 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 110 to 111 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 111 to 113 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 33 to 35 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 30 to 32 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 (@DateTime.Now

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 18 to 21 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 21 to 22 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 22 to 30 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 30 to 31 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs + - token from 31 to 34 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 34 to 38 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html - token from 38 to 39 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 21 to 23 ( - - token from 0 to 6 (() =>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 3 to 5 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs Line: { - - token from 0 to 2 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.open.cs Line: var x = 123; - - token from 0 to 17 ( var x = 123;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 15 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 15 to 16 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: var y = true; - - token from 0 to 18 ( var y = true;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 16 (true) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.language.boolean.true.cs + - token from 16 to 17 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: - - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis Line: return y ? x : 457; - - token from 0 to 24 ( return y ? x : 457;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 10 (return) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.control.flow.return.cs + - token from 10 to 11 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 11 to 12 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 12 to 13 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 13 to 14 (?) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.question-mark.cs + - token from 14 to 15 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 15 to 16 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 16 to 17 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 17 to 18 (:) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.colon.cs + - token from 18 to 19 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 19 to 22 (457) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 22 to 23 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: })'> - - token from 0 to 2 (})) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.close.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 2 to 3 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 3 to 4 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 4 to 6 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 36 to 38 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 ( 456)) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 27 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 27 to 29 (!.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs + - token from 29 to 32 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, entity.name.function.cs + - token from 32 to 33 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 33 to 34 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 34 to 35 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 35 to 39 (1234) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 39 to 40 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 40 to 41 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, keyword.operator.arithmetic.cs + - token from 41 to 42 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 42 to 46 (5678) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 46 to 47 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 47 to 48 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 48 to 51 (abc) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 51 to 52 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 52 to 53 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 53 to 54 (!) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.logical.cs + - token from 54 to 55 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.accessor.cs + - token from 55 to 62 (Current) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.object.property.cs + - token from 62 to 64 (, ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 64 to 65 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 65 to 66 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 66 to 67 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 67 to 68 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 68 to 69 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 69 to 70 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 70 to 71 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 71 to 72 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 72 to 80 (getValue) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 80 to 81 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 81 to 82 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 82 to 83 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 83 to 85 (?.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs + - token from 85 to 93 (ToString) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 93 to 94 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 94 to 97 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 97 to 98 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 98 to 99 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 99 to 100 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 100 to 101 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 101 to 102 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 102 to 104 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs + - token from 104 to 105 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 105 to 108 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 108 to 109 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 109 to 110 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 110 to 111 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 111 to 113 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 33 to 35 ( { - RunTransitionsSuite(); - RunExplicitExpressionSuite(); - RunExplicitExpressionInAttributeSuite(); - RunImplicitExpressionSuite(); - RunImplicitExpressionInAttributeSuite(); - RunCodeBlockSuite(); - RunRazorCommentSuite(); - RunRazorTemplateSuite(); - - // Directives - RunCodeDirectiveSuite(); - RunFunctionsDirectiveSuite(); - RunPageDirectiveSuite(); - RunAddTagHelperDirectiveSuite(); - RunRemoveTagHelperDirectiveSuite(); - RunTagHelperPrefixDirectiveSuite(); - RunModelDirectiveSuite(); - RunImplementsDirectiveSuite(); - RunInheritsDirectiveSuite(); - RunNamespaceDirectiveSuite(); - RunInjectDirectiveSuite(); - RunAttributeDirectiveSuite(); - RunSectionDirectiveSuite(); - RunLayoutDirectiveSuite(); - RunUsingDirectiveSuite(); - RunRendermodeDirectiveSuite(); - RunPreservewhitespaceDirectiveSuite(); - RunTypeparamDirectiveSuite(); - - // Razor C# Control Structures - RunUsingStatementSuite(); - RunIfStatementSuite(); - RunElsePartSuite(); - RunForStatementSuite(); - RunForeachStatementSuite(); - RunWhileStatementSuite(); - RunSwitchStatementSuite(); - RunLockStatementSuite(); - RunDoStatementSuite(); - RunTryStatementSuite(); - - // Html stuff - RunScriptBlockSuite(); - RunStyleBlockSuite(); -}); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { describe } from '@jest/globals'; +import { RunAddTagHelperDirectiveSuite } from './addTagHelperDirective'; +import { RunAttributeDirectiveSuite } from './attributeDirective'; +import { RunCodeBlockSuite } from './codeBlock'; +import { RunCodeDirectiveSuite } from './codeDirective'; +import { RunDoStatementSuite } from './doStatement'; +import { RunElsePartSuite } from './elsePart'; +import { RunExplicitExpressionInAttributeSuite } from './explicitExpressionInAttribute'; +import { RunExplicitExpressionSuite } from './explicitExpressions'; +import { RunForeachStatementSuite } from './foreachStatement'; +import { RunForStatementSuite } from './forStatement'; +import { RunFunctionsDirectiveSuite } from './functionsDirective'; +import { RunIfStatementSuite } from './ifStatement'; +import { RunImplementsDirectiveSuite } from './implementsDirective'; +import { RunImplicitExpressionInAttributeSuite } from './implicitExpressionInAttribute'; +import { RunImplicitExpressionSuite } from './implicitExpressions'; +import { RunInheritsDirectiveSuite } from './inheritsDirective'; +import { RunInjectDirectiveSuite } from './injectDirective'; +import { RunLayoutDirectiveSuite } from './layoutDirective'; +import { RunLockStatementSuite } from './lockStatement'; +import { RunModelDirectiveSuite } from './modelDirective'; +import { RunNamespaceDirectiveSuite } from './namespaceDirective'; +import { RunPageDirectiveSuite } from './pageDirective'; +import { RunRazorCommentSuite } from './razorComment'; +import { RunRazorTemplateSuite } from './razorTemplate'; +import { RunRemoveTagHelperDirectiveSuite } from './removeTagHelperDirective'; +import { RunScriptBlockSuite } from './scriptBlock'; +import { RunSectionDirectiveSuite } from './sectionDirective'; +import { RunStyleBlockSuite } from './styleBlock'; +import { RunSwitchStatementSuite } from './switchStatement'; +import { RunTagHelperPrefixDirectiveSuite } from './tagHelperPrefixDirective'; +import { RunTransitionsSuite } from './transitions'; +import { RunTryStatementSuite } from './tryStatement'; +import { RunUsingDirectiveSuite } from './usingDirective'; +import { RunUsingStatementSuite } from './usingStatement'; +import { RunWhileStatementSuite } from './whileStatement'; +import { RunRendermodeDirectiveSuite } from './rendermodeDirective'; +import { RunPreservewhitespaceDirectiveSuite } from './preservewhitespaceDirective'; +import { RunTypeparamDirectiveSuite } from './typeparamDirective'; +import { RunHTMLDynamicAttributeSuite } from './htmlDynamicAttribute'; + +// We bring together all test suites and wrap them in one here. The reason behind this is that +// modules get reloaded per test suite and the vscode-textmate library doesn't support the way +// that Jest reloads those modules. By wrapping all suites in one we can guaruntee that the +// modules don't get torn down inbetween suites. + +describe('Grammar tests', () => { + RunTransitionsSuite(); + RunExplicitExpressionSuite(); + RunExplicitExpressionInAttributeSuite(); + RunImplicitExpressionSuite(); + RunImplicitExpressionInAttributeSuite(); + RunCodeBlockSuite(); + RunRazorCommentSuite(); + RunRazorTemplateSuite(); + + // Directives + RunCodeDirectiveSuite(); + RunFunctionsDirectiveSuite(); + RunPageDirectiveSuite(); + RunAddTagHelperDirectiveSuite(); + RunRemoveTagHelperDirectiveSuite(); + RunTagHelperPrefixDirectiveSuite(); + RunModelDirectiveSuite(); + RunImplementsDirectiveSuite(); + RunInheritsDirectiveSuite(); + RunNamespaceDirectiveSuite(); + RunInjectDirectiveSuite(); + RunAttributeDirectiveSuite(); + RunSectionDirectiveSuite(); + RunLayoutDirectiveSuite(); + RunUsingDirectiveSuite(); + RunRendermodeDirectiveSuite(); + RunPreservewhitespaceDirectiveSuite(); + RunTypeparamDirectiveSuite(); + + // Razor C# Control Structures + RunUsingStatementSuite(); + RunIfStatementSuite(); + RunElsePartSuite(); + RunForStatementSuite(); + RunForeachStatementSuite(); + RunWhileStatementSuite(); + RunSwitchStatementSuite(); + RunLockStatementSuite(); + RunDoStatementSuite(); + RunTryStatementSuite(); + + // Html stuff + RunScriptBlockSuite(); + RunStyleBlockSuite(); + RunHTMLDynamicAttributeSuite(); +}); diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts new file mode 100644 index 000000000..4ff320873 --- /dev/null +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { describe, it } from '@jest/globals'; +import { assertMatchesSnapshot } from './infrastructure/testUtilities'; + +// See GrammarTests.test.ts for details on exporting this test suite instead of running in place. + +export function RunHTMLDynamicAttributeSuite() { + describe('HTML dynamic (razor) attribute', () => { + it('razor inside attribute', async () => { + await assertMatchesSnapshot('
'); + }); + + it('single quotes in side double quotes', async () => { + await assertMatchesSnapshot(''); + }); + + it('double quotes inside single quotes', async () => { + await assertMatchesSnapshot(''); + }); + + it('using data string array', async () => { + await assertMatchesSnapshot('

Test

'); + }); + + it('using @viewData', async () => { + await assertMatchesSnapshot('Test'); + }); + }); +} From d2b40e554c9943d57555837c1d4ddde6308ae3ba Mon Sep 17 00:00:00 2001 From: Jordi Ramos Date: Mon, 15 Apr 2024 13:59:14 -0700 Subject: [PATCH 2/3] fix html-razor textmate - added textmate grammar to both razor and html (test) files so that we can correctly label razor components that are within html tags. We will need to update the html grammar used in razor as well - updated tests to reflect the desire behavior, note that we changed some of the classification from existing tests as they were not correctly labeling razor grammar in html tags either --- .../syntaxes/aspnetcorerazor.tmLanguage.json | 10 + .../syntaxes/aspnetcorerazor.tmLanguage.yml | 6 + .../embeddedGrammars/html.tmLanguage.json | 12 + .../__snapshots__/grammarTests.test.ts.snap | 878 +++++++++++++++--- .../tests/grammarTests.test.ts | 2 + .../tests/htmlDynamicAttribute.ts | 33 + 6 files changed, 829 insertions(+), 112 deletions(-) create mode 100644 test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts diff --git a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json index b82283682..4deeeacdd 100644 --- a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json +++ b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json @@ -64,6 +64,16 @@ } ] }, + "expression": { + "patterns": [ + { + "include": "#explicit-razor-expression" + }, + { + "include": "#implicit-expression" + } + ] + }, "escaped-transition": { "name": "constant.character.escape.razor.transition", "match": "@@" diff --git a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml index 66867921f..8479e6493 100644 --- a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml +++ b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml @@ -31,6 +31,12 @@ repository: - include: '#optionally-transitioned-csharp-control-structures' - include: '#implicit-expression' + # a clause to combine the explicit and implicit razor expressions, used by the html grammar + expression: + patterns: + - include: '#explicit-razor-expression' + - include: '#implicit-expression' + escaped-transition: name: constant.character.escape.razor.transition match: '@@' diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json index ef850d941..113465ac8 100644 --- a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json @@ -113,6 +113,9 @@ }, "name": "string.quoted.double.html", "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, { "include": "#entities" } @@ -137,6 +140,9 @@ }, "name": "string.quoted.single.html", "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, { "include": "#entities" } @@ -403,6 +409,9 @@ }, "name": "string.quoted.double.html", "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, { "include": "#entities" } @@ -423,6 +432,9 @@ }, "name": "string.quoted.single.html", "patterns": [ + { + "include": "text.aspnetcorerazor#expression" + }, { "include": "#entities" } diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap index 901635556..18a5b8aa0 100644 --- a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap @@ -4480,7 +4480,10 @@ exports[`Grammar tests Explicit Expressions In Attributes Double Quotes Class ex - token from 5 to 10 (class) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, entity.other.attribute-name.html - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, punctuation.separator.key-value.html - token from 11 to 12 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, punctuation.definition.string.begin.html - - token from 12 to 30 (@(NavMenuCssClass)) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html + - token from 12 to 13 (@) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 13 to 14 (() with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 14 to 29 (NavMenuCssClass) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 29 to 30 ()) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 30 to 31 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.class.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 31 to 32 (>) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 32 to 34 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 23 to 25 (( - - token from 0 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html - - token from 12 to 20 (notValid) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html, entity.other.attribute-name.html - - token from 20 to 21 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html - - token from 21 to 22 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html, punctuation.separator.key-value.html - - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html - - token from 23 to 38 (Html.DisplayFor) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.notValid.html, string.unquoted.html - - token from 38 to 45 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - - token from 46 to 48 (() with scopes text.aspnetcorerazor + - token from 0 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 12 to 20 (notValid) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 20 to 21 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 21 to 22 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.assignment.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 23 to 27 (Html) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.object.cs + - token from 27 to 28 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.accessor.cs + - token from 28 to 38 (DisplayFor) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 38 to 39 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 39 to 45 (object) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 45 to 46 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 46 to 47 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs Line: (_) => Model, - - token from 0 to 30 ( (_) => Model,) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 17 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 17 to 18 (_) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.variable.parameter.cs + - token from 18 to 19 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 20 to 22 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 23 to 28 (Model) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 28 to 29 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "name", - - token from 0 to 24 ( "name",) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 21 (name) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 21 to 22 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 22 to 23 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "someName", - - token from 0 to 28 ( "someName",) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 25 (someName) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 25 to 26 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 26 to 27 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: new { }) - - token from 0 to 25 ( new { })) with scopes text.aspnetcorerazor + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 16 to 19 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 20 to 21 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 21 to 22 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 22 to 23 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 23 to 24 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: }) - - token from 0 to 11 ( })) with scopes text.aspnetcorerazor + - token from 0 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 8 to 9 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 9 to 10 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: )"> - - token from 0 to 3 ()">) with scopes text.aspnetcorerazor + - token from 0 to 1 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 1 to 2 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 2 to 3 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 3 to 5 () with scopes text.aspnetcorerazor, meta.tag.structure.button.end.html, punctuation.definition.tag.end.html @@ -4590,7 +4633,12 @@ exports[`Grammar tests Explicit Expressions In Attributes Double Quotes Onclick - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html - token from 17 to 18 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.begin.html - - token from 18 to 36 (@(ToggleNavMenu())) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 20 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 20 to 33 (ToggleNavMenu) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 33 to 34 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 34 to 35 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 35 to 36 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 36 to 37 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 37 to 38 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 38 to 40 ((){1,2,3}[0] + await GetValueAsync() ?? someArray[await DoMoreAsync(() => {})])) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 20 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 20 to 23 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 23 to 24 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 24 to 25 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 25 to 26 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 26 to 29 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 29 to 30 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 30 to 35 (Array) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.type.cs + - token from 35 to 36 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 36 to 39 (int) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 40 to 41 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 41 to 42 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 42 to 43 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 43 to 44 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 44 to 45 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 45 to 46 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 46 to 47 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 47 to 48 (3) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 48 to 49 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 49 to 50 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 50 to 51 (0) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 51 to 52 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 52 to 53 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 53 to 54 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 54 to 55 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 55 to 60 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 60 to 61 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 61 to 74 (GetValueAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 74 to 75 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 75 to 81 (string) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 81 to 82 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 82 to 83 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 83 to 84 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 84 to 85 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 85 to 87 (??) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.null-coalescing.cs + - token from 87 to 88 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 88 to 97 (someArray) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, variable.other.object.property.cs + - token from 97 to 98 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 98 to 103 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 103 to 104 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 104 to 115 (DoMoreAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 115 to 116 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 116 to 117 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 117 to 118 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 118 to 119 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 119 to 121 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 121 to 122 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml + - token from 122 to 123 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 123 to 124 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 124 to 125 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 125 to 126 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 126 to 127 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 127 to 128 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 128 to 129 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 129 to 131 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 35 to 37 () with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 32 to 34 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 23 to 25 (( - - token from 0 to 48 ( notValid = Html.DisplayFor() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 12 to 20 (notValid) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 20 to 21 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 21 to 22 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.assignment.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 23 to 27 (Html) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.object.cs + - token from 27 to 28 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.accessor.cs + - token from 28 to 38 (DisplayFor) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 38 to 39 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 39 to 45 (object) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 45 to 46 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 46 to 47 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs Line: (_) => Model, - - token from 0 to 30 ( (_) => Model,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 17 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 17 to 18 (_) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.variable.parameter.cs + - token from 18 to 19 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 20 to 22 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 22 to 23 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 23 to 28 (Model) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.readwrite.cs + - token from 28 to 29 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "name", - - token from 0 to 24 ( "name",) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 21 (name) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 21 to 22 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 22 to 23 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: "someName", - - token from 0 to 28 ( "someName",) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 17 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 17 to 25 (someName) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs + - token from 25 to 26 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 26 to 27 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs Line: new { }) - - token from 0 to 25 ( new { })) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 16 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 16 to 19 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 19 to 20 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 20 to 21 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 21 to 22 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 22 to 23 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 23 to 24 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: }) - - token from 0 to 11 ( })) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 8 to 9 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 9 to 10 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs Line: )'> - - token from 0 to 1 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 1 to 2 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 2 to 3 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 3 to 5 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 38 to 40 ((){1,2,3}[0] + await GetValueAsync() ?? someArray[await DoMoreAsync(() => {})])) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 20 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 20 to 23 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 23 to 24 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 24 to 25 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 25 to 26 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 26 to 29 (new) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.new.cs + - token from 29 to 30 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 30 to 35 (Array) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.type.cs + - token from 35 to 36 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 36 to 39 (int) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 40 to 41 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 41 to 42 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 42 to 43 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 43 to 44 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 44 to 45 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 45 to 46 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 46 to 47 (,) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.separator.comma.cs + - token from 47 to 48 (3) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 48 to 49 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 49 to 50 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 50 to 51 (0) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, constant.numeric.decimal.cs + - token from 51 to 52 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 52 to 53 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 53 to 54 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arithmetic.cs + - token from 54 to 55 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 55 to 60 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 60 to 61 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 61 to 74 (GetValueAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 74 to 75 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.begin.cs + - token from 75 to 81 (string) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.type.cs + - token from 81 to 82 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.definition.typeparameters.end.cs + - token from 82 to 83 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 83 to 84 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 84 to 85 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 85 to 87 (??) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.null-coalescing.cs + - token from 87 to 88 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 88 to 97 (someArray) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, variable.other.object.property.cs + - token from 97 to 98 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.open.cs + - token from 98 to 103 (await) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.other.await.cs + - token from 103 to 104 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 104 to 115 (DoMoreAsync) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, entity.name.function.cs + - token from 115 to 116 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 116 to 117 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.open.cs + - token from 117 to 118 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 118 to 119 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 119 to 121 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.operator.arrow.cs + - token from 121 to 122 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml + - token from 122 to 123 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.open.cs + - token from 123 to 124 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.curlybrace.close.cs + - token from 124 to 125 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.parenthesis.close.cs + - token from 125 to 126 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, punctuation.squarebracket.close.cs + - token from 126 to 127 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.explicit.cshtml, keyword.control.cshtml - token from 127 to 128 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 128 to 129 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 129 to 131 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 35 to 37 (Test + - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.begin.html + - token from 1 to 7 (button) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, entity.name.tag.html + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html + - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html + - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html + - token from 17 to 18 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.begin.html + - token from 18 to 36 (myFunction("test")) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 36 to 37 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html + - token from 37 to 38 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html + - token from 38 to 42 (Test) with scopes text.aspnetcorerazor + - token from 42 to 44 () with scopes text.aspnetcorerazor, meta.tag.structure.button.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute razor inside attribute 1`] = ` +"Line:
+ - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.begin.html + - token from 1 to 4 (div) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, entity.name.tag.html + - token from 4 to 5 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html + - token from 5 to 7 (id) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, entity.other.attribute-name.html + - token from 7 to 8 (=) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, punctuation.separator.key-value.html + - token from 8 to 9 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 9 to 10 (@) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml.transition + - token from 10 to 11 (() with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 11 to 12 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 12 to 13 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 13 to 14 ()) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, meta.expression.explicit.cshtml, keyword.control.cshtml + - token from 14 to 15 (") with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, meta.attribute.id.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 15 to 16 (>) with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html + - token from 16 to 17 ( ) with scopes text.aspnetcorerazor + - token from 17 to 19 () with scopes text.aspnetcorerazor, meta.tag.structure.div.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute single quotes in side double quotes 1`] = ` +"Line: + - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.begin.html + - token from 1 to 7 (button) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, entity.name.tag.html + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html + - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html + - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html + - token from 17 to 18 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 18 to 36 (myFunction('test')) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 36 to 37 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 37 to 38 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html + - token from 38 to 42 (Test) with scopes text.aspnetcorerazor + - token from 42 to 44 () with scopes text.aspnetcorerazor, meta.tag.structure.button.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute using @viewData 1`] = ` +"Line: Test + - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, punctuation.definition.tag.begin.html + - token from 1 to 2 (a) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, entity.name.tag.html + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html + - token from 3 to 11 (asp-page) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, entity.other.attribute-name.html + - token from 11 to 12 (=) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, punctuation.separator.key-value.html + - token from 12 to 13 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 13 to 14 (@) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 14 to 22 (ViewData) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 22 to 23 ([) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 23 to 24 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 24 to 28 (Page) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs + - token from 28 to 29 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 29 to 30 (]) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 30 to 31 (") with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, meta.attribute.unrecognized.asp-page.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 31 to 32 (>) with scopes text.aspnetcorerazor, meta.tag.inline.a.start.html, punctuation.definition.tag.end.html + - token from 32 to 36 (Test) with scopes text.aspnetcorerazor + - token from 36 to 38 () with scopes text.aspnetcorerazor, meta.tag.inline.a.end.html, punctuation.definition.tag.end.html +" +`; + +exports[`Grammar tests HTML dynamic (razor) attribute using data string array 1`] = ` +"Line:

Test

+ - token from 0 to 1 (<) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, punctuation.definition.tag.begin.html + - token from 1 to 2 (p) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, entity.name.tag.html + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html + - token from 3 to 20 (data-string-array) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, entity.other.attribute-name.html + - token from 20 to 21 (=) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, punctuation.separator.key-value.html + - token from 21 to 22 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, punctuation.definition.string.begin.html + - token from 22 to 32 (['test', ') with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html + - token from 32 to 33 (@) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 33 to 42 (Localizer) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 42 to 43 ([) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 43 to 44 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.begin.cs + - token from 44 to 48 (test) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs + - token from 48 to 49 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, string.quoted.double.cs, punctuation.definition.string.end.cs + - token from 49 to 50 (]) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 50 to 52 (']) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html + - token from 52 to 53 (") with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, meta.attribute.data-x.data-string-array.html, string.quoted.double.html, punctuation.definition.string.end.html + - token from 53 to 54 (>) with scopes text.aspnetcorerazor, meta.tag.structure.p.start.html, punctuation.definition.tag.end.html + - token from 54 to 58 (Test) with scopes text.aspnetcorerazor + - token from 58 to 60 () with scopes text.aspnetcorerazor, meta.tag.structure.p.end.html, punctuation.definition.tag.end.html +" +`; + exports[`Grammar tests Implicit Expressions Awaited method invocation 1`] = ` "Line: @await AsyncMethod() - token from 0 to 1 (@) with scopes text.aspnetcorerazor, meta.expression.implicit.cshtml, keyword.control.cshtml.transition @@ -5048,7 +5388,11 @@ exports[`Grammar tests Implicit Expressions In Attributes Double Quotes Awaited - token from 8 to 16 (@onclick) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, entity.other.attribute-name.html - token from 16 to 17 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, punctuation.separator.key-value.html - token from 17 to 18 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.begin.html - - token from 18 to 38 (@await AsyncMethod()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 25 (await ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, keyword.other.await.cs + - token from 25 to 36 (AsyncMethod) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, entity.name.function.cs + - token from 36 to 37 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 37 to 38 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 38 to 39 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 30 to 32 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 (@DateTime.Now

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 21 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 21 to 22 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 22 to 30 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 30 to 31 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs + - token from 31 to 34 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 34 to 38 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html - token from 38 to 39 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 21 to 23 ( - - token from 0 to 6 (() =>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 3 to 5 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs Line: { - - token from 0 to 2 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.open.cs Line: var x = 123; - - token from 0 to 17 ( var x = 123;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 15 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 15 to 16 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: var y = true; - - token from 0 to 18 ( var y = true;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 16 (true) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.language.boolean.true.cs + - token from 16 to 17 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: - - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis Line: return y ? x : 457; - - token from 0 to 24 ( return y ? x : 457;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 10 (return) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.control.flow.return.cs + - token from 10 to 11 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 11 to 12 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 12 to 13 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 13 to 14 (?) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.question-mark.cs + - token from 14 to 15 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 15 to 16 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 16 to 17 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 17 to 18 (:) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.colon.cs + - token from 18 to 19 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 19 to 22 (457) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 22 to 23 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: })"> - - token from 0 to 2 (})) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 0 to 1 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.close.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 2 to 3 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 3 to 4 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 4 to 6 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 36 to 38 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 ( 456)) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 27 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 27 to 29 (!.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs + - token from 29 to 32 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, entity.name.function.cs + - token from 32 to 33 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 33 to 34 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 34 to 35 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 35 to 39 (1234) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 39 to 40 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 40 to 41 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, keyword.operator.arithmetic.cs + - token from 41 to 42 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 42 to 46 (5678) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 46 to 47 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 47 to 48 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 48 to 51 (abc) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 51 to 52 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 52 to 53 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 53 to 54 (!) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.logical.cs + - token from 54 to 55 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.accessor.cs + - token from 55 to 62 (Current) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.object.property.cs + - token from 62 to 64 (, ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 64 to 65 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 65 to 66 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 66 to 67 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 67 to 68 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 68 to 69 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 69 to 70 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 70 to 71 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 71 to 72 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 72 to 80 (getValue) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 80 to 81 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 81 to 82 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 82 to 83 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 83 to 85 (?.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs + - token from 85 to 93 (ToString) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 93 to 94 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 94 to 97 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 97 to 98 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 98 to 99 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 99 to 100 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 100 to 101 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 101 to 102 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 102 to 104 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs + - token from 104 to 105 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 105 to 108 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 108 to 109 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 109 to 110 (") with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.double.html, punctuation.definition.string.end.html - token from 110 to 111 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 111 to 113 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 33 to 35 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.div.start.html, punctuation.definition.tag.end.html - token from 30 to 32 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 (@DateTime.Now

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 18 to 21 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 21 to 22 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 22 to 30 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 30 to 31 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs + - token from 31 to 34 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 34 to 38 (

) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html - token from 38 to 39 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 39 to 40 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 40 to 42 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 21 to 23 ( - - token from 0 to 6 (() =>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 2 to 3 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 3 to 5 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs Line: { - - token from 0 to 2 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 ({) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.open.cs Line: var x = 123; - - token from 0 to 17 ( var x = 123;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 15 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 15 to 16 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: var y = true; - - token from 0 to 18 ( var y = true;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 7 (var) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.other.var.cs + - token from 7 to 8 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 8 to 9 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.variable.local.cs + - token from 9 to 10 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 10 to 11 (=) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.assignment.cs + - token from 11 to 12 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 12 to 16 (true) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.language.boolean.true.cs + - token from 16 to 17 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: - - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis Line: return y ? x : 457; - - token from 0 to 24 ( return y ? x : 457;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 4 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 4 to 10 (return) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.control.flow.return.cs + - token from 10 to 11 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 11 to 12 (y) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 12 to 13 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 13 to 14 (?) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.question-mark.cs + - token from 14 to 15 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 15 to 16 (x) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.readwrite.cs + - token from 16 to 17 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 17 to 18 (:) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.conditional.colon.cs + - token from 18 to 19 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 19 to 22 (457) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 22 to 23 (;) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.terminator.statement.cs Line: })'> - - token from 0 to 2 (})) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 0 to 1 (}) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.curlybrace.close.cs + - token from 1 to 2 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 2 to 3 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 3 to 4 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 4 to 6 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 36 to 38 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 34 to 36 ( 456)) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html + - token from 18 to 19 (@) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, keyword.control.cshtml.transition + - token from 19 to 27 (DateTime) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.cs + - token from 27 to 29 (!.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs + - token from 29 to 32 (Now) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, entity.name.function.cs + - token from 32 to 33 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 33 to 34 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 34 to 35 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 35 to 39 (1234) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 39 to 40 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 40 to 41 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, keyword.operator.arithmetic.cs + - token from 41 to 42 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets + - token from 42 to 46 (5678) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 46 to 47 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 47 to 48 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 48 to 51 (abc) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 51 to 52 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 52 to 53 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 53 to 54 (!) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.logical.cs + - token from 54 to 55 (.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.accessor.cs + - token from 55 to 62 (Current) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, variable.other.object.property.cs + - token from 62 to 64 (, ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 64 to 65 (1) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 65 to 66 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 66 to 67 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 67 to 68 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 68 to 69 (2) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 69 to 70 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 70 to 71 (+) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arithmetic.cs + - token from 71 to 72 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 72 to 80 (getValue) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, entity.name.function.cs + - token from 80 to 81 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 81 to 82 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 82 to 83 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 83 to 85 (?.) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs + - token from 85 to 93 (ToString) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, variable.other.object.property.cs + - token from 93 to 94 ([) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.open.cs + - token from 94 to 97 (123) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, constant.numeric.decimal.cs + - token from 97 to 98 (]) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.brackets, punctuation.squarebracket.close.cs + - token from 98 to 99 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 99 to 100 (() with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.open.cs + - token from 100 to 101 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs + - token from 101 to 102 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 102 to 104 (=>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, keyword.operator.arrow.cs + - token from 104 to 105 ( ) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis + - token from 105 to 108 (456) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, constant.numeric.decimal.cs + - token from 108 to 109 ()) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, meta.expression.implicit.cshtml, source.cs, razor.test.balanced.parenthesis, punctuation.parenthesis.close.cs - token from 109 to 110 (') with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, meta.attribute.unrecognized.@onclick.html, string.quoted.single.html, punctuation.definition.string.end.html - token from 110 to 111 (>) with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 111 to 113 () with scopes text.aspnetcorerazor, meta.tag.structure.button.start.html, punctuation.definition.tag.end.html - token from 33 to 35 ( { // Html stuff RunScriptBlockSuite(); RunStyleBlockSuite(); + RunHTMLDynamicAttributeSuite(); }); diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts new file mode 100644 index 000000000..c8b48e1b8 --- /dev/null +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { describe, it } from '@jest/globals'; +import { assertMatchesSnapshot } from './infrastructure/testUtilities'; + +// See GrammarTests.test.ts for details on exporting this test suite instead of running in place. + +export function RunHTMLDynamicAttributeSuite() { + describe('HTML dynamic (razor) attribute', () => { + it('razor inside attribute', async () => { + await assertMatchesSnapshot('
'); + }); + + it('single quotes in side double quotes', async () => { + await assertMatchesSnapshot(''); + }); + + it('double quotes inside single quotes', async () => { + await assertMatchesSnapshot(''); + }); + + it('using data string array', async () => { + await assertMatchesSnapshot('

Test

'); + }); + + it('using @viewData', async () => { + await assertMatchesSnapshot('Test'); + }); + }); +} From 5f9dfe1725bc99dbaccf5febb338e3c8775b3b58 Mon Sep 17 00:00:00 2001 From: Jordi Ramos Date: Mon, 15 Apr 2024 16:56:00 -0700 Subject: [PATCH 3/3] update the textmate grammar clause name we updated the a textmate grammar clause name in razor to be more specific --- src/razor/syntaxes/aspnetcorerazor.tmLanguage.json | 2 +- src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml | 2 +- .../embeddedGrammars/html.tmLanguage.json | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json index 4deeeacdd..72a5e0677 100644 --- a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json +++ b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.json @@ -64,7 +64,7 @@ } ] }, - "expression": { + "implicit-or-explicit-expression": { "patterns": [ { "include": "#explicit-razor-expression" diff --git a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml index 8479e6493..84f18fe7d 100644 --- a/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml +++ b/src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml @@ -32,7 +32,7 @@ repository: - include: '#implicit-expression' # a clause to combine the explicit and implicit razor expressions, used by the html grammar - expression: + implicit-or-explicit-expression: patterns: - include: '#explicit-razor-expression' - include: '#implicit-expression' diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json index 113465ac8..cfd51a79d 100644 --- a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json +++ b/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json @@ -114,7 +114,7 @@ "name": "string.quoted.double.html", "patterns": [ { - "include": "text.aspnetcorerazor#expression" + "include": "text.aspnetcorerazor#implicit-or-explicit-expression" }, { "include": "#entities" @@ -141,7 +141,7 @@ "name": "string.quoted.single.html", "patterns": [ { - "include": "text.aspnetcorerazor#expression" + "include": "text.aspnetcorerazor#implicit-or-explicit-expression" }, { "include": "#entities" @@ -410,7 +410,7 @@ "name": "string.quoted.double.html", "patterns": [ { - "include": "text.aspnetcorerazor#expression" + "include": "text.aspnetcorerazor#implicit-or-explicit-expression" }, { "include": "#entities" @@ -433,7 +433,7 @@ "name": "string.quoted.single.html", "patterns": [ { - "include": "text.aspnetcorerazor#expression" + "include": "text.aspnetcorerazor#implicit-or-explicit-expression" }, { "include": "#entities"