Ed Page
7ce0438a70
refactor(config): Allow defaulting type patterns
2021-08-04 07:12:10 -05:00
Ed Page
10a2486163
perf(diff): Don't lock on every line
2021-07-06 09:27:31 -05:00
Ed Page
1b3f1f6b46
fix(diff): Handle broken pipe
2021-07-06 09:26:08 -05:00
Ed Page
c8d1058a71
refactor(dict): Change typos-dict to trie
...
This is +/- 15%, depending on the benchmark.
2021-07-01 10:41:56 -05:00
Ed Page
bbbf985777
perf(dict): Switch varcon to a burst-trie
...
This cuts varcon lookup times in half but I still suspect slower than
phf. Like with bsearch and unlike, the cost is consistent between hits
and misses.
At least this doesn't have the compile hit of PHF + unicase. Maybe I
should experiment with integrating a non-const-fn variant of unicase
with PHF and give up on all of this extra complexity.
2021-06-30 21:03:57 -05:00
Ed Page
a1e95bc7c0
refactor(dict): Pull out table-lookup logic
...
Before, only some dicts did we guarentee were pre-sorted. Now, all are
for-sure pre-sorted.
This also gives each dict the size-check to avoid lookup.
But this is really about refactoring in prep for playing with other
lookup options, like tries.
2021-06-30 10:12:17 -05:00
Ed Page
32f5e6c682
refactor(typos)!: Bake ignores into parser
...
This is prep for other items to be ignored
BREAKING CHANGE: `TokenizerBuilder` no longer takes config for ignoring
tokens. Related, we now ignore token-ignore config flags.
2021-06-29 11:41:25 -05:00
Ed Page
655b6571bd
fix(cli): Don't crash on races
...
I misused `compare_exchange` when I didn't even really need it.
Fixes #284
2021-06-15 16:50:12 -05:00
Brian Teeman
4caddb6a80
Typo
...
The irony of a typo in typos is not missing
2021-06-08 08:35:08 +01:00
Ed Page
20f4e5de75
fix(cli): Don't panic
...
Fixes #277
2021-06-07 07:44:21 -05:00
Ed Page
60fe94c292
fix(cli): Ensure we can run on files
2021-06-05 13:52:44 -05:00
Ed Page
0aaa2c0d60
Merge pull request #272 from epage/phf1
...
refactor(varcon): Remove reliance on const-fn
2021-06-05 11:50:35 -05:00
Ed Page
b1cf03c7eb
refactor(varcon): Move away from PHF
...
This is mostly to give implementation flexibility for changing out how
we store the data to reduce compilation memory usage.
This does have performance impact, jumping from ~220ns to ~320ns for a
dict lookup, according to our micro benchmarks.
2021-06-04 14:59:46 -05:00
Ed Page
6365eeb0ce
docs(cli): Clarify help string for 'exclude'
...
Fixes #269
2021-06-03 20:04:46 -05:00
Ed Page
d45e7cf5a3
fix(cli): Don't crash on stdin
...
Fixes #264
2021-05-28 19:02:27 -05:00
Ed Page
9859e60077
fix(cli): Don't panic when finding column
...
When rendering typos, we look up what visual column the typoe starts on
but I mixed a raw byte offset with the offset into a lossy string. This
caused panics when dealing with non-ascii content.
Fixes #258
2021-05-27 21:28:42 -05:00
Ed Page
2b5699180c
fix: Count lines correctly
...
I didn't count on how `buffer.lines().count()` would handle different
corner cases, like slices with no `\n`, slices with trailing `\n`, etc.
Fixes #259
2021-05-27 13:24:38 -05:00
Ed Page
327a84a242
feat(ignore): Typos=specific ignores
...
We want both CLI and config ignores. The question then is what we make
them relative to. I decided to favor CLI with `.`. We'll see how this
works out
Fixes #134
2021-05-20 21:00:28 -05:00
Ed Page
b99f32dea8
perf(dict): Bypass vars when possible
...
Variant support slows us down by 10-50$. I assume most people will run
with `en` and so most of this overhead is to waste. So instead of
merging vars with dict, let's instead get a quick win by just skipping
vars when we don't need to. If the assumptions behind this change over
time or if there is need for speeding up a specific locale, we can
re-address this.
Before:
```
check_file/Typos/code time: [35.860 us 36.021 us 36.187 us]
thrpt: [8.0117 MiB/s 8.0486 MiB/s 8.0846 MiB/s]
check_file/Typos/corpus time: [26.966 ms 27.215 ms 27.521 ms]
thrpt: [21.127 MiB/s 21.365 MiB/s 21.562 MiB/s]
```
After:
```
check_file/Typos/code time: [33.837 us 33.928 us 34.031 us]
thrpt: [8.5191 MiB/s 8.5452 MiB/s 8.5680 MiB/s]
check_file/Typos/corpus time: [17.521 ms 17.620 ms 17.730 ms]
thrpt: [32.794 MiB/s 32.999 MiB/s 33.184 MiB/s]
```
This puts us inline with `--no-default-features --features dict`
Fixes #253
2021-05-19 13:55:41 -05:00
Ed Page
d65fa79d0e
refactor(dict): Make feature flag paths clearer
2021-05-18 19:45:11 -05:00
Ed Page
639e65b88a
fix(dict): Handle cases from Linux
...
These were found while running `typos` on Linux and inspecting a
sampling of the results. #249 represents additional changes to make.
There were some identifiers, that looked like hardware registers, that
I'm unsure of what can be done for them.
2021-05-18 12:02:03 -05:00
Ed Page
fb0dac4297
refactor(dict): Allow 0..n corrections in BuiltIn
...
The main use case is taking `ther` -> `there` and adding `the` and
`their`.
2021-05-18 12:02:03 -05:00
Ed Page
04e55e4e85
fix(dict): Correctly connect dict with varcon
...
We had a bug where `finallizes` with EnGb would not correct to
`finalises`
2021-05-17 21:23:12 -05:00
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