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:
Conrad Irwin 2024-09-20 18:51:34 -06:00 committed by GitHub
parent 743feb98bc
commit 4f227fd3bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 150 additions and 85 deletions

View file

@ -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(