lsp_types/
workspace_folders.rs

1use serde::{Deserialize, Serialize};
2use url::Url;
3
4use crate::OneOf;
5
6#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
7#[serde(rename_all = "camelCase")]
8pub struct WorkspaceFoldersServerCapabilities {
9    /// The server has support for workspace folders
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub supported: Option<bool>,
12
13    /// Whether the server wants to receive workspace folder
14    /// change notifications.
15    ///
16    /// If a string is provided, the string is treated as an ID
17    /// under which the notification is registered on the client
18    /// side. The ID can be used to unregister for these events
19    /// using the `client/unregisterCapability` request.
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub change_notifications: Option<OneOf<bool, String>>,
22}
23
24#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Clone, Deserialize, Serialize)]
25#[serde(rename_all = "camelCase")]
26pub struct WorkspaceFolder {
27    /// The associated URI for this workspace folder.
28    pub uri: Url,
29    /// The name of the workspace folder. Defaults to the uri's basename.
30    pub name: String,
31}
32
33#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
34#[serde(rename_all = "camelCase")]
35pub struct DidChangeWorkspaceFoldersParams {
36    /// The actual workspace folder change event.
37    pub event: WorkspaceFoldersChangeEvent,
38}
39
40/// The workspace folder change event.
41#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
42#[serde(rename_all = "camelCase")]
43pub struct WorkspaceFoldersChangeEvent {
44    /// The array of added workspace folders
45    pub added: Vec<WorkspaceFolder>,
46
47    /// The array of the removed workspace folders
48    pub removed: Vec<WorkspaceFolder>,
49}