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}