]> git.lizzy.rs Git - rust.git/blobdiff - crates/ra_lsp_server/src/req.rs
Use SelectionRange from LSP 3.15
[rust.git] / crates / ra_lsp_server / src / req.rs
index b41e90328024d6b31169ae32a5c651c60059c417..2a22b655ce1b10ad223b1c4e338ceb40f1da3e73 100644 (file)
@@ -1,49 +1,71 @@
-use languageserver_types::{Location, Position, Range, TextDocumentIdentifier, Url};
+//! FIXME: write short doc here
+
+use lsp_types::{Location, Position, Range, TextDocumentIdentifier, Url};
 use rustc_hash::FxHashMap;
 use serde::{Deserialize, Serialize};
-use url_serde;
-
-pub use languageserver_types::{
-    notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CompletionParams,
-    CompletionResponse, DocumentOnTypeFormattingParams, DocumentSymbolParams,
-    DocumentSymbolResponse, ExecuteCommandParams, Hover, InitializeResult,
-    PublishDiagnosticsParams, ReferenceParams, SignatureHelp, TextDocumentEdit,
-    TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams,
+
+pub use lsp_types::{
+    notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CodeLens,
+    CodeLensParams, CompletionParams, CompletionResponse, DidChangeConfigurationParams,
+    DidChangeWatchedFilesParams, DidChangeWatchedFilesRegistrationOptions,
+    DocumentOnTypeFormattingParams, DocumentSymbolParams, DocumentSymbolResponse,
+    FileSystemWatcher, Hover, InitializeResult, MessageType, PublishDiagnosticsParams,
+    ReferenceParams, Registration, RegistrationParams, SelectionRange, SelectionRangeParams,
+    ShowMessageParams, SignatureHelp, TextDocumentEdit, TextDocumentPositionParams, TextEdit,
+    WorkspaceEdit, WorkspaceSymbolParams,
 };
 
+pub enum AnalyzerStatus {}
+
+impl Request for AnalyzerStatus {
+    type Params = ();
+    type Result = String;
+    const METHOD: &'static str = "rust-analyzer/analyzerStatus";
+}
+
+pub enum CollectGarbage {}
+
+impl Request for CollectGarbage {
+    type Params = ();
+    type Result = ();
+    const METHOD: &'static str = "rust-analyzer/collectGarbage";
+}
+
 pub enum SyntaxTree {}
 
 impl Request for SyntaxTree {
     type Params = SyntaxTreeParams;
     type Result = String;
-    const METHOD: &'static str = "m/syntaxTree";
+    const METHOD: &'static str = "rust-analyzer/syntaxTree";
 }
 
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
 pub struct SyntaxTreeParams {
     pub text_document: TextDocumentIdentifier,
+    pub range: Option<Range>,
 }
 
-pub enum ExtendSelection {}
+#[derive(Serialize, Debug)]
+#[serde(rename_all = "camelCase")]
+pub struct ExpandedMacro {
+    pub name: String,
+    pub expansion: String,
+}
 
-impl Request for ExtendSelection {
-    type Params = ExtendSelectionParams;
-    type Result = ExtendSelectionResult;
-    const METHOD: &'static str = "m/extendSelection";
+pub enum ExpandMacro {}
+
+impl Request for ExpandMacro {
+    type Params = ExpandMacroParams;
+    type Result = Option<ExpandedMacro>;
+    const METHOD: &'static str = "rust-analyzer/expandMacro";
 }
 
 #[derive(Deserialize, Debug)]
 #[serde(rename_all = "camelCase")]
-pub struct ExtendSelectionParams {
+pub struct ExpandMacroParams {
     pub text_document: TextDocumentIdentifier,
-    pub selections: Vec<Range>,
-}
-
-#[derive(Serialize, Debug)]
-#[serde(rename_all = "camelCase")]
-pub struct ExtendSelectionResult {
-    pub selections: Vec<Range>,
+    pub position: Option<Position>,
 }
 
 pub enum FindMatchingBrace {}
@@ -51,7 +73,7 @@ pub enum FindMatchingBrace {}
 impl Request for FindMatchingBrace {
     type Params = FindMatchingBraceParams;
     type Result = Vec<Position>;
-    const METHOD: &'static str = "m/findMatchingBrace";
+    const METHOD: &'static str = "rust-analyzer/findMatchingBrace";
 }
 
 #[derive(Deserialize, Debug)]
@@ -66,20 +88,19 @@ pub enum DecorationsRequest {}
 impl Request for DecorationsRequest {
     type Params = TextDocumentIdentifier;
     type Result = Vec<Decoration>;
-    const METHOD: &'static str = "m/decorationsRequest";
+    const METHOD: &'static str = "rust-analyzer/decorationsRequest";
 }
 
 pub enum PublishDecorations {}
 
 impl Notification for PublishDecorations {
     type Params = PublishDecorationsParams;
-    const METHOD: &'static str = "m/publishDecorations";
+    const METHOD: &'static str = "rust-analyzer/publishDecorations";
 }
 
 #[derive(Serialize, Debug)]
 #[serde(rename_all = "camelCase")]
 pub struct PublishDecorationsParams {
-    #[serde(with = "url_serde")]
     pub uri: Url,
     pub decorations: Vec<Decoration>,
 }
@@ -89,6 +110,7 @@ pub struct PublishDecorationsParams {
 pub struct Decoration {
     pub range: Range,
     pub tag: &'static str,
+    pub binding_hash: Option<String>,
 }
 
 pub enum ParentModule {}
@@ -96,7 +118,7 @@ pub enum ParentModule {}
 impl Request for ParentModule {
     type Params = TextDocumentPositionParams;
     type Result = Vec<Location>;
-    const METHOD: &'static str = "m/parentModule";
+    const METHOD: &'static str = "rust-analyzer/parentModule";
 }
 
 pub enum JoinLines {}
@@ -104,7 +126,7 @@ pub enum JoinLines {}
 impl Request for JoinLines {
     type Params = JoinLinesParams;
     type Result = SourceChange;
-    const METHOD: &'static str = "m/joinLines";
+    const METHOD: &'static str = "rust-analyzer/joinLines";
 }
 
 #[derive(Deserialize, Debug)]
@@ -119,7 +141,7 @@ pub enum OnEnter {}
 impl Request for OnEnter {
     type Params = TextDocumentPositionParams;
     type Result = Option<SourceChange>;
-    const METHOD: &'static str = "m/onEnter";
+    const METHOD: &'static str = "rust-analyzer/onEnter";
 }
 
 pub enum Runnables {}
@@ -127,7 +149,7 @@ pub enum Runnables {}
 impl Request for Runnables {
     type Params = RunnablesParams;
     type Result = Vec<Runnable>;
-    const METHOD: &'static str = "m/runnables";
+    const METHOD: &'static str = "rust-analyzer/runnables";
 }
 
 #[derive(Serialize, Deserialize, Debug)]
@@ -145,6 +167,7 @@ pub struct Runnable {
     pub bin: String,
     pub args: Vec<String>,
     pub env: FxHashMap<String, String>,
+    pub cwd: Option<String>,
 }
 
 #[derive(Serialize, Debug)]
@@ -155,9 +178,28 @@ pub struct SourceChange {
     pub cursor_position: Option<TextDocumentPositionParams>,
 }
 
-pub enum InternalFeedback {}
+pub enum InlayHints {}
+
+impl Request for InlayHints {
+    type Params = InlayHintsParams;
+    type Result = Vec<InlayHint>;
+    const METHOD: &'static str = "rust-analyzer/inlayHints";
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+#[serde(rename_all = "camelCase")]
+pub struct InlayHintsParams {
+    pub text_document: TextDocumentIdentifier,
+}
+
+#[derive(Debug, PartialEq, Eq, Deserialize, Serialize)]
+pub enum InlayKind {
+    TypeHint,
+}
 
-impl Notification for InternalFeedback {
-    const METHOD: &'static str = "internalFeedback";
-    type Params = String;
+#[derive(Debug, Deserialize, Serialize)]
+pub struct InlayHint {
+    pub range: Range,
+    pub kind: InlayKind,
+    pub label: String,
 }