about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-07-23 12:33:24 +0000
committerGitHub <noreply@github.com>2020-07-23 12:33:24 +0000
commit85532e2df3f713f0fb9096328e86ec7e74934c12 (patch)
tree243b2e6000eca4941ae9c1a869730ac31cd4591c
parent803f3613ba041a24b50c7e8249e9ee3195836ea8 (diff)
parent1b5a74ef18389f7d1a90cb6945a17bc412f707b4 (diff)
downloadrust-85532e2df3f713f0fb9096328e86ec7e74934c12.tar.gz
rust-85532e2df3f713f0fb9096328e86ec7e74934c12.zip
Merge #5480
5480: Fix snippetTextEdits applying to other files r=matklad a=TimoFreiberg

Fixes #4551
`vscode.window.visibleTextEditors` only contains editors whose contents are being displayed at the moment, so the previous logic only worked if the other file for which a snippetTextEdit is being received was visible in a separate split.

I feel that this is a hacky approach, so feel free to reject it for something nicer :)

Co-authored-by: Timo Freiberg <timo.freiberg@gmail.com>
-rw-r--r--editors/code/src/snippets.ts4
1 files changed, 4 insertions, 0 deletions
diff --git a/editors/code/src/snippets.ts b/editors/code/src/snippets.ts
index bcb3f2cc761..258b49982ef 100644
--- a/editors/code/src/snippets.ts
+++ b/editors/code/src/snippets.ts
@@ -6,6 +6,10 @@ export async function applySnippetWorkspaceEdit(edit: vscode.WorkspaceEdit) {
     assert(edit.entries().length === 1, `bad ws edit: ${JSON.stringify(edit)}`);
     const [uri, edits] = edit.entries()[0];
 
+    if (vscode.window.activeTextEditor?.document.uri !== uri) {
+        // `vscode.window.visibleTextEditors` only contains editors whose contents are being displayed
+        await vscode.window.showTextDocument(uri, {});
+    }
     const editor = vscode.window.visibleTextEditors.find((it) => it.document.uri.toString() === uri.toString());
     if (!editor) return;
     await applySnippetTextEdits(editor, edits);