mirror of
https://github.com/zed-industries/zed.git
synced 2026-06-17 07:55:42 +00:00
The work introduced in https://github.com/zed-industries/zed/pull/54496 updated the `command_aliases` schema, adding support for auto-completion action names when editing the settings file. However, it didn't take into consideration the case where the user is simply creating an alias to an arbitrary string. These changes introduce a new `CommandAliasTarget` newtype for which the json schema is either a registered action name, from `ActionName` or any arbitrary string, as those are supported by the `command_aliases` setting. Updating the `ActionName` schema to accept any arbitrary string would break the guarantees we have on the keymap binding schema, so that's why a new schema was introduced. Lastly, trying to set `CommandAliasTarget::json_schema` to a simply `anyOf` with either the registered action name or a string that is not a registered action name, like shown below, broke deprecation warnings, hence why we're still doing the approach of only building `CommandAliasTarget` at runtime. ```json { "anyOf": [ { "$ref": "#/$defs/ActionName" }, { "type": "string", "not": { "$ref": "#/$defs/ActionName" }}, ] } ``` 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: - Fixed validation of `command_aliases` setting to avoid showing warnings when aliasing to an arbitrary string