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:
parent
9826b7b5c1
commit
f1fe505649
8 changed files with 115 additions and 14 deletions
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue