Skip to content

Commit 4a9bcf5

Browse files
committed
Use the editor remap API to make razor interop work.
1 parent 6f47507 commit 4a9bcf5

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/features/completionProvider.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

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";
77
import AbstractProvider from "./abstractProvider";
88
import * as protocol from "../omnisharp/protocol";
99
import * as serverUtils from '../omnisharp/utils';
@@ -69,19 +69,23 @@ export default class OmnisharpCompletionProvider extends AbstractProvider implem
6969

7070
public async afterInsert(item: protocol.OmnisharpCompletionItem) {
7171
try {
72+
const uri = window.activeTextEditor.document.uri;
7273
const response = await serverUtils.getCompletionAfterInsert(this._server, { Item: item });
7374

7475
if (!response.Changes || !response.Column || !response.Line) {
7576
return;
7677
}
7778

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+
})));
8485

86+
edit = await this._languageMiddlewareFeature.remap("remapWorkspaceEdit", edit, CancellationToken.None);
87+
88+
const applied = await workspace.applyEdit(edit);
8589
if (!applied) {
8690
return;
8791
}

0 commit comments

Comments
 (0)