Ed Page
e3c191e07e
fix(cli): Display shortened paths to users
...
Before, we always displayed absolute paths and now we'll display
relative ones.
The main issue was loading the config correctly. We just have to
cannonicalize whenever doing so.
2021-05-14 20:39:08 -05:00
Ed Page
1a1ff20f40
fix(cli): Discover config in parent dirs
...
My only guess is that in a76ddd42
, I lost track of different parts of my
change and never re-implemented this logic.
2021-05-14 14:06:20 -05:00
Ed Page
a0c592ff81
feat(cli): Provide traceability on config loading
2021-05-14 14:02:58 -05:00
Ed Page
c4050b41a2
fix(cli): Clarify API stabiliy
...
For now, I'm just punting on `typos_cli`s API.
Fixes #171
2021-05-13 13:34:27 -05:00
Ed Page
b830872ad0
chore: Update enumflags2
2021-05-13 10:20:15 -05:00
Ed Page
60950d02bb
feat(cli): Colored output
...
This supports
- Basic capability detection
- NO_COLOR env variable
- tty detection
- CLI overrides
This does not yet support CLICOLOR. I'll be trying to upstream all of
this into `yansi` and get it taken care of there.
This only supports Windows Anniversary edition and later which I think
is a fine compromise due to the ergonomic difference between `yansi` and
`termcolor`.
Fixes #30
2021-05-12 21:11:52 -05:00
Ed Page
943ae7f490
refactor(cli)!: Shift Report impls to bin
...
This way we can add dependencies on things like `yansi` without worrying
about compatibility.
2021-05-12 19:51:41 -05:00
Ed Page
5a4a707004
refactor(cli): Separate out bin
2021-05-04 21:47:34 -05:00
Ed Page
cec850890c
Merge pull request #238 from epage/range
...
fix(dict)!: Clarify word sizes with Ranges
2021-05-01 08:54:08 -05:00
Ed Page
6216fa0837
fix(dict)!: Clarify word sizes with Ranges
...
The code was generated with separate min / max, rather than using a
Range and ensuring the API is used correctly.
2021-04-30 21:33:33 -05:00
Ed Page
2fc1f5468e
chore(cli): Allow building without expensive parts
...
The obvious case is building for docs.rs but this can be helpful for
special use cases or faster development iteration.
2021-04-30 21:31:25 -05:00
Ed Page
92a1172bfa
feat(ddi): Allow controlling 'unicode' via args
2021-04-30 10:36:55 -05:00
Ed Page
6146824b4e
refactor(cli): Share bool logic
2021-04-30 10:26:12 -05:00
Ed Page
517da7ecd2
perf(parser): Allow people to bypass unicode cost
2021-04-29 21:07:59 -05:00
Ed Page
9cbc7410a4
fix(parser)!: Defer to Unicode XID for identifiers
...
This saves us from having to have configuration for every detail. If
people need more control, we can offer it later.
Fixes #225
2021-04-29 18:30:57 -05:00
Ed Page
9bfb506c6d
fix(typos)!: Clarify Case::Upper
s name
...
`Scream` was referrin to `SCREAMING_CASE` but outside of that context, I
think `Upper` is more accurate.
2021-04-21 20:36:35 -05:00
Ed Page
f36bdc895f
test(cli): Cover extract_line
2021-04-12 20:52:15 -05:00
Ed Page
d7978658d4
test(cli): Ensure we apply corrections
2021-04-10 19:13:48 -05:00
Ed Page
a5975ca1ac
style: Address clippy
2021-04-10 13:07:07 -05:00
Ed Page
e3c1d234f4
test(config): Ensure file type config is used
2021-04-09 15:58:12 -05:00
Ed Page
225971fd4a
fix(config): Ensure we actually use file-type config
2021-04-09 15:57:55 -05:00
Ed Page
a22567c188
test(config): Ensure types are validated
2021-04-07 21:16:41 -05:00
Ed Page
68c0a0d898
test(config): Ensure CLI overrides work
2021-04-07 21:14:41 -05:00
Ed Page
29fafd1a63
test(config): Verify layering
2021-04-07 20:49:52 -05:00
Ed Page
b8294d7afa
fix(config): Improve output from --dump-config
2021-04-07 20:49:30 -05:00
Ed Page
8d02a86f2f
fix(config): Correct typo in config field name
2021-04-07 20:47:49 -05:00
Ed Page
57ace37ec4
feat(config): Error on invalid types
...
Fixes #221
2021-04-06 21:28:42 -05:00
Ed Page
2a7bd5b046
feat(config): Add new file types
...
Fixes #220
2021-04-06 21:18:18 -05:00
Ed Page
c71c9f4f84
refactor(config): Allow extending type matcher
2021-04-06 21:14:47 -05:00
Ed Page
6729bf9f7c
refactor(config): Open door for other mutable operations
2021-04-06 21:14:09 -05:00
Ed Page
38a3007c56
fix(config): Properly layer type and override settings
2021-04-06 20:53:34 -05:00
Ed Page
aa21439502
style: Clippy
2021-04-06 10:30:02 -05:00
Ed Page
8f365ee155
feat(config): Show available type definitions
2021-04-05 21:15:41 -05:00
Ed Page
a101df95c2
feat(config): Per-file type settings
...
Fixes #14
2021-04-05 21:03:49 -05:00
Ed Page
3fd90b09f8
fix(cli): Allow CLI to override walking config
2021-04-05 07:34:05 -05:00
Ed Page
78330ba9c1
refactor(cli): Drop the traits from layering
2021-03-31 21:23:30 -05:00
Ed Page
13617fa9d0
refactor(cli): Decouple walk and engine policies
2021-03-31 20:19:52 -05:00
Ed Page
47eb554052
refactor(cli): Clarify role of file config
2021-03-31 20:06:33 -05:00
Ed Page
d51725b2a4
style: Address clippy
2021-03-30 21:33:39 -05:00
Ed Page
8365351dba
perf(cli): Reuse configs across runs
2021-03-29 20:27:12 -05:00
Ed Page
a76ddd42ce
refactor(cli): Pull out policy creation
2021-03-29 20:27:12 -05:00
Ed Page
f402d3ee77
refactor(config): Clarify config is not file-specific
...
This is prep for the config being reused in other contexts, like commit
messages.
2021-03-29 20:27:12 -05:00
Ed Page
4bbc59facf
refactor(config)!: Detect when no dict config
...
In preparing for smarter handling of config, we need to be able to tell
what is present and what isn't.
BREAKING CHANGE: `--hex` was removed, the value didn't seem high enough.
2021-03-29 20:27:12 -05:00
Ed Page
8bcacf3ca6
refactor(cli): Break out config->policy
...
This is prep for having many policies floating around
2021-03-29 20:27:12 -05:00
Ed Page
b17f9c3a12
feat: Const some fns
2021-03-29 20:27:06 -05:00
Ed Page
75ba4ac535
perf(config): Get small-string optimization
2021-03-01 12:25:51 -06:00
Ed Page
b5827004a2
refactor(config): Simplify
2021-03-01 12:19:56 -06:00
Ed Page
0ea6de6019
refactor(cli): Clarify role of checks
2021-03-01 11:50:23 -06:00
Ed Page
b5f606f201
refactor(typos): Simplify the top-level API
2021-03-01 11:50:23 -06:00
Ed Page
e1e4ce8b61
refactor: Clarify roles
2021-03-01 11:50:23 -06:00
Ed Page
ddeee94cf8
refactor(checks): Make all state dynamic
2021-03-01 11:50:23 -06:00
Ed Page
1c3acd747a
fix(config)!: Move binary to file
...
Seems like it would make sense to allow varying this by directory (when
supporting layering) and by file type.
2021-03-01 11:50:12 -06:00
Ed Page
dbac2eff4a
feat(config): Use '-' to dump config to stdout
2021-01-04 19:29:43 -06:00
Ed Page
13a93ee8d1
fix(config): Provide all field defaults
2021-01-04 19:16:02 -06:00
Ed Page
ecb32a674a
fix(config): Merge custom config over repo config
...
Custom config, like args, is more mutable, so it should be respected
more.
2021-01-04 19:16:02 -06:00
Ed Page
5db9a8e1c9
docs(config): Make config more discoverable
2021-01-04 19:16:02 -06:00
Ed Page
f27282fbc0
docs(args): Clarify what args are esclusive
2021-01-04 19:15:45 -06:00
Ed Page
70163fae61
docs(args): Clarify command line arguments
2021-01-04 14:54:50 -06:00
Ed Page
1c4d2ac32b
feat: Support '-' for stdin
...
This helps with tool integration.
Fixes #195
2021-01-02 22:17:08 -06:00
Ed Page
998fad4390
feat: Check and replace UTF-16 files
...
We don't have good detection for non-UTF encodings and don't have
encoding support for UTF-32, so limiting it to just UTF-16.
Fixes #17
2021-01-02 19:25:00 -06:00
Ed Page
67222e9338
style: Address clippy
2021-01-02 13:49:28 -06:00
Ed Page
e6a4f49eb5
refactor: Clarify names
2021-01-02 13:10:40 -06:00
Ed Page
692f0ac095
refactor(typos): Focus API on primary use case
2021-01-02 13:10:40 -06:00
Ed Page
5f82dd6017
fix: Arg diff reports immediately
2021-01-02 13:10:36 -06:00
Ed Page
c900e48593
fix: Arg write-changes reports immediately
2021-01-02 13:10:30 -06:00
Ed Page
48112a47e9
refactor(parser): Abstract over lifetimes
2021-01-02 13:10:30 -06:00
Ed Page
663eb94d32
refactor: Switch Typos to check_file
2021-01-02 13:10:30 -06:00
Ed Page
6e53d7e719
refactor: Switch Words/Identifiers to check_file
2021-01-02 13:10:30 -06:00
Ed Page
d28174439b
refactor: Switch FoundFiles to check_file
2021-01-02 13:10:30 -06:00
Ed Page
6c28376e50
refactor: Give checks full control
2021-01-02 13:10:30 -06:00
Ed Page
220a79ff30
refactor: Make room for parent function
2021-01-02 13:10:30 -06:00
Ed Page
bc90bacff2
refactor(typos): Pull out file logic
2021-01-02 13:10:30 -06:00
Ed Page
1e64080c05
refactor(typos): Open up the name Parser
2021-01-02 12:58:33 -06:00
Ed Page
e9b3378913
fix: Be friendlier with panics
2020-11-23 12:40:55 -06:00
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