cairo_lang_language_server/lsp/
ext.rs

1//! CairoLS extensions to the Language Server Protocol.
2
3use lsp_types::notification::Notification;
4use lsp_types::request::Request;
5use lsp_types::{TextDocumentPositionParams, Url};
6use serde::{Deserialize, Serialize};
7
8/// Provides content of virtual file from the database.
9pub(crate) struct ProvideVirtualFile;
10
11#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
12pub(crate) struct ProvideVirtualFileRequest {
13    pub uri: Url,
14}
15
16#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]
17pub(crate) struct ProvideVirtualFileResponse {
18    pub content: Option<String>,
19}
20
21impl Request for ProvideVirtualFile {
22    type Params = ProvideVirtualFileRequest;
23    type Result = ProvideVirtualFileResponse;
24    const METHOD: &'static str = "vfs/provide";
25}
26
27/// Collects information about all Cairo crates that are currently being analyzed.
28pub struct ViewAnalyzedCrates;
29
30impl Request for ViewAnalyzedCrates {
31    type Params = ();
32    type Result = String;
33    const METHOD: &'static str = "cairo/viewAnalyzedCrates";
34}
35
36/// Provides string with code after macros expansion.
37pub struct ExpandMacro;
38
39impl Request for ExpandMacro {
40    type Params = TextDocumentPositionParams;
41    type Result = Option<String>;
42    const METHOD: &'static str = "cairo/expandMacro";
43}
44
45/// Notifies about corelib version mismatch.
46#[derive(Debug)]
47pub struct CorelibVersionMismatch;
48
49impl Notification for CorelibVersionMismatch {
50    type Params = String;
51    const METHOD: &'static str = "cairo/corelib-version-mismatch";
52}
53
54/// Notifies about scarb metadata failure.
55#[derive(Debug)]
56pub struct ScarbMetadataFailed;
57
58impl Notification for ScarbMetadataFailed {
59    type Params = ();
60    const METHOD: &'static str = "cairo/scarb-metadata-failed";
61}
62
63/// Notifies about `proc-macro-server` fatal fail.
64#[derive(Debug)]
65pub struct ProcMacroServerInitializationFailed;
66
67#[derive(Debug, Serialize, Deserialize)]
68#[serde(rename_all = "camelCase", rename_all_fields = "camelCase", tag = "reason")]
69pub enum ProcMacroServerInitializationFailedParams {
70    NoMoreRetries { retries: u32, in_minutes: u64 },
71    SpawnFail,
72}
73
74impl Notification for ProcMacroServerInitializationFailed {
75    type Params = ProcMacroServerInitializationFailedParams;
76    const METHOD: &'static str = "cairo/procMacroServerInitializationFailed";
77}