use std::collections::HashMap; use serde::{Deserialize, Serialize}; use serde_json::Value; use url::Url; use crate::Range; #[derive(Eq, PartialEq, Clone, Copy, Deserialize, Serialize)] #[serde(transparent)] pub struct MessageType(i32); lsp_enum! { impl MessageType { /// An error message. pub const ERROR: MessageType = MessageType(1); /// A warning message. pub const WARNING: MessageType = MessageType(2); /// An information message; pub const INFO: MessageType = MessageType(3); /// A log message. pub const LOG: MessageType = MessageType(4); } } /// Window specific client capabilities. #[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct WindowClientCapabilities { /// Whether client supports handling progress notifications. If set /// servers are allowed to report in `workDoneProgress` property in the /// request specific server capabilities. /// /// @since 3.15.0 #[serde(skip_serializing_if = "Option::is_none")] pub work_done_progress: Option, /// Capabilities specific to the showMessage request. /// /// @since 3.16.0 /// #[serde(skip_serializing_if = "Option::is_none")] pub show_message: Option, /// Client capabilities for the show document request. /// /// @since 3.16.0 /// #[serde(skip_serializing_if = "Option::is_none")] pub show_document: Option, } /// Show message request client capabilities #[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct ShowMessageRequestClientCapabilities { /// Capabilities specific to the `MessageActionItem` type. #[serde(skip_serializing_if = "Option::is_none")] pub message_action_item: Option, } #[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct MessageActionItemCapabilities { /// Whether the client supports additional attribues which /// are preserved and send back to the server in the /// request's response. #[serde(skip_serializing_if = "Option::is_none")] pub additional_properties_support: Option, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct MessageActionItem { /// A short title like 'Retry', 'Open Log' etc. pub title: String, /// Additional attributes that the client preserves and /// sends back to the server. This depends on the client /// capability window.messageActionItem.additionalPropertiesSupport #[serde(flatten)] pub properties: HashMap, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] #[serde(untagged)] pub enum MessageActionItemProperty { String(String), Boolean(bool), Integer(i32), Object(Value), } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] pub struct LogMessageParams { /// The message type. See {@link MessageType} #[serde(rename = "type")] pub typ: MessageType, /// The actual message pub message: String, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] pub struct ShowMessageParams { /// The message type. See {@link MessageType}. #[serde(rename = "type")] pub typ: MessageType, /// The actual message. pub message: String, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] pub struct ShowMessageRequestParams { /// The message type. See {@link MessageType} #[serde(rename = "type")] pub typ: MessageType, /// The actual message pub message: String, /// The message action items to present. #[serde(skip_serializing_if = "Option::is_none")] pub actions: Option>, } /// Client capabilities for the show document request. #[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct ShowDocumentClientCapabilities { /// The client has support for the show document request. pub support: bool, } /// Params to show a document. /// /// @since 3.16.0 /// #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct ShowDocumentParams { /// The document uri to show. pub uri: Url, /// Indicates to show the resource in an external program. /// To show for example `https://code.visualstudio.com/` /// in the default WEB browser set `external` to `true`. #[serde(skip_serializing_if = "Option::is_none")] pub external: Option, /// An optional property to indicate whether the editor /// showing the document should take focus or not. /// Clients might ignore this property if an external /// program in started. #[serde(skip_serializing_if = "Option::is_none")] pub take_focus: Option, /// An optional selection range if the document is a text /// document. Clients might ignore the property if an /// external program is started or the file is not a text /// file. #[serde(skip_serializing_if = "Option::is_none")] pub selection: Option, } /// The result of an show document request. /// /// @since 3.16.0 #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct ShowDocumentResult { /// A boolean indicating if the show was successful. pub success: bool, }