diff --git a/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml b/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml
index e925ff2f2..de163d58d 100644
--- a/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml
+++ b/packages/svelte-vscode/syntaxes/svelte.tmLanguage.src.yaml
@@ -21,8 +21,14 @@ injections:
# TypeScript | 'ts' 'typescript' | 'source.ts'
'L:(meta.script.svelte | meta.style.svelte) (meta.lang.ts | meta.lang.typescript) - (meta source)':
- patterns: [{begin: '(?<=>)(?!)', end: '(?=)', name: meta.embedded.block.svelte,
- contentName: source.ts, patterns: [{ include: source.ts }]}]
+ patterns: [
+ # single line script tag
+ {begin: '(?<=>)(?=[^\n]*])', end: '(?=])', name: meta.embedded.block.svelte,
+ contentName: source.ts, patterns: [{ include: source.ts }]},
+ # fix #1110
+ {begin: '(?<=>)(?!)', while: '^(?!\s*])', name: meta.embedded.block.svelte,
+ contentName: source.ts, patterns: [{ include: source.ts }]}
+ ]
# CoffeeScript | 'coffee' | 'source.coffee'
'L:(meta.script.svelte | meta.style.svelte) meta.lang.coffee - (meta source)':
diff --git a/packages/svelte-vscode/test/grammar/samples/script-type-no-semicolon/input.svelte b/packages/svelte-vscode/test/grammar/samples/script-type-no-semicolon/input.svelte
new file mode 100644
index 000000000..96bf82c54
--- /dev/null
+++ b/packages/svelte-vscode/test/grammar/samples/script-type-no-semicolon/input.svelte
@@ -0,0 +1,3 @@
+
diff --git a/packages/svelte-vscode/test/grammar/samples/script-type-no-semicolon/input.svelte.snap b/packages/svelte-vscode/test/grammar/samples/script-type-no-semicolon/input.svelte.snap
new file mode 100644
index 000000000..a80f8afd4
--- /dev/null
+++ b/packages/svelte-vscode/test/grammar/samples/script-type-no-semicolon/input.svelte.snap
@@ -0,0 +1,23 @@
+>
+#^^ source.svelte meta.script.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte
+# ^^^^^^ source.svelte meta.script.svelte meta.tag.end.svelte entity.name.tag.svelte
+# ^ source.svelte meta.script.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte
+>
\ No newline at end of file
diff --git a/packages/svelte-vscode/test/grammar/samples/script-type-single-line/input.svelte b/packages/svelte-vscode/test/grammar/samples/script-type-single-line/input.svelte
new file mode 100644
index 000000000..efe2c8395
--- /dev/null
+++ b/packages/svelte-vscode/test/grammar/samples/script-type-single-line/input.svelte
@@ -0,0 +1 @@
+
diff --git a/packages/svelte-vscode/test/grammar/samples/script-type-single-line/input.svelte.snap b/packages/svelte-vscode/test/grammar/samples/script-type-single-line/input.svelte.snap
new file mode 100644
index 000000000..85488356b
--- /dev/null
+++ b/packages/svelte-vscode/test/grammar/samples/script-type-single-line/input.svelte.snap
@@ -0,0 +1,21 @@
+>
+#^ source.svelte meta.script.svelte meta.tag.start.svelte punctuation.definition.tag.begin.svelte
+# ^^^^^^ source.svelte meta.script.svelte meta.tag.start.svelte entity.name.tag.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte
+# ^^^^^^^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.context.svelte entity.other.attribute-name.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.context.svelte punctuation.separator.key-value.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.context.svelte string.quoted.svelte punctuation.definition.string.begin.svelte
+# ^^^^^^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.context.svelte string.quoted.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.context.svelte string.quoted.svelte punctuation.definition.string.end.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte
+# ^^^^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.lang.svelte entity.other.attribute-name.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.lang.svelte punctuation.separator.key-value.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.lang.svelte string.quoted.svelte punctuation.definition.string.begin.svelte
+# ^^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.lang.svelte string.quoted.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte meta.attribute.lang.svelte string.quoted.svelte punctuation.definition.string.end.svelte
+# ^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.tag.start.svelte punctuation.definition.tag.end.svelte
+# ^^^^^^^^^^^ source.svelte meta.script.svelte meta.lang.ts.svelte meta.embedded.block.svelte source.ts
+# ^^ source.svelte meta.script.svelte meta.tag.end.svelte punctuation.definition.tag.begin.svelte
+# ^^^^^^ source.svelte meta.script.svelte meta.tag.end.svelte entity.name.tag.svelte
+# ^ source.svelte meta.script.svelte meta.tag.end.svelte punctuation.definition.tag.end.svelte
+>
\ No newline at end of file