Common/LanguageFeature/
LanguageFeatureProviderRegistry.rs1use async_trait::async_trait;
18use serde_json::Value;
19use url::Url;
20
21use super::DTO::{
22 CompletionContextDTO::CompletionContextDTO,
23 CompletionListDTO::CompletionListDTO,
24 HoverResultDTO::HoverResultDTO,
25 LocationDTO::LocationDTO,
26 PositionDTO::PositionDTO,
27 ProviderType::ProviderType,
28 TextEditDTO::TextEditDTO,
29};
30use crate::{Environment::Environment::Environment, Error::CommonError::CommonError};
31
32#[async_trait]
40pub trait LanguageFeatureProviderRegistry: Environment + Send + Sync {
41 async fn RegisterProvider(
57 &self,
58
59 SideCarIdentifier:String,
60
61 ProviderType:ProviderType,
62
63 SelectorDTO:Value,
64
65 ExtensionIdentifierDTO:Value,
66
67 OptionsDTO:Option<Value >,
68 ) -> Result<u32, CommonError>;
69
70 async fn UnregisterProvider(&self, Handle:u32) -> Result<(), CommonError>;
75
76 async fn ProvideCodeActions(
79 &self,
80
81 DocumentURI:Url,
82
83 RangeOrSelectionDTO:Value,
85
86 ContextDTO:Value,
88 ) -> Result<Option<Value >, CommonError>;
89
90 async fn ProvideCodeLenses(&self, DocumentURI:Url) -> Result<Option<Value >, CommonError>;
91
92 async fn ProvideCompletions(
93 &self,
94
95 DocumentURI:Url,
96
97 PositionDTO:PositionDTO,
98
99 ContextDTO:CompletionContextDTO,
100
101 CancellationTokenValue:Option<Value>,
102 ) -> Result<Option<CompletionListDTO>, CommonError>;
103
104 async fn ProvideDefinition(
105 &self,
106
107 DocumentURI:Url,
108
109 PositionDTO:PositionDTO,
110 ) -> Result<Option<Vec<LocationDTO>>, CommonError>;
111
112 async fn ProvideDocumentFormattingEdits(
113 &self,
114
115 DocumentURI:Url,
116
117 OptionsDTO:Value,
119 ) -> Result<Option<Vec<TextEditDTO>>, CommonError>;
120
121 async fn ProvideDocumentHighlights(
122 &self,
123
124 DocumentURI:Url,
125
126 PositionDTO:PositionDTO,
127 ) -> Result<Option<Value >, CommonError>;
128
129 async fn ProvideDocumentLinks(&self, DocumentURI:Url) -> Result<Option<Value >, CommonError>;
130
131 async fn ProvideDocumentRangeFormattingEdits(
132 &self,
133
134 DocumentURI:Url,
135
136 RangeDTO:Value,
138
139 OptionsDTO:Value,
141 ) -> Result<Option<Vec<TextEditDTO>>, CommonError>;
142
143 async fn ProvideHover(
144 &self,
145
146 DocumentURI:Url,
147
148 PositionDTO:PositionDTO,
149 ) -> Result<Option<HoverResultDTO>, CommonError>;
150
151 async fn ProvideReferences(
152 &self,
153
154 DocumentURI:Url,
155
156 PositionDTO:PositionDTO,
157
158 ContextDTO:Value,
160 ) -> Result<Option<Vec<LocationDTO>>, CommonError>;
161
162 async fn PrepareRename(&self, DocumentURI:Url, PositionDTO:PositionDTO) -> Result<Option<Value>, CommonError>;
163
164 }