From 55cc8631cc5f0cf1f228d80825a21d12da213786 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 9 Jun 2022 10:07:31 +0200 Subject: [PATCH] Introduce a new language-overrideable `enable_language_server` setting --- crates/settings/src/settings.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/settings/src/settings.rs b/crates/settings/src/settings.rs index 0efedbfd9b8ae92ce4a91c5b3fb3cf59991a2580..c8c896b9d8024cfecd8349a8069f24702415dc8a 100644 --- a/crates/settings/src/settings.rs +++ b/crates/settings/src/settings.rs @@ -28,6 +28,7 @@ pub struct Settings { pub soft_wrap: SoftWrap, pub preferred_line_length: u32, pub format_on_save: bool, + pub enable_language_server: bool, pub language_overrides: HashMap, LanguageOverride>, pub theme: Arc, } @@ -38,6 +39,7 @@ pub struct LanguageOverride { pub soft_wrap: Option, pub preferred_line_length: Option, pub format_on_save: Option, + pub enable_language_server: Option, } #[derive(Copy, Clone, Debug, Deserialize, PartialEq, Eq, JsonSchema)] @@ -60,6 +62,8 @@ pub struct SettingsFileContent { pub vim_mode: Option, #[serde(default)] pub format_on_save: Option, + #[serde(default)] + pub enable_language_server: Option, #[serde(flatten)] pub editor: LanguageOverride, #[serde(default)] @@ -84,6 +88,7 @@ impl Settings { preferred_line_length: 80, language_overrides: Default::default(), format_on_save: true, + enable_language_server: true, projects_online_by_default: true, theme, }) @@ -127,6 +132,13 @@ impl Settings { .unwrap_or(self.format_on_save) } + pub fn enable_language_server(&self, language: Option<&str>) -> bool { + language + .and_then(|language| self.language_overrides.get(language)) + .and_then(|settings| settings.enable_language_server) + .unwrap_or(self.enable_language_server) + } + #[cfg(any(test, feature = "test-support"))] pub fn test(cx: &gpui::AppContext) -> Settings { Settings { @@ -138,6 +150,7 @@ impl Settings { soft_wrap: SoftWrap::None, preferred_line_length: 80, format_on_save: true, + enable_language_server: true, language_overrides: Default::default(), projects_online_by_default: true, theme: gpui::fonts::with_font_cache(cx.font_cache().clone(), || Default::default()), @@ -177,6 +190,10 @@ impl Settings { merge(&mut self.default_buffer_font_size, data.buffer_font_size); merge(&mut self.vim_mode, data.vim_mode); merge(&mut self.format_on_save, data.format_on_save); + merge( + &mut self.enable_language_server, + data.enable_language_server, + ); merge(&mut self.soft_wrap, data.editor.soft_wrap); merge(&mut self.tab_size, data.editor.tab_size); merge( @@ -193,6 +210,10 @@ impl Settings { merge_option(&mut target.tab_size, settings.tab_size); merge_option(&mut target.soft_wrap, settings.soft_wrap); merge_option(&mut target.format_on_save, settings.format_on_save); + merge_option( + &mut target.enable_language_server, + settings.enable_language_server, + ); merge_option( &mut target.preferred_line_length, settings.preferred_line_length,