Skip to content

Commit da12d1f

Browse files
committed
Expose sendRequestWithProgress as experimental API
1 parent 6c3f22d commit da12d1f

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

src/activateRoslyn.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export function activateRoslyn(
9494
determineBrowserType: BlazorDebugConfigurationProvider.determineBrowserType,
9595
experimental: {
9696
sendServerRequest: async (t, p, ct) => await languageServerExport.sendRequest(t, p, ct),
97+
sendServerRequestWithProgress: async (t, p, pr, ct) => await languageServerExport.sendRequestWithProgress(t, p, pr, ct),
9798
languageServerEvents: roslynLanguageServerEvents,
9899
},
99100
getComponentFolder: (componentName) => {

src/csharpExtensionExports.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { Advisor } from './omnisharp/features/diagnosticsProvider';
88
import { EventStream } from './eventStream';
99
import TestManager from './omnisharp/features/dotnetTest';
1010
import { GlobalBrokeredServiceContainer } from '@microsoft/servicehub-framework';
11-
import { RequestType } from 'vscode-languageclient/node';
11+
import { PartialResultParams, ProtocolRequestType, RequestType } from 'vscode-languageclient/node';
1212
import { LanguageServerEvents } from './lsptoolshost/server/languageServerEvents';
1313

1414
export interface OmnisharpExtensionExports {
@@ -34,5 +34,11 @@ export interface CSharpExtensionExperimentalExports {
3434
params: Params,
3535
token: vscode.CancellationToken
3636
) => Promise<Response>;
37+
sendServerRequestWithProgress<Params extends PartialResultParams, Response, PartialResult, Error, RegistrationOptions>(
38+
type: ProtocolRequestType<Params, Response, PartialResult, Error, RegistrationOptions>,
39+
params: Params,
40+
onProgress: (p: PartialResult) => Promise<any>,
41+
token?: vscode.CancellationToken
42+
): Promise<Response>;
3743
languageServerEvents: LanguageServerEvents;
3844
}

src/lsptoolshost/extensions/roslynLanguageServerExportChannel.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import * as vscode from 'vscode';
66
import { RequestType } from 'vscode-jsonrpc';
77
import { RoslynLanguageServer } from '../server/roslynLanguageServer';
8+
import { PartialResultParams, ProtocolRequestType } from 'vscode-languageserver-protocol';
89

910
export class RoslynLanguageServerExport {
1011
constructor(private _serverInitialized: Promise<RoslynLanguageServer>) {}
@@ -20,4 +21,17 @@ export class RoslynLanguageServerExport {
2021
const newType = new RequestType<Params, Response, Error>(type.method);
2122
return await server.sendRequest(newType, params, token);
2223
}
24+
25+
public async sendRequestWithProgress<Params extends PartialResultParams, Response, PartialResult, Error, RegistrationOptions>(
26+
type: ProtocolRequestType<Params, Response, PartialResult, Error, RegistrationOptions>,
27+
params: Params,
28+
onProgress: (p: PartialResult) => Promise<any>,
29+
token?: vscode.CancellationToken
30+
): Promise<Response> {
31+
const server = await this._serverInitialized;
32+
// We need to recreate the type parameter to ensure that the prototypes line up. The `ProtocolRequestType` we receive could have been
33+
// from a different version.
34+
const newType = new ProtocolRequestType<Params, Response, PartialResult, Error, RegistrationOptions>(type.method);
35+
return await server.sendRequestWithProgress(newType, params, onProgress, token);
36+
}
2337
}

0 commit comments

Comments
 (0)