From e5251f40914dac87db247b2a03e2a49c0b696ad6 Mon Sep 17 00:00:00 2001 From: tims <0xtimsb@gmail.com> Date: Fri, 6 Dec 2024 22:33:58 +0530 Subject: [PATCH] Fix incorrect language selected in language selector (#21648) Due to filtering after enumeration, initial candidate ids are assigned incorrectly. This later causes the wrong item to be picked up when accessed via index in the vector. --- crates/language_selector/src/language_selector.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/language_selector/src/language_selector.rs b/crates/language_selector/src/language_selector.rs index 60da837baab77099571dcda41f498a57b891cc9b..760a94000dd0be8795afc4812e4e72c76d54382a 100644 --- a/crates/language_selector/src/language_selector.rs +++ b/crates/language_selector/src/language_selector.rs @@ -104,14 +104,15 @@ impl LanguageSelectorDelegate { let candidates = language_registry .language_names() .into_iter() - .enumerate() - .filter_map(|(candidate_id, name)| { + .filter_map(|name| { language_registry .available_language_for_name(&name)? .hidden() .not() - .then(|| StringMatchCandidate::new(candidate_id, name)) + .then_some(name) }) + .enumerate() + .map(|(candidate_id, name)| StringMatchCandidate::new(candidate_id, name)) .collect::>(); Self {