diff --git a/helix-lsp/src/snippet.rs b/helix-lsp/src/snippet.rs
index f64f29f2..13e7609f 100644
--- a/helix-lsp/src/snippet.rs
+++ b/helix-lsp/src/snippet.rs
@@ -336,7 +336,12 @@ mod parser {
                 "${",
                 digit(),
                 ":",
-                one_or_more(anything(TEXT_ESCAPE_CHARS)),
+                // according to the grammar there is just a single anything here.
+                // However in the procese it is explained that placeholders can be nested
+                // the example there contains both a placeholder text and a nested placeholder
+                // which indicates a list. Looking at the VSCode sourcecode, the placeholder
+                // is indeed parsed as zero_or_more so the grammar is simply incorrect here
+                zero_or_more(anything(TEXT_ESCAPE_CHARS)),
                 "}"
             ),
             |seq| SnippetElement::Placeholder {