aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_lsp_server/src/main_loop/handlers.rs
diff options
context:
space:
mode:
authorEdwin Cheng <[email protected]>2019-11-17 18:47:50 +0000
committerEdwin Cheng <[email protected]>2019-11-19 13:49:06 +0000
commit3ccd05fedc46796f793295901a8619492256468e (patch)
tree018f46fca85c4d2e0ef4b73fa3971166e65de3e2 /crates/ra_lsp_server/src/main_loop/handlers.rs
parentd2782ab1c1ec0b9f2ac2131859a9ee880f97bc12 (diff)
Add recursive expand in vscode
Diffstat (limited to 'crates/ra_lsp_server/src/main_loop/handlers.rs')
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs
index 20f9aee13..783b0a827 100644
--- a/crates/ra_lsp_server/src/main_loop/handlers.rs
+++ b/crates/ra_lsp_server/src/main_loop/handlers.rs
@@ -47,6 +47,21 @@ 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<(String, String)>> {
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) => Ok(world.analysis().expand_macro(FilePosition { file_id, offset })?),
62 }
63}
64
50pub fn handle_selection_range( 65pub fn handle_selection_range(
51 world: WorldSnapshot, 66 world: WorldSnapshot,
52 params: req::SelectionRangeParams, 67 params: req::SelectionRangeParams,