diff --git a/packages/cspell-lib/src/Settings/InDocSettings.test.ts b/packages/cspell-lib/src/Settings/InDocSettings.test.ts index 51f88f05ae8e..0cb3c51466b0 100644 --- a/packages/cspell-lib/src/Settings/InDocSettings.test.ts +++ b/packages/cspell-lib/src/Settings/InDocSettings.test.ts @@ -108,6 +108,8 @@ describe('Validate InDocSettings', () => { test | text | expected ${'Empty Doc'} | ${''} | ${{ id: 'in-doc-settings' }} ${'sampleTextWithIncompleteInDocSetting'} | ${sampleTextWithIncompleteInDocSetting} | ${oc({ words: ['const'], ignoreWords: ['popoutlist', 'again'], dictionaries: ['php'] })} + ${'enableCaseSensitive'} | ${'// cspell:enableCaseSensitive'} | ${oc({ caseSensitive: true })} + ${'disableCaseSensitive'} | ${'// cspell:disableCaseSensitive'} | ${oc({ caseSensitive: false })} `('extract setting: $test', ({ text, expected }) => { expect(InDoc.getInDocumentSettings(text)).toEqual(expected); }); diff --git a/packages/cspell-lib/src/Settings/InDocSettings.ts b/packages/cspell-lib/src/Settings/InDocSettings.ts index 7f435a84a168..7adb5f470111 100644 --- a/packages/cspell-lib/src/Settings/InDocSettings.ts +++ b/packages/cspell-lib/src/Settings/InDocSettings.ts @@ -26,6 +26,7 @@ function parseSettingMatch(matchArray: RegExpMatchArray): CSpellUserSettings[] { const possibleSetting = match.trim(); const settingParsers: [RegExp, (m: string) => CSpellUserSettings][] = [ [/^(?:enable|disable)(?:allow)?CompoundWords/i, parseCompoundWords], + [/^(?:enable|disable)CaseSensitive/i, parseCaseSensitive], [/^words?\s/i, parseWords], [/^ignore(?:words?)?\s/i, parseIgnoreWords], [/^ignore_?Reg_?Exp\s+.+$/i, parseIgnoreRegExp], @@ -47,6 +48,11 @@ function parseCompoundWords(match: string): CSpellUserSettings { return { id: 'in-doc-allowCompoundWords', allowCompoundWords }; } +function parseCaseSensitive(match: string): CSpellUserSettings { + const caseSensitive = /enable/i.test(match); + return { id: 'in-doc-caseSensitive', caseSensitive }; +} + function parseWords(match: string): CSpellUserSettings { const words = match.split(/[,\s]+/g).slice(1); return { id: 'in-doc-words', words }; diff --git a/packages/cspell-trie-lib/package-lock.json b/packages/cspell-trie-lib/package-lock.json index ef78dd5ba9ae..8d64aac385b0 100644 --- a/packages/cspell-trie-lib/package-lock.json +++ b/packages/cspell-trie-lib/package-lock.json @@ -449,9 +449,9 @@ "dev": true }, "@cspell/dict-es-es": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-es-es/-/dict-es-es-2.0.2.tgz", - "integrity": "sha512-wxxtzAFRNfG+G8SClmsPBqxBGfBWvY/qcW0peD0fSsgrfUq9L5k1NckWPkF0YKItLcpHIqnDK8v9JJScxrH7lw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-es-es/-/dict-es-es-2.1.0.tgz", + "integrity": "sha512-AcYaDlmWL4hXYyp4CrSw5gJJRT6UGT3HJy6aUZ6+7NSgtMIQo5r6F7kGFx8FIoCDwwK8imr1nUNiCohMka0fig==", "dev": true }, "@istanbuljs/load-nyc-config": { diff --git a/packages/cspell-trie-lib/package.json b/packages/cspell-trie-lib/package.json index 4b72aecfe01a..19ffdb2f6c60 100644 --- a/packages/cspell-trie-lib/package.json +++ b/packages/cspell-trie-lib/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@cspell/dict-en_us": "^2.1.3", - "@cspell/dict-es-es": "^2.0.2", + "@cspell/dict-es-es": "^2.1.0", "@types/fs-extra": "^9.0.13", "@types/node": "^16.11.6", "jest": "^27.3.1", diff --git a/packages/cspell-trie-lib/src/lib/suggest-es.test.ts b/packages/cspell-trie-lib/src/lib/suggest-es.test.ts index 2d00081e00e3..eba327459e09 100644 --- a/packages/cspell-trie-lib/src/lib/suggest-es.test.ts +++ b/packages/cspell-trie-lib/src/lib/suggest-es.test.ts @@ -8,6 +8,8 @@ function getTrie() { describe('Validate Spanish Suggestions', () => { // cspell:locale en,es // cspell:ignore Carmjen + // cspell:disableCaseSensitive + // cspell:ignore barcelona carmjen nino test.each` word | ignoreCase | expectedWords ${'carmjen'} | ${false} | ${['carmen', 'carmene', 'carmena', 'carmená', 'carmené', 'carmeno', 'carmenó', 'carmenen']}