zed/crates/vim/src
Dino b7d35e528a
settings: Add auto completion to command aliases setting (#54496)
Update the JSON schema generated for the settings file in order to be
able to provide the list of valid actions when editing the values for
the `command_aliases` setting.

While reviewing https://github.com/zed-industries/zed/pull/52892 , I
noticed that, even though we already have support for this in the keymap
file, we don't support it for the `command_aliases` setting, so went
ahead and refactored this a bit such that the existing functionality for
the keymap file JSON schema could also be re-used for the
`command_aliases` setting.

Here's a quick big-picture breakdown of the relevant changes:

* Add `settings_content::ActionName` newtype, representing a simple
named action without arguments. The
`settings_content::ActionName::build_schema` function can be used to
build the schema of all possible action names.
* Add `settings_content::ActionWithArguments` newtype, representing an
action with arguments. This was mostly done so as to keep both action
without arguments and action with arguments newtypes together,
even though we don't have
`settings_content::ActionWithArguments::build_schema`, as it is only
used by the keymap schema generation logic and probably doesn't warrant
moving it here right now.
* Update both
`settings_content::WorkspaceSettingsContent::command_aliases` and
`workspace::workspace_settings::WorkspaceSettings::command_aliases` to
now be of type `HashMap<String, ActionName>` such that, when the json
schema for `command_aliases` is generate, it'll now reference the
`#/$defs/ActionName` schema.
* Update `SettingsStore::json_schema` so as to populate the
`#/$defs/ActionName` schema at runtime, replacing it with the actual
list of valid action names.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Release Notes:

- Added support for auto-completing action names on `command_aliases`
setting
2026-04-22 15:09:09 +01:00
..
digraph
helix editor: Fix multi-line cursor expansion when multi-byte characters are involved (#51780) 2026-03-19 16:21:03 +00:00
normal vim: Preserve system clipboard when pasting over visual selection (#52948) 2026-04-21 14:41:42 -06:00
test editor: Fix soft-wrap in auto-height editors (#54051) 2026-04-18 00:55:44 +02:00
change_list.rs
command.rs terminal: Use system shell for non-terminal uses (like spinning up external agents) (#51741) 2026-04-21 08:06:40 +00:00
digraph.rs
helix.rs vim: Ensure vgl does not select newline in helix mode (#54238) 2026-04-22 13:08:32 +00:00
indent.rs
insert.rs
mode_indicator.rs
motion.rs vim: Fix % for multiline comments and preprocessor directives (#53148) 2026-04-07 02:51:54 +00:00
normal.rs vim: Fix incorrect bracket matching for symmetric quotes in cs operator (#52321) 2026-04-16 22:10:25 -06:00
object.rs Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
replace.rs Improve clipboard support on Windows (#51807) 2026-03-18 22:09:26 -04:00
rewrap.rs helix: Add support for line length in reflow command (#52152) 2026-03-23 11:09:54 +00:00
state.rs vim: Fix incorrect bracket matching for symmetric quotes in cs operator (#52321) 2026-04-16 22:10:25 -06:00
surrounds.rs vim: Fix incorrect bracket matching for symmetric quotes in cs operator (#52321) 2026-04-16 22:10:25 -06:00
test.rs settings: Add auto completion to command aliases setting (#54496) 2026-04-22 15:09:09 +01:00
vim.rs vim: Preserve system clipboard when pasting over visual selection (#52948) 2026-04-21 14:41:42 -06:00
visual.rs vim/helix: Use grapheme count on replace (#51776) 2026-03-25 23:19:55 +00:00