]> git.lizzy.rs Git - rust.git/commitdiff
Apply text edits manually in vscode client
authorLukas Wirth <lukastw97@gmail.com>
Tue, 29 Dec 2020 14:43:17 +0000 (15:43 +0100)
committerLukas Wirth <lukastw97@gmail.com>
Tue, 29 Dec 2020 14:43:17 +0000 (15:43 +0100)
editors/code/src/commands.ts

index 9d4823a34de642e38bf755c05144b26c7196b1e7..b12e134ca97e8ce5b60d51a33a343f78fa9d9199 100644 (file)
@@ -469,8 +469,14 @@ export function resolveCodeAction(ctx: Ctx): Cmd {
         if (!item.edit) {
             return;
         }
-        const edit = client.protocol2CodeConverter.asWorkspaceEdit(item.edit);
-        await vscode.workspace.applyEdit(edit);
+        const itemEdit = item.edit;
+        const edit = client.protocol2CodeConverter.asWorkspaceEdit(itemEdit);
+        // filter out all text edits and recreate the WorkspaceEdit without them so we can apply
+        // snippet edits on our own
+        const itemEditWithoutTextEdits = { ...item, documentChanges: itemEdit.documentChanges?.filter(change => "kind" in change) };
+        const editWithoutTextEdits = client.protocol2CodeConverter.asWorkspaceEdit(itemEditWithoutTextEdits);
+        await applySnippetWorkspaceEdit(edit);
+        await vscode.workspace.applyEdit(editWithoutTextEdits);
     };
 }