From ae5616573e38ccf1267114a353835b466f59b01f Mon Sep 17 00:00:00 2001 From: Alexandre Oger Date: Wed, 30 Oct 2024 20:03:11 +0100 Subject: [PATCH] fix: properly highlight --- .../syntaxes/svelte.tmLanguage.src.yaml | 12 ++- .../samples/namespaced-component/input.svelte | 7 +- .../namespaced-component/input.svelte.snap | 73 ++++++++++++++++++- 3 files changed, 86 insertions(+), 6 deletions(-) diff --git a/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml b/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml index 4c5c2bfb1..811c44ae4 100644 --- a/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml +++ b/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml @@ -509,16 +509,20 @@ repository: # Scopes the `name` part in ``. tags-name: patterns: - # Svelte (`svelte:`) elements. - - match: '(svelte)(:)([a-z][\w0-9:-]*)' + # Svelte built-in elements (e.g., svelte:self, svelte:component). + - match: '(svelte)(:)([a-z][\w:-]*)' captures: 1: { name: keyword.control.svelte } 2: { name: punctuation.definition.keyword.svelte } 3: { name: entity.name.tag.svelte } # Slot. - { match: 'slot', name: keyword.control.svelte } - # Components. - - { match: '[A-Z][a-zA-Z0-9_]*', name: support.class.component.svelte } + # Components (either Namespaced.Component, namespaced.component or PascalCase). + - match: '([A-Z][\w]+)|(?<=\.)([\w]+)(? \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/packages/svelte-vscode/test/grammar/samples/namespaced-component/input.svelte.snap b/packages/svelte-vscode/test/grammar/samples/namespaced-component/input.svelte.snap index c2430dd0e..be5eb9fd9 100644 --- a/packages/svelte-vscode/test/grammar/samples/namespaced-component/input.svelte.snap +++ b/packages/svelte-vscode/test/grammar/samples/namespaced-component/input.svelte.snap @@ -8,4 +8,75 @@ # ^^ source.svelte meta.scope.tag.Hi.Input.svelte meta.tag.end.svelte support.class.component.svelte # ^ source.svelte meta.scope.tag.Hi.Input.svelte meta.tag.end.svelte # ^^^^^ source.svelte meta.scope.tag.Hi.Input.svelte meta.tag.end.svelte support.class.component.svelte -# ^ source.svelte meta.scope.tag.Hi.Input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte \ No newline at end of file +# ^ source.svelte meta.scope.tag.Hi.Input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte +> +#^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.start.svelte punctuation.definition.tag.end.svelte +# ^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello.World.Input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte +> +#^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte +# ^^^^^^^^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.start.svelte punctuation.definition.tag.end.svelte +# ^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte +# ^^^^^^^^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.Hello._World123.Input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte +> +#^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.start.svelte punctuation.definition.tag.begin.svelte +# ^^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.start.svelte punctuation.definition.tag.end.svelte +# ^^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte +# ^^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hi.input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte +> +#^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.start.svelte punctuation.definition.tag.end.svelte +# ^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello.world.input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte +> +#^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte +# ^^^^^^^^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte +# ^^^^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.start.svelte punctuation.definition.tag.end.svelte +# ^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte +# ^^^^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte +# ^^^^^^^^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte +# ^^^^^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte support.class.component.svelte +# ^ source.svelte meta.scope.tag.hello._world123.input.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte \ No newline at end of file