Teach CommandPalette to natively support tabs and command lines #11603

Open
opened 2026-01-31 02:52:15 +00:00 by claunia · 2 comments
Owner

Originally created by @Don-Vito on GitHub (Nov 27, 2020).

Originally assigned to: @Don-Vito on GitHub.

Description of the new feature/enhancement

Currently command palette has a single set of UIEelements that present different sets of Commands. This approach has a lot of gaps:

  1. To support tabs and command lines we need to convert them into Commands. This leads to extra complexity in maintaining model correctness (e.g., every time we reorder tabs we need to fix the relevant command as well).
  2. The same element reuse for different purposes makes CommandPalette complex (you need to reconfigure the control upon every mode switching). It also causes undesired re-computations.

Proposed technical implementation details (optional)

My plan to achieve it gradually is following:

  • #8420 - Introduce PaletteItem and derive from it to provide a native support for tabs and command lines (ActionPaletteItem / TabPaletteItem, CommandLinePaltteItem)
  • #8427 -Bind CommandPalette to Terminalpage tabs to prevent costly updates
  • Extract FilterablePaletteItemsList control
  • Introduce separate FilterablePaletteItemsList for each kind if palette items
  • Stretch goal: generalize FilterablePaletteItemsList into filterable list control
Originally created by @Don-Vito on GitHub (Nov 27, 2020). Originally assigned to: @Don-Vito on GitHub. # Description of the new feature/enhancement Currently command palette has a single set of UIEelements that present different sets of Commands. This approach has a lot of gaps: 1. To support tabs and command lines we need to convert them into Commands. This leads to extra complexity in maintaining model correctness (e.g., every time we reorder tabs we need to fix the relevant command as well). 2. The same element reuse for different purposes makes CommandPalette complex (you need to reconfigure the control upon every mode switching). It also causes undesired re-computations. # Proposed technical implementation details (optional) My plan to achieve it gradually is following: - [x] #8420 - Introduce `PaletteItem` and derive from it to provide a native support for tabs and command lines (`ActionPaletteItem` / `TabPaletteItem`, `CommandLinePaltteItem`) - [x] #8427 -Bind CommandPalette to Terminalpage tabs to prevent costly updates - [ ] Extract FilterablePaletteItemsList control - [ ] Introduce separate FilterablePaletteItemsList for each kind if palette items - [ ] Stretch goal: generalize FilterablePaletteItemsList into filterable list control
claunia added the Issue-FeatureProduct-TerminalArea-CodeHealthArea-CmdPal labels 2026-01-31 02:52:15 +00:00
Author
Owner

@Don-Vito commented on GitHub (Nov 27, 2020):

@DHowett - can you please assign this one to me? 😊

@Don-Vito commented on GitHub (Nov 27, 2020): @DHowett - can you please assign this one to me? :blush:
Author
Owner

@DHowett commented on GitHub (Nov 27, 2020):

Happy to 😄 thanks

@DHowett commented on GitHub (Nov 27, 2020): Happy to 😄 thanks
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#11603