Remove the async modifier from the workspace_configuration method

This commit is contained in:
Kirill Bulatov 2024-01-23 11:58:17 +02:00
parent 351914f4bd
commit ab8585ee7e
6 changed files with 31 additions and 63 deletions

View file

@ -23,7 +23,7 @@ use async_trait::async_trait;
use collections::{HashMap, HashSet}; use collections::{HashMap, HashSet};
use futures::{ use futures::{
channel::{mpsc, oneshot}, channel::{mpsc, oneshot},
future::{BoxFuture, Shared}, future::Shared,
FutureExt, TryFutureExt as _, FutureExt, TryFutureExt as _,
}; };
use gpui::{AppContext, AsyncAppContext, BackgroundExecutor, Task}; use gpui::{AppContext, AsyncAppContext, BackgroundExecutor, Task};
@ -216,11 +216,7 @@ impl CachedLspAdapter {
self.adapter.code_action_kinds() self.adapter.code_action_kinds()
} }
pub fn workspace_configuration( pub fn workspace_configuration(&self, workspace_root: &Path, cx: &mut AppContext) -> Value {
&self,
workspace_root: &Path,
cx: &mut AppContext,
) -> BoxFuture<'static, Value> {
self.adapter.workspace_configuration(workspace_root, cx) self.adapter.workspace_configuration(workspace_root, cx)
} }
@ -345,8 +341,8 @@ pub trait LspAdapter: 'static + Send + Sync {
None None
} }
fn workspace_configuration(&self, _: &Path, _: &mut AppContext) -> BoxFuture<'static, Value> { fn workspace_configuration(&self, _: &Path, _: &mut AppContext) -> Value {
futures::future::ready(serde_json::json!({})).boxed() serde_json::json!({})
} }
/// Returns a list of code actions supported by a given LspAdapter /// Returns a list of code actions supported by a given LspAdapter

View file

@ -664,7 +664,7 @@ impl Project {
next_diagnostic_group_id: Default::default(), next_diagnostic_group_id: Default::default(),
supplementary_language_servers: HashMap::default(), supplementary_language_servers: HashMap::default(),
language_servers: Default::default(), language_servers: Default::default(),
language_server_ids: Default::default(), language_server_ids: HashMap::default(),
language_server_statuses: Default::default(), language_server_statuses: Default::default(),
last_workspace_edits_by_language_server: Default::default(), last_workspace_edits_by_language_server: Default::default(),
buffers_being_formatted: Default::default(), buffers_being_formatted: Default::default(),
@ -752,7 +752,7 @@ impl Project {
}, },
supplementary_language_servers: HashMap::default(), supplementary_language_servers: HashMap::default(),
language_servers: Default::default(), language_servers: Default::default(),
language_server_ids: Default::default(), language_server_ids: HashMap::default(),
language_server_statuses: response language_server_statuses: response
.payload .payload
.language_servers .language_servers
@ -2700,7 +2700,7 @@ impl Project {
}); });
cx.spawn(move |this, mut cx| async move { cx.spawn(move |this, mut cx| async move {
while let Some(_) = settings_changed_rx.next().await { while let Some(()) = settings_changed_rx.next().await {
let servers: Vec<_> = this.update(&mut cx, |this, _| { let servers: Vec<_> = this.update(&mut cx, |this, _| {
this.language_servers this.language_servers
.values() .values()
@ -2714,9 +2714,8 @@ impl Project {
})?; })?;
for (adapter, server) in servers { for (adapter, server) in servers {
let workspace_config = cx let workspace_config =
.update(|cx| adapter.workspace_configuration(server.root_path(), cx))? cx.update(|cx| adapter.workspace_configuration(server.root_path(), cx))?;
.await;
server server
.notify::<lsp::notification::DidChangeConfiguration>( .notify::<lsp::notification::DidChangeConfiguration>(
lsp::DidChangeConfigurationParams { lsp::DidChangeConfigurationParams {
@ -3020,9 +3019,8 @@ impl Project {
server_id: LanguageServerId, server_id: LanguageServerId,
cx: &mut AsyncAppContext, cx: &mut AsyncAppContext,
) -> Result<Arc<LanguageServer>> { ) -> Result<Arc<LanguageServer>> {
let workspace_config = cx let workspace_config =
.update(|cx| adapter.workspace_configuration(worktree_path, cx))? cx.update(|cx| adapter.workspace_configuration(worktree_path, cx))?;
.await;
let language_server = pending_server.task.await?; let language_server = pending_server.task.await?;
language_server language_server
@ -3056,9 +3054,8 @@ impl Project {
let adapter = adapter.clone(); let adapter = adapter.clone();
let worktree_path = worktree_path.clone(); let worktree_path = worktree_path.clone();
async move { async move {
let workspace_config = cx let workspace_config =
.update(|cx| adapter.workspace_configuration(&worktree_path, cx))? cx.update(|cx| adapter.workspace_configuration(&worktree_path, cx))?;
.await;
Ok(params Ok(params
.items .items
.into_iter() .into_iter()

View file

@ -2,7 +2,7 @@ use anyhow::{anyhow, Result};
use async_trait::async_trait; use async_trait::async_trait;
use collections::HashMap; use collections::HashMap;
use feature_flags::FeatureFlagAppExt; use feature_flags::FeatureFlagAppExt;
use futures::{future::BoxFuture, FutureExt, StreamExt}; use futures::StreamExt;
use gpui::AppContext; use gpui::AppContext;
use language::{LanguageRegistry, LanguageServerName, LspAdapter, LspAdapterDelegate}; use language::{LanguageRegistry, LanguageServerName, LspAdapter, LspAdapterDelegate};
use lsp::LanguageServerBinary; use lsp::LanguageServerBinary;
@ -13,7 +13,6 @@ use smol::fs;
use std::{ use std::{
any::Any, any::Any,
ffi::OsString, ffi::OsString,
future,
path::{Path, PathBuf}, path::{Path, PathBuf},
sync::Arc, sync::Arc,
}; };
@ -107,7 +106,7 @@ impl LspAdapter for JsonLspAdapter {
&self, &self,
_workspace_root: &Path, _workspace_root: &Path,
cx: &mut AppContext, cx: &mut AppContext,
) -> BoxFuture<'static, serde_json::Value> { ) -> serde_json::Value {
let action_names = cx.all_action_names(); let action_names = cx.all_action_names();
let staff_mode = cx.is_staff(); let staff_mode = cx.is_staff();
let language_names = &self.languages.language_names(); let language_names = &self.languages.language_names();
@ -119,7 +118,7 @@ impl LspAdapter for JsonLspAdapter {
cx, cx,
); );
future::ready(serde_json::json!({ serde_json::json!({
"json": { "json": {
"format": { "format": {
"enable": true, "enable": true,
@ -138,8 +137,7 @@ impl LspAdapter for JsonLspAdapter {
} }
] ]
} }
})) })
.boxed()
} }
async fn language_ids(&self) -> HashMap<String, String> { async fn language_ids(&self) -> HashMap<String, String> {

View file

@ -1,10 +1,7 @@
use anyhow::{anyhow, Result}; use anyhow::{anyhow, Result};
use async_trait::async_trait; use async_trait::async_trait;
use collections::HashMap; use collections::HashMap;
use futures::{ use futures::StreamExt;
future::{self, BoxFuture},
FutureExt, StreamExt,
};
use gpui::AppContext; use gpui::AppContext;
use language::{LanguageServerName, LspAdapter, LspAdapterDelegate}; use language::{LanguageServerName, LspAdapter, LspAdapterDelegate};
use lsp::LanguageServerBinary; use lsp::LanguageServerBinary;
@ -107,17 +104,12 @@ impl LspAdapter for TailwindLspAdapter {
})) }))
} }
fn workspace_configuration( fn workspace_configuration(&self, _workspace_root: &Path, _: &mut AppContext) -> Value {
&self, json!({
_workspace_root: &Path,
_: &mut AppContext,
) -> BoxFuture<'static, Value> {
future::ready(json!({
"tailwindCSS": { "tailwindCSS": {
"emmetCompletions": true, "emmetCompletions": true,
} }
})) })
.boxed()
} }
async fn language_ids(&self) -> HashMap<String, String> { async fn language_ids(&self) -> HashMap<String, String> {

View file

@ -3,7 +3,6 @@ use async_compression::futures::bufread::GzipDecoder;
use async_tar::Archive; use async_tar::Archive;
use async_trait::async_trait; use async_trait::async_trait;
use collections::HashMap; use collections::HashMap;
use futures::{future::BoxFuture, FutureExt};
use gpui::AppContext; use gpui::AppContext;
use language::{LanguageServerName, LspAdapter, LspAdapterDelegate}; use language::{LanguageServerName, LspAdapter, LspAdapterDelegate};
use lsp::{CodeActionKind, LanguageServerBinary}; use lsp::{CodeActionKind, LanguageServerBinary};
@ -13,7 +12,6 @@ use smol::{fs, io::BufReader, stream::StreamExt};
use std::{ use std::{
any::Any, any::Any,
ffi::OsString, ffi::OsString,
future,
path::{Path, PathBuf}, path::{Path, PathBuf},
sync::Arc, sync::Arc,
}; };
@ -212,12 +210,8 @@ impl EsLintLspAdapter {
#[async_trait] #[async_trait]
impl LspAdapter for EsLintLspAdapter { impl LspAdapter for EsLintLspAdapter {
fn workspace_configuration( fn workspace_configuration(&self, workspace_root: &Path, _: &mut AppContext) -> Value {
&self, json!({
workspace_root: &Path,
_: &mut AppContext,
) -> BoxFuture<'static, Value> {
future::ready(json!({
"": { "": {
"validate": "on", "validate": "on",
"rulesCustomizations": [], "rulesCustomizations": [],
@ -230,8 +224,7 @@ impl LspAdapter for EsLintLspAdapter {
.unwrap_or_else(|| workspace_root.as_os_str()), .unwrap_or_else(|| workspace_root.as_os_str()),
}, },
} }
})) })
.boxed()
} }
async fn name(&self) -> LanguageServerName { async fn name(&self) -> LanguageServerName {

View file

@ -1,6 +1,6 @@
use anyhow::{anyhow, Result}; use anyhow::{anyhow, Result};
use async_trait::async_trait; use async_trait::async_trait;
use futures::{future::BoxFuture, FutureExt, StreamExt}; use futures::StreamExt;
use gpui::AppContext; use gpui::AppContext;
use language::{ use language::{
language_settings::all_language_settings, LanguageServerName, LspAdapter, LspAdapterDelegate, language_settings::all_language_settings, LanguageServerName, LspAdapter, LspAdapterDelegate,
@ -12,7 +12,6 @@ use smol::fs;
use std::{ use std::{
any::Any, any::Any,
ffi::OsString, ffi::OsString,
future,
path::{Path, PathBuf}, path::{Path, PathBuf},
sync::Arc, sync::Arc,
}; };
@ -93,24 +92,17 @@ impl LspAdapter for YamlLspAdapter {
) -> Option<LanguageServerBinary> { ) -> Option<LanguageServerBinary> {
get_cached_server_binary(container_dir, &*self.node).await get_cached_server_binary(container_dir, &*self.node).await
} }
fn workspace_configuration( fn workspace_configuration(&self, _workspace_root: &Path, cx: &mut AppContext) -> Value {
&self, serde_json::json!({
_workspace_root: &Path,
cx: &mut AppContext,
) -> BoxFuture<'static, Value> {
let tab_size = all_language_settings(None, cx)
.language(Some("YAML"))
.tab_size;
future::ready(serde_json::json!({
"yaml": { "yaml": {
"keyOrdering": false "keyOrdering": false
}, },
"[yaml]": { "[yaml]": {
"editor.tabSize": tab_size, "editor.tabSize": all_language_settings(None, cx)
.language(Some("YAML"))
.tab_size,
} }
})) })
.boxed()
} }
} }