1 //! FIXME: write short doc here
3 use lsp_types::{Location, Position, Range, TextDocumentIdentifier, Url};
4 use rustc_hash::FxHashMap;
5 use serde::{Deserialize, Serialize};
8 notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CodeLens,
9 CodeLensParams, CompletionParams, CompletionResponse, DidChangeConfigurationParams,
10 DidChangeWatchedFilesParams, DidChangeWatchedFilesRegistrationOptions,
11 DocumentOnTypeFormattingParams, DocumentSymbolParams, DocumentSymbolResponse,
12 FileSystemWatcher, Hover, InitializeResult, MessageType, PublishDiagnosticsParams,
13 ReferenceParams, Registration, RegistrationParams, ShowMessageParams, SignatureHelp,
14 TextDocumentEdit, TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams,
17 pub enum AnalyzerStatus {}
19 impl Request for AnalyzerStatus {
22 const METHOD: &'static str = "rust-analyzer/analyzerStatus";
25 pub enum CollectGarbage {}
27 impl Request for CollectGarbage {
30 const METHOD: &'static str = "rust-analyzer/collectGarbage";
33 pub enum SyntaxTree {}
35 impl Request for SyntaxTree {
36 type Params = SyntaxTreeParams;
38 const METHOD: &'static str = "rust-analyzer/syntaxTree";
41 #[derive(Deserialize, Debug)]
42 #[serde(rename_all = "camelCase")]
43 pub struct SyntaxTreeParams {
44 pub text_document: TextDocumentIdentifier,
45 pub range: Option<Range>,
48 pub enum SelectionRangeRequest {}
50 impl Request for SelectionRangeRequest {
51 type Params = SelectionRangeParams;
52 type Result = Vec<SelectionRange>;
53 const METHOD: &'static str = "textDocument/selectionRange";
56 #[derive(Deserialize, Debug)]
57 #[serde(rename_all = "camelCase")]
58 pub struct SelectionRangeParams {
59 pub text_document: TextDocumentIdentifier,
60 pub positions: Vec<Position>,
63 #[derive(Serialize, Debug)]
64 #[serde(rename_all = "camelCase")]
65 pub struct SelectionRange {
67 pub parent: Option<Box<SelectionRange>>,
70 pub enum FindMatchingBrace {}
72 impl Request for FindMatchingBrace {
73 type Params = FindMatchingBraceParams;
74 type Result = Vec<Position>;
75 const METHOD: &'static str = "rust-analyzer/findMatchingBrace";
78 #[derive(Deserialize, Debug)]
79 #[serde(rename_all = "camelCase")]
80 pub struct FindMatchingBraceParams {
81 pub text_document: TextDocumentIdentifier,
82 pub offsets: Vec<Position>,
85 pub enum DecorationsRequest {}
87 impl Request for DecorationsRequest {
88 type Params = TextDocumentIdentifier;
89 type Result = Vec<Decoration>;
90 const METHOD: &'static str = "rust-analyzer/decorationsRequest";
93 pub enum PublishDecorations {}
95 impl Notification for PublishDecorations {
96 type Params = PublishDecorationsParams;
97 const METHOD: &'static str = "rust-analyzer/publishDecorations";
100 #[derive(Serialize, Debug)]
101 #[serde(rename_all = "camelCase")]
102 pub struct PublishDecorationsParams {
104 pub decorations: Vec<Decoration>,
107 #[derive(Serialize, Debug)]
108 #[serde(rename_all = "camelCase")]
109 pub struct Decoration {
111 pub tag: &'static str,
112 pub binding_hash: Option<String>,
115 pub enum ParentModule {}
117 impl Request for ParentModule {
118 type Params = TextDocumentPositionParams;
119 type Result = Vec<Location>;
120 const METHOD: &'static str = "rust-analyzer/parentModule";
123 pub enum JoinLines {}
125 impl Request for JoinLines {
126 type Params = JoinLinesParams;
127 type Result = SourceChange;
128 const METHOD: &'static str = "rust-analyzer/joinLines";
131 #[derive(Deserialize, Debug)]
132 #[serde(rename_all = "camelCase")]
133 pub struct JoinLinesParams {
134 pub text_document: TextDocumentIdentifier,
140 impl Request for OnEnter {
141 type Params = TextDocumentPositionParams;
142 type Result = Option<SourceChange>;
143 const METHOD: &'static str = "rust-analyzer/onEnter";
146 pub enum Runnables {}
148 impl Request for Runnables {
149 type Params = RunnablesParams;
150 type Result = Vec<Runnable>;
151 const METHOD: &'static str = "rust-analyzer/runnables";
154 #[derive(Serialize, Deserialize, Debug)]
155 #[serde(rename_all = "camelCase")]
156 pub struct RunnablesParams {
157 pub text_document: TextDocumentIdentifier,
158 pub position: Option<Position>,
161 #[derive(Serialize, Debug)]
162 #[serde(rename_all = "camelCase")]
163 pub struct Runnable {
167 pub args: Vec<String>,
168 pub env: FxHashMap<String, String>,
169 pub cwd: Option<String>,
172 #[derive(Serialize, Debug)]
173 #[serde(rename_all = "camelCase")]
174 pub struct SourceChange {
176 pub workspace_edit: WorkspaceEdit,
177 pub cursor_position: Option<TextDocumentPositionParams>,
180 pub enum InlayHints {}
182 impl Request for InlayHints {
183 type Params = InlayHintsParams;
184 type Result = Vec<InlayHint>;
185 const METHOD: &'static str = "rust-analyzer/inlayHints";
188 #[derive(Serialize, Deserialize, Debug)]
189 #[serde(rename_all = "camelCase")]
190 pub struct InlayHintsParams {
191 pub text_document: TextDocumentIdentifier,
194 #[derive(Debug, PartialEq, Eq, Deserialize, Serialize)]
199 #[derive(Debug, Deserialize, Serialize)]
200 pub struct InlayHint {