diff options
author | Timo Freiberg <[email protected]> | 2020-04-20 17:02:36 +0100 |
---|---|---|
committer | Timo Freiberg <[email protected]> | 2020-04-21 22:04:44 +0100 |
commit | 74780a15f65916d08942eb53c43b8e8c0b62cb48 (patch) | |
tree | b34aefbe32e61d7c2630e74cde58060a850093e0 | |
parent | ba8faf3efc7a3a373571f98569699bbe684779b3 (diff) |
Jump to sourceChanges in other files
-rw-r--r-- | crates/ra_assists/src/handlers/add_function.rs | 13 | ||||
-rw-r--r-- | crates/ra_assists/src/lib.rs | 10 | ||||
-rw-r--r-- | editors/code/src/source_change.ts | 8 |
3 files changed, 15 insertions, 16 deletions
diff --git a/crates/ra_assists/src/handlers/add_function.rs b/crates/ra_assists/src/handlers/add_function.rs index b65ded871..9bd46f5dc 100644 --- a/crates/ra_assists/src/handlers/add_function.rs +++ b/crates/ra_assists/src/handlers/add_function.rs | |||
@@ -907,23 +907,14 @@ mod foo; | |||
907 | fn main() { | 907 | fn main() { |
908 | foo::bar<|>() | 908 | foo::bar<|>() |
909 | } | 909 | } |
910 | |||
911 | //- /foo.rs | 910 | //- /foo.rs |
912 | |||
913 | ", | 911 | ", |
914 | r" | 912 | r" |
915 | //- /main.rs | ||
916 | mod foo; | ||
917 | 913 | ||
918 | fn main() { | ||
919 | foo::bar() | ||
920 | } | ||
921 | 914 | ||
922 | //- /foo.rs | 915 | pub(crate) fn bar() { |
923 | fn bar() { | ||
924 | <|>todo!() | 916 | <|>todo!() |
925 | } | 917 | }", |
926 | ", | ||
927 | ) | 918 | ) |
928 | } | 919 | } |
929 | 920 | ||
diff --git a/crates/ra_assists/src/lib.rs b/crates/ra_assists/src/lib.rs index fb57486cb..ccc95735f 100644 --- a/crates/ra_assists/src/lib.rs +++ b/crates/ra_assists/src/lib.rs | |||
@@ -197,7 +197,7 @@ mod helpers { | |||
197 | use ra_ide_db::{symbol_index::SymbolsDatabase, RootDatabase}; | 197 | use ra_ide_db::{symbol_index::SymbolsDatabase, RootDatabase}; |
198 | use test_utils::{add_cursor, assert_eq_text, extract_range_or_offset, RangeOrOffset}; | 198 | use test_utils::{add_cursor, assert_eq_text, extract_range_or_offset, RangeOrOffset}; |
199 | 199 | ||
200 | use crate::{AssistCtx, AssistHandler}; | 200 | use crate::{AssistCtx, AssistFile, AssistHandler}; |
201 | use hir::Semantics; | 201 | use hir::Semantics; |
202 | 202 | ||
203 | pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { | 203 | pub(crate) fn with_single_file(text: &str) -> (RootDatabase, FileId) { |
@@ -259,7 +259,13 @@ mod helpers { | |||
259 | (Some(assist), ExpectedResult::After(after)) => { | 259 | (Some(assist), ExpectedResult::After(after)) => { |
260 | let action = assist.0[0].action.clone().unwrap(); | 260 | let action = assist.0[0].action.clone().unwrap(); |
261 | 261 | ||
262 | let mut actual = action.edit.apply(&text_without_caret); | 262 | let assisted_file_text = if let AssistFile::TargetFile(file_id) = action.file { |
263 | db.file_text(file_id).as_ref().to_owned() | ||
264 | } else { | ||
265 | text_without_caret | ||
266 | }; | ||
267 | |||
268 | let mut actual = action.edit.apply(&assisted_file_text); | ||
263 | match action.cursor_position { | 269 | match action.cursor_position { |
264 | None => { | 270 | None => { |
265 | if let RangeOrOffset::Offset(before_cursor_pos) = range_or_offset { | 271 | if let RangeOrOffset::Offset(before_cursor_pos) = range_or_offset { |
diff --git a/editors/code/src/source_change.ts b/editors/code/src/source_change.ts index 399a150c6..af8f1df51 100644 --- a/editors/code/src/source_change.ts +++ b/editors/code/src/source_change.ts | |||
@@ -37,11 +37,13 @@ export async function applySourceChange(ctx: Ctx, change: ra.SourceChange) { | |||
37 | toReveal.position, | 37 | toReveal.position, |
38 | ); | 38 | ); |
39 | const editor = vscode.window.activeTextEditor; | 39 | const editor = vscode.window.activeTextEditor; |
40 | if (!editor || editor.document.uri.toString() !== uri.toString()) { | 40 | if (!editor || !editor.selection.isEmpty) { |
41 | return; | 41 | return; |
42 | } | 42 | } |
43 | if (!editor.selection.isEmpty) { | 43 | |
44 | return; | 44 | if (editor.document.uri !== uri) { |
45 | const doc = await vscode.workspace.openTextDocument(uri); | ||
46 | await vscode.window.showTextDocument(doc); | ||
45 | } | 47 | } |
46 | editor.selection = new vscode.Selection(position, position); | 48 | editor.selection = new vscode.Selection(position, position); |
47 | editor.revealRange( | 49 | editor.revealRange( |