# Load all key bindings that parse and use markdown in error notifications \(\#23113\) · gitcafe/zed

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

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

Visibility: public

Requested revision: 711dc21eb271fc81eb8b675ec444e1a29e90cf3e

Requested commit: 711dc21eb271fc81eb8b675ec444e1a29e90cf3e

Commit: 711dc21eb271fc81eb8b675ec444e1a29e90cf3e

Tree: 14a57d28797de869e30fb07ac769998350301883

Author: Michael Sloan

Committer: GitHub

## Message

```
Load all key bindings that parse and use markdown in error notifications (#23113)

* Collects and reports all parse errors

* Shares parsed `KeyBindingContextPredicate` among the actions.

* Updates gpui keybinding and action parsing to return structured
errors.

* Renames "block" to "section" to match the docs, as types like
`KeymapSection` are shown in `json-language-server` hovers.

* Removes wrapping of `context` and `use_key_equivalents` fields so that
`json-language-server` auto-inserts `""` and `false` instead of `null`.

* Updates `add_to_cx` to take `&self`, so that the user keymap doesn't
get unnecessarily cloned.

In retrospect I wish I'd just switched to using TreeSitter to do the
parsing and provide proper diagnostics. This is tracked in #23333

Release Notes:

- Improved handling of errors within the user keymap file. Parse errors
within context, keystrokes, or actions no longer prevent loading the key
bindings that do parse.
```

## Parents

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

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