Use trimmed selection range

This commit is contained in:
Laurențiu Nicola 2021-10-16 13:39:55 +03:00
parent 2efcff7f75
commit 2bf5f14666

View File

@ -51,7 +51,7 @@ use super::remove_unused_param::range_to_remove;
// } // }
// ``` // ```
pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext) -> Option<()> { pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
if ctx.frange.range.is_empty() { if ctx.has_empty_selection() {
return None; return None;
} }
@ -66,7 +66,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext) -> Option<(
curr_parent_module = ast::Module::cast(mod_syn_opt); curr_parent_module = ast::Module::cast(mod_syn_opt);
} }
let mut module = extract_target(&node, ctx.frange.range)?; let mut module = extract_target(&node, ctx.selection_trimmed())?;
if module.body_items.len() == 0 { if module.body_items.len() == 0 {
return None; return None;
} }
@ -119,7 +119,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext) -> Option<(
let mut usages_to_be_updated_for_curr_file = vec![]; let mut usages_to_be_updated_for_curr_file = vec![];
for usages_to_be_updated_for_file in usages_to_be_processed { for usages_to_be_updated_for_file in usages_to_be_processed {
if usages_to_be_updated_for_file.0 == ctx.frange.file_id { if usages_to_be_updated_for_file.0 == ctx.file_id() {
usages_to_be_updated_for_curr_file = usages_to_be_updated_for_file.1; usages_to_be_updated_for_curr_file = usages_to_be_updated_for_file.1;
continue; continue;
} }
@ -129,7 +129,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext) -> Option<(
} }
} }
builder.edit_file(ctx.frange.file_id); builder.edit_file(ctx.file_id());
for usage_to_be_processed in usages_to_be_updated_for_curr_file { for usage_to_be_processed in usages_to_be_updated_for_curr_file {
builder.replace(usage_to_be_processed.0, usage_to_be_processed.1) builder.replace(usage_to_be_processed.0, usage_to_be_processed.1)
} }
@ -426,11 +426,11 @@ impl Module {
ctx: &AssistContext, ctx: &AssistContext,
) -> Option<TextRange> { ) -> Option<TextRange> {
//We only need to find in the current file //We only need to find in the current file
let selection_range = ctx.frange.range; let selection_range = ctx.selection_trimmed();
let search_scope = SearchScope::single_file(ctx.frange.file_id); let curr_file_id = ctx.file_id();
let search_scope = SearchScope::single_file(curr_file_id);
let usage_res = def.usages(&ctx.sema).in_scope(search_scope).all(); let usage_res = def.usages(&ctx.sema).in_scope(search_scope).all();
let curr_file_id = ctx.frange.file_id; let file = ctx.sema.parse(curr_file_id);
let file = ctx.sema.parse(ctx.frange.file_id);
let mut exists_inside_sel = false; let mut exists_inside_sel = false;
let mut exists_outside_sel = false; let mut exists_outside_sel = false;
@ -470,7 +470,7 @@ impl Module {
let use_stmt_opt: Option<ast::Use> = usage_res.into_iter().find_map(|x| { let use_stmt_opt: Option<ast::Use> = usage_res.into_iter().find_map(|x| {
let file_id = x.0; let file_id = x.0;
let mut use_opt: Option<ast::Use> = None; let mut use_opt: Option<ast::Use> = None;
if file_id == ctx.frange.file_id { if file_id == curr_file_id {
(&x.1).into_iter().for_each(|x| { (&x.1).into_iter().for_each(|x| {
let node_opt: Option<ast::Use> = find_node_at_range(file.syntax(), x.range); let node_opt: Option<ast::Use> = find_node_at_range(file.syntax(), x.range);
if let Some(node) = node_opt { if let Some(node) = node_opt {