use lsp_types::{Location, Position, Range, TextDocumentIdentifier, Url}; use rustc_hash::FxHashMap; use serde::{Deserialize, Serialize}; use url_serde; pub use lsp_types::{ notification::*, request::*, ApplyWorkspaceEditParams, CodeActionParams, CodeLens, CodeLensParams, CompletionParams, CompletionResponse, DocumentOnTypeFormattingParams, DocumentSymbolParams, DocumentSymbolResponse, ExecuteCommandParams, Hover, InitializeResult, PublishDiagnosticsParams, ReferenceParams, SignatureHelp, TextDocumentEdit, TextDocumentPositionParams, TextEdit, WorkspaceEdit, WorkspaceSymbolParams, MessageType, ShowMessageParams, }; 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 = "rust-analyzer/syntaxTree"; } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct SyntaxTreeParams { pub text_document: TextDocumentIdentifier, pub range: Option, } pub enum ExtendSelection {} impl Request for ExtendSelection { type Params = ExtendSelectionParams; type Result = ExtendSelectionResult; const METHOD: &'static str = "rust-analyzer/extendSelection"; } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ExtendSelectionParams { pub text_document: TextDocumentIdentifier, pub selections: Vec, } #[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct ExtendSelectionResult { pub selections: Vec, } pub enum SelectionRangeRequest {} impl Request for SelectionRangeRequest { type Params = SelectionRangeParams; type Result = Vec; const METHOD: &'static str = "textDocument/selectionRange"; } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct SelectionRangeParams { pub text_document: TextDocumentIdentifier, pub positions: Vec, } #[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct SelectionRange { pub range: Range, pub parent: Option>, } pub enum FindMatchingBrace {} impl Request for FindMatchingBrace { type Params = FindMatchingBraceParams; type Result = Vec; const METHOD: &'static str = "rust-analyzer/findMatchingBrace"; } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct FindMatchingBraceParams { pub text_document: TextDocumentIdentifier, pub offsets: Vec, } pub enum DecorationsRequest {} impl Request for DecorationsRequest { type Params = TextDocumentIdentifier; type Result = Vec; const METHOD: &'static str = "rust-analyzer/decorationsRequest"; } pub enum PublishDecorations {} impl Notification for PublishDecorations { type Params = PublishDecorationsParams; 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, } #[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct Decoration { pub range: Range, pub tag: &'static str, pub binding_hash: Option, } pub enum ParentModule {} impl Request for ParentModule { type Params = TextDocumentPositionParams; type Result = Vec; const METHOD: &'static str = "rust-analyzer/parentModule"; } pub enum JoinLines {} impl Request for JoinLines { type Params = JoinLinesParams; type Result = SourceChange; const METHOD: &'static str = "rust-analyzer/joinLines"; } #[derive(Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct JoinLinesParams { pub text_document: TextDocumentIdentifier, pub range: Range, } pub enum OnEnter {} impl Request for OnEnter { type Params = TextDocumentPositionParams; type Result = Option; const METHOD: &'static str = "rust-analyzer/onEnter"; } pub enum Runnables {} impl Request for Runnables { type Params = RunnablesParams; type Result = Vec; const METHOD: &'static str = "rust-analyzer/runnables"; } #[derive(Serialize, Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct RunnablesParams { pub text_document: TextDocumentIdentifier, pub position: Option, } #[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct Runnable { pub range: Range, pub label: String, pub bin: String, pub args: Vec, pub env: FxHashMap, pub cwd: Option, } #[derive(Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct SourceChange { pub label: String, pub workspace_edit: WorkspaceEdit, pub cursor_position: Option, }