Skip to main content

CommonLibrary/LanguageFeature/
ProvideDocumentFormatting.rs

1//! # ProvideDocumentFormatting Effect
2//!
3//! Defines the `ActionEffect` for requesting document formatting edits from a
4//! language feature provider.
5
6use std::sync::Arc;
7
8use serde_json::Value;
9use url::Url;
10
11use super::{DTO::TextEditDTO::TextEditDTO, LanguageFeatureProviderRegistry::LanguageFeatureProviderRegistry};
12use crate::{Effect::ActionEffect::ActionEffect, Error::CommonError::CommonError};
13
14/// Creates an effect that, when executed, will request document formatting
15/// edits.
16pub fn ProvideDocumentFormatting(
17	DocumentURI:Url,
18
19	OptionsDTO:Value,
20) -> ActionEffect<Arc<dyn LanguageFeatureProviderRegistry>, CommonError, Option<Vec<TextEditDTO>>> {
21	ActionEffect::New(Arc::new(move |Registry:Arc<dyn LanguageFeatureProviderRegistry>| {
22		let DocumentURIClone = DocumentURI.clone();
23		let OptionsDTOClone = OptionsDTO.clone();
24
25		Box::pin(async move { Registry.ProvideDocumentFormattingEdits(DocumentURIClone, OptionsDTOClone).await })
26	}))
27}