diff options
-rw-r--r-- | crates/ide_assists/src/handlers/reorder_impl.rs | 40 | ||||
-rw-r--r-- | docs/user/manual.adoc | 35 |
2 files changed, 71 insertions, 4 deletions
diff --git a/crates/ide_assists/src/handlers/reorder_impl.rs b/crates/ide_assists/src/handlers/reorder_impl.rs index 72d889248..54a9a468e 100644 --- a/crates/ide_assists/src/handlers/reorder_impl.rs +++ b/crates/ide_assists/src/handlers/reorder_impl.rs | |||
@@ -79,9 +79,12 @@ pub(crate) fn reorder_impl(acc: &mut Assists, ctx: &AssistContext) -> Option<()> | |||
79 | "Sort methods", | 79 | "Sort methods", |
80 | target, | 80 | target, |
81 | |builder| { | 81 | |builder| { |
82 | methods.into_iter().zip(sorted).for_each(|(old, new)| { | 82 | let methods = |
83 | ted::replace(builder.make_ast_mut(old).syntax(), new.clone_for_update().syntax()) | 83 | methods.into_iter().map(|fn_| builder.make_ast_mut(fn_)).collect::<Vec<_>>(); |
84 | }); | 84 | methods |
85 | .into_iter() | ||
86 | .zip(sorted) | ||
87 | .for_each(|(old, new)| ted::replace(old.syntax(), new.clone_for_update().syntax())); | ||
85 | }, | 88 | }, |
86 | ) | 89 | ) |
87 | } | 90 | } |
@@ -160,7 +163,7 @@ $0impl Bar for Foo {} | |||
160 | } | 163 | } |
161 | 164 | ||
162 | #[test] | 165 | #[test] |
163 | fn reorder_impl_trait_methods() { | 166 | fn reorder_impl_trait_functions() { |
164 | check_assist( | 167 | check_assist( |
165 | reorder_impl, | 168 | reorder_impl, |
166 | r#" | 169 | r#" |
@@ -197,4 +200,33 @@ impl Bar for Foo { | |||
197 | "#, | 200 | "#, |
198 | ) | 201 | ) |
199 | } | 202 | } |
203 | |||
204 | #[test] | ||
205 | fn reorder_impl_trait_methods_uneven_ident_lengths() { | ||
206 | check_assist( | ||
207 | reorder_impl, | ||
208 | r#" | ||
209 | trait Bar { | ||
210 | fn foo(&mut self) {} | ||
211 | fn fooo(&mut self) {} | ||
212 | } | ||
213 | |||
214 | struct Foo; | ||
215 | impl Bar for Foo { | ||
216 | fn fooo(&mut self) {} | ||
217 | fn foo(&mut self) {$0} | ||
218 | }"#, | ||
219 | r#" | ||
220 | trait Bar { | ||
221 | fn foo(&mut self) {} | ||
222 | fn fooo(&mut self) {} | ||
223 | } | ||
224 | |||
225 | struct Foo; | ||
226 | impl Bar for Foo { | ||
227 | fn foo(&mut self) {} | ||
228 | fn fooo(&mut self) {} | ||
229 | }"#, | ||
230 | ) | ||
231 | } | ||
200 | } | 232 | } |
diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index 54195adb7..58722aaa3 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc | |||
@@ -611,6 +611,41 @@ For example, mutable bindings are underlined by default and you can override thi | |||
611 | } | 611 | } |
612 | ---- | 612 | ---- |
613 | 613 | ||
614 | Most themes doesn't support styling unsafe operations differently yet. You can fix this by adding overrides for the rules `operator.unsafe`, `function.unsafe`, and `method.unsafe`: | ||
615 | |||
616 | [source,jsonc] | ||
617 | ---- | ||
618 | { | ||
619 | "editor.semanticTokenColorCustomizations": { | ||
620 | "rules": { | ||
621 | "operator.unsafe": "#ff6600", | ||
622 | "function.unsafe": "#ff6600" | ||
623 | "method.unsafe": "#ff6600" | ||
624 | } | ||
625 | }, | ||
626 | } | ||
627 | ---- | ||
628 | |||
629 | In addition to the top-level rules you can specify overrides for specific themes. For example, if you wanted to use a darker text color on a specific light theme, you might write: | ||
630 | |||
631 | [source,jsonc] | ||
632 | ---- | ||
633 | { | ||
634 | "editor.semanticTokenColorCustomizations": { | ||
635 | "rules": { | ||
636 | "operator.unsafe": "#ff6600" | ||
637 | }, | ||
638 | "[Ayu Light]": { | ||
639 | "rules": { | ||
640 | "operator.unsafe": "#572300" | ||
641 | } | ||
642 | } | ||
643 | }, | ||
644 | } | ||
645 | ---- | ||
646 | |||
647 | Make sure you include the brackets around the theme name. For example, use `"[Ayu Light]"` to customize the theme Ayu Light. | ||
648 | |||
614 | ==== Special `when` clause context for keybindings. | 649 | ==== Special `when` clause context for keybindings. |
615 | You may use `inRustProject` context to configure keybindings for rust projects only. | 650 | You may use `inRustProject` context to configure keybindings for rust projects only. |
616 | For example: | 651 | For example: |