Skip to content

Commit 48187ca

Browse files
authored
Readd incremental changes (#4088)
* Readd incremental changes. * React to OmniSharp/omnisharp-roslyn#1962
1 parent b679993 commit 48187ca

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

src/features/changeForwarding.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { Uri, workspace } from 'vscode';
77
import { OmniSharpServer } from '../omnisharp/server';
88
import * as serverUtils from '../omnisharp/utils';
9-
import { FileChangeType } from '../omnisharp/protocol';
9+
import { FileChangeType, LinePositionSpanTextChange } from '../omnisharp/protocol';
1010
import { IDisposable } from '../Disposable';
1111
import CompositeDisposable from '../CompositeDisposable';
1212

@@ -23,7 +23,18 @@ function forwardDocumentChanges(server: OmniSharpServer): IDisposable {
2323
return;
2424
}
2525

26-
serverUtils.updateBuffer(server, { Buffer: document.getText(), FileName: document.fileName }).catch(err => {
26+
const lineChanges = event.contentChanges.map(function (change): LinePositionSpanTextChange {
27+
const range = change.range;
28+
return {
29+
NewText: change.text,
30+
StartLine: range.start.line + 1,
31+
StartColumn: range.start.character + 1,
32+
EndLine: range.end.line + 1,
33+
EndColumn: range.end.character + 1
34+
};
35+
});
36+
37+
serverUtils.updateBuffer(server, { Changes: lineChanges, FileName: document.fileName, ApplyChangesTogether: true }).catch(err => {
2738
console.error(err);
2839
return err;
2940
});

src/features/fixAllProvider.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,14 @@ export class FixAllProvider extends AbstractProvider implements vscode.CodeActio
7171
}
7272

7373
private async applyFixes(fileName: string, scope: FixAllScope, fixAllFilter: FixAllItem[]): Promise<boolean | string | {}> {
74-
let response = await serverUtils.runFixAll(this.server, { FileName: fileName, Scope: scope, FixAllFilter: fixAllFilter, WantsAllCodeActionOperations: true, WantsTextChanges: true });
74+
let response = await serverUtils.runFixAll(this.server, {
75+
FileName: fileName,
76+
Scope: scope,
77+
FixAllFilter: fixAllFilter,
78+
WantsAllCodeActionOperations: true,
79+
WantsTextChanges: true,
80+
ApplyChanges: false
81+
});
7582

7683
if (response && Array.isArray(response.Changes)) {
7784
let edit = new vscode.WorkspaceEdit();
@@ -94,7 +101,7 @@ export class FixAllProvider extends AbstractProvider implements vscode.CodeActio
94101
{
95102
// The CodeAction requested that we open a file.
96103
// Record that file name and keep processing CodeActions.
97-
// If a CodeAction requests that we open multiple files
104+
// If a CodeAction requests that we open multiple files
98105
// we only open the last one (what would it mean to open multiple files?)
99106
fileToOpen = vscode.Uri.file(change.FileName);
100107
}
@@ -127,7 +134,7 @@ export class FixAllProvider extends AbstractProvider implements vscode.CodeActio
127134
let next = applyEditPromise;
128135
if (renamedFiles.some(r => r.fsPath == vscode.window.activeTextEditor.document.uri.fsPath))
129136
{
130-
next = applyEditPromise.then(_ =>
137+
next = applyEditPromise.then(_ =>
131138
{
132139
return vscode.commands.executeCommand("workbench.action.closeActiveEditor");
133140
});
@@ -141,4 +148,4 @@ export class FixAllProvider extends AbstractProvider implements vscode.CodeActio
141148
: next;
142149
}
143150
}
144-
}
151+
}

src/omnisharp/protocol.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export interface Request extends FileBasedRequest {
7272
Column?: number;
7373
Buffer?: string;
7474
Changes?: LinePositionSpanTextChange[];
75+
ApplyChangesTogether?: boolean;
7576
}
7677

7778
export interface GoToDefinitionRequest extends Request {
@@ -485,6 +486,7 @@ export interface RunFixAllRequest extends FileBasedRequest {
485486
FixAllFilter?: FixAllItem[];
486487
WantsTextChanges: boolean;
487488
WantsAllCodeActionOperations: boolean;
489+
ApplyChanges: boolean;
488490
}
489491

490492
export interface QuickInfoRequest extends Request {

0 commit comments

Comments
 (0)