zed-industries/zed · error

query editor should be backed by a singleton buffer

Error message

query editor should be backed by a singleton buffer

What it means

Buffer search expects its query editor to be backed by a singleton buffer (so the search text can be read/written directly); the editor's buffer was not a singleton, meaning the editor was constructed differently than the search bar requires.

Source

Thrown at crates/search/src/buffer_search.rs:761

            let mut editor = Editor::auto_height(1, 4, window, cx);
            editor.set_use_autoclose(false);
            editor.set_use_selection_highlight(false);
            editor
        });
        cx.subscribe_in(&query_editor, window, Self::on_query_editor_event)
            .detach();
        let replacement_editor = cx.new(|cx| Editor::auto_height(1, 4, window, cx));
        cx.subscribe(&replacement_editor, Self::on_replacement_editor_event)
            .detach();

        let search_options = SearchOptions::from_settings(&EditorSettings::get_global(cx).search);
        if let Some(languages) = languages {
            let query_buffer = query_editor
                .read(cx)
                .buffer()
                .read(cx)
                .as_singleton()
                .expect("query editor should be backed by a singleton buffer");

            query_buffer
                .read(cx)
                .set_language_registry(languages.clone());

            cx.spawn(async move |buffer_search_bar, cx| {
                use anyhow::Context as _;

                let regex_language = languages
                    .language_for_name("regex")
                    .await
                    .context("loading regex language")?;

                buffer_search_bar
                    .update(cx, |buffer_search_bar, cx| {
                        buffer_search_bar.regex_language = Some(regex_language);
                        buffer_search_bar.adjust_query_regex_language(cx);
                    })

View on GitHub (pinned to f4178619ac)

Solutions

  1. Create the query editor with Editor::auto_height/singleton construction only
  2. Check any code that swaps or multibuffers the query buffer
  3. Use buffer() APIs that handle multi-buffer editors
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at crates/search/src/buffer_search.rs:761 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/6c9f3efbc295fa3d. Report an issue: GitHub.