|
3 | 3 | * Licensed under the MIT License. See License.txt in the project root for license information. |
4 | 4 | *--------------------------------------------------------------------------------------------*/ |
5 | 5 |
|
6 | | -import { CompletionItemProvider, TextDocument, Position, CompletionContext, CompletionList, CompletionItem, MarkdownString, TextEdit, Range, SnippetString, window, Selection } from "vscode"; |
| 6 | +import { CompletionItemProvider, TextDocument, Position, CompletionContext, CompletionList, CompletionItem, MarkdownString, TextEdit, Range, SnippetString, window, Selection, WorkspaceEdit, workspace } from "vscode"; |
7 | 7 | import AbstractProvider from "./abstractProvider"; |
8 | 8 | import * as protocol from "../omnisharp/protocol"; |
9 | 9 | import * as serverUtils from '../omnisharp/utils'; |
@@ -69,19 +69,23 @@ export default class OmnisharpCompletionProvider extends AbstractProvider implem |
69 | 69 |
|
70 | 70 | public async afterInsert(item: protocol.OmnisharpCompletionItem) { |
71 | 71 | try { |
| 72 | + const uri = window.activeTextEditor.document.uri; |
72 | 73 | const response = await serverUtils.getCompletionAfterInsert(this._server, { Item: item }); |
73 | 74 |
|
74 | 75 | if (!response.Changes || !response.Column || !response.Line) { |
75 | 76 | return; |
76 | 77 | } |
77 | 78 |
|
78 | | - const applied = await window.activeTextEditor.edit(editBuilder => { |
79 | | - for (const change of response.Changes) { |
80 | | - const replaceRange = new Range(change.StartLine, change.StartColumn, change.EndLine, change.EndColumn); |
81 | | - editBuilder.replace(replaceRange, change.NewText); |
82 | | - } |
83 | | - }); |
| 79 | + let edit = new WorkspaceEdit(); |
| 80 | + edit.set(uri, response.Changes.map(change => ({ |
| 81 | + newText: change.NewText, |
| 82 | + range: new Range(new Position(change.StartLine, change.StartColumn), |
| 83 | + new Position(change.EndLine, change.EndColumn)) |
| 84 | + }))); |
84 | 85 |
|
| 86 | + edit = await this._languageMiddlewareFeature.remap("remapWorkspaceEdit", edit, CancellationToken.None); |
| 87 | + |
| 88 | + const applied = await workspace.applyEdit(edit); |
85 | 89 | if (!applied) { |
86 | 90 | return; |
87 | 91 | } |
|
0 commit comments