refac get_injections

This commit is contained in:
João Marcos
2025-01-20 22:17:59 -03:00
parent ed42e849d2
commit a2d09286d5

View File

@@ -448,7 +448,6 @@ impl SyntaxSnapshot {
let mut changed_regions = ChangeRegionSet::default();
let mut queue = BinaryHeap::new();
let mut combined_injection_ranges = HashMap::default();
queue.push(ParseStep {
depth: 0,
language: ParseStepLanguage::Loaded {
@@ -708,7 +707,7 @@ impl SyntaxSnapshot {
text,
);
}
update_injections(
update_injection_parse_steps(
config,
text,
step.range.clone(),
@@ -719,7 +718,6 @@ impl SyntaxSnapshot {
registry,
step.depth + 1,
&changed_ranges,
&mut combined_injection_ranges,
&mut queue,
);
}
@@ -1255,7 +1253,8 @@ fn parse_text(
})
}
fn update_injections(
#[allow(clippy::too_many_arguments)]
fn update_injection_parse_steps(
config: &InjectionConfig,
text: &BufferSnapshot,
outer_range: Range<Anchor>,
@@ -1263,15 +1262,16 @@ fn update_injections(
language_registry: &Arc<LanguageRegistry>,
depth: usize,
changed_ranges: &[Range<usize>],
combined_injection_ranges: &mut HashMap<LanguageId, (Arc<Language>, Vec<tree_sitter::Range>)>,
queue: &mut BinaryHeap<ParseStep>,
) {
let mut query_cursor = QueryCursorHandle::new();
let mut prev_match = None;
// Ensure that a `ParseStep` is created for every combined injection language, even
// if there currently no matches for that injection.
combined_injection_ranges.clear();
// Note: a `ParseStep` must be created for every combined injection language, even
// if there are currently no matches for that injection.
let mut combined_injection_ranges =
HashMap::<LanguageId, (Arc<Language>, Vec<tree_sitter::Range>)>::default();
for pattern in &config.patterns {
if let (Some(language_name), true) = (pattern.language.as_ref(), pattern.combined) {
if let Some(language) = language_registry