diff --git a/crates/editor/src/inlay_hint_cache.rs b/crates/editor/src/inlay_hint_cache.rs index e16971fbbe4feda8669f4be2e14f3908d45932a8..ff0d0082ae01df2c49901a35dbd52793bb48ddda 100644 --- a/crates/editor/src/inlay_hint_cache.rs +++ b/crates/editor/src/inlay_hint_cache.rs @@ -208,7 +208,7 @@ impl TasksForRanges { fn remove_from_cached_ranges( &mut self, buffer: &BufferSnapshot, - range_to_remove: Range, + range_to_remove: &Range, ) { self.sorted_ranges = self .sorted_ranges @@ -791,7 +791,7 @@ fn new_update_task( INVISIBLE_RANGES_HINTS_REQUEST_DELAY_MILLIS, )); - let mut query_range_failed = |range: Range, e: anyhow::Error| { + let mut query_range_failed = |range: &Range, e: anyhow::Error| { log::error!("inlay hint update task for range {range:?} failed: {e:#}"); editor .update(&mut cx, |editor, _| { @@ -800,7 +800,7 @@ fn new_update_task( .update_tasks .get_mut(&query.excerpt_id) { - task_ranges.remove_from_cached_ranges(&buffer_snapshot, range); + task_ranges.remove_from_cached_ranges(&buffer_snapshot, &range); } }) .ok() @@ -808,7 +808,7 @@ fn new_update_task( for (range, result) in visible_range_update_results { if let Err(e) = result { - query_range_failed(range, e); + query_range_failed(&range, e); } } @@ -828,7 +828,7 @@ fn new_update_task( .await; for (range, result) in invisible_range_update_results { if let Err(e) = result { - query_range_failed(range, e); + query_range_failed(&range, e); } } }) @@ -876,6 +876,14 @@ async fn fetch_and_update_hints( && !double_visible_range .contains(&fetch_range.end.to_offset(&buffer_snapshot)) { + log::trace!("Fetching inlay hints for range {fetch_range_to_log:?} got throttled and fell off the current visible range, skipping."); + if let Some(task_ranges) = editor + .inlay_hint_cache + .update_tasks + .get_mut(&query.excerpt_id) + { + task_ranges.remove_from_cached_ranges(&buffer_snapshot, &fetch_range); + } return None; } }