zed-industries/zed · error

No keybinding editor to deserialize

Error message

No keybinding editor to deserialize

What it means

Raised in the workspace item deserialization hook for the keymap editor: when restoring a previously opened KeymapEditor item from the workspace database, `db.get_keybinding_editor(item_id, workspace_id)` returned None, so there is no persisted editor state to restore for this item id. Usually the DB row was deleted, belongs to a stale workspace, or serialization never ran for that item.

Source

Thrown at crates/keymap_editor/src/keymap_editor.rs:3958

    ) -> gpui::Task<gpui::Result<()>> {
        let db = KeybindingEditorDb::global(cx);
        workspace::delete_unloaded_items(alive_items, workspace_id, "keybinding_editors", &db, cx)
    }

    fn deserialize(
        _project: Entity<project::Project>,
        workspace: WeakEntity<Workspace>,
        workspace_id: workspace::WorkspaceId,
        item_id: workspace::ItemId,
        window: &mut Window,
        cx: &mut App,
    ) -> gpui::Task<gpui::Result<Entity<Self>>> {
        let db = KeybindingEditorDb::global(cx);
        window.spawn(cx, async move |cx| {
            if db.get_keybinding_editor(item_id, workspace_id)?.is_some() {
                cx.update(|window, cx| cx.new(|cx| KeymapEditor::new(workspace, window, cx)))
            } else {
                Err(anyhow!("No keybinding editor to deserialize"))
            }
        })
    }

    fn serialize(
        &mut self,
        workspace: &mut Workspace,
        item_id: workspace::ItemId,
        _closing: bool,
        cx: &mut ui::Context<Self>,
    ) -> Option<gpui::Task<gpui::Result<()>>> {
        let workspace_id = workspace.database_id()?;
        let db = KeybindingEditorDb::global(cx);
        Some(cx.background_spawn(
            async move { db.save_keybinding_editor(item_id, workspace_id).await },
        ))
    }

View on GitHub (pinned to 9d272b0363)

Solutions

  1. Close the stale item; it has no persisted state to recover
  2. Reopen the keymap editor manually from the command palette
  3. If this recurs for every restart, check that serialize/save_keybinding_editor is committing rows to the keybinding_editors table
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/keymap_editor/src/keymap_editor.rs:3954 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20). Data as JSON: /api/errors/2c47dd023409528c. Report an issue: GitHub.