Use LanguageServerName in more places (#18167)
This pushes the new LanguageServerName type to more places. As both languages and language servers were identified by Arc<str>, it was sometimes hard to tell which was intended. Release Notes: - N/A
This commit is contained in:
parent
743feb98bc
commit
4f227fd3bf
20 changed files with 150 additions and 85 deletions
|
@ -99,7 +99,7 @@ pub struct LanguageSettings {
|
|||
/// special tokens:
|
||||
/// - `"!<language_server_id>"` - A language server ID prefixed with a `!` will be disabled.
|
||||
/// - `"..."` - A placeholder to refer to the **rest** of the registered language servers for this language.
|
||||
pub language_servers: Vec<Arc<str>>,
|
||||
pub language_servers: Vec<String>,
|
||||
/// Controls whether inline completions are shown immediately (true)
|
||||
/// or manually by triggering `editor::ShowInlineCompletion` (false).
|
||||
pub show_inline_completions: bool,
|
||||
|
@ -137,22 +137,24 @@ impl LanguageSettings {
|
|||
}
|
||||
|
||||
pub(crate) fn resolve_language_servers(
|
||||
configured_language_servers: &[Arc<str>],
|
||||
configured_language_servers: &[String],
|
||||
available_language_servers: &[LanguageServerName],
|
||||
) -> Vec<LanguageServerName> {
|
||||
let (disabled_language_servers, enabled_language_servers): (Vec<Arc<str>>, Vec<Arc<str>>) =
|
||||
configured_language_servers.iter().partition_map(
|
||||
|language_server| match language_server.strip_prefix('!') {
|
||||
Some(disabled) => Either::Left(disabled.into()),
|
||||
None => Either::Right(language_server.clone()),
|
||||
},
|
||||
);
|
||||
let (disabled_language_servers, enabled_language_servers): (
|
||||
Vec<LanguageServerName>,
|
||||
Vec<LanguageServerName>,
|
||||
) = configured_language_servers.iter().partition_map(
|
||||
|language_server| match language_server.strip_prefix('!') {
|
||||
Some(disabled) => Either::Left(LanguageServerName(disabled.to_string().into())),
|
||||
None => Either::Right(LanguageServerName(language_server.clone().into())),
|
||||
},
|
||||
);
|
||||
|
||||
let rest = available_language_servers
|
||||
.iter()
|
||||
.filter(|&available_language_server| {
|
||||
!disabled_language_servers.contains(&available_language_server.0)
|
||||
&& !enabled_language_servers.contains(&available_language_server.0)
|
||||
!disabled_language_servers.contains(&available_language_server)
|
||||
&& !enabled_language_servers.contains(&available_language_server)
|
||||
})
|
||||
.cloned()
|
||||
.collect::<Vec<_>>();
|
||||
|
@ -160,10 +162,10 @@ impl LanguageSettings {
|
|||
enabled_language_servers
|
||||
.into_iter()
|
||||
.flat_map(|language_server| {
|
||||
if language_server.as_ref() == Self::REST_OF_LANGUAGE_SERVERS {
|
||||
if language_server.0.as_ref() == Self::REST_OF_LANGUAGE_SERVERS {
|
||||
rest.clone()
|
||||
} else {
|
||||
vec![LanguageServerName(language_server.clone())]
|
||||
vec![language_server.clone()]
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
|
@ -295,7 +297,7 @@ pub struct LanguageSettingsContent {
|
|||
///
|
||||
/// Default: ["..."]
|
||||
#[serde(default)]
|
||||
pub language_servers: Option<Vec<Arc<str>>>,
|
||||
pub language_servers: Option<Vec<String>>,
|
||||
/// Controls whether inline completions are shown immediately (true)
|
||||
/// or manually by triggering `editor::ShowInlineCompletion` (false).
|
||||
///
|
||||
|
@ -1165,7 +1167,7 @@ mod tests {
|
|||
names
|
||||
.iter()
|
||||
.copied()
|
||||
.map(|name| LanguageServerName(name.into()))
|
||||
.map(|name| LanguageServerName(name.to_string().into()))
|
||||
.collect::<Vec<_>>()
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue