From 2787b7998ef74526b323454867a17ca7e209b2d0 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Thu, 5 Sep 2024 06:08:29 +0800 Subject: [PATCH] fix(language-server): handle completion item snippet unsupported Fixes https://github.com/withastro/language-tools/issues/948 --- .../language-server/lib/features/languageFeatures.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/language-server/lib/features/languageFeatures.ts b/packages/language-server/lib/features/languageFeatures.ts index f11b94ac..85544d8c 100644 --- a/packages/language-server/lib/features/languageFeatures.ts +++ b/packages/language-server/lib/features/languageFeatures.ts @@ -809,7 +809,16 @@ export function register( } function handleCompletionItem(initializeParams: vscode.InitializeParams, item: vscode.CompletionItem) { + const snippetSupport = initializeParams.capabilities.textDocument?.completion?.completionItem?.snippetSupport ?? false; const insertReplaceSupport = initializeParams.capabilities.textDocument?.completion?.completionItem?.insertReplaceSupport ?? false; + if (!snippetSupport && item.insertTextFormat === vscode.InsertTextFormat.Snippet) { + item.insertTextFormat = vscode.InsertTextFormat.PlainText; + if (item.insertText) { + item.insertText = item.insertText.replace(/\$\d+/g, ''); + item.insertText = item.insertText.replace(/\${\d+:([^}]*)}/g, ''); + } + wranCapabilitiesNotSupported('textDocument.completion.completionItem.snippetSupport'); + } if (!insertReplaceSupport && item.textEdit && vscode.InsertReplaceEdit.is(item.textEdit)) { item.textEdit = vscode.TextEdit.replace(item.textEdit.insert, item.textEdit.newText); wranCapabilitiesNotSupported('textDocument.completion.completionItem.insertReplaceSupport');