# settings: Fix command aliases json schema \(\#57812\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/e017293aedca7f31d6692750c89de2c69a204d98)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: e017293aedca7f31d6692750c89de2c69a204d98

Requested commit: e017293aedca7f31d6692750c89de2c69a204d98

Commit: e017293aedca7f31d6692750c89de2c69a204d98

Tree: ee1ca642613d9a510858ad434641baae8c401520

Author: Dino

Committer: GitHub

## Message

````
settings: Fix command aliases json schema (#57812)

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
````

## Parents

- [5e32405669d0470baec345073dafffb552a18bae](https://git.cafe/gitcafe/zed/commit/5e32405669d0470baec345073dafffb552a18bae?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/e017293aedca7f31d6692750c89de2c69a204d98?format=markdown)
