use serde::{Deserialize, Serialize}; use url::Url; use crate::OneOf; #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct WorkspaceFoldersServerCapabilities { /// The server has support for workspace folders #[serde(skip_serializing_if = "Option::is_none")] pub supported: Option, /// Whether the server wants to receive workspace folder /// change notifications. /// /// If a string is provided, the string is treated as an ID /// under which the notification is registered on the client /// side. The ID can be used to unregister for these events /// using the `client/unregisterCapability` request. #[serde(skip_serializing_if = "Option::is_none")] pub change_notifications: Option>, } #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct WorkspaceFolder { /// The associated URI for this workspace folder. pub uri: Url, /// The name of the workspace folder. Defaults to the uri's basename. pub name: String, } #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct DidChangeWorkspaceFoldersParams { /// The actual workspace folder change event. pub event: WorkspaceFoldersChangeEvent, } /// The workspace folder change event. #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct WorkspaceFoldersChangeEvent { /// The array of added workspace folders pub added: Vec, /// The array of the removed workspace folders pub removed: Vec, }