Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor ActionMap and Command to use ActionIDs #17162

Open
wants to merge 79 commits into
base: main
Choose a base branch
from

Conversation

PankajBhojwani
Copy link
Contributor

@PankajBhojwani PankajBhojwani commented Apr 30, 2024

Summary of the Pull Request

As outlined in #16816, refactor ActionMap to use the new action IDs added in #16904

Detailed description of the pull request

See the spec!
 

Validation steps performed

  • Legacy style commands are parsed correctly (and rewritten to the new format)
  • Actions are still layered correctly and their IDs can be used to 'overwrite' actions in earlier layers
  • Keybindings that refer to an ID defined in another layer work correctly
  • User-defined actions without an ID have one generated for them (and their settings file is edited with it)
  • Schema updated

References and Relevant Issues

#16816

PR Checklist

{
if (cmd.ActionAndArgs().Action() != ShortcutAction::Invalid)
// Only populate AvailableActions with actions that haven't been visited already.
const auto actionID = Hash(cmd.ActionAndArgs());
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Unfortunately we still have to use InternalActionID to populate the available action dropdown in the SUI since we don't have a Terminal.<> id for every configuration of each shortcut action and its args

This comment has been minimized.

Copy link
Member

@lhecker lhecker left a comment

Choose a reason for hiding this comment

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

Mostly nits, and 1 bug.
I'm not sure I understood how all the changes fit together in the grand scheme of things. I'm not so deep into the ActionMap code. 🙈

else
{
// this is not a command block, so it is a keybinding block
_AddKeyBindingHelper(jsonBlock, warnings);
Copy link
Member

Choose a reason for hiding this comment

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

If you invert the if condition, you can flip the branches and use continue here. It would still make sense that way IMO, because it would read "if it has no commands and no actions, then add an error and continue".

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We're not adding errors here, we're either adding a keybinding or adding an action (that may have a keybinding in it if it is the legacy style)

src/cascadia/TerminalSettingsModel/ActionMap.cpp Outdated Show resolved Hide resolved
src/cascadia/TerminalSettingsModel/ActionMap.cpp Outdated Show resolved Hide resolved
src/cascadia/TerminalSettingsModel/ActionMap.cpp Outdated Show resolved Hide resolved
src/cascadia/TerminalSettingsModel/ActionMap.cpp Outdated Show resolved Hide resolved
src/cascadia/TerminalSettingsModel/ActionMap.cpp Outdated Show resolved Hide resolved
@PankajBhojwani
Copy link
Contributor Author

I'm not sure I understood how all the changes fit together in the grand scheme of things

THIS

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.

Pre-seeded actions from userDefaults.json should be removed after adding IDs
3 participants