Commit graph

258 commits

Author SHA1 Message Date
Ed Page
f0ba78db1a fix(cli): Skip files that stdout is writing to
Fixes #502
2022-06-16 13:56:48 -05:00
Ed Page
0bb32cc473 fix(config): Resolve ambiguous file types
Before, when two file types matched the same glob, the file type that
one was non-deterministic.

Now, "the more specific" file type wins.  What this means is that we
break up the file by its extensions and prioritize the more literal glob
- If its just `*`, then its lowest priority
- If it contains `*` and other logic, then its next
- If it doesn't contain a `*`, then its the highest priority

This leaves out other glob syntax like `{one,two}` as those are
closed-ended and so considered specific still.

Fixes #487
2022-06-15 15:53:04 -05:00
Ed Page
5ae7bda8eb style: Silence clippy 2022-05-16 09:09:17 -05:00
Ed Page
a17f6a284a feat(cli): Log the policy
This is in part to help in cases like #487 but it will also help people
generally configure and debug their config.
2022-05-16 09:06:28 -05:00
SeongChan Lee
a759af71d4 fix: Fix the width of numbers and some symbols 2022-04-28 23:25:20 +09:00
SeongChan Lee
c191a78a77 fix: Fix highlight indenting for emojis and tab characters 2022-04-28 11:44:25 +09:00
SeongChan Lee
f2de431701 fix: Change column number to 1-based index 2022-04-28 11:44:24 +09:00
SeongChan Lee
e096eb2095 fix: Fix misalignment in report highlight and indent
Previous method misaligns highlights when there are double width asian characters
```
39 |  한글 eglish
   |    ^^^^^^
```
This commit fixes the highlight to have correct alignment.
```
39 |  한글 eglish
   |      ^^^^^^
```
`unicode-rs` crate is used by the Rust compiler [1].
[1]: 34a6c9f26e/compiler/rustc_errors/src/emitter.rs (L861)
2022-04-26 17:30:12 +09:00
Ed Page
bead488a6c fix(config): Set file types for go.mod/go.sum
`go.mod` seems to be a specification file which we tend to lump in with
the language itself since a weirdly spell dependency will likely show up
in code.

`go.sum` seems to be like a lock file which we quarantine into its own
file type.

Fixes #458
2022-04-06 12:19:49 -05:00
Ed Page
e3a1397e04 chore: Remove duplicate lock entry 2022-04-06 12:18:40 -05:00
Ed Page
86c54fffbf style: Update clippy 2022-03-29 15:07:19 -05:00
Ed Page
e70667ebae fix: Ignore lock files by default
First, this centralizes the concept of lock files, focusing on intent,
rather than syntax.  We are assuming `requirements.txt` for Python is
being used like a regular lock file and not as a dependency
specification.

Second, we then ignore the content.  Though a lock file will generally
contain things that could show up in a dependency specification, the
large dependency trees make that harder to manage.  We still have the
dependency specification file which will match with the users code.

Fixes #445
2022-03-09 08:45:55 -06:00
Ed Page
560de68f58 refactor: Move default config to default types 2022-03-09 08:37:22 -06:00
Ed Page
8cb2d44284 refactor: Pull out custom default types
This is
https://github.com/BurntSushi/ripgrep/blob/master/crates/ignore/src/default_types.rs
at 418d048.
2022-03-09 08:28:23 -06:00
Ed Page
cf20628f28 refactor: Resolve deprecations 2022-03-01 08:38:31 -06:00
Ed Page
4971ea89c9 style: Make clippy happy 2022-01-24 12:14:15 -06:00
Ed Page
9b6b0dee5c test: Ensure extend-words also works
This was fixed in the previous commit when dealing with
deny_unknown_fields.

Fixes #407
2022-01-24 12:01:00 -06:00
Ed Page
55114b3777 fix(config): Allow check-file to work
Looks like `deny_unknown_fields` doesn't work with `flatten`.  See serde-rs/serde#1547.

Fixes #406
2022-01-24 12:01:00 -06:00
Ed Page
9134bec15e refactor(config): Line per attribute 2022-01-24 12:01:00 -06:00
Ed Page
900619be86 docs: Fix typo in example config
Fixes #404
2022-01-24 12:00:59 -06:00
Ed Page
91281038aa fix(config): Update to TOML 1.0
Fixes #405
2022-01-24 12:00:52 -06:00
Ed Page
3d33e7e888 chore: Upgrade concolor 2022-01-11 15:55:20 -06:00
Ed Page
9c5b84d5fe feat: Upgrate to clap3 2021-12-31 15:52:39 -06:00
Ed Page
5c83dec07b style: Remove unused variable 2021-12-14 15:41:52 -06:00
Ed Page
05edccea2e style: Make clippy happy 2021-11-08 11:28:34 -06:00
Ed Page
1046b89208 fix(config): Avoid correcting Rust names
Part of #362
2021-10-23 09:24:37 -05:00
Ed Page
b7812e616c fix(config): Check project files with language
For `rg`, keeping the file types strict makes sense,  For spell
checking, `Cargo.toml` is a lot more closely related in handling to
`*.rs` than it is to `pyproject.toml` due to ecosystem package names.

Part of #362
2021-10-23 09:24:31 -05:00
Ed Page
29ebe5ab48 fix(config): Skip lock files by default
Part of #362
2021-10-23 09:24:25 -05:00
Ed Page
83dc9dcb5f fix(config): Overlay default/overrides with type-config 2021-10-23 09:24:25 -05:00
Ed Page
b17b811ec1 feat(cli): Smarter color control 2021-10-06 10:08:42 -05:00
Ed Page
27bd817498 fix(config): Skip checking cert contents
Fixes #327
2021-08-04 07:12:10 -05:00
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