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
|
@ -103,7 +103,7 @@ pub struct LocalLspStore {
|
|||
supplementary_language_servers:
|
||||
HashMap<LanguageServerId, (LanguageServerName, Arc<LanguageServer>)>,
|
||||
prettier_store: Model<PrettierStore>,
|
||||
current_lsp_settings: HashMap<Arc<str>, LspSettings>,
|
||||
current_lsp_settings: HashMap<LanguageServerName, LspSettings>,
|
||||
_subscription: gpui::Subscription,
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ impl RemoteLspStore {}
|
|||
|
||||
pub struct SshLspStore {
|
||||
upstream_client: AnyProtoClient,
|
||||
current_lsp_settings: HashMap<Arc<str>, LspSettings>,
|
||||
current_lsp_settings: HashMap<LanguageServerName, LspSettings>,
|
||||
}
|
||||
|
||||
#[allow(clippy::large_enum_variant)]
|
||||
|
@ -316,8 +316,8 @@ impl LspStore {
|
|||
|
||||
pub fn swap_current_lsp_settings(
|
||||
&mut self,
|
||||
new_settings: HashMap<Arc<str>, LspSettings>,
|
||||
) -> Option<HashMap<Arc<str>, LspSettings>> {
|
||||
new_settings: HashMap<LanguageServerName, LspSettings>,
|
||||
) -> Option<HashMap<LanguageServerName, LspSettings>> {
|
||||
match &mut self.mode {
|
||||
LspStoreMode::Ssh(SshLspStore {
|
||||
current_lsp_settings,
|
||||
|
@ -933,7 +933,7 @@ impl LspStore {
|
|||
if !language_settings(Some(language), file.as_ref(), cx).enable_language_server {
|
||||
language_servers_to_stop.push((worktree_id, started_lsp_name.clone()));
|
||||
} else if let Some(worktree) = worktree {
|
||||
let server_name = &adapter.name.0;
|
||||
let server_name = &adapter.name;
|
||||
match (
|
||||
current_lsp_settings.get(server_name),
|
||||
new_lsp_settings.get(server_name),
|
||||
|
@ -4765,7 +4765,7 @@ impl LspStore {
|
|||
let project_id = self.project_id;
|
||||
let worktree_id = worktree.read(cx).id().to_proto();
|
||||
let upstream_client = ssh.upstream_client.clone();
|
||||
let name = adapter.name().to_string();
|
||||
let name = adapter.name();
|
||||
|
||||
let Some(available_language) = self.languages.available_language_for_name(&language) else {
|
||||
log::error!("failed to find available language {language}");
|
||||
|
@ -4783,7 +4783,7 @@ impl LspStore {
|
|||
}
|
||||
};
|
||||
|
||||
let name = adapter.name().to_string();
|
||||
let name = adapter.name();
|
||||
let code_action_kinds = adapter
|
||||
.adapter
|
||||
.code_action_kinds()
|
||||
|
@ -4809,7 +4809,7 @@ impl LspStore {
|
|||
.request(proto::CreateLanguageServer {
|
||||
project_id,
|
||||
worktree_id,
|
||||
name,
|
||||
name: name.0.to_string(),
|
||||
binary: Some(language_server_command),
|
||||
initialization_options,
|
||||
code_action_kinds,
|
||||
|
@ -4892,7 +4892,7 @@ impl LspStore {
|
|||
);
|
||||
|
||||
// We need some on the SSH client, and some on SSH host
|
||||
let lsp = project_settings.lsp.get(&adapter.name.0);
|
||||
let lsp = project_settings.lsp.get(&adapter.name);
|
||||
let override_options = lsp.and_then(|s| s.initialization_options.clone());
|
||||
|
||||
let server_id = pending_server.server_id;
|
||||
|
@ -5078,7 +5078,7 @@ impl LspStore {
|
|||
|
||||
async fn shutdown_language_server(
|
||||
server_state: Option<LanguageServerState>,
|
||||
name: Arc<str>,
|
||||
name: LanguageServerName,
|
||||
cx: AsyncAppContext,
|
||||
) {
|
||||
let server = match server_state {
|
||||
|
@ -5123,7 +5123,7 @@ impl LspStore {
|
|||
let key = (worktree_id, adapter_name);
|
||||
if self.mode.is_local() {
|
||||
if let Some(server_id) = self.language_server_ids.remove(&key) {
|
||||
let name = key.1 .0;
|
||||
let name = key.1;
|
||||
log::info!("stopping language server {name}");
|
||||
|
||||
// Remove other entries for this language server as well
|
||||
|
@ -7168,7 +7168,7 @@ impl LspAdapter for SshLspAdapter {
|
|||
}
|
||||
pub fn language_server_settings<'a, 'b: 'a>(
|
||||
delegate: &'a dyn LspAdapterDelegate,
|
||||
language: &str,
|
||||
language: &LanguageServerName,
|
||||
cx: &'b AppContext,
|
||||
) -> Option<&'a LspSettings> {
|
||||
ProjectSettings::get(
|
||||
|
|
|
@ -338,7 +338,7 @@ impl PrettierStore {
|
|||
prettier_store
|
||||
.update(cx, |prettier_store, cx| {
|
||||
let name = if is_default {
|
||||
LanguageServerName(Arc::from("prettier (default)"))
|
||||
LanguageServerName("prettier (default)".to_string().into())
|
||||
} else {
|
||||
let worktree_path = worktree_id
|
||||
.and_then(|id| {
|
||||
|
@ -366,7 +366,7 @@ impl PrettierStore {
|
|||
}
|
||||
None => format!("prettier ({})", prettier_dir.display()),
|
||||
};
|
||||
LanguageServerName(Arc::from(name))
|
||||
LanguageServerName(name.into())
|
||||
};
|
||||
cx.emit(PrettierStoreEvent::LanguageServerAdded {
|
||||
new_server_id,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use collections::HashMap;
|
||||
use fs::Fs;
|
||||
use gpui::{AppContext, AsyncAppContext, BorrowAppContext, EventEmitter, Model, ModelContext};
|
||||
use language::LanguageServerName;
|
||||
use paths::local_settings_file_relative_path;
|
||||
use rpc::{proto, AnyProtoClient, TypedEnvelope};
|
||||
use schemars::JsonSchema;
|
||||
|
@ -27,7 +28,7 @@ pub struct ProjectSettings {
|
|||
/// name to the lsp value.
|
||||
/// Default: null
|
||||
#[serde(default)]
|
||||
pub lsp: HashMap<Arc<str>, LspSettings>,
|
||||
pub lsp: HashMap<LanguageServerName, LspSettings>,
|
||||
|
||||
/// Configuration for Git-related features
|
||||
#[serde(default)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue