diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 76f8de9983..4dac286f8a 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -4782,24 +4782,24 @@ impl Editor { self.clear_background_highlights::(cx); return; } - if self.selections.count() != 1 || self.selections.line_mode { - self.clear_background_highlights::(cx); - return; - } - let selection = self.selections.newest::(cx); - if selection.is_empty() || selection.start.row != selection.end.row { - self.clear_background_highlights::(cx); - return; - } let debounce = EditorSettings::get_global(cx).selection_highlight_debounce; self.selection_highlight_task = Some(cx.spawn_in(window, |editor, mut cx| async move { cx.background_executor() .timer(Duration::from_millis(debounce)) .await; - let Some(matches_task) = editor - .read_with(&mut cx, |editor, cx| { + let Some(Some(matches_task)) = editor + .update_in(&mut cx, |editor, _, cx| { + if editor.selections.count() != 1 || editor.selections.line_mode { + editor.clear_background_highlights::(cx); + return None; + } + let selection = editor.selections.newest::(cx); + if selection.is_empty() || selection.start.row != selection.end.row { + editor.clear_background_highlights::(cx); + return None; + } let buffer = editor.buffer().read(cx).snapshot(cx); - cx.background_spawn(async move { + Some(cx.background_spawn(async move { let mut ranges = Vec::new(); let buffer_ranges = vec![buffer.anchor_before(0)..buffer.anchor_after(buffer.len())]; @@ -4837,7 +4837,7 @@ impl Editor { } } ranges - }) + })) }) .log_err() else {