From bbefc1db63f7c3933adfd91fc404db9850af8399 Mon Sep 17 00:00:00 2001 From: wojciechkepka Date: Fri, 18 Jun 2021 05:57:36 +0200 Subject: [PATCH] Add an option to disable display of progress in status bar --- book/src/configuration.md | 8 ++++++++ helix-term/src/application.rs | 8 ++++++-- helix-term/src/config.rs | 10 ++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/book/src/configuration.md b/book/src/configuration.md index 649aa21fd..31c267cfc 100644 --- a/book/src/configuration.md +++ b/book/src/configuration.md @@ -1,5 +1,12 @@ # Configuration +## LSP + +To disable language server progress report from being displayed in the status bar add this option to your `config.toml`: +```toml +lsp_progress = false +``` + ## Theme Use a custom theme by placing a theme.toml in your config directory (i.e ~/.config/helix/theme.toml). The default theme.toml can be found [here](https://github.com/helix-editor/helix/blob/master/theme.toml), and user submitted themes [here](https://github.com/helix-editor/helix/blob/master/contrib/themes). @@ -87,3 +94,4 @@ Possible keys: These keys match [tree-sitter scopes](https://tree-sitter.github.io/tree-sitter/syntax-highlighting#theme). We half-follow the common scopes from [macromates language grammars](https://macromates.com/manual/en/language_grammars) with some differences. For a given highlight produced, styling will be determined based on the longest matching theme key. So it's enough to provide function to highlight `function.macro` and `function.builtin` as well, but you can use more specific scopes to highlight specific cases differently. + diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index b2b49be5d..aa2ce8847 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -39,6 +39,7 @@ pub struct Application { callbacks: LspCallbacks, lsp_progress: LspProgressMap, + lsp_progress_enabled: bool, } impl Application { @@ -77,6 +78,7 @@ impl Application { callbacks: FuturesUnordered::new(), lsp_progress: LspProgressMap::new(), + lsp_progress_enabled: config.global.lsp_progress, }; Ok(app) @@ -310,8 +312,10 @@ impl Application { self.lsp_progress.update(server_id, token, work); } - self.editor.set_status(status); - self.render(); + if self.lsp_progress_enabled { + self.editor.set_status(status); + self.render(); + } } _ => unreachable!(), } diff --git a/helix-term/src/config.rs b/helix-term/src/config.rs index bd84e0b14..2b8b475b9 100644 --- a/helix-term/src/config.rs +++ b/helix-term/src/config.rs @@ -5,13 +5,20 @@ use serde::{de::Error as SerdeError, Deserialize, Serialize}; use crate::keymap::{parse_keymaps, Keymaps}; +#[derive(Default)] +pub struct GlobalConfig { + pub lsp_progress: bool, +} + #[derive(Default)] pub struct Config { + pub global: GlobalConfig, pub keymaps: Keymaps, } #[derive(Serialize, Deserialize)] struct TomlConfig { + lsp_progress: Option, keys: Option>>, } @@ -22,6 +29,9 @@ impl<'de> Deserialize<'de> for Config { { let config = TomlConfig::deserialize(deserializer)?; Ok(Self { + global: GlobalConfig { + lsp_progress: config.lsp_progress.unwrap_or(true), + }, keymaps: config .keys .map(|r| parse_keymaps(&r))