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.
This commit is contained in:
@@ -110,15 +110,15 @@ pub fn render_parsed_markdown(
|
||||
parsed: &ParsedMarkdown,
|
||||
workspace: Option<WeakView<Workspace>>,
|
||||
cx: &WindowContext,
|
||||
) -> Vec<AnyElement> {
|
||||
) -> Div {
|
||||
let mut cx = RenderContext::new(workspace, cx);
|
||||
let mut elements = Vec::new();
|
||||
|
||||
for child in &parsed.children {
|
||||
elements.push(render_markdown_block(child, &mut cx));
|
||||
}
|
||||
|
||||
elements
|
||||
v_flex().gap_3().children(
|
||||
parsed
|
||||
.children
|
||||
.iter()
|
||||
.map(|block| render_markdown_block(block, &mut cx)),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn render_markdown_block(block: &ParsedMarkdownElement, cx: &mut RenderContext) -> AnyElement {
|
||||
|
||||
Reference in New Issue
Block a user