use serde::{Deserialize, Serialize}; use serde_json::Value; use crate::{ Command, DynamicRegistrationClientCapabilities, PartialResultParams, Range, TextDocumentIdentifier, WorkDoneProgressParams, }; pub type CodeLensClientCapabilities = DynamicRegistrationClientCapabilities; /// Code Lens options. #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct CodeLensOptions { /// Code lens has a resolve provider as well. #[serde(skip_serializing_if = "Option::is_none")] pub resolve_provider: Option, } #[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct CodeLensParams { /// The document to request code lens for. pub text_document: TextDocumentIdentifier, #[serde(flatten)] pub work_done_progress_params: WorkDoneProgressParams, #[serde(flatten)] pub partial_result_params: PartialResultParams, } /// A code lens represents a command that should be shown along with /// source text, like the number of references, a way to run tests, etc. /// /// A code lens is _unresolved_ when no command is associated to it. For performance /// reasons the creation of a code lens and resolving should be done in two stages. #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct CodeLens { /// The range in which this code lens is valid. Should only span a single line. pub range: Range, /// The command this code lens represents. #[serde(skip_serializing_if = "Option::is_none")] pub command: Option, /// A data entry field that is preserved on a code lens item between /// a code lens and a code lens resolve request. #[serde(skip_serializing_if = "Option::is_none")] pub data: Option, } #[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct CodeLensWorkspaceClientCapabilities { /// Whether the client implementation supports a refresh request sent from the /// server to the client. /// /// Note that this event is global and will force the client to refresh all /// code lenses currently shown. It should be used with absolute care and is /// useful for situation where a server for example detect a project wide /// change that requires such a calculation. #[serde(skip_serializing_if = "Option::is_none")] pub refresh_support: Option, }