aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2019-11-19 17:53:27 +0000
committerGitHub <[email protected]>2019-11-19 17:53:27 +0000
commit545c21923e2bc8daee889b26919256bb2ba55282 (patch)
treeba089b257e57e066ba190bfc9ea228ef8366a07d /crates/ra_lsp_server
parentd2782ab1c1ec0b9f2ac2131859a9ee880f97bc12 (diff)
parent1d56b80250d43a7d263d2e9583871c85081261b6 (diff)
Merge #2291
2291: Show expanded macro in vscode r=matklad a=edwin0cheng *Edited* ![new_screen_shot](https://user-images.githubusercontent.com/11014119/69169852-00550c00-0b34-11ea-9c40-8ecebdca0621.gif) Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs1
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs18
-rw-r--r--crates/ra_lsp_server/src/req.rs22
3 files changed, 41 insertions, 0 deletions
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs
index 379dab438..f828efdee 100644
--- a/crates/ra_lsp_server/src/main_loop.rs
+++ b/crates/ra_lsp_server/src/main_loop.rs
@@ -436,6 +436,7 @@ fn on_request(
436 })? 436 })?
437 .on::<req::AnalyzerStatus>(handlers::handle_analyzer_status)? 437 .on::<req::AnalyzerStatus>(handlers::handle_analyzer_status)?
438 .on::<req::SyntaxTree>(handlers::handle_syntax_tree)? 438 .on::<req::SyntaxTree>(handlers::handle_syntax_tree)?
439 .on::<req::ExpandMacro>(handlers::handle_expand_macro)?
439 .on::<req::OnTypeFormatting>(handlers::handle_on_type_formatting)? 440 .on::<req::OnTypeFormatting>(handlers::handle_on_type_formatting)?
440 .on::<req::DocumentSymbolRequest>(handlers::handle_document_symbol)? 441 .on::<req::DocumentSymbolRequest>(handlers::handle_document_symbol)?
441 .on::<req::WorkspaceSymbol>(handlers::handle_workspace_symbol)? 442 .on::<req::WorkspaceSymbol>(handlers::handle_workspace_symbol)?
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs
index 20f9aee13..0461bf385 100644
--- a/crates/ra_lsp_server/src/main_loop/handlers.rs
+++ b/crates/ra_lsp_server/src/main_loop/handlers.rs
@@ -47,6 +47,24 @@ pub fn handle_syntax_tree(world: WorldSnapshot, params: req::SyntaxTreeParams) -
47 Ok(res) 47 Ok(res)
48} 48}
49 49
50pub fn handle_expand_macro(
51 world: WorldSnapshot,
52 params: req::ExpandMacroParams,
53) -> Result<Option<req::ExpandedMacro>> {
54 let _p = profile("handle_expand_macro");
55 let file_id = params.text_document.try_conv_with(&world)?;
56 let line_index = world.analysis().file_line_index(file_id)?;
57 let offset = params.position.map(|p| p.conv_with(&line_index));
58
59 match offset {
60 None => Ok(None),
61 Some(offset) => {
62 let res = world.analysis().expand_macro(FilePosition { file_id, offset })?;
63 Ok(res.map(|it| req::ExpandedMacro { name: it.name, expansion: it.expansion }))
64 }
65 }
66}
67
50pub fn handle_selection_range( 68pub fn handle_selection_range(
51 world: WorldSnapshot, 69 world: WorldSnapshot,
52 params: req::SelectionRangeParams, 70 params: req::SelectionRangeParams,
diff --git a/crates/ra_lsp_server/src/req.rs b/crates/ra_lsp_server/src/req.rs
index d25fc5726..39361b7e8 100644
--- a/crates/ra_lsp_server/src/req.rs
+++ b/crates/ra_lsp_server/src/req.rs
@@ -45,6 +45,28 @@ pub struct SyntaxTreeParams {
45 pub range: Option<Range>, 45 pub range: Option<Range>,
46} 46}
47 47
48#[derive(Serialize, Debug)]
49#[serde(rename_all = "camelCase")]
50pub struct ExpandedMacro {
51 pub name: String,
52 pub expansion: String,
53}
54
55pub enum ExpandMacro {}
56
57impl Request for ExpandMacro {
58 type Params = ExpandMacroParams;
59 type Result = Option<ExpandedMacro>;
60 const METHOD: &'static str = "rust-analyzer/expandMacro";
61}
62
63#[derive(Deserialize, Debug)]
64#[serde(rename_all = "camelCase")]
65pub struct ExpandMacroParams {
66 pub text_document: TextDocumentIdentifier,
67 pub position: Option<Position>,
68}
69
48pub enum SelectionRangeRequest {} 70pub enum SelectionRangeRequest {}
49 71
50impl Request for SelectionRangeRequest { 72impl Request for SelectionRangeRequest {