debugger: Show language icons in debug scenario picker (#30662)

We attempt to resolve the language name in this order

1. Based on debug adapter if they're for a singular language e.g. Delve
2. File extension if it exists
3. If a language name exists within a debug scenario's label

In the future I want to use locators to also determine the language as
well and refresh scenario list when a new scenario has been saved

Release Notes:

- N/A
This commit is contained in:
Anthony Eid 2025-05-14 00:50:58 +02:00 committed by GitHub
parent 9826b7b5c1
commit f1fe505649
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 115 additions and 14 deletions

View file

@ -68,6 +68,12 @@ impl From<LanguageName> for SharedString {
}
}
impl From<SharedString> for LanguageName {
fn from(value: SharedString) -> Self {
LanguageName(value)
}
}
impl AsRef<str> for LanguageName {
fn as_ref(&self) -> &str {
self.0.as_ref()
@ -627,6 +633,22 @@ impl LanguageRegistry {
async move { rx.await? }
}
pub fn language_name_for_extension(self: &Arc<Self>, extension: &str) -> Option<LanguageName> {
self.state.try_read().and_then(|state| {
state
.available_languages
.iter()
.find(|language| {
language
.matcher()
.path_suffixes
.iter()
.any(|suffix| *suffix == extension)
})
.map(|language| language.name.clone())
})
}
pub fn language_for_name_or_extension(
self: &Arc<Self>,
string: &str,