1 use serde_derive::{Serialize, Deserialize};
2 use languageserver_types::{Location, Position, Range, TextDocumentIdentifier, Url};
3 use rustc_hash::FxHashMap;
6 pub use languageserver_types::{
7 notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CompletionParams,
8 CompletionResponse, DocumentOnTypeFormattingParams, DocumentSymbolParams,
9 DocumentSymbolResponse, ExecuteCommandParams, Hover, InitializeResult,
10 PublishDiagnosticsParams, ReferenceParams, SignatureHelp, TextDocumentEdit,
11 TextDocumentPositionParams, TextEdit, WorkspaceSymbolParams,
14 pub enum SyntaxTree {}
16 impl Request for SyntaxTree {
17 type Params = SyntaxTreeParams;
19 const METHOD: &'static str = "m/syntaxTree";
22 #[derive(Deserialize, Debug)]
23 #[serde(rename_all = "camelCase")]
24 pub struct SyntaxTreeParams {
25 pub text_document: TextDocumentIdentifier,
28 pub enum ExtendSelection {}
30 impl Request for ExtendSelection {
31 type Params = ExtendSelectionParams;
32 type Result = ExtendSelectionResult;
33 const METHOD: &'static str = "m/extendSelection";
36 #[derive(Deserialize, Debug)]
37 #[serde(rename_all = "camelCase")]
38 pub struct ExtendSelectionParams {
39 pub text_document: TextDocumentIdentifier,
40 pub selections: Vec<Range>,
43 #[derive(Serialize, Debug)]
44 #[serde(rename_all = "camelCase")]
45 pub struct ExtendSelectionResult {
46 pub selections: Vec<Range>,
49 pub enum FindMatchingBrace {}
51 impl Request for FindMatchingBrace {
52 type Params = FindMatchingBraceParams;
53 type Result = Vec<Position>;
54 const METHOD: &'static str = "m/findMatchingBrace";
57 #[derive(Deserialize, Debug)]
58 #[serde(rename_all = "camelCase")]
59 pub struct FindMatchingBraceParams {
60 pub text_document: TextDocumentIdentifier,
61 pub offsets: Vec<Position>,
64 pub enum DecorationsRequest {}
66 impl Request for DecorationsRequest {
67 type Params = TextDocumentIdentifier;
68 type Result = Vec<Decoration>;
69 const METHOD: &'static str = "m/decorationsRequest";
72 pub enum PublishDecorations {}
74 impl Notification for PublishDecorations {
75 type Params = PublishDecorationsParams;
76 const METHOD: &'static str = "m/publishDecorations";
79 #[derive(Serialize, Debug)]
80 #[serde(rename_all = "camelCase")]
81 pub struct PublishDecorationsParams {
82 #[serde(with = "url_serde")]
84 pub decorations: Vec<Decoration>,
87 #[derive(Serialize, Debug)]
88 #[serde(rename_all = "camelCase")]
89 pub struct Decoration {
91 pub tag: &'static str,
94 pub enum ParentModule {}
96 impl Request for ParentModule {
97 type Params = TextDocumentPositionParams;
98 type Result = Vec<Location>;
99 const METHOD: &'static str = "m/parentModule";
102 pub enum JoinLines {}
104 impl Request for JoinLines {
105 type Params = JoinLinesParams;
106 type Result = SourceChange;
107 const METHOD: &'static str = "m/joinLines";
110 #[derive(Deserialize, Debug)]
111 #[serde(rename_all = "camelCase")]
112 pub struct JoinLinesParams {
113 pub text_document: TextDocumentIdentifier,
119 impl Request for OnEnter {
120 type Params = TextDocumentPositionParams;
121 type Result = Option<SourceChange>;
122 const METHOD: &'static str = "m/onEnter";
125 pub enum Runnables {}
127 impl Request for Runnables {
128 type Params = RunnablesParams;
129 type Result = Vec<Runnable>;
130 const METHOD: &'static str = "m/runnables";
133 #[derive(Serialize, Deserialize, Debug)]
134 #[serde(rename_all = "camelCase")]
135 pub struct RunnablesParams {
136 pub text_document: TextDocumentIdentifier,
137 pub position: Option<Position>,
140 #[derive(Serialize, Debug)]
141 #[serde(rename_all = "camelCase")]
142 pub struct Runnable {
146 pub args: Vec<String>,
147 pub env: FxHashMap<String, String>,
150 #[derive(Serialize, Debug)]
151 #[serde(rename_all = "camelCase")]
152 pub struct SourceChange {
154 pub source_file_edits: Vec<TextDocumentEdit>,
155 pub file_system_edits: Vec<FileSystemEdit>,
156 pub cursor_position: Option<TextDocumentPositionParams>,
159 #[derive(Serialize, Debug)]
160 #[serde(tag = "type", rename_all = "camelCase")]
161 pub enum FileSystemEdit {
163 #[serde(with = "url_serde")]
167 #[serde(with = "url_serde")]
169 #[serde(with = "url_serde")]
174 pub enum InternalFeedback {}
176 impl Notification for InternalFeedback {
177 const METHOD: &'static str = "internalFeedback";
178 type Params = String;