Clip offsets in inlay hint queries

This commit is contained in:
Kirill Bulatov 2023-08-14 18:37:50 +03:00
parent 558367dc8b
commit 336fbb3392

View file

@ -17,6 +17,7 @@ use project::InlayHint;
use collections::{hash_map, HashMap, HashSet}; use collections::{hash_map, HashMap, HashSet};
use language::language_settings::InlayHintSettings; use language::language_settings::InlayHintSettings;
use sum_tree::Bias;
use util::post_inc; use util::post_inc;
pub struct InlayHintCache { pub struct InlayHintCache {
@ -500,19 +501,17 @@ fn determine_query_range(
let buffer = excerpt_buffer.read(cx); let buffer = excerpt_buffer.read(cx);
let excerpt_visible_len = excerpt_visible_range.end - excerpt_visible_range.start; let excerpt_visible_len = excerpt_visible_range.end - excerpt_visible_range.start;
let start = buffer.anchor_before( let start_offset = excerpt_visible_range
excerpt_visible_range .start
.start .saturating_sub(excerpt_visible_len)
.saturating_sub(excerpt_visible_len) .max(full_excerpt_range.start.offset);
.max(full_excerpt_range.start.offset), let start = buffer.anchor_before(buffer.clip_offset(start_offset, Bias::Left));
); let end_offset = excerpt_visible_range
let end = buffer.anchor_after( .end
excerpt_visible_range .saturating_add(excerpt_visible_len)
.end .min(full_excerpt_range.end.offset)
.saturating_add(excerpt_visible_len) .min(buffer.len());
.min(full_excerpt_range.end.offset) let end = buffer.anchor_after(buffer.clip_offset(end_offset, Bias::Right));
.min(buffer.len()),
);
if start.cmp(&end, buffer).is_eq() { if start.cmp(&end, buffer).is_eq() {
None None
} else { } else {