Skip to content

Commit 185207f

Browse files
authored
Expose sendRequestWithProgress as experimental API (#8074)
2 parents 6c3f22d + adfb155 commit 185207f

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

src/activateRoslyn.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ 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) =>
98+
await languageServerExport.sendRequestWithProgress(t, p, pr, ct),
9799
languageServerEvents: roslynLanguageServerEvents,
98100
},
99101
getComponentFolder: (componentName) => {

src/csharpExtensionExports.ts

Lines changed: 13 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,17 @@ export interface CSharpExtensionExperimentalExports {
3434
params: Params,
3535
token: vscode.CancellationToken
3636
) => Promise<Response>;
37+
sendServerRequestWithProgress<
38+
Params extends PartialResultParams,
39+
Response,
40+
PartialResult,
41+
Error,
42+
RegistrationOptions
43+
>(
44+
type: ProtocolRequestType<Params, Response, PartialResult, Error, RegistrationOptions>,
45+
params: Params,
46+
onProgress: (p: PartialResult) => Promise<any>,
47+
token?: vscode.CancellationToken
48+
): Promise<Response>;
3749
languageServerEvents: LanguageServerEvents;
3850
}

src/lsptoolshost/extensions/roslynLanguageServerExportChannel.ts

Lines changed: 22 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,25 @@ 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<
26+
Params extends PartialResultParams,
27+
Response,
28+
PartialResult,
29+
Error,
30+
RegistrationOptions
31+
>(
32+
type: ProtocolRequestType<Params, Response, PartialResult, Error, RegistrationOptions>,
33+
params: Params,
34+
onProgress: (p: PartialResult) => Promise<any>,
35+
token?: vscode.CancellationToken
36+
): Promise<Response> {
37+
const server = await this._serverInitialized;
38+
// We need to recreate the type parameter to ensure that the prototypes line up. The `ProtocolRequestType` we receive could have been
39+
// from a different version.
40+
const newType = new ProtocolRequestType<Params, Response, PartialResult, Error, RegistrationOptions>(
41+
type.method
42+
);
43+
return await server.sendRequestWithProgress(newType, params, onProgress, token);
44+
}
2345
}

0 commit comments

Comments
 (0)