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 buffer_language = self.buffer.read(cx).language();
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 {
let language_name = LanguageName::new(mat.string.as_str());
match self
.language_registry
.available_language_for_name(language_name.as_ref())
{
Some(available_language) => {
let icon = self.language_icon(available_language.matcher(), cx);
(label, icon)
}
None => (label, None),
}
if let Some(buffer_language) = buffer_language
.filter(|buffer_language| 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();
(label, icon)
} 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)
}
}