Cleanup icon logic

This commit is contained in:
MrSubidubi 2025-03-02 15:14:25 +01:00
parent 8db5b9a80b
commit 4395f78fb2

View file

@ -139,31 +139,27 @@ impl LanguageSelectorDelegate {
let mut label = mat.string.clone(); let mut label = mat.string.clone();
let buffer_language = self.buffer.read(cx).language(); let buffer_language = self.buffer.read(cx).language();
let need_icon = FileFinderSettings::get_global(cx).file_icons; let need_icon = FileFinderSettings::get_global(cx).file_icons;
if let Some(buffer_language) = buffer_language {
let buffer_language_name = buffer_language.name();
if buffer_language_name.as_ref() == mat.string.as_str() {
label.push_str(" (current)");
let icon = need_icon
.then(|| self.language_icon(&buffer_language.config().matcher, cx))
.flatten();
return (label, icon);
}
}
if need_icon { if let Some(buffer_language) = buffer_language
let language_name = LanguageName::new(mat.string.as_str()); .filter(|buffer_language| buffer_language.name().as_ref() == mat.string.as_str())
match self {
.language_registry label.push_str(" (current)");
.available_language_for_name(language_name.as_ref()) let icon = need_icon
{ .then(|| self.language_icon(&buffer_language.config().matcher, cx))
Some(available_language) => { .flatten();
let icon = self.language_icon(available_language.matcher(), cx); (label, icon)
(label, icon)
}
None => (label, None),
}
} else { } else {
(label, None) let icon = need_icon
.then(|| {
let language_name = LanguageName::new(mat.string.as_str());
self.language_registry
.available_language_for_name(language_name.as_ref())
.and_then(|available_language| {
self.language_icon(available_language.matcher(), cx)
})
})
.flatten();
(label, icon)
} }
} }