From cfa30426baa4ad1d1496874c78aa96f20a37c44e Mon Sep 17 00:00:00 2001 From: Jason Dent Date: Mon, 11 Sep 2023 13:18:21 +0200 Subject: [PATCH] fix: Update list of supported language Ids --- .../_includes/generated-docs/configuration.md | 2 +- package.json | 35 +++++++++++++++--- .../_server/spell-checker-config.schema.json | 35 +++++++++++++++--- .../CSpellSettingsPackageProperties.mts | 35 +++++++++++++++--- packages/client/src/client/client.ts | 2 +- packages/client/src/settings/index.test.ts | 2 +- .../client/src/settings/languageIds.test.ts | 10 ++++++ packages/client/src/settings/languageIds.ts | 10 ++++++ packages/client/src/test/schema.ts | 36 +++++++++++++++++++ 9 files changed, 152 insertions(+), 15 deletions(-) create mode 100644 packages/client/src/settings/languageIds.test.ts create mode 100644 packages/client/src/test/schema.ts diff --git a/docs/_includes/generated-docs/configuration.md b/docs/_includes/generated-docs/configuration.md index 2b8cde087..10e87e50e 100644 --- a/docs/_includes/generated-docs/configuration.md +++ b/docs/_includes/generated-docs/configuration.md @@ -1551,6 +1551,6 @@ Description : Specify a list of file types to spell check. It is better to use `#cSpell.enableFiletypes#` to Enable / Disable checking files types. Default -: [ _`"asciidoc"`_, _`"c"`_, _`"cpp"`_, _`"csharp"`_, _`"css"`_, _`"elixir"`_, _`"erlang"`_, _`"git-commit"`_, _`"go"`_, _`"graphql"`_, _`"handlebars"`_, _`"haskell"`_, _`"html"`_, _`"jade"`_, _`"java"`_, _`"javascript"`_, _`"javascriptreact"`_, _`"json"`_, _`"jsonc"`_, _`"jupyter"`_, _`"latex"`_, _`"less"`_, _`"markdown"`_, _`"php"`_, _`"plaintext"`_, _`"python"`_, _`"pug"`_, _`"restructuredtext"`_, _`"rust"`_, _`"scala"`_, _`"scss"`_, _`"scminput"`_, _`"swift"`_, _`"text"`_, _`"typescript"`_, _`"typescriptreact"`_, _`"vue"`_, _`"yaml"`_, _`"yml"`_ ] +: [ _`"asciidoc"`_, _`"bat"`_, _`"c"`_, _`"clojure"`_, _`"coffeescript"`_, _`"cpp"`_, _`"csharp"`_, _`"css"`_, _`"dart"`_, _`"diff"`_, _`"dockerfile"`_, _`"elixir"`_, _`"erlang"`_, _`"fsharp"`_, _`"git-commit"`_, _`"git-rebase"`_, _`"github-actions-workflow"`_, _`"go"`_, _`"graphql"`_, _`"groovy"`_, _`"handlebars"`_, _`"haskell"`_, _`"html"`_, _`"ini"`_, _`"jade"`_, _`"java"`_, _`"javascript"`_, _`"javascriptreact"`_, _`"json"`_, _`"jsonc"`_, _`"julia"`_, _`"jupyter"`_, _`"latex"`_, _`"less"`_, _`"lua"`_, _`"makefile"`_, _`"markdown"`_, _`"objective-c"`_, _`"perl"`_, _`"perl6"`_, _`"php"`_, _`"plaintext"`_, _`"powershell"`_, _`"properties"`_, _`"pug"`_, _`"python"`_, _`"r"`_, _`"razor"`_, _`"restructuredtext"`_, _`"ruby"`_, _`"rust"`_, _`"scala"`_, _`"scminput"`_, _`"scss"`_, _`"shaderlab"`_, _`"shellscript"`_, _`"sql"`_, _`"swift"`_, _`"text"`_, _`"typescript"`_, _`"typescriptreact"`_, _`"vb"`_, _`"vue"`_, _`"xml"`_, _`"xsl"`_, _`"yaml"`_ ] --- diff --git a/package.json b/package.json index df34599e3..e3fdfaafd 100644 --- a/package.json +++ b/package.json @@ -2267,44 +2267,71 @@ "cSpell.enabledLanguageIds": { "default": [ "asciidoc", + "bat", "c", + "clojure", + "coffeescript", "cpp", "csharp", "css", + "dart", + "diff", + "dockerfile", "elixir", "erlang", + "fsharp", "git-commit", + "git-rebase", + "github-actions-workflow", "go", "graphql", + "groovy", "handlebars", "haskell", "html", + "ini", "jade", "java", "javascript", "javascriptreact", "json", "jsonc", + "julia", "jupyter", "latex", "less", + "lua", + "makefile", "markdown", + "objective-c", + "perl", + "perl6", "php", "plaintext", - "python", + "powershell", + "properties", "pug", + "python", + "r", + "razor", "restructuredtext", + "ruby", "rust", "scala", - "scss", "scminput", + "scss", + "shaderlab", + "shellscript", + "sql", "swift", "text", "typescript", "typescriptreact", + "vb", "vue", - "yaml", - "yml" + "xml", + "xsl", + "yaml" ], "items": { "markdownDescription": "This can be '*', 'typescript', 'cpp', 'json', etc.", diff --git a/packages/_server/spell-checker-config.schema.json b/packages/_server/spell-checker-config.schema.json index 382bd72ef..f3c988978 100644 --- a/packages/_server/spell-checker-config.schema.json +++ b/packages/_server/spell-checker-config.schema.json @@ -1927,44 +1927,71 @@ "cSpell.enabledLanguageIds": { "default": [ "asciidoc", + "bat", "c", + "clojure", + "coffeescript", "cpp", "csharp", "css", + "dart", + "diff", + "dockerfile", "elixir", "erlang", + "fsharp", "git-commit", + "git-rebase", + "github-actions-workflow", "go", "graphql", + "groovy", "handlebars", "haskell", "html", + "ini", "jade", "java", "javascript", "javascriptreact", "json", "jsonc", + "julia", "jupyter", "latex", "less", + "lua", + "makefile", "markdown", + "objective-c", + "perl", + "perl6", "php", "plaintext", - "python", + "powershell", + "properties", "pug", + "python", + "r", + "razor", "restructuredtext", + "ruby", "rust", "scala", - "scss", "scminput", + "scss", + "shaderlab", + "shellscript", + "sql", "swift", "text", "typescript", "typescriptreact", + "vb", "vue", - "yaml", - "yml" + "xml", + "xsl", + "yaml" ], "description": "Specify a list of file types to spell check. It is better to use `#cSpell.enableFiletypes#` to Enable / Disable checking files types.", "items": { diff --git a/packages/_server/src/config/cspellConfig/CSpellSettingsPackageProperties.mts b/packages/_server/src/config/cspellConfig/CSpellSettingsPackageProperties.mts index 3e5d5e0c0..42d7a8b5e 100644 --- a/packages/_server/src/config/cspellConfig/CSpellSettingsPackageProperties.mts +++ b/packages/_server/src/config/cspellConfig/CSpellSettingsPackageProperties.mts @@ -71,44 +71,71 @@ export interface CSpellSettingsPackageProperties extends CSpellSettings { * @uniqueItems true * @default [ * "asciidoc", + * "bat", * "c", + * "clojure", + * "coffeescript", * "cpp", * "csharp", * "css", + * "dart", + * "diff", + * "dockerfile", * "elixir", * "erlang", + * "fsharp", * "git-commit", + * "git-rebase", + * "github-actions-workflow", * "go", * "graphql", + * "groovy", * "handlebars", * "haskell", * "html", + * "ini", * "jade", * "java", * "javascript", * "javascriptreact", * "json", * "jsonc", + * "julia", * "jupyter", * "latex", * "less", + * "lua", + * "makefile", * "markdown", + * "objective-c", + * "perl", + * "perl6", * "php", * "plaintext", - * "python", + * "powershell", + * "properties", * "pug", + * "python", + * "r", + * "razor", * "restructuredtext", + * "ruby", * "rust", * "scala", - * "scss", * "scminput", + * "scss", + * "shaderlab", + * "shellscript", + * "sql", * "swift", * "text", * "typescript", * "typescriptreact", + * "vb", * "vue", - * "yaml", - * "yml" + * "xml", + * "xsl", + * "yaml" * ] */ enabledLanguageIds?: CSpellSettings['enabledLanguageIds']; diff --git a/packages/client/src/client/client.ts b/packages/client/src/client/client.ts index db67b1ba3..c9f0cf44d 100644 --- a/packages/client/src/client/client.ts +++ b/packages/client/src/client/client.ts @@ -70,7 +70,7 @@ export class CSpellClient implements Disposable { setOfSupportedSchemes.clear(); this.allowedSchemas.forEach((schema) => setOfSupportedSchemes.add(schema)); - this.languageIds = new Set(languageIds.concat(enabledLanguageIds || []).concat(LanguageIds.languageIds)); + this.languageIds = new Set([...languageIds, ...(enabledLanguageIds || []), ...LanguageIds.languageIds]); const uniqueLangIds = [...this.languageIds]; const documentSelector = [...this.allowedSchemas] .map((scheme) => uniqueLangIds.map((language) => ({ language, scheme }))) diff --git a/packages/client/src/settings/index.test.ts b/packages/client/src/settings/index.test.ts index 14f19ebd3..f9a9af3d1 100644 --- a/packages/client/src/settings/index.test.ts +++ b/packages/client/src/settings/index.test.ts @@ -1,7 +1,7 @@ import * as index from './index'; describe('settings/index', () => { - test('', () => { + test('index', () => { expect(typeof index.enableLocaleForTarget).toBe('function'); }); }); diff --git a/packages/client/src/settings/languageIds.test.ts b/packages/client/src/settings/languageIds.test.ts new file mode 100644 index 000000000..b9e65009c --- /dev/null +++ b/packages/client/src/settings/languageIds.test.ts @@ -0,0 +1,10 @@ +import { readDefaults } from '../test/schema'; +import { languageIds } from './languageIds'; + +describe('settings/index', () => { + test('Default languageIds', async () => { + const defaultSettings = await readDefaults(); + const enabled = defaultSettings.get('cSpell.enabledLanguageIds'); + await expect([...languageIds].sort()).toEqual((Array.isArray(enabled) ? [...enabled] : [enabled]).sort()); + }); +}); diff --git a/packages/client/src/settings/languageIds.ts b/packages/client/src/settings/languageIds.ts index 41dcbd417..63a4f2700 100644 --- a/packages/client/src/settings/languageIds.ts +++ b/packages/client/src/settings/languageIds.ts @@ -15,9 +15,12 @@ export const languageIds: string[] = [ 'fsharp', 'git-commit', 'git-rebase', + 'github-actions-workflow', // .github/workflows/*.yaml files used to specify github workflows. 'go', + 'graphql', 'groovy', 'handlebars', + 'haskell', 'html', 'ini', 'jade', @@ -25,7 +28,10 @@ export const languageIds: string[] = [ 'javascript', 'javascriptreact', 'json', + 'jsonc', 'julia', + 'jupyter', + 'latex', 'less', 'lua', 'makefile', @@ -41,13 +47,17 @@ export const languageIds: string[] = [ 'python', 'r', 'razor', + 'restructuredtext', 'ruby', 'rust', + 'scala', + 'scminput', 'scss', 'shaderlab', 'shellscript', 'sql', 'swift', + 'text', 'typescript', 'typescriptreact', 'vb', diff --git a/packages/client/src/test/schema.ts b/packages/client/src/test/schema.ts new file mode 100644 index 000000000..522397968 --- /dev/null +++ b/packages/client/src/test/schema.ts @@ -0,0 +1,36 @@ +import { promises as fs } from 'node:fs'; +import * as path from 'node:path'; + +export const schemaFile = path.join(__dirname, '../../../_server/spell-checker-config.schema.json'); + +export async function readExtensionSchema(): Promise { + const schema = await readJsonFile(schemaFile); + return schema; +} + +async function readJsonFile(filename: string) { + return JSON.parse(await fs.readFile(filename, 'utf8')); +} + +export async function readDefaults(): Promise> { + const schema = await readExtensionSchema(); + + const items = Array.isArray(schema.items) ? schema.items : schema.items ? [schema.items] : []; + + const results = new Map(); + + function processItem(item: Item) { + if (!item.properties) return; + Object.entries(item.properties).forEach(([k, v]) => results.set(k, v.default)); + } + + items.forEach((element) => processItem(element)); + + return results; +} + +interface Item { + properties?: Record; + items?: Item | Item[]; + default?: unknown; +}