1 use lsp_types::{Location, Position, Range, TextDocumentIdentifier, Url};
2 use rustc_hash::FxHashMap;
3 use serde::{Deserialize, Serialize};
7 notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CodeLens,
8 CodeLensParams, CompletionParams, CompletionResponse, DocumentOnTypeFormattingParams,
9 DocumentSymbolParams, DocumentSymbolResponse, ExecuteCommandParams, Hover, InitializeResult,
10 MessageType, PublishDiagnosticsParams, ReferenceParams, ShowMessageParams, SignatureHelp,
11 TextDocumentEdit, TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams,
14 pub enum AnalyzerStatus {}
16 impl Request for AnalyzerStatus {
19 const METHOD: &'static str = "rust-analyzer/analyzerStatus";
22 pub enum CollectGarbage {}
24 impl Request for CollectGarbage {
27 const METHOD: &'static str = "rust-analyzer/collectGarbage";
30 pub enum SyntaxTree {}
32 impl Request for SyntaxTree {
33 type Params = SyntaxTreeParams;
35 const METHOD: &'static str = "rust-analyzer/syntaxTree";
38 #[derive(Deserialize, Debug)]
39 #[serde(rename_all = "camelCase")]
40 pub struct SyntaxTreeParams {
41 pub text_document: TextDocumentIdentifier,
42 pub range: Option<Range>,
45 pub enum ExtendSelection {}
47 impl Request for ExtendSelection {
48 type Params = ExtendSelectionParams;
49 type Result = ExtendSelectionResult;
50 const METHOD: &'static str = "rust-analyzer/extendSelection";
53 #[derive(Deserialize, Debug)]
54 #[serde(rename_all = "camelCase")]
55 pub struct ExtendSelectionParams {
56 pub text_document: TextDocumentIdentifier,
57 pub selections: Vec<Range>,
60 #[derive(Serialize, Debug)]
61 #[serde(rename_all = "camelCase")]
62 pub struct ExtendSelectionResult {
63 pub selections: Vec<Range>,
66 pub enum SelectionRangeRequest {}
68 impl Request for SelectionRangeRequest {
69 type Params = SelectionRangeParams;
70 type Result = Vec<SelectionRange>;
71 const METHOD: &'static str = "textDocument/selectionRange";
74 #[derive(Deserialize, Debug)]
75 #[serde(rename_all = "camelCase")]
76 pub struct SelectionRangeParams {
77 pub text_document: TextDocumentIdentifier,
78 pub positions: Vec<Position>,
81 #[derive(Serialize, Debug)]
82 #[serde(rename_all = "camelCase")]
83 pub struct SelectionRange {
85 pub parent: Option<Box<SelectionRange>>,
88 pub enum FindMatchingBrace {}
90 impl Request for FindMatchingBrace {
91 type Params = FindMatchingBraceParams;
92 type Result = Vec<Position>;
93 const METHOD: &'static str = "rust-analyzer/findMatchingBrace";
96 #[derive(Deserialize, Debug)]
97 #[serde(rename_all = "camelCase")]
98 pub struct FindMatchingBraceParams {
99 pub text_document: TextDocumentIdentifier,
100 pub offsets: Vec<Position>,
103 pub enum DecorationsRequest {}
105 impl Request for DecorationsRequest {
106 type Params = TextDocumentIdentifier;
107 type Result = Vec<Decoration>;
108 const METHOD: &'static str = "rust-analyzer/decorationsRequest";
111 pub enum PublishDecorations {}
113 impl Notification for PublishDecorations {
114 type Params = PublishDecorationsParams;
115 const METHOD: &'static str = "rust-analyzer/publishDecorations";
118 #[derive(Serialize, Debug)]
119 #[serde(rename_all = "camelCase")]
120 pub struct PublishDecorationsParams {
121 #[serde(with = "url_serde")]
123 pub decorations: Vec<Decoration>,
126 #[derive(Serialize, Debug)]
127 #[serde(rename_all = "camelCase")]
128 pub struct Decoration {
130 pub tag: &'static str,
131 pub binding_hash: Option<String>,
134 pub enum ParentModule {}
136 impl Request for ParentModule {
137 type Params = TextDocumentPositionParams;
138 type Result = Vec<Location>;
139 const METHOD: &'static str = "rust-analyzer/parentModule";
142 pub enum JoinLines {}
144 impl Request for JoinLines {
145 type Params = JoinLinesParams;
146 type Result = SourceChange;
147 const METHOD: &'static str = "rust-analyzer/joinLines";
150 #[derive(Deserialize, Debug)]
151 #[serde(rename_all = "camelCase")]
152 pub struct JoinLinesParams {
153 pub text_document: TextDocumentIdentifier,
159 impl Request for OnEnter {
160 type Params = TextDocumentPositionParams;
161 type Result = Option<SourceChange>;
162 const METHOD: &'static str = "rust-analyzer/onEnter";
165 pub enum Runnables {}
167 impl Request for Runnables {
168 type Params = RunnablesParams;
169 type Result = Vec<Runnable>;
170 const METHOD: &'static str = "rust-analyzer/runnables";
173 #[derive(Serialize, Deserialize, Debug)]
174 #[serde(rename_all = "camelCase")]
175 pub struct RunnablesParams {
176 pub text_document: TextDocumentIdentifier,
177 pub position: Option<Position>,
180 #[derive(Serialize, Debug)]
181 #[serde(rename_all = "camelCase")]
182 pub struct Runnable {
186 pub args: Vec<String>,
187 pub env: FxHashMap<String, String>,
188 pub cwd: Option<String>,
191 #[derive(Serialize, Debug)]
192 #[serde(rename_all = "camelCase")]
193 pub struct SourceChange {
195 pub workspace_edit: WorkspaceEdit,
196 pub cursor_position: Option<TextDocumentPositionParams>,