diff options
author | Jeremy Kolb <[email protected]> | 2020-06-28 23:36:05 +0100 |
---|---|---|
committer | kjeremy <[email protected]> | 2020-07-02 22:13:02 +0100 |
commit | b98c16a034620913f3dbc67bd3f48ad2686face7 (patch) | |
tree | 10f90c96791cfd82bb160a1a5c7474ccc17d5b8b /crates/ra_assists/src/handlers/fill_match_arms.rs | |
parent | 4cb8bf03c588dcf244d25785de3878b6ef3f7958 (diff) |
Categorize assists
Diffstat (limited to 'crates/ra_assists/src/handlers/fill_match_arms.rs')
-rw-r--r-- | crates/ra_assists/src/handlers/fill_match_arms.rs | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/crates/ra_assists/src/handlers/fill_match_arms.rs b/crates/ra_assists/src/handlers/fill_match_arms.rs index 5b1235682..96610dbf5 100644 --- a/crates/ra_assists/src/handlers/fill_match_arms.rs +++ b/crates/ra_assists/src/handlers/fill_match_arms.rs | |||
@@ -8,7 +8,7 @@ use test_utils::mark; | |||
8 | 8 | ||
9 | use crate::{ | 9 | use crate::{ |
10 | utils::{render_snippet, Cursor, FamousDefs}, | 10 | utils::{render_snippet, Cursor, FamousDefs}, |
11 | AssistContext, AssistId, Assists, | 11 | AssistContext, AssistId, AssistKind, Assists, |
12 | }; | 12 | }; |
13 | 13 | ||
14 | // Assist: fill_match_arms | 14 | // Assist: fill_match_arms |
@@ -103,24 +103,30 @@ pub(crate) fn fill_match_arms(acc: &mut Assists, ctx: &AssistContext) -> Option< | |||
103 | } | 103 | } |
104 | 104 | ||
105 | let target = match_expr.syntax().text_range(); | 105 | let target = match_expr.syntax().text_range(); |
106 | acc.add(AssistId("fill_match_arms"), "Fill match arms", target, |builder| { | 106 | acc.add( |
107 | let new_arm_list = match_arm_list.remove_placeholder(); | 107 | AssistId("fill_match_arms"), |
108 | let n_old_arms = new_arm_list.arms().count(); | 108 | AssistKind::RefactorRewrite, |
109 | let new_arm_list = new_arm_list.append_arms(missing_arms); | 109 | "Fill match arms", |
110 | let first_new_arm = new_arm_list.arms().nth(n_old_arms); | 110 | target, |
111 | let old_range = match_arm_list.syntax().text_range(); | 111 | |builder| { |
112 | match (first_new_arm, ctx.config.snippet_cap) { | 112 | let new_arm_list = match_arm_list.remove_placeholder(); |
113 | (Some(first_new_arm), Some(cap)) => { | 113 | let n_old_arms = new_arm_list.arms().count(); |
114 | let snippet = render_snippet( | 114 | let new_arm_list = new_arm_list.append_arms(missing_arms); |
115 | cap, | 115 | let first_new_arm = new_arm_list.arms().nth(n_old_arms); |
116 | new_arm_list.syntax(), | 116 | let old_range = match_arm_list.syntax().text_range(); |
117 | Cursor::Before(first_new_arm.syntax()), | 117 | match (first_new_arm, ctx.config.snippet_cap) { |
118 | ); | 118 | (Some(first_new_arm), Some(cap)) => { |
119 | builder.replace_snippet(cap, old_range, snippet); | 119 | let snippet = render_snippet( |
120 | } | 120 | cap, |
121 | _ => builder.replace(old_range, new_arm_list.to_string()), | 121 | new_arm_list.syntax(), |
122 | } | 122 | Cursor::Before(first_new_arm.syntax()), |
123 | }) | 123 | ); |
124 | builder.replace_snippet(cap, old_range, snippet); | ||
125 | } | ||
126 | _ => builder.replace(old_range, new_arm_list.to_string()), | ||
127 | } | ||
128 | }, | ||
129 | ) | ||
124 | } | 130 | } |
125 | 131 | ||
126 | fn is_variant_missing(existing_arms: &mut Vec<MatchArm>, var: &Pat) -> bool { | 132 | fn is_variant_missing(existing_arms: &mut Vec<MatchArm>, var: &Pat) -> bool { |