1 use lsp_types::{Location, Position, Range, TextDocumentIdentifier, Url};
2 use rustc_hash::FxHashMap;
3 use serde::{Deserialize, Serialize};
6 notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CodeLens,
7 CodeLensParams, CompletionParams, CompletionResponse, DidChangeConfigurationParams,
8 DidChangeWatchedFilesParams, DidChangeWatchedFilesRegistrationOptions,
9 DocumentOnTypeFormattingParams, DocumentSymbolParams, DocumentSymbolResponse,
10 FileSystemWatcher, Hover, InitializeResult, MessageType, PublishDiagnosticsParams,
11 ReferenceParams, Registration, RegistrationParams, ShowMessageParams, SignatureHelp,
12 TextDocumentEdit, TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams,
15 pub enum AnalyzerStatus {}
17 impl Request for AnalyzerStatus {
20 const METHOD: &'static str = "rust-analyzer/analyzerStatus";
23 pub enum CollectGarbage {}
25 impl Request for CollectGarbage {
28 const METHOD: &'static str = "rust-analyzer/collectGarbage";
31 pub enum SyntaxTree {}
33 impl Request for SyntaxTree {
34 type Params = SyntaxTreeParams;
36 const METHOD: &'static str = "rust-analyzer/syntaxTree";
39 #[derive(Deserialize, Debug)]
40 #[serde(rename_all = "camelCase")]
41 pub struct SyntaxTreeParams {
42 pub text_document: TextDocumentIdentifier,
43 pub range: Option<Range>,
46 pub enum SelectionRangeRequest {}
48 impl Request for SelectionRangeRequest {
49 type Params = SelectionRangeParams;
50 type Result = Vec<SelectionRange>;
51 const METHOD: &'static str = "textDocument/selectionRange";
54 #[derive(Deserialize, Debug)]
55 #[serde(rename_all = "camelCase")]
56 pub struct SelectionRangeParams {
57 pub text_document: TextDocumentIdentifier,
58 pub positions: Vec<Position>,
61 #[derive(Serialize, Debug)]
62 #[serde(rename_all = "camelCase")]
63 pub struct SelectionRange {
65 pub parent: Option<Box<SelectionRange>>,
68 pub enum FindMatchingBrace {}
70 impl Request for FindMatchingBrace {
71 type Params = FindMatchingBraceParams;
72 type Result = Vec<Position>;
73 const METHOD: &'static str = "rust-analyzer/findMatchingBrace";
76 #[derive(Deserialize, Debug)]
77 #[serde(rename_all = "camelCase")]
78 pub struct FindMatchingBraceParams {
79 pub text_document: TextDocumentIdentifier,
80 pub offsets: Vec<Position>,
83 pub enum DecorationsRequest {}
85 impl Request for DecorationsRequest {
86 type Params = TextDocumentIdentifier;
87 type Result = Vec<Decoration>;
88 const METHOD: &'static str = "rust-analyzer/decorationsRequest";
91 pub enum PublishDecorations {}
93 impl Notification for PublishDecorations {
94 type Params = PublishDecorationsParams;
95 const METHOD: &'static str = "rust-analyzer/publishDecorations";
98 #[derive(Serialize, Debug)]
99 #[serde(rename_all = "camelCase")]
100 pub struct PublishDecorationsParams {
102 pub decorations: Vec<Decoration>,
105 #[derive(Serialize, Debug)]
106 #[serde(rename_all = "camelCase")]
107 pub struct Decoration {
109 pub tag: &'static str,
110 pub binding_hash: Option<String>,
113 pub enum ParentModule {}
115 impl Request for ParentModule {
116 type Params = TextDocumentPositionParams;
117 type Result = Vec<Location>;
118 const METHOD: &'static str = "rust-analyzer/parentModule";
121 pub enum JoinLines {}
123 impl Request for JoinLines {
124 type Params = JoinLinesParams;
125 type Result = SourceChange;
126 const METHOD: &'static str = "rust-analyzer/joinLines";
129 #[derive(Deserialize, Debug)]
130 #[serde(rename_all = "camelCase")]
131 pub struct JoinLinesParams {
132 pub text_document: TextDocumentIdentifier,
138 impl Request for OnEnter {
139 type Params = TextDocumentPositionParams;
140 type Result = Option<SourceChange>;
141 const METHOD: &'static str = "rust-analyzer/onEnter";
144 pub enum Runnables {}
146 impl Request for Runnables {
147 type Params = RunnablesParams;
148 type Result = Vec<Runnable>;
149 const METHOD: &'static str = "rust-analyzer/runnables";
152 #[derive(Serialize, Deserialize, Debug)]
153 #[serde(rename_all = "camelCase")]
154 pub struct RunnablesParams {
155 pub text_document: TextDocumentIdentifier,
156 pub position: Option<Position>,
159 #[derive(Serialize, Debug)]
160 #[serde(rename_all = "camelCase")]
161 pub struct Runnable {
165 pub args: Vec<String>,
166 pub env: FxHashMap<String, String>,
167 pub cwd: Option<String>,
170 #[derive(Serialize, Debug)]
171 #[serde(rename_all = "camelCase")]
172 pub struct SourceChange {
174 pub workspace_edit: WorkspaceEdit,
175 pub cursor_position: Option<TextDocumentPositionParams>,
178 pub enum InlayHints {}
180 impl Request for InlayHints {
181 type Params = InlayHintsParams;
182 type Result = Vec<InlayHint>;
183 const METHOD: &'static str = "rust-analyzer/inlayHints";
186 #[derive(Serialize, Deserialize, Debug)]
187 #[serde(rename_all = "camelCase")]
188 pub struct InlayHintsParams {
189 pub text_document: TextDocumentIdentifier,
192 #[derive(Debug, PartialEq, Eq, Deserialize, Serialize)]
197 #[derive(Debug, Deserialize, Serialize)]
198 pub struct InlayHint {