Releases: streetsidesoftware/cspell
v8.14.0
v8.13.3
Changes
Fixes
fix: Try non-English suffix endings on word breaks (#6066)
fix: Try non-English suffix endings on word breaks (#6066)
Related to #6065.
When breaking a camel case word into its parts there are two word break patterns:
regExpCamelCaseWordBreaks
regExpCamelCaseWordBreaksWithEnglishSuffix
is the default pattern.
It is the same asregExpCamelCaseWordBreaks
, but will not split ALL CAPS words with English suffixes.
Using just regExpCamelCaseWordBreaks
misses unknown 4-letter words.
The code below was tried, but it missed flagging words like LSTMs
:
LSTM
was caught.LSTMs
was missed because it becomesLST
andMs
.
const results = _checkCamelCaseWord(vr, regExpCamelCaseWordBreaks);
if (!results.length) return results;
const resultsEnglishBreaks = _checkCamelCaseWord(vr, regExpCamelCaseWordBreaksWithEnglishSuffix);
return results.length < resultsEnglishBreaks.length ? results : resultsEnglishBreaks;
- Make sure the API doesn't change when adding functions to
text.ts
. - Fix possible accent issue with wordSplitter (note, not an issue with Normalized strings).
Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#6070)
fix: Workflow Bot -- Update Dictionaries (main) (#6070)
Update Dictionaries (main)
Summary
packages/cspell-bundled-dicts/package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
Documentation
v8.13.2
Changes
Fixes
fix: Stop duplicate issue output. (#6058)
fix: Stop duplicate issue output. (#6058)
Kind of reverts #4495
Since the output no longer lists each file, repeating the issues at the end is redundant.
fix: make sure reported issues are consistent. (#6032)
fix: make sure reported issues are consistent. (#6032)
Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#6050)
fix: Workflow Bot -- Update Dictionaries (main) (#6050)
Update Dictionaries (main)
Summary
packages/cspell-bundled-dicts/package.json | 6 +++---
pnpm-lock.yaml | 31 ++++++++++++++++++------------
2 files changed, 22 insertions(+), 15 deletions(-)
fix: Workflow Bot -- Update Dictionaries (main) (#6037)
fix: Workflow Bot -- Update Dictionaries (main) (#6037)
Update Dictionaries (main)
Summary
.../Azure/azure-rest-api-specs/report.yaml | 2 +-
.../googleapis/google-cloud-cpp/report.yaml | 5 +-
.../googleapis/google-cloud-cpp/snapshot.txt | 3 +-
.../snapshots/ktaranov/sqlserver-kit/report.yaml | 3590 ++----------
.../snapshots/ktaranov/sqlserver-kit/snapshot.txt | 5849 ++++++--------------
.../microsoft/TypeScript-Website/report.yaml | 2 +-
.../snapshots/vitest-dev/vitest/report.yaml | 2 +-
packages/cspell-bundled-dicts/package.json | 6 +-
pnpm-lock.yaml | 30 +-
9 files changed, 1983 insertions(+), 7506 deletions(-)
Documentation
v8.13.1
v8.13.0
Features
Speed Improvement
On average, 8.13.0 is 1.5x - 2x faster than 8.12
Spell check the CSpell Repo: 1467 files.
Version | Time |
---|---|
8.13.0 | 9.8s |
8.12.1 | 18.0s |
8.11.0 | 18.2s |
8.10.4 | 19.0s |
feat: Improve the speed of checking text. (#6004)
feat: Improve the speed of checking text. (#6004)
After doing a bit of perf testing, it became clear that some of the Pipe function took up a decent percent of the time.
Converting Generators to Iterables resulting in a significant speed improvement.
Fixes
refactor: Use text.matchAll instead of sequenceFromRegExpMatch (#5994)
refactor: Use text.matchAll instead of sequenceFromRegExpMatch (#5994)
fix: trie lookup performance (#5985)
fix: trie lookup performance (#5985)
This is currently a place holder for per work.
Initial Perf:
File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words 7.31 ops/sec 4 iterations 546.87ms time
✔ fastTrieBlob has words 14.43 ops/sec 8 iterations 554.57ms time
✔ trieBlob has words 19.27 ops/sec 10 iterations 518.86ms time
✔ iTrieFast has words 12.64 ops/sec 7 iterations 553.83ms time
✔ iTrieBlob has words 16.79 ops/sec 9 iterations 536.03ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words 24.43 ops/sec 13 iterations 532.14ms time
✔ dictionary has 100k words (2nd time) 24.68 ops/sec 13 iterations 526.69ms time
✔ collection has 100k words 13.44 ops/sec 7 iterations 520.71ms time
✔ iTrie has 100k words 32.54 ops/sec 17 iterations 522.51ms time
✔ iTrie.hasWord has 100k words 33.18 ops/sec 17 iterations 512.32ms time
✔ iTrie.data has 100k words 37.27 ops/sec 19 iterations 509.79ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words 6.65 ops/sec 4 iterations 601.33ms time
✔ dictionary has not 100k words (2nd time) 6.36 ops/sec 4 iterations 628.84ms time
✔ collection has not 100k words 2.57 ops/sec 2 iterations 776.87ms time
✔ iTrie has not 100k words 29.93 ops/sec 15 iterations 501.20ms time
✔ iTrie.hasWord has not 100k words 27.78 ops/sec 14 iterations 503.89ms time
✔ iTrie.data has not 100k words 33.93 ops/sec 17 iterations 500.99ms time
done.
result:
File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words 6.44 ops/sec 4 iterations 620.65ms time
✔ fastTrieBlob has words 13.74 ops/sec 7 iterations 509.65ms time
✔ trieBlob has words 19.24 ops/sec 10 iterations 519.73ms time
✔ iTrieFast has words 13.90 ops/sec 7 iterations 503.53ms time
✔ iTrieBlob has words 16.88 ops/sec 9 iterations 533.31ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words 25.89 ops/sec 13 iterations 502.22ms time
✔ collection has 100k words 13.81 ops/sec 7 iterations 506.81ms time
✔ collection reverse has 100k words 13.26 ops/sec 7 iterations 527.84ms time
✔ iTrie has 100k words 36.84 ops/sec 19 iterations 515.72ms time
✔ iTrie.hasWord has 100k words 33.99 ops/sec 18 iterations 529.51ms time
✔ iTrie.data has 100k words 38.55 ops/sec 20 iterations 518.75ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words 6.37 ops/sec 4 iterations 627.52ms time
✔ collection has not 100k words 2.71 ops/sec 2 iterations 738.63ms time
✔ iTrie has not 100k words 28.77 ops/sec 16 iterations 556.20ms time
✔ iTrie.hasWord has not 100k words 25.99 ops/sec 13 iterations 500.14ms time
✔ iTrie.data has not 100k words 34.15 ops/sec 18 iterations 527.10ms time
done.
fix: speed up word look up. (#5984)
fix: speed up word look up. (#5984)
Start Metrics:
File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words 6.84 ops/sec 4 iterations 584.46ms time
✔ fastTrieBlob has words 13.16 ops/sec 7 iterations 531.93ms time
✔ trieBlob has words 16.89 ops/sec 9 iterations 532.98ms time
✔ iTrieFast has words 12.67 ops/sec 7 iterations 552.63ms time
✔ iTrieBlob has words 17.26 ops/sec 9 iterations 521.36ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words 14.98 ops/sec 8 iterations 533.90ms time
✔ dictionary has 100k words (2nd time) 15.85 ops/sec 9 iterations 567.87ms time
✔ collection has 100k words 4.98 ops/sec 3 iterations 602.34ms time
✔ iTrie has 100k words 26.74 ops/sec 14 iterations 523.57ms time
✔ iTrie.hasWord has 100k words 29.86 ops/sec 16 iterations 535.84ms time
✔ iTrie.data has 100k words 32.51 ops/sec 17 iterations 522.92ms time
Running Perf Suite: dictionary has Not
✔ dictionary has 100k words 4.96 ops/sec 3 iterations 605.42ms time
✔ dictionary has 100k words (2nd time) 5.42 ops/sec 3 iterations 553.15ms time
✔ collection has 100k words 0.40 ops/sec 1 iterations 2525.41ms time
✔ iTrie has 100k words 24.18 ops/sec 13 iterations 537.61ms time
✔ iTrie.hasWord has 100k words 23.98 ops/sec 12 iterations 500.34ms time
✔ iTrie.data has 100k words 27.89 ops/sec 14 iterations 501.99ms time
done.
In progress:
File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words 7.07 ops/sec 4 iterations 565.75ms time
✔ fastTrieBlob has words 14.51 ops/sec 8 iterations 551.21ms time
✔ trieBlob has words 18.61 ops/sec 10 iterations 537.47ms time
✔ iTrieFast has words 12.97 ops/sec 7 iterations 539.54ms time
✔ iTrieBlob has words 18.01 ops/sec 9 iterations 499.70ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words 23.78 ops/sec 12 iterations 504.61ms time
✔ dictionary has 100k words (2nd time) 24.79 ops/sec 13 iterations 524.47ms time
✔ collection has 100k words 12.98 ops/sec 7 iterations 539.20ms time
✔ iTrie has 100k words 33.16 ops/sec 17 iterations 512.61ms time
✔ iTrie.hasWord has 100k words 33.05 ops/sec 17 iterations 514.37ms time
✔ iTrie.data has 100k words 34.17 ops/sec 18 iterations 526.77ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words 6.38 ops/sec 4 iterations 627.41ms time
✔ dictionary has not 100k words (2nd time) 6.42 ops/sec 4 iterations 623.45ms time
✔ collection has not 100k words 0.46 ops/sec 1 iterations 2193.36ms time
✔ iTrie has not 100k words 28.49 ops/sec 15 iterations 526.53ms time
✔ iTrie.hasWord has not 100k words 29.51 ops/sec 15 iterations 508.24ms time
✔ iTrie.data has not 100k words 31.32 ops/sec 16 iterations 510.82ms time
done.
Latest:
File: src/perf/has.perf.ts
Running Perf Suite: trie has
✔ trie has words 7.31 ops/sec 4 iterations 546.87ms time
✔ fastTrieBlob has words 14.43 ops/sec 8 iterations 554.57ms time
✔ trieBlob has words 19.27 ops/sec 10 iterations 518.86ms time
✔ iTrieFast has words 12.64 ops/sec 7 iterations 553.83ms time
✔ iTrieBlob has words 16.79 ops/sec 9 iterations 536.03ms time
done.
File: src/perf/has.perf.ts
Running Perf Suite: dictionary has
✔ dictionary has 100k words 24.43 ops/sec 13 iterations 532.14ms time
✔ dictionary has 100k words (2nd time) 24.68 ops/sec 13 iterations 526.69ms time
✔ collection has 100k words 13.44 ops/sec 7 iterations 520.71ms time
✔ iTrie has 100k words 32.54 ops/sec 17 iterations 522.51ms time
✔ iTrie.hasWord has 100k words 33.18 ops/sec 17 iterations 512.32ms time
✔ iTrie.data has 100k words 37.27 ops/sec 19 iterations 509.79ms time
Running Perf Suite: dictionary has Not
✔ dictionary has not 100k words 6.65 ops/sec 4 iterations 601.33ms time
✔ dictionary has not 100k words (2nd time) 6.36 ops/sec 4 iterations 628.84ms time
✔ collection has not 100k words 2.57 ops/sec 2 iterations 776.87ms time
✔ iTrie has not 100k words 29.93 ops/sec 15 iterations 501.20ms time
✔ iTrie.hasWord has not 100k words 27.78 ops/sec 14 iterations 503.89ms time
✔ iTrie.data has not 100k words 33.93 ops/sec 17 iterations 500.99ms time
done.
Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#5980)
fix: Workflow Bot -- Update Dictionaries (main) (#5980)
Update Dictionaries (main)
Summary
integration-tests/snapshots/eslint/eslint/report.yaml | 6 ++----
integration-tests/snapshots/eslint/eslint/snapshot.txt | 3 +--
integration-tests/snapshots/pagekit/pagekit/report.yaml | 4 +---
...
v8.12.1
Features
feat: Support custom issue template (#5949)
feat: Support custom issue template (#5949)
Related to #5758
Make it possible to use custom issue templates from the command line:
cspell . --issue-template='{green $filename}:{yellow $row:$col} $message ({red $text}) $quickFix'
Template
option: --issue-template
to set the template to use when reporting issues.
The template is a string that can contain the following placeholders:
$filename
- the file name$col
- the column number$row
- the row number$text
- the word that is misspelled$message
- the issues message: "unknown word", "word is misspelled", etc.$messageColored
- the issues message with color based upon the message type.$uri
- the URI of the file$suggestions
- suggestions for the misspelled word (if requested)$quickFix
- possible quick fixes for the misspelled word.$contextFull
- the full context of the misspelled word.$contextLeft
- the context to the left of the misspelled word.$contextRight
- the context to the right of the misspelled word.
Color is supported using the following template pattern:
{<style[.style]> <text>}
- where<style>
is a style name and<text>
is the text to style.
Stylesbold
,italic
,underline
,strikethrough
,dim
,inverse
black
,red
,green
,yellow
,blue
,magenta
,cyan
,white
Example:
{green $filename}:{yellow $row}:{yellow $col} $message {red $text} $quickFix {dim $suggestions}
Fixes
fix: refactor uri to url (#5943)
fix: refactor uri to url (#5943)
Part of moving away from vscode-uri to the standard URL.
fix: Use stdout and stderr to display text (#5935)
fix: Use stdout and stderr to display text (#5935)
- Do not use console.log/.error/.warn to display text.
- Clean up the output so it doesn't use too much space.
Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#5938)
fix: Workflow Bot -- Update Dictionaries (main) (#5938)
Update Dictionaries (main)
Summary
.../Azure/azure-rest-api-specs/report.yaml | 6 +--
.../snapshots/RustPython/RustPython/report.yaml | 4 +-
.../snapshots/RustPython/RustPython/snapshot.txt | 16 ++++---
.../snapshots/django/django/report.yaml | 8 ++--
.../snapshots/django/django/snapshot.txt | 3 +-
.../snapshots/eslint/eslint/report.yaml | 6 +--
.../snapshots/eslint/eslint/snapshot.txt | 3 +-
.../snapshots/gitbucket/gitbucket/report.yaml | 3 +-
.../snapshots/gitbucket/gitbucket/snapshot.txt | 3 +-
.../googleapis/google-cloud-cpp/report.yaml | 42 +++++++++----------
.../snapshots/ktaranov/sqlserver-kit/report.yaml | 3 +-
.../snapshots/ktaranov/sqlserver-kit/snapshot.txt | 3 +-
.../microsoft/TypeScript-Website/report.yaml | 3 +-
.../microsoft/TypeScript-Website/snapshot.txt | 3 +-
.../snapshots/neovim/nvim-lspconfig/report.yaml | 3 +-
.../snapshots/neovim/nvim-lspconfig/snapshot.txt | 5 +--
.../snapshots/sveltejs/svelte/report.yaml | 10 ++---
.../snapshots/sveltejs/svelte/snapshot.txt | 8 +---
.../typescript-cheatsheets/react/report.yaml | 9 ++--
.../typescript-cheatsheets/react/snapshot.txt | 9 ++--
.../snapshots/wireapp/wire-webapp/report.yaml | 7 ++--
.../snapshots/wireapp/wire-webapp/snapshot.txt | 5 +--
packages/cspell-bundled-dicts/package.json | 10 ++---
.../cspell/src/app/__snapshots__/app.test.ts.snap | 13 +++++-
pnpm-lock.yaml | 49 ++++++++++++----------
25 files changed, 107 insertions(+), 127 deletions(-)
v8.11.0
Changes
Features
Fixes
fix: Use UTF8 sequence to store characters in the TrieBlob (#5913)
fix: Use UTF8 sequence to store characters in the TrieBlob (#5913)
The TrieBlob (binary version of a Trie) was using a character index and storing the offset into the character index in each trie node.
Using utf8 bytes instead make the format easier to understand and process. It also gets the added benefit of being sorted. Sorting was lost when the index was used.
fix: performance - Improve dictionary search speed. (#5901)
fix: performance - Improve dictionary search speed. (#5901)
fix: Improve word lookup performance for FastTrieBlob and TrieBlob (#5888)
fix: Improve word lookup performance for FastTrieBlob and TrieBlob (#5888)
Dictionary Updates
fix: Workflow Bot -- Update Dictionaries (main) (#5874)
fix: Workflow Bot -- Update Dictionaries (main) (#5874)
Update Dictionaries (main)
Summary
.../MicrosoftDocs/PowerShell-Docs/report.yaml | 6 ++----
.../MicrosoftDocs/PowerShell-Docs/snapshot.txt | 4 +---
.../snapshots/gitbucket/gitbucket/report.yaml | 4 +---
.../snapshots/gitbucket/gitbucket/snapshot.txt | 4 +---
.../googleapis/google-cloud-cpp/report.yaml | 7 ++-----
.../googleapis/google-cloud-cpp/snapshot.txt | 5 +----
.../snapshots/ktaranov/sqlserver-kit/report.yaml | 3 +--
.../snapshots/ktaranov/sqlserver-kit/snapshot.txt | 3 +--
.../snapshots/sveltejs/svelte/report.yaml | 3 +--
.../snapshots/sveltejs/svelte/snapshot.txt | 3 +--
packages/cspell-bundled-dicts/package.json | 4 ++--
pnpm-lock.yaml | 20 ++++++++++----------
12 files changed, 24 insertions(+), 42 deletions(-)