Commit Graph
130 Commits
Author SHA1 Message Date
Ed Page b03df3aeae fix: Return more precise errors 2020-11-23 10:08:38 -06:00
Ed Page 869b916ca6 fix: Handle broken pipe 2020-11-21 21:57:12 -06:00
Ed Page 4ddbdcf5dd fix(cli): Define an error code policy
The main goal is to make spelling errors differentiated from other
errors.

Fixes #170
2020-11-14 21:17:29 -06:00
Ed Page ce16d38cfd perf(dict): Skip checking numbers 2020-11-11 18:52:23 -06:00
Ed Page d258e62f43 feat(report): Diff output mode 2020-11-11 18:52:23 -06:00
Ed Page 7a1fac7fab refactor(report): Use native types 2020-11-11 18:44:27 -06:00
Ed Page 482d320407 fix(dict): Ensure we fall through to built-in dict 2020-11-11 12:22:29 -06:00
Ed Page 6bdbd821e3 perf(dict): Avoid hashing unknwon words
Bypass hashing when we know (through str::len) that a word won't be in
the dict.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

With this change
```
real    0m24.432s
user    0m32.492s
sys     0m4.190s
```
2020-11-10 20:57:04 -06:00
Ed Page beaa0f4091 perf(dict): Avoid hashing unknwon words
Bypass hashing when we know (through str::len) that a word won't be in
the dict.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

With this change:
```
real    0m24.060s
user    0m31.559s
sys     0m4.258s
```
2020-11-10 20:57:00 -06:00
Ed Page 18e31fa578 perf: Avoid hashing withut custom dict
`HashMap::get` (at least hashbrown) hashes before getting and doesn't
check if dict is empty.  For the custom dict, a common use case will
have the dict be empty.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

Bypassing `HashMap::get`
```
real    0m16.415s
user    0m14.519s
sys     0m4.118s
```

On a moderately sized repo.
2020-11-10 20:56:54 -06:00
Ed Page 150c5bfdc1 perf: Hash faster for custom dicts
If we have to hash for the custom dict, we might as well be fast about
it.  We do not need a cryptographically secure algorithm since the
content is fixed for the user.

Master:
```
real    0m26.675s
user    0m33.683s
sys     0m4.535s
```

With ahash:
```
real    0m23.993s
user    0m30.800s
sys     0m4.440s
```
2020-11-10 20:56:49 -06:00
Ed Page b7700fa214 refactor: Don't special case --files 2020-11-10 06:30:27 -06:00
Ed Page e12cd8ed55 refactor: Layer files/filenames on buffer processing 2020-11-10 06:30:27 -06:00
Ed Page 3bcd8a130e refactor(report): Merge the typos types 2020-11-10 06:30:23 -06:00
Ed Page 2ef1d02164 Revert "feat(ignore): Typos-specific ignores"
This reverts commit 0052617fcd.

The fix for #134 was backwards.  It turns out `overrides` is for
including rather than ignoring.  Will need to look at this further.
2020-11-03 19:55:45 -06:00
Ed Page f0c24b0afa feat(config): Allow separating config from source 2020-10-30 08:33:43 -05:00
Ed Page 736db10708 fix(format): Clarify message types 2020-10-28 21:01:33 -05:00
Ed Page 2e6cd39781 fix(config): Respect file's defaults 2020-10-28 20:58:48 -05:00
Ed Page 78d76bcbc6 fix: Be friendlier about error messages 2020-10-28 20:47:16 -05:00
Ed Page 527b9837b4 feat: Custom dictionary support
Switching `valid-*` to just `*` where you map typo to correction, with
support for always-valid and never-valid.

Fixes #9
2020-10-27 21:15:25 -05:00
Ed Page 043692afe0 feat(dict): Override builtin dictionary
Sometimes you just have to live with a typo or its done intentionally
(like weird company names).  With this commit, a user can now identifier
blessed identifiers and words.

This is ostly what is needed for #9 but sometimes people will have
common typos that they'll want to provide corrections for.
2020-09-02 20:24:54 -05:00
Ed Page 0052617fcd feat(ignore): Typos-specific ignores
THis is to help with cases like a monorepo with vendored dependencies.
A user might want to search (`.ignore`) them but not hold the code to
the same standards as first-party code.

Fixes #134
2020-08-25 21:09:42 -05:00
Ed Page ab4a5bbdaf feat: Support english dialects
The goal is to be as accepting and unobtrusive to new code bases as
possible.  To this end, we correct typos into the closest english
dialect.

If someone wants to opt-in, they can have typos correct to a specific
english dialect.

Fixes #52
Fixes #22
2020-08-20 19:37:37 -05:00
Ed Page 5d7e91d214 fix(ci): Report more failures 2020-07-04 20:52:48 -05:00
Ed Page bc1302f01b feat: Support multiple, valid corrections
Some of the other spell checkers already do this. While I've not checked
where we might need it for our dictionary, this will be important for
dialects.
2020-07-04 20:52:48 -05:00
Ed Page a5ed18ee46 fix(replace): Don't error on successful replacement 2020-07-04 20:52:47 -05:00
Ed Page d1be9c1944 feat: Replacement support
Now can fix typos!

Fixes #4
2020-07-04 20:52:46 -05:00
Ed Page 94ee49b068 refactor: Re-order main 2020-07-04 20:52:46 -05:00
Ed Page 5cfe913d03 refactor: Split out checks 2020-07-04 20:52:46 -05:00
Ed Page 79d9a4d801 refactor: Split out args 2020-07-04 20:52:46 -05:00
Ed Page b7d412c20e refactor: Calculate threading where it is needed 2020-07-04 20:52:46 -05:00
Ed Page 2e1b95fec1 refactor: Collpase cases 2020-07-04 20:52:46 -05:00
Ed Page 8732d24f53 refactor: Use a single reporter instance 2020-07-04 20:52:46 -05:00
Ed Page 575971a5c5 refactor: Turn reports into a trait 2020-07-04 20:52:46 -05:00
Ed Page 8af7c47fe5 refactor: SImplify init 2020-03-21 14:33:51 -05:00
Ed Page 6b8047ee44 perf: Multi-threaded spell checking
Fixes #7
2020-03-21 14:22:53 -05:00
Ed Page 333762f55c refactor: Prepare for threads 2020-03-21 13:28:38 -05:00
Ed Page b21db206d2 chore: Update env_logger 2019-12-02 09:50:06 -07:00
Ed Page b74258a43c refactor: Consolidate paths 2019-11-15 07:48:07 -07:00
Ed Page 59baa36327 refactor!: Delay populating of Checks 2019-11-14 20:20:29 -07:00
Ed Page 107308a655 perf: Use standard identifier rules to avoid doing umber checks 2019-11-02 19:40:06 -06:00
Ed Page ed00f3ceae docs: Fix typo 2019-11-02 08:57:07 -06:00
Ed Page cc4b53a1b4 Merge pull request #64 from epage/debug
feat: Dump files, identifiers, and words
2019-10-31 11:40:43 -06:00
Ed Page ce365ae12e feat: Dump files, identifiers, and words
This will help people debug their configurations.

Fixes #41
2019-10-31 10:44:23 -06:00
Ed Page a48a457cc3 fix: Improve the organization of --help 2019-10-30 11:02:02 -06:00
Ed Page 975dab8514 chore(benches): Fix compilation errors 2019-10-30 07:20:52 -06:00
Ed Page 06db6fc693 refactor!: Move off of failure 2019-10-29 11:36:50 -06:00
Ed Page ce1ef2ca30 refactor!: Move dict implementation into CLI 2019-10-28 11:00:47 -06:00
Ed Page 0a2f865d0f refactor: Change error strategy for future thread use 2019-10-26 20:31:10 -06:00
Ed Page 5e6e4b9ad7 chore: Upgrade structopt 2019-10-17 20:49:26 -06:00