Skip to content

Releases: streetsidesoftware/cspell

v8.8.1

10 May 03:58
Compare
Choose a tag to compare

Changes

docs: Fix link to Dictionaries (#5585)

docs: Fix link to Dictionaries (#5585)

Fix #5579

In the Configuration documentation, the link to the Dictionaries doesn't work.


Fixes

fix: Add config field `enabledFileTypes ` (#5584)

fix: Add config field enabledFileTypes (#5584)

Add config field enabledFileTypes to replace enableFiletypes and enabledLanguageIds .


fix: Drop dependency upon ConfigStore (#5569)

fix: Drop dependency upon ConfigStore (#5569)

ConfigStore hasn't been updated in a while and its dependencies have security issues. These show up when building cspell-action.


v8.8.0

09 May 18:34
Compare
Choose a tag to compare

Features

feat: Add `configFile` option to CSpell ESLint Plugin (#5545)

feat: Add configFile option to CSpell ESLint Plugin (#5545)

Related to #5541


Fixes

fix: Add option to show a performance report. (#5561)

fix: Add option to show a performance report. (#5561)

Added a hidden option --show-perf-summary used to show a perf summary at the end.

Usage: cspell . --no-progress --show-perf-summary

Also made it possible to show hidden options by using --verbose:

Usage: cspell lint --help --verbose. Will also display all of the hidden options:

Usage: cspell lint [options] [globs...] [file://<path> ...] [stdin[://<path>]]

Patterns:
 - [globs...]            Glob Patterns
 - [stdin]               Read from "stdin" assume text file.
 - [stdin://<path>]      Read from "stdin", use <path> for file type and config.
 - [file://<path>]       Check the file at <path>

Examples:
    cspell .                        Recursively check all files.
    cspell lint .                   The same as "cspell ."
    cspell "*.js"                   Check all .js files in the current directory
    cspell "**/*.js"                Check all .js files recursively
    cspell "src/**/*.js"            Only check .js under src
    cspell "**/*.txt" "**/*.js"     Check both .js and .txt files.
    cspell "**/*.{txt,js,md}"       Check .txt, .js, and .md files.
    cat LICENSE | cspell stdin      Check stdin
    cspell stdin://docs/doc.md      Check stdin as if it was "./docs/doc.md"

Check spelling

Options:
  -c, --config <cspell.json>   Configuration file to use.  By default cspell
                               looks for cspell.json in the current directory.
  -v, --verbose                Display more information about the files being
                               checked and the configuration.
  --locale <locale>            Set language locales. i.e. "en,fr" for English
                               and French, or "en-GB" for British English.
  --language-id <file-type>    Force programming language for unknown
                               extensions. i.e. "php" or "scala"
  --words-only                 Only output the words not found in the
                               dictionaries.
  -u, --unique                 Only output the first instance of a word not
                               found in the dictionaries.
  -e, --exclude <glob>         Exclude files matching the glob pattern. This
                               option can be used multiple times to add
                               multiple globs.
  --file-list <path or stdin>  Specify a list of files to be spell checked. The
                               list is filtered against the glob file patterns.
                               Note: the format is 1 file path per line.
  --file [file...]             Specify files to spell check. They are filtered
                               by the [globs...].
  --no-issues                  Do not show the spelling errors.
  --no-progress                Turn off progress messages
  --no-summary                 Turn off summary message in console.
  -s, --silent                 Silent mode, suppress error messages.
  --no-exit-code               Do not return an exit code if issues are found.
  --quiet                      Only show spelling issues or errors.
  --fail-fast                  Exit after first file with an issue or error.
  -r, --root <root folder>     Root directory, defaults to current directory.
  --no-relative                Issues are displayed with absolute path instead
                               of relative to the root.
  --show-context               Show the surrounding text around an issue.
  --show-suggestions           Show spelling suggestions.
  --no-show-suggestions        Do not show spelling suggestions or fixes.
  --no-must-find-files         Do not error if no files are found.
  --cache                      Use cache to only check changed files.
  --no-cache                   Do not use cache.
  --cache-reset                Reset the cache file.
  --cache-strategy <strategy>  Strategy to use for detecting changed files.
                               (choices: "metadata", "content")
  --cache-location <path>      Path to the cache file or directory. (default:
                               ".cspellcache")
  --dot                        Include files and directories starting with `.`
                               (period) when matching globs.
  --gitignore                  Ignore files matching glob patterns found in
                               .gitignore files.
  --no-gitignore               Do NOT use .gitignore files.
  --gitignore-root <path>      Prevent searching for .gitignore files past
                               root.
  --validate-directives        Validate in-document CSpell directives.
  --no-color                   Turn off color.
  --color                      Force color.
  --no-default-configuration   Do not load the default configuration and
                               dictionaries.
  --debug                      Output information useful for debugging
                               cspell.json files.
  --reporter <module|path>     Specify one or more reporters to use.
  -h, --help                   display help for command

Hidden Options:
  --languageId <file-type>     Alias of "--language-id". Force programming
                               language for unknown extensions. i.e. "php" or
                               "scala"
  --wordsOnly                  Only output the words not found in the
                               dictionaries.
  --files [file...]            Alias of "--file". Files to spell check.
  --no-fail-fast               Process all files even if there is an error.
  --relative                   Issues are displayed relative to the root.
  --must-find-files            Error if no files are found.
  --legacy                     Legacy output
  --local <local>              Deprecated -- Use: --locale
  --no-validate-directives     Do not validate in-document CSpell directives.
  --default-configuration      Load the default configuration and dictionaries.
  --skip-validation            Collect and process documents, but do not spell
                               check.
  --issues-summary-report      Output a summary of issues found.
  --show-perf-summary          Output a performance summary report.
  -f,--flag <flag:value>       Declare an execution flag value

More Examples:

    cspell "**/*.js" --reporter @cspell/cspell-json-reporter
        This will spell check all ".js" files recursively and use
        "@cspell/cspell-json-reporter".

    cspell . --reporter default
        This will force the default reporter to be used overriding
        any reporters defined in the configuration.

    cspell . --reporter ./<path>/reporter.cjs
        Use a custom reporter. See API for details.

    cspell "*.md" --exclude CHANGELOG.md --files README.md CHANGELOG.md
        Spell check only check "README.md" but NOT "CHANGELOG.md".

    cspell "/*.md" --no-must-find-files --files $FILES
        Only spell check the "/*.md" files in $FILES,
        where $FILES is a shell variable that contains the list of files.

References:
    https://cspell.org
    https://github.com/streetsidesoftware/cspell

fix: Update schema generator (#5558)

fix: Update schema generator (#5558)

Note: this can impact how auto complete suggestions are made in configuration files.


fix: Stop using EventTarget (#5490)

fix: Stop using EventTarget (#5490)


fix: Add `opBuffer` operator to pipes (#5475)

fix: Add opBuffer operator to pipes (#5475)


Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5548)

fix: Workflow Bot -- Update Dictionaries (main) (#5548)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json | 2 +-
 pnpm-lock.yaml                             | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5503)

fix: Workflow Bot -- Update Dictionaries (main) (#5503)

Update Dictionaries (main)

Summary

 integration-tests/snapshots/mdx-js/mdx/report.yaml       |  4 +---
 integration-tests/snapshots/mdx-js/mdx/snapshot.txt      |  4 +---
 integration-tests/snapshots/sveltejs/svelte/report.yaml  |  7 ++-----
 integration-tests/snapshots/sveltejs/svelte/snapshot.txt |  5 +----
 packages/cspell-bundled-dicts/package.json               |  4 ++--
 pnpm-lock.yaml                                           | 16 ++++++++--------
 6 files changed, 15 insertions(+), 25 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5486)

fix: Workflow Bot -- Update Dictionaries (main) (#5486)

Update Dictionaries (main)

Summary

 .../MartinThoma/LaTeX-examples/report.yaml         |  3 +--
 .../MartinThoma/LaTeX-examples/snapshot.txt        |  3 +--
 .../SoftwareBrothers/admin-bro/report.yaml         |  5 ++---
 .../SoftwareBrothers/admin-bro/snapshot.txt        |  3 +--
 .../microsoft/TypeScript-Website/report.yaml       |  3 ++-
 .../microsoft/TypeScript-Website/snapshot.txt      |  3 ++-
 .../snapshots/sveltejs/svelte/report.yaml          |  3 +--
 .../snapshots/sveltejs/svelte/snapshot.txt         |  3 +--
 packages/cspell-bundled-dicts/package.json         |  6 +++...
Read more

v8.6.1

25 Mar 10:53
Compare
Choose a tag to compare

Changes

Fixes

fix: Add Terraform dictionary (#5404)

fix: Add Terraform dictionary (#5404)


fix: Adding defineConfig() to cspell-types (#5399)

fix: Adding defineConfig() to cspell-types (#5399)

fixes #5358
replaces #5372


fix: Be able to detect Terraform files (#5391)

fix: Be able to detect Terraform files (#5391)


fix: Add support for Julia language (#5376)

fix: Add support for Julia language (#5376)


fix: Be able to detect Julia files (#5363)

fix: Be able to detect Julia files (#5363)


v8.6.0

05 Mar 15:42
Compare
Choose a tag to compare

Changes

Features

feat: Summarize issues at the end (#5349)

feat: Summarize issues at the end (#5349)

fixes #4495

Minor Breakage
The format of the output has changed slightly. This might break some automated scripts. Please use a custom reporter instead of scraping text. See @cspell/cspell-json-reporter - npm


Fixes

fix: `--no-exit-code` will allow running even if there are config errors (#5347)

fix: --no-exit-code will allow running even if there are config errors (#5347)

Configuration errors would block the spell checker from running. Using the --no-exit-code option will report the issue, but not prevent it from running to completion.

Related to #5334


fix: Improve the Configuration Loader Error Message (#5337)

fix: Improve the Configuration Loader Error Message (#5337)

Related to #5334


v8.5.0

01 Mar 14:49
Compare
Choose a tag to compare

Changes

Features

feat: Add `--file [files...]` command line option to lint command. (#5328)

feat: Add --file [files...] command line option to lint command. (#5328)

fixes: #5225

Options:

  • --file and --files - specify files to be checked

--file [files...], alias --files.

The --file option enables specifying which files to check. This is useful when the list is generated by another process and --file-list is not a good fit.

The files will be filtered by [globs...] or cspellConfig.files if the [globs...] were not specified.

Usage:

cspell.config.yaml

files:
  - '**/*.md'
ignorePaths:
  - 'CHANGELOG.md'

Command:

cspell --files README.md CHANGELOG.md LICENSE

Result:
It will only check README.md because LICENSE does not match *.md and CHANGELOG.md is excluded by ignorePaths.

Command Line Only
The same effect can be achieved on the command line:

cspell "*.md" --exclude CHANGELOG.md --files README.md CHANGELOG.md LICENSE
- or -
cspell --exclude CHANGELOG.md --files README.md CHANGELOG.md LICENSE -- "*.md"

v8.4.1

20 Feb 08:53
Compare
Choose a tag to compare

Changes

Fixes

fix: Revert "feat: Support complex word lists (#5233)" (#5281)

fix: Revert "feat: Support complex word lists (#5233)" (#5281)

This reverts commit 517e63c.

PR #5233 introduced a bug when reading some dictionaries. It is being reverted until the issues is fixed.


v8.4.0

19 Feb 09:47
Compare
Choose a tag to compare

Important Remarks

  • Support for ESLint flat configuration files - (#5270)

    eslint.config.js

    import cspellESLintPluginRecommended from '@cspell/eslint-plugin/recommended';
    
    export default [
        // other config imports
        cspellESLintPluginRecommended,
        // other configs
    ];

Features

feat: Support complex word lists (#5233)

feat: Support complex word lists (#5233)

fixes: #5222

The binary dictionary builder (TrieBlob) only supported word lists with 250 unique characters.

This was not an issue with the object based trie dictionaries used with the compiled dictionaries.


feat: Support ESLint flat config (#5270)

feat: Support ESLint flat config (#5270)

This feature add support for ESLint flat file configuration.

Configuration (new: eslint.config.js)

eslint.config.js using recommended.

import cspellESLintPluginRecommended from '@cspell/eslint-plugin/recommended';

export default [
    // other config imports
    cspellESLintPluginRecommended,
    // other configs
];

Or

eslint.config.js using configs.

import cspellConfigs from '@cspell/eslint-plugin/configs';

export default [
    // other config imports
    cspellConfigs.recommended,
    // other configs
];

Or

eslint.config.js using plugins

import cspellPlugin from '@cspell/eslint-plugin';

export default [
    // other config imports
    {
        plugins: { '@cspell': cspellPlugin },
        rules: {
            '@cspell/spellchecker': ['warn', {}],
        },
    },
    // other configs
];

Configuration (Legacy: .eslintrc)

Add "plugin:@cspell/recommended" to the extends section of the configuration.

.eslintrc

{
    "extends": ["plugin:@cspell/recommended"]
}

feat: Support sharing cache between windows and linux (#5267)

feat: Support sharing cache between windows and linux (#5267)

fixes: #5246

  • Defaults to the universal format instead of legacy.
  • Path separators are converted to / before being stored.

feat: Add `language` option to cspell eslint plugin (#5251)

feat: Add language option to cspell eslint plugin (#5251)

fixes: #5232


Fixes

dev: Work on supporting more complex dictionaries like Hungarian. (#5199)

dev: Work on supporting more complex dictionaries like Hungarian. (#5199)

This first PR is mostly a bit of refactoring. No real external changes are available.

Gist:

  • Performance: Reduce the amount of overhead generating the words.
  • Internally, use an array of rule indexes instead of a string that needs to be constantly manipulated to determine which rules to apply.
  • Looking into exporting a suffix tree instead of a list of words. The idea is to make it easier to convert the dictionary into a Trie.

Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5237)

fix: Workflow Bot -- Update Dictionaries (main) (#5237)

Update Dictionaries (main)

Summary

 .../snapshots/eslint/eslint/report.yaml            |  4 +---
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +--
 .../snapshots/gitbucket/gitbucket/report.yaml      |  7 ++----
 .../snapshots/gitbucket/gitbucket/snapshot.txt     |  5 +----
 .../iluwatar/java-design-patterns/report.yaml      |  3 +--
 .../iluwatar/java-design-patterns/snapshot.txt     |  3 +--
 integration-tests/snapshots/mdx-js/mdx/report.yaml |  4 +---
 .../snapshots/mdx-js/mdx/snapshot.txt              |  4 +---
 .../microsoft/TypeScript-Website/report.yaml       |  3 +--
 .../microsoft/TypeScript-Website/snapshot.txt      |  3 +--
 .../snapshots/sveltejs/svelte/report.yaml          |  3 +--
 .../snapshots/sveltejs/svelte/snapshot.txt         |  3 +--
 .../snapshots/wireapp/wire-webapp/report.yaml      |  6 ++----
 .../snapshots/wireapp/wire-webapp/snapshot.txt     |  4 +---
 packages/cspell-bundled-dicts/package.json         |  6 +++---
 pnpm-lock.yaml                                     | 25 +++++++++++++---------
 16 files changed, 34 insertions(+), 52 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5212)

fix: Workflow Bot -- Update Dictionaries (main) (#5212)

Update Dictionaries (main)

Summary

 integration-tests/snapshots/RustPython/RustPython/report.yaml  | 3 ++-
 integration-tests/snapshots/RustPython/RustPython/snapshot.txt | 3 ++-
 packages/cspell-bundled-dicts/package.json                     | 2 +-
 pnpm-lock.yaml                                                 | 9 +++++++--
 4 files changed, 12 insertions(+), 5 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5200)

fix: Workflow Bot -- Update Dictionaries (main) (#5200)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json |  6 +++---
 pnpm-lock.yaml                             | 26 ++++++++++++++++++--------
 2 files changed, 21 insertions(+), 11 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5182)

fix: Workflow Bot -- Update Dictionaries (main) (#5182)

Update Dictionaries (main)

Summary

 integration-tests/snapshots/aws-amplify/docs/report.yaml  | 5 +++--
 integration-tests/snapshots/aws-amplify/docs/snapshot.txt | 3 ++-
 packages/cspell-bundled-dicts/package.json                | 2 +-
 pnpm-lock.yaml                                            | 9 +++++++--
 4 files changed, 13 insertions(+), 6 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5180)

fix: Workflow Bot -- Update Dictionaries (main) (#5180)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json |  4 ++--
 pnpm-lock.yaml                             | 16 ++++++++--------
 2 files changed, 10 insertions(+), 10 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5171)

fix: Workflow Bot -- Update Dictionaries (main) (#5171)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json |  4 ++--
 pnpm-lock.yaml                             | 16 ++++++++--------
 2 files changed, 10 insertions(+), 10 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5148)

fix: Workflow Bot -- Update Dictionaries (main) (#5148)

Update Dictionaries (main)

Summary

 .../MicrosoftDocs/PowerShell-Docs/report.yaml      |  3 +-
 .../MicrosoftDocs/PowerShell-Docs/snapshot.txt     |  3 +-
 .../snapshots/RustPython/RustPython/report.yaml    | 50 ++--------------------
 .../snapshots/RustPython/RustPython/snapshot.txt   | 46 +-------------------
 .../snapshots/alexiosc/megistos/report.yaml        |  4 +-
 .../snapshots/alexiosc/megistos/snapshot.txt       |  4 +-
 .../snapshots/eslint/eslint/report.yaml            |  4 +-
 .../snapshots/eslint/eslint/snapshot.txt           |  3 +-
 .../snapshots/php/php-src/report.yaml              |  3 +-
 .../snapshots/php/php-src/snapshot.txt             |  3 +-
 packages/cspell-bundled-dicts/package.json         |  4 +-
 pnpm-lock.yaml                                     | 17 +++++---
 12 files changed, 25 insertions(+), 119 deletions(-)

fix: Workflow Bot -- Update Dictionaries (main) (#5143)

fix: Workflow Bot -- Update Dictionaries (main) (#5143)

Update Dictionaries (main)

Summary

 .../snapshots/RustPython/RustPython/report.yaml    | 83 ++++++++++++++++++--
 .../snapshots/RustPython/RustPython/snapshot.txt   | 89 +++++++++++++++++++---
 .../snapshots/alexiosc/megistos/report.yaml        | 29 ++++++-
 .../snapshots/alexiosc/megistos/snapshot.txt       | 41 ++++++++--
 packages/cspell-bundled-dicts/package.json         |  2 +-
 .../cspell/src/app/__snapshots__/app.test.ts.snap  |  8 +-
 pnpm-lock.yaml                                     |  9 ++-
 7 files changed, 226 insertions(+), 35 deletions(-)

v8.3.2

02 Jan 13:11
Compare
Choose a tag to compare

Changes

Fixes

fix: cspell-tools - support excluding words (#5140)

fix: cspell-tools - support excluding words (#5140)

When compiling a word list, support excluding words based upon another word list.

This helps reduce the size of a dictionary.


v8.3.1

01 Jan 12:01
Compare
Choose a tag to compare

Changes

Fixes

fix: Improve Trace Results (#5133)

fix: Improve Trace Results (#5133)


fix: Workflow Bot -- Update Dictionaries (main) (#5131)

fix: Workflow Bot -- Update Dictionaries (main) (#5131)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json | 2 +-
 pnpm-lock.yaml                             | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

Dictionary Updates

fix: Workflow Bot -- Update Dictionaries (main) (#5131)

fix: Workflow Bot -- Update Dictionaries (main) (#5131)

Update Dictionaries (main)

Summary

 packages/cspell-bundled-dicts/package.json | 2 +-
 pnpm-lock.yaml                             | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

v8.3.0

30 Dec 09:13
Compare
Choose a tag to compare

Changes

Features

feat: Add untrusted mode to the config loader (#5127)

feat: Add untrusted mode to the config loader (#5127)

There are times it is necessary to prevent loading JavaScript based configuration.

It is now possible to switch the config loader into untrusted mode. In this mode, the loader will not load JavaScript files outside of the CSpell configuration.

This is to support: Workspace Trust Extension Guide | Visual Studio Code Extension API


feat: Support calling a function to get the config (#5126)

feat: Support calling a function to get the config (#5126)

With the release of v8.3.0 it will be possible to return a function from cspell.config.js files. This function will be called to get the configuration. It can return a Config Object or Promise that resolves to a Config Object.

Example:

cspell.config.mjs

import { readFile } from 'node:fs/promises';

/**
 * @returns {Promise<import('@cspell/cspell-types').CSpellUserSettings>}
 */
export default async function getConfig() {
    const words = (await readFile(new URL('requirements.txt', import.meta.url), 'utf8'))
        .replace(/[.,]|([=<>].*)/g, ' ')
        .split(/\s+/g);
    return { id: 'python-imports', words };
}

Dictionary Updates

fix: Upgrade dictionaries (cryptocurrencies) (#5128)

fix: Upgrade dictionaries (cryptocurrencies) (#5128)