From 49a4f3dffade7733d696fd8abe62ad60234f9a9f Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sat, 22 Feb 2025 18:48:21 +0100 Subject: [PATCH 1/2] Make missing snippet message include languages --- .../src/core/getPreferredSnippet.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/cursorless-engine/src/core/getPreferredSnippet.ts b/packages/cursorless-engine/src/core/getPreferredSnippet.ts index ad2b2f4437..a0580bc823 100644 --- a/packages/cursorless-engine/src/core/getPreferredSnippet.ts +++ b/packages/cursorless-engine/src/core/getPreferredSnippet.ts @@ -37,12 +37,26 @@ export function getPreferredSnippet( const preferredSnippet = filteredSnippets[0]; if (preferredSnippet == null) { - throw new Error("No snippet available for the current language"); + throw new Error( + `No snippet available for language '${languageId}'. Available languages: ${getUniqueLanguagesString(snippetDescription.snippets)}`, + ); } return preferredSnippet; } +function getUniqueLanguagesString(snippets: CustomInsertSnippetArg[]) { + return Array.from( + new Set( + snippets + .filter((snippet) => snippet.languages != null) + .flatMap((snippet) => snippet.languages), + ), + ) + .sort() + .join(", "); +} + /** * Filter snippet definitions by language. * @param snippetDescriptions The snippets to filter From bb3bcf0b9e82908c099feec75d6b6dd75614d341 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sat, 22 Feb 2025 19:01:16 +0100 Subject: [PATCH 2/2] Clean up --- .../src/core/getPreferredSnippet.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/cursorless-engine/src/core/getPreferredSnippet.ts b/packages/cursorless-engine/src/core/getPreferredSnippet.ts index a0580bc823..3c84bfbb50 100644 --- a/packages/cursorless-engine/src/core/getPreferredSnippet.ts +++ b/packages/cursorless-engine/src/core/getPreferredSnippet.ts @@ -37,24 +37,20 @@ export function getPreferredSnippet( const preferredSnippet = filteredSnippets[0]; if (preferredSnippet == null) { + const languages = getUniqueLanguagesString(snippetDescription.snippets); throw new Error( - `No snippet available for language '${languageId}'. Available languages: ${getUniqueLanguagesString(snippetDescription.snippets)}`, + `No snippet available for language '${languageId}'. Available languages: ${languages}`, ); } return preferredSnippet; } -function getUniqueLanguagesString(snippets: CustomInsertSnippetArg[]) { - return Array.from( - new Set( - snippets - .filter((snippet) => snippet.languages != null) - .flatMap((snippet) => snippet.languages), - ), - ) - .sort() - .join(", "); +function getUniqueLanguagesString(snippets: CustomInsertSnippetArg[]): string { + const languages = new Set( + snippets.flatMap((snippet) => snippet.languages ?? []), + ); + return Array.from(languages).sort().join(", "); } /**