Skip to content

Dialect indicator for VS Code extension#985

Merged
elijah-potter merged 2 commits intoAutomattic:masterfrom
hippietrail:dialect-indicator-vscode
Apr 1, 2025
Merged

Dialect indicator for VS Code extension#985
elijah-potter merged 2 commits intoAutomattic:masterfrom
hippietrail:dialect-indicator-vscode

Conversation

@hippietrail
Copy link
Copy Markdown
Collaborator

Issues

#982

Description

Adds an indicator in the status bar for the English dialect set.

It reflects the Workspace setting, which seems to be the default. I don't know VS Code or its extension system deeply enough to know if this is the best solution.

On my setup I was able to confuse myself by changing the dialect in User.

Changing the Workspace setting instantly changes the flag, but does not reload the window. Some squiggles seem to be updated instantly, but not all of them.

It is possible to make the indicator clicking to change the setting but I haven't implemented this. It would be best to fully grok the Workspace vs User ramifications before attempting this.

It is possibly to add a Harper logo but not as a PNG or SVG. You need to do some font trickery: https://stackoverflow.com/a/76399730/527702

I tried to make the indicator appear as close to the document format indicator as possible. It doesn't seem to be possible to get them right next to each other.

Demo

View from the settings:
image

View of position near file format indicator:
image

How Has This Been Tested?

Manually. I don't know if it would be possibly to add test code for this. Let me know.

Checklist

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

@mcecode
Copy link
Copy Markdown
Collaborator

mcecode commented Mar 31, 2025

It reflects the Workspace setting, which seems to be the default. I don't know VS Code or its extension system deeply enough to know if this is the best solution.

It's probably the right move, AFAIK, using workspace.getConfiguration like you did returns the setting for the current open workspace/folder. If that's not set, it returns the user level setting. If that's not set, it returns the default setting.

Changing the Workspace setting instantly changes the flag, but does not reload the window. Some squiggles seem to be updated instantly, but not all of them.

The window doesn't need to reload on config change. Updating the diagnostics on config change is already handled here:

if (configs.find((c) => event.affectsConfiguration(c))) {

I tried to make the indicator appear as close to the document format indicator as possible. It doesn't seem to be possible to get them right next to each other.

You can probably achieve this by setting priority to 1 or -1 like Prettier or Biome do.

I have some nits, but for now, LGTM.

@hippietrail
Copy link
Copy Markdown
Collaborator Author

It reflects the Workspace setting, which seems to be the default. I don't know VS Code or its extension system deeply enough to know if this is the best solution.

It's probably the right move, AFAIK, using workspace.getConfiguration like you did returns the setting for the current open workspace/folder. If that's not set, it returns the user level setting. If that's not set, it returns the default setting.

I know I got confused when coding it and then when testing it, but I'm not comfortable with the various levels of settings in VS Code. If it feels right to VS Code pros that's great!

Changing the Workspace setting instantly changes the flag, but does not reload the window. Some squiggles seem to be updated instantly, but not all of them.

The window doesn't need to reload on config change. Updating the diagnostics on config change is already handled here:

if (configs.find((c) => event.affectsConfiguration(c))) {

Great! I got the feeling that some squigglies updated if they were hidden by another window and that others were not updated. But that may be a false impression. .affectsConfiguration() looks like the API I was hunting for and failed to find to force a window refresh/redraw/invalidation. Much of this documentation is written in too abstract a style IMO. Googling and asking LLMs didn't get me there either using more concrete terminology.

I tried to make the indicator appear as close to the document format indicator as possible. It doesn't seem to be possible to get them right next to each other.

You can probably achieve this by setting priority to 1 or -1 like Prettier or Biome do.

I did a manual bsearch over the priorities. -1 behaves the same as any value <= 100, between Copilot and Notifications. If you feel that's a better spot I'm happy to change it. Here's what it looks like for comparison:
image

I have some nits, but for now, LGTM.

Please bring them on. I'm a lot less comfortable in this code than in the core Rust code.

@mcecode
Copy link
Copy Markdown
Collaborator

mcecode commented Mar 31, 2025

I know I got confused when coding it and then when testing it, but I'm not comfortable with the various levels of settings in VS Code.

I guess you can visualize it like CSS, the settings cascade. From less to more specific, it goes, default settings, user settings, then workspace settings. If the more specific setting is not set, then it falls back to less specific settings until you end up in the default setting. I don't know if that'll help, but that's how I imagine it.

Much of this documentation is written in too abstract a style IMO. Googling and asking LLMs didn't get me there either using more concrete terminology.

I feel you on this. Docs and blogs outside of the official documentation are also sparse, that's probably why LLMs aren't very good at this, there's just not a lot of non-code data. If I need to do something specific or edge case, like in the case of middlewares, I usually have to hunt what API I need in .d.ts files and GitHub issues.

If you feel that's a better spot I'm happy to change it.

I don't really have a preference, I just thought those values might put it closer to where you want it to be.

Please bring them on. I'm a lot less comfortable in this code than in the core Rust code.

They're really just nits on the structure, nothing that should block the PR. Functionality-wise, this is good.

@elijah-potter elijah-potter added this pull request to the merge queue Mar 31, 2025
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Mar 31, 2025
@elijah-potter elijah-potter added this pull request to the merge queue Apr 1, 2025
Merged via the queue into Automattic:master with commit f5c0458 Apr 1, 2025
22 checks passed
@hippietrail hippietrail deleted the dialect-indicator-vscode branch April 1, 2025 19:35
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Apr 20, 2025
This MR contains the following updates:

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

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.29.1`](https://github.com/Automattic/harper/releases/tag/v0.29.1)

[Compare Source](Automattic/harper@v0.29.0...v0.29.1)

#### What's Changed

-   chore: "off of a" false positive by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1081
-   feat: phrase corrections: like a plague, have went, case and point, aswell by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1078
-   Dictionary curation 2025 04 17 by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1080
-   fix: [#&#8203;1075](Automattic/harper#1075) package logo font for vscode extension by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1077

**Full Changelog**: Automattic/harper@v0.29.0...v0.29.1

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

[Compare Source](Automattic/harper@v0.28.0...v0.29.0)

#### What's Changed

-   refactor: remove unneeded logic for repeated words by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1020
-   fix: improve to handle -s -es and -ed endings by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1003
-   feat: start clarifying affix system by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#972
-   refactor: improve logic and robustness of then→than by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1021
-   Curate existing rules by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1023
-   fix: new logic and false positives by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1024
-   build(deps): bump tokio from 1.44.1 to 1.44.2 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1040
-   build(deps): bump indexmap from 2.8.0 to 2.9.0 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1037
-   build(deps): bump uuid from 1.12.0 to 1.16.0 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1038
-   feat: use the old code if `parallel` unavailable by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1019
-   feat: mention which verb triggered lint in msg by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1034
-   feat: Expand "cuz", correct "on face value" by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1030
-   feat: exempt "you guys" from the possessive your linter by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1027
-   feat: trail and error→trial and error by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1044
-   chore: tweak priority/position of statusbar item and add Harper logo by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1043
-   chore: "side of a" false positive by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1029
-   feat: Add special cases to sentence capitalization by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1031
-   feat: don't allow "let's" to trigger a following compound by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1032
-   Dictionary curation 2025 04 04 by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1028
-   feature: highly kept (secret)→well-kept by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1045
-   Documentation updates by [@&#8203;mcecode](https://github.com/mcecode) in Automattic/harper#1000
-   chore: manually spotted 3 things our lints would flag in doc comments by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1047
-   feat: sequential pronouns: don't detect "my US", make case insensitive by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1026
-   feat(devshell): init devshell by [@&#8203;alDuncanson](https://github.com/alDuncanson) in Automattic/harper#1014
-   `harper.js` API reference generation improvements by [@&#8203;mcecode](https://github.com/mcecode) in Automattic/harper#1050
-   fix(comments): ignore comments CSpell compatibility by [@&#8203;mcecode](https://github.com/mcecode) in Automattic/harper#1046
-   fix: update vscode deps by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1042
-   feat: hone in on→home in on by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1059
-   Adj of a curation 2025 04 09 by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1053
-   Dictionary curation 2025 04 08 by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1052
-   fix: make modal-of linter case insensitive by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1048
-   build(deps): bump clap from 4.5.34 to 4.5.36 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1060
-   build(deps): bump anyhow from 1.0.97 to 1.0.98 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1063
-   build(deps): bump lru from 0.13.0 to 0.14.0 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1061
-   build(deps): bump smallvec from 1.14.0 to 1.15.0 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#1062
-   feat(core): add simple corrections from my notes by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1025
-   Fix bug 1066 "Stack Overflow", dictionary curation, adjective-of-a curation by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1068
-   feat: add for (a)while, after (a)while, unless if, suffice to say by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1071

**Full Changelog**: Automattic/harper@v0.28.0...v0.29.0

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

[Compare Source](Automattic/harper@v0.27.0...v0.28.0)

#### What's Changed

-   fix(vscode-plugin): sleep a longer time after openUntitled by [@&#8203;kiding](https://github.com/kiding) in Automattic/harper#1004
-   docs: update link to website by [@&#8203;alDuncanson](https://github.com/alDuncanson) in Automattic/harper#1007
-   feat(harper-cli): make lint accept user & file-local dictionary by [@&#8203;kiding](https://github.com/kiding) in Automattic/harper#987
-   feat(ls): use PlainEnglish parser for language id "text" by [@&#8203;86xsk](https://github.com/86xsk) in Automattic/harper#968
-   docs: fix grammar by [@&#8203;alDuncanson](https://github.com/alDuncanson) in Automattic/harper#1009
-   feat(comments): add `scala` support by [@&#8203;tymcauley](https://github.com/tymcauley) in Automattic/harper#970
-   docs(core): update the `Author a Rule` page to align with code by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1008
-   feat(core): make `LintConfig` sorted by key by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1012
-   feat: wrote first draft of statistics logging by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#454
-   feat(obsidian): add debounce setting by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1015
-   feat(harper.js): significantly improve worker performance by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1016
-   feat: [#&#8203;20](Automattic/harper#20) : comma spacing and [#&#8203;498](Automattic/harper#498) : Asian commas by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#891
-   feat(core): added a bunch more common rules by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#940
-   chore: merge and sort original and non-US sections by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#977
-   Adj of a curation 2025 04 02 by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#1006

#### New Contributors

-   [@&#8203;alDuncanson](https://github.com/alDuncanson) made their first contribution in Automattic/harper#1007
-   [@&#8203;tymcauley](https://github.com/tymcauley) made their first contribution in Automattic/harper#970

**Full Changelog**: Automattic/harper@v0.27.0...v0.28.0

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

[Compare Source](Automattic/harper@v0.26.0...v0.27.0)

#### What's Changed

-   fix(harper-ls): handle language mode change and VS Code auto detect by [@&#8203;kiding](https://github.com/kiding) in Automattic/harper#966
-   feat: linters for common mistakes with "another" by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#963
-   Dictionary curation 2025 03 06 by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#837
-   feat(core): flag "<adjective> of a" by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#967
-   fix: include the full set of personal pronouns and possessives by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#964
-   fix: 2 words in curated dict lack / before annotations by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#958
-   feat: implement [#&#8203;828](Automattic/harper#828) by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#853
-   VS Code Extension Updates by [@&#8203;mcecode](https://github.com/mcecode) in Automattic/harper#960
-   doc(core): write up the difference between a `Linter` and a `PatternLinter` by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#973
-   fix(core): remove bad phrase by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#974
-   fix: handle another false positive in "adjective of a" by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#980
-   feat(harper-typst): ignore file path as arguments, regex, .display by [@&#8203;kiding](https://github.com/kiding) in Automattic/harper#976
-   Improve doc coverage by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#979
-   feat: detect capitalized false positives by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#988
-   fix(harper-cli): set American as the default dialect by [@&#8203;kiding](https://github.com/kiding) in Automattic/harper#986
-   build(deps): bump once_cell from 1.21.1 to 1.21.3 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#996
-   feat: more false positives: "inside of" & "out of" by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#992
-   template for feature requests on github by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#981
-   build(deps): bump clap from 4.5.32 to 4.5.34 by [@&#8203;dependabot](https://github.com/dependabot) in Automattic/harper#995
-   feat: implement [#&#8203;993](Automattic/harper#993) by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#994
-   Dialect indicator for VS Code extension by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#985
-   chore: "head of a" false positive + test by [@&#8203;hippietrail](https://github.com/hippietrail) in Automattic/harper#999
-   test(core): confirm that [#&#8203;720](Automattic/harper#720) is no longer present by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#975
-   fix(wordpress): crashes when options menu is opened by [@&#8203;elijah-potter](https://github.com/elijah-potter) in Automattic/harper#1002

**Full Changelog**: Automattic/harper@v0.26.0...v0.27.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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMjguMCIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
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