Common/LanguageFeature/
ProvideCompletions.rs1use std::sync::Arc;
7
8use serde_json::Value;
9use url::Url;
10
11use super::{
12 DTO::{CompletionContextDTO::CompletionContextDTO, CompletionListDTO::CompletionListDTO, PositionDTO::PositionDTO},
13 LanguageFeatureProviderRegistry::LanguageFeatureProviderRegistry,
14};
15use crate::{Effect::ActionEffect::ActionEffect, Error::CommonError::CommonError};
16
17pub fn ProvideCompletions(
20 DocumentURI:Url,
21
22 PositionDTO:PositionDTO,
23
24 ContextDTO:CompletionContextDTO,
25
26 CancellationTokenValue:Option<Value>,
27) -> ActionEffect<Arc<dyn LanguageFeatureProviderRegistry>, CommonError, Option<CompletionListDTO>> {
28 ActionEffect::New(Arc::new(move |Registry:Arc<dyn LanguageFeatureProviderRegistry>| {
29 let URIClone = DocumentURI.clone();
30
31 let PositionClone = PositionDTO;
33
34 let ContextClone = ContextDTO.clone();
35
36 let TokenClone = CancellationTokenValue.clone();
37
38 Box::pin(async move {
39 Registry
40 .ProvideCompletions(URIClone, PositionClone, ContextClone, TokenClone)
41 .await
42 })
43 }))
44}