]> git.proxmox.com Git - rustc.git/blob - vendor/lsp-types/src/workspace_folders.rs
New upstream version 1.64.0+dfsg1
[rustc.git] / vendor / lsp-types / src / workspace_folders.rs
1 use serde::{Deserialize, Serialize};
2 use url::Url;
3
4 use crate::OneOf;
5
6 #[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
7 #[serde(rename_all = "camelCase")]
8 pub 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, Clone, Deserialize, Serialize)]
25 #[serde(rename_all = "camelCase")]
26 pub 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")]
35 pub 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")]
43 pub 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 }