lsp_types/
workspace_symbols.rs1use crate::{
2 LSPAny, Location, OneOf, PartialResultParams, SymbolInformation, SymbolKind,
3 SymbolKindCapability, SymbolTag, TagSupport, Url, WorkDoneProgressParams,
4};
5
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
9#[serde(rename_all = "camelCase")]
10pub struct WorkspaceSymbolClientCapabilities {
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub dynamic_registration: Option<bool>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub symbol_kind: Option<SymbolKindCapability>,
18
19 #[serde(
24 default,
25 skip_serializing_if = "Option::is_none",
26 deserialize_with = "TagSupport::deserialize_compat"
27 )]
28 pub tag_support: Option<TagSupport<SymbolTag>>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
36 pub resolve_support: Option<WorkspaceSymbolResolveSupportCapability>,
37}
38
39#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
41pub struct WorkspaceSymbolParams {
42 #[serde(flatten)]
43 pub partial_result_params: PartialResultParams,
44
45 #[serde(flatten)]
46 pub work_done_progress_params: WorkDoneProgressParams,
47
48 pub query: String,
50}
51
52#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
53pub struct WorkspaceSymbolResolveSupportCapability {
54 pub properties: Vec<String>,
57}
58
59#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
63#[serde(rename_all = "camelCase")]
64pub struct WorkspaceSymbol {
65 pub name: String,
67
68 pub kind: SymbolKind,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub tags: Option<Vec<SymbolTag>>,
74
75 #[serde(skip_serializing_if = "Option::is_none")]
80 pub container_name: Option<String>,
81
82 pub location: OneOf<Location, WorkspaceLocation>,
88
89 #[serde(skip_serializing_if = "Option::is_none")]
92 pub data: Option<LSPAny>,
93}
94
95#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
96pub struct WorkspaceLocation {
97 pub uri: Url,
98}
99
100#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)]
101#[serde(untagged)]
102pub enum WorkspaceSymbolResponse {
103 Flat(Vec<SymbolInformation>),
104 Nested(Vec<WorkspaceSymbol>),
105}