Merge pull request #884 from epage/custom

fix(dict): Mirror original case for custom dict
This commit is contained in:
Ed Page 2023-12-13 08:50:17 -06:00 committed by GitHub
commit f8f8c6edf1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 7 deletions

View file

@ -284,27 +284,30 @@ impl<'i, 'w, D: typos::Dictionary> typos::Dictionary for Override<'i, 'w, D> {
self.inner.correct_ident(ident) self.inner.correct_ident(ident)
} }
fn correct_word<'s>(&'s self, word: typos::tokens::Word<'_>) -> Option<Status<'s>> { fn correct_word<'s>(&'s self, word_token: typos::tokens::Word<'_>) -> Option<Status<'s>> {
if word.case() == typos::tokens::Case::None { if word_token.case() == typos::tokens::Case::None {
return None; return None;
} }
for ignored in &self.ignored_words { for ignored in &self.ignored_words {
if ignored.is_match(word.token()) { if ignored.is_match(word_token.token()) {
return Some(Status::Valid); return Some(Status::Valid);
} }
} }
// Skip hashing if we can // Skip hashing if we can
if !self.words.is_empty() { if !self.words.is_empty() {
let w = UniCase::new(word.token()); let w = UniCase::new(word_token.token());
// HACK: couldn't figure out the lifetime issue with replacing `cloned` with `borrow` // HACK: couldn't figure out the lifetime issue with replacing `cloned` with `borrow`
if let Some(status) = self.words.get(&w).cloned() { if let Some(mut corrections) = self.words.get(&w).cloned() {
return Some(status); for s in corrections.corrections_mut() {
case_correct(s, word_token.case())
}
return Some(corrections);
} }
} }
self.inner.correct_word(word) self.inner.correct_word(word_token)
} }
} }

View file

@ -0,0 +1,2 @@
[default.extend-words]
"trailling" = "trailing"

View file

@ -0,0 +1 @@
public function noErrorOnTraillingSemicolonAndWhitespace(Connection $connection)

View file

@ -0,0 +1,13 @@
bin.name = "typos"
args = ""
status.code = 2
stdin = ""
stdout = """
error: `Trailling` should be `Trailing`
--> ./file.txt:1:26
|
1 | public function noErrorOnTraillingSemicolonAndWhitespace(Connection $connection)
| ^^^^^^^^^
|
"""
stderr = ""