diff options
| author | bors <bors@rust-lang.org> | 2023-09-20 14:38:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-09-20 14:38:08 +0000 |
| commit | d6fef2c7e3be2783369b4b84e320b163b8fd291a (patch) | |
| tree | 4fd1883f7e9383300ed09d968fc92a197a9c1b70 | |
| parent | 4778255b3de9786c59928346470b2ed3cfcdb2c9 (diff) | |
| parent | cac796acb30d3af9a2eb9aff02acfae43a6da537 (diff) | |
| download | rust-d6fef2c7e3be2783369b4b84e320b163b8fd291a.tar.gz rust-d6fef2c7e3be2783369b4b84e320b163b8fd291a.zip | |
Auto merge of #15621 - kpreid:import, r=Veykril
Give `unmerge_use` a label explaining what it will affect. When I'm trying to clean up `use`s, I often feel uncertain about what exactly the effects of choosing an assist will be. This PR makes a small improvement to that by giving “Unmerge use” a label which names the root of the tree that it's going to move, when one exists. There is no test because I didn't see, among the test helpers, a way to assert on the assist label (as opposed to filtering on it). However, I did test the change manually. I looked into making a similar change to “Merge imports”, but that is considerably trickier.
| -rw-r--r-- | crates/ide-assists/src/handlers/unmerge_use.rs | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/crates/ide-assists/src/handlers/unmerge_use.rs b/crates/ide-assists/src/handlers/unmerge_use.rs index dac216b69b7..52df30d9623 100644 --- a/crates/ide-assists/src/handlers/unmerge_use.rs +++ b/crates/ide-assists/src/handlers/unmerge_use.rs @@ -36,29 +36,25 @@ pub(crate) fn unmerge_use(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option< let old_parent_range = use_.syntax().parent()?.text_range(); let new_parent = use_.syntax().parent()?; + // If possible, explain what is going to be done. + let label = match tree.path().and_then(|path| path.first_segment()) { + Some(name) => format!("Unmerge use of `{name}`"), + None => "Unmerge use".into(), + }; + let target = tree.syntax().text_range(); - acc.add( - AssistId("unmerge_use", AssistKind::RefactorRewrite), - "Unmerge use", - target, - |builder| { - let new_use = make::use_( - use_.visibility(), - make::use_tree( - path, - tree.use_tree_list(), - tree.rename(), - tree.star_token().is_some(), - ), - ) - .clone_for_update(); - - tree.remove(); - ted::insert(Position::after(use_.syntax()), new_use.syntax()); - - builder.replace(old_parent_range, new_parent.to_string()); - }, - ) + acc.add(AssistId("unmerge_use", AssistKind::RefactorRewrite), label, target, |builder| { + let new_use = make::use_( + use_.visibility(), + make::use_tree(path, tree.use_tree_list(), tree.rename(), tree.star_token().is_some()), + ) + .clone_for_update(); + + tree.remove(); + ted::insert(Position::after(use_.syntax()), new_use.syntax()); + + builder.replace(old_parent_range, new_parent.to_string()); + }) } fn resolve_full_path(tree: &ast::UseTree) -> Option<ast::Path> { |
