mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-21 17:06:18 +04:00
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 <mcarsondavis@gmail.com>
This commit is contained in:
parent
a7b8b27abf
commit
b85e824ba9
@ -846,7 +846,15 @@ macro_rules! language_server {
|
||||
}
|
||||
}
|
||||
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 @@ macro_rules! language_server {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
@ -1271,6 +1274,13 @@ pub fn set_error<T: Into<Cow<'static, str>>>(&mut self, error: T) {
|
||||
self.status_msg = Some((error, Severity::Error));
|
||||
}
|
||||
|
||||
#[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))
|
||||
|
Loading…
Reference in New Issue
Block a user