Provide a way to unpin the Pyrefly status and move it into the language status menu
- Dominant language
- Rust
- Stars
- 7k
- Forks
- 516
- PR merge metrics
- No merged PRs in 30d
Description
Hi! Thanks again for the great extension.
I've been thinking about the status bar contribution (for example "Pyrefly (error-off)"). There's no setting to hide it, so it always takes up a slot when Pyrefly is active on the open editor.
I think we should consider reporting this information through a `languages.createLanguageStatusItem` instead of a regular status bar item. Items created this way don't get their own spot in the status bar; instead they collapse into the built-in language status indicator (the `{ }` icon that sits next to the language mode). You see the details by hovering or clicking that icon.
Why this is a nicer fit:
- It's the API meant for the status and configuration of a language tool for the current file. Other language servers already report their status this way, so it would be consistent with what users expect.
- It takes the Pyrefly label out of the main status bar, so the row is less busy
- This might have mitigated the confusion of the user in #1089
- The information stays a hover away, and type errors can still surface through the indicator's warning/error state
- Anyone who wants Pyrefly pinned to the status bar all the time can still have it: hovering the language status indicator gives each item a "pin" action that promotes it back to its own entry. So this stays available for people who like it, just off by default.
And the current information maps pretty cleanly to language status item fields:
- running state can go in `busy`
- type-checking mode can go in `text` or `detail`
- errors present can map to `severity`
- click-to-open-menu can be the `command`
I'm happy to make a PR for this if you agree.
Contributor guide
Research direction
Locate the VS Code extension code that creates the current Pyrefly status bar contribution and compare it with the languages.createLanguageStatusItem API. Verify that running state, checking mode, errors, and the command remain visible through the language status indicator, with the item unpinned by default and still pinnable by users.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- vscode
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100