mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-19 01:50:38 +00:00

## Summary This PR fixes the `show_*_msg` macros to pass all the tokens instead of just a single token. This allows for using various expressions right in the macro similar to how it would be in `format_args!`. ## Test Plan `cargo clippy`
54 lines
1.8 KiB
Rust
54 lines
1.8 KiB
Rust
use anyhow::Context;
|
|
use lsp_types::notification::Notification;
|
|
use std::sync::OnceLock;
|
|
|
|
use crate::server::ClientSender;
|
|
|
|
static MESSENGER: OnceLock<ClientSender> = OnceLock::new();
|
|
|
|
pub(crate) fn init_messenger(client_sender: ClientSender) {
|
|
MESSENGER
|
|
.set(client_sender)
|
|
.expect("messenger should only be initialized once");
|
|
}
|
|
|
|
pub(crate) fn show_message(message: String, message_type: lsp_types::MessageType) {
|
|
try_show_message(message, message_type).unwrap();
|
|
}
|
|
|
|
pub(super) fn try_show_message(
|
|
message: String,
|
|
message_type: lsp_types::MessageType,
|
|
) -> crate::Result<()> {
|
|
MESSENGER
|
|
.get()
|
|
.ok_or_else(|| anyhow::anyhow!("messenger not initialized"))?
|
|
.send(lsp_server::Message::Notification(
|
|
lsp_server::Notification {
|
|
method: lsp_types::notification::ShowMessage::METHOD.into(),
|
|
params: serde_json::to_value(lsp_types::ShowMessageParams {
|
|
typ: message_type,
|
|
message,
|
|
})?,
|
|
},
|
|
))
|
|
.context("Failed to send message")?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
/// Sends a request to display an error to the client with a formatted message. The error is sent
|
|
/// in a `window/showMessage` notification.
|
|
macro_rules! show_err_msg {
|
|
($msg:expr$(, $($arg:tt)*)?) => {
|
|
crate::message::show_message(::core::format_args!($msg$(, $($arg)*)?).to_string(), lsp_types::MessageType::ERROR)
|
|
};
|
|
}
|
|
|
|
/// Sends a request to display a warning to the client with a formatted message. The warning is
|
|
/// sent in a `window/showMessage` notification.
|
|
macro_rules! show_warn_msg {
|
|
($msg:expr$(, $($arg:tt)*)?) => {
|
|
crate::message::show_message(::core::format_args!($msg$(, $($arg)*)?).to_string(), lsp_types::MessageType::WARNING)
|
|
};
|
|
}
|