Skip to content

Conversation

@TomasoAlbinoni
Copy link
Contributor

@TomasoAlbinoni TomasoAlbinoni commented Sep 28, 2025

Issues

Description

New linter that checks if 'criteria' or 'phenomena' is used as singular.

Demo

How Has This Been Tested?

Using just lint filename

Checklist

  • I have performed a self-review of my own code
  • I have added tests to cover my changes

@TomasoAlbinoni TomasoAlbinoni marked this pull request as ready for review September 28, 2025 15:35
Copy link
Collaborator

@hippietrail hippietrail left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some very minor nitpicks.

insert_expr_rule!(Months, true);
insert_expr_rule!(MostNumber, true);
insert_expr_rule!(MultipleSequentialPronouns, true);
insert_expr_rule!(CriteriaPhenomena, true);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not crucial but try to keep these in alphabetical order of Linter name. We've had a couple of times entries have become duped during merges after changing the order and ordering them makes it effortless to spot.

}
}

Some(Lint {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's just a tiny nitpick but if something changes the linter in the future to have other than 3 tokens it would still return Some(Lint) just without any suggestions. I would include returning the lint insdide the if block. You can return None otherwise, or often it's possible to use ? when checking the preconditions to obviate that...

SequenceExpr::default()
.then(singular_modifiers.clone())
.then(
SequenceExpr::default()
Copy link
Collaborator

@hippietrail hippietrail Sep 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This SequnceExpr shouldn't be needed. You can just chain the the two .then... inside it right after the first one.

@TomasoAlbinoni
Copy link
Contributor Author

Some very minor nitpicks.

@hippietrail Thanks very much for the feedback!

Copy link
Collaborator

@hippietrail hippietrail left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of my comments that got blocked by the Great Firewall.

let second_word = matched_tokens[2]
.span
.get_content(source)
.to_string()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this will cause an allocation that can be avoided by using the string comparison methods available directly on the result of get_content(). (This was part of my original review but the Great Firewall caused a problem.)

Copy link
Collaborator

@elijah-potter elijah-potter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great! I can imagine extending this down the road to cover even more plural confusions.

@elijah-potter elijah-potter added this pull request to the merge queue Sep 29, 2025
Merged via the queue into Automattic:master with commit 5f4f66d Sep 29, 2025
9 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Oct 10, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [Automattic/harper/harper-ls](https://github.com/Automattic/harper) | minor | `v0.65.0` -> `v0.67.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>Automattic/harper (Automattic/harper/harper-ls)</summary>

### [`v0.67.0`](https://github.com/Automattic/harper/releases/tag/v0.67.0)

[Compare Source](Automattic/harper@v0.66.0...v0.67.0)

#### What's Changed

- feat(core): Add support for Python docstrings by [@&#8203;rushter](https://github.com/rushter) in [#&#8203;2038](Automattic/harper#2038)
- feat(web): revise landing page by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2046](Automattic/harper#2046)
- fix(web): remove faq link by [@&#8203;mcecode](https://github.com/mcecode) in [#&#8203;2047](Automattic/harper#2047)
- fix(obsidian): properly manage dictionary by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2050](Automattic/harper#2050)
- fix(web): will now work on Hacker News by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2053](Automattic/harper#2053)
- docs: remove or update remaining faq page links by [@&#8203;mcecode](https://github.com/mcecode) in [#&#8203;2061](Automattic/harper#2061)
- build(deps): bump ordered-float from 5.0.0 to 5.1.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2059](Automattic/harper#2059)
- refactor(chrome-ext): drop jquery dependency by [@&#8203;Ingramz](https://github.com/Ingramz) in [#&#8203;2052](Automattic/harper#2052)
- fix(wasm): remove overlaps in the proper order by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2062](Automattic/harper#2062)
- fix(chrome-plugin): errors saving rule state in Firefox by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2064](Automattic/harper#2064)
- fix(chrome-ext): disable on comboboxes by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2063](Automattic/harper#2063)
- More irregular verbs for 'have went' linter by [@&#8203;hippietrail](https://github.com/hippietrail) in [#&#8203;1973](Automattic/harper#1973)

#### New Contributors

- [@&#8203;rushter](https://github.com/rushter) made their first contribution in [#&#8203;2038](Automattic/harper#2038)
- [@&#8203;Ingramz](https://github.com/Ingramz) made their first contribution in [#&#8203;2052](Automattic/harper#2052)

**Full Changelog**: <Automattic/harper@v0.66.0...v0.67.0>

### [`v0.66.0`](https://github.com/Automattic/harper/releases/tag/v0.66.0)

[Compare Source](Automattic/harper@v0.65.0...v0.66.0)

#### What's Changed

- fix: format of checkboxes was broken in feature request template by [@&#8203;hippietrail](https://github.com/hippietrail) in [#&#8203;1992](Automattic/harper#1992)
- fix: org-mode add list item parsing with tab normalization by [@&#8203;eloycoto](https://github.com/eloycoto) in [#&#8203;1989](Automattic/harper#1989)
- feat(chrome-ext): use new CSS Highlights API where possible by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;1970](Automattic/harper#1970)
- feat: add ink support by [@&#8203;FreddieGilbraith](https://github.com/FreddieGilbraith) in [#&#8203;1894](Automattic/harper#1894)
- feat:besides the point→beside the point, don't can→can't by [@&#8203;hippietrail](https://github.com/hippietrail) in [#&#8203;2021](Automattic/harper#2021)
- Add more phrasal verb exceptions by [@&#8203;hippietrail](https://github.com/hippietrail) in [#&#8203;2002](Automattic/harper#2002)
- feat(core): create initial `MissingTo` rule by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;1990](Automattic/harper#1990)
- fix(core): address problems with prepositional phrases by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2022](Automattic/harper#2022)
- build(deps): bump tree-sitter from 0.25.9 to 0.25.10 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2029](Automattic/harper#2029)
- Criteria phenomena by [@&#8203;TomasoAlbinoni](https://github.com/TomasoAlbinoni) in [#&#8203;2028](Automattic/harper#2028)
- build(deps): bump serde from 1.0.226 to 1.0.228 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2032](Automattic/harper#2032)
- build(deps): bump thiserror from 2.0.16 to 2.0.17 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2030](Automattic/harper#2030)
- chore: missing words, annotations by [@&#8203;hippietrail](https://github.com/hippietrail) in [#&#8203;1999](Automattic/harper#1999)
- feat(core): create tagged linting function by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;1998](Automattic/harper#1998)
- build(deps): bump indexmap from 2.11.1 to 2.11.4 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;2031](Automattic/harper#2031)
- fix: nominal wants issue [#&#8203;2010](Automattic/harper#2010) by [@&#8203;hippietrail](https://github.com/hippietrail) in [#&#8203;2034](Automattic/harper#2034)
- fix(ci): reduce redundancy in CI by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2037](Automattic/harper#2037)
- feat(core): use a better quote-pairing algorithm by [@&#8203;elijah-potter](https://github.com/elijah-potter) in [#&#8203;2036](Automattic/harper#2036)

#### New Contributors

- [@&#8203;FreddieGilbraith](https://github.com/FreddieGilbraith) made their first contribution in [#&#8203;1894](Automattic/harper#1894)
- [@&#8203;TomasoAlbinoni](https://github.com/TomasoAlbinoni) made their first contribution in [#&#8203;2028](Automattic/harper#2028)

**Full Changelog**: <Automattic/harper@v0.65.0...v0.66.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzIuNSIsInVwZGF0ZWRJblZlciI6IjQxLjEzNS41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants