Unnamed repository; edit this file 'description' to name the repository.
Handle window/showMessage and display it bellow status line (#5535)
* Handle window/showMessage and display it bellow status line * Enable `editor.lsp.display_messages` by default --------- Co-authored-by: Michael Davis <[email protected]>
Ayoub Benali 2024-09-19
parent a7b8b27 · commit b85e824
-rw-r--r--helix-term/src/application.rs12
-rw-r--r--helix-view/src/editor.rs14
2 files changed, 22 insertions, 4 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index bd6b5a87..a567815f 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -846,7 +846,15 @@ impl Application {
}
}
Notification::ShowMessage(params) => {
- log::warn!("unhandled window/showMessage: {:?}", params);
+ if self.config.load().editor.lsp.display_messages {
+ match params.typ {
+ lsp::MessageType::ERROR => self.editor.set_error(params.message),
+ lsp::MessageType::WARNING => {
+ self.editor.set_warning(params.message)
+ }
+ _ => self.editor.set_status(params.message),
+ }
+ }
}
Notification::LogMessage(params) => {
log::info!("window/logMessage: {:?}", params);
@@ -930,7 +938,7 @@ impl Application {
self.lsp_progress.update(server_id, token, work);
}
- if self.config.load().editor.lsp.display_messages {
+ if self.config.load().editor.lsp.display_progress_messages {
self.editor.set_status(status);
}
}
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index 1708b3b4..26dea3a2 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -421,7 +421,9 @@ pub fn get_terminal_provider() -> Option<TerminalConfig> {
pub struct LspConfig {
/// Enables LSP
pub enable: bool,
- /// Display LSP progress messages below statusline
+ /// Display LSP messagess from $/progress below statusline
+ pub display_progress_messages: bool,
+ /// Display LSP messages from window/showMessage below statusline
pub display_messages: bool,
/// Enable automatic pop up of signature help (parameter hints)
pub auto_signature_help: bool,
@@ -439,7 +441,8 @@ impl Default for LspConfig {
fn default() -> Self {
Self {
enable: true,
- display_messages: false,
+ display_progress_messages: false,
+ display_messages: true,
auto_signature_help: true,
display_signature_help_docs: true,
display_inlay_hints: false,
@@ -1272,6 +1275,13 @@ impl Editor {
}
#[inline]
+ pub fn set_warning<T: Into<Cow<'static, str>>>(&mut self, warning: T) {
+ let warning = warning.into();
+ log::warn!("editor warning: {}", warning);
+ self.status_msg = Some((warning, Severity::Warning));
+ }
+
+ #[inline]
pub fn get_status(&self) -> Option<(&Cow<'static, str>, &Severity)> {
self.status_msg.as_ref().map(|(status, sev)| (status, sev))
}