Skip to content

Commit 61e010f

Browse files
committed
Inform the server when a Razor document is closed
1 parent 6b0da5b commit 61e010f

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/lsptoolshost/razor/htmlDocumentManager.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,22 @@ import { getUriPath } from '../../razor/src/uriPaths';
1010
import { virtualHtmlSuffix } from '../../razor/src/razorConventions';
1111
import { HtmlDocumentContentProvider } from './htmlDocumentContentProvider';
1212
import { HtmlDocument } from './htmlDocument';
13+
import { RoslynLanguageServer } from '../server/roslynLanguageServer';
14+
import { RequestType, TextDocumentIdentifier } from 'vscode-languageserver-protocol';
1315

1416
export class HtmlDocumentManager {
1517
private readonly htmlDocuments: { [hostDocumentPath: string]: HtmlDocument } = {};
1618
private readonly contentProvider: HtmlDocumentContentProvider;
1719

18-
constructor(private readonly platformInfo: PlatformInformation, private readonly logger: RazorLogger) {
20+
private readonly razorDocumentClosedRequest: RequestType<TextDocumentIdentifier, void, Error> = new RequestType(
21+
'razor/documentClosed'
22+
);
23+
24+
constructor(
25+
private readonly platformInfo: PlatformInformation,
26+
private readonly roslynLanguageServer: RoslynLanguageServer,
27+
private readonly logger: RazorLogger
28+
) {
1929
this.contentProvider = new HtmlDocumentContentProvider(this, this.logger);
2030
}
2131

@@ -37,7 +47,13 @@ export class HtmlDocumentManager {
3747

3848
await this.closeDocument(document.uri);
3949

40-
// TODO: Send a notification back to the server so it can cancel any pending sync requests and clear its cache.
50+
// We don't care about the response, but Razor cohosting can't currently do notifications with documents
51+
// so making it a request means the logs end up in the right place.
52+
await this.roslynLanguageServer.sendRequest(
53+
this.razorDocumentClosedRequest,
54+
TextDocumentIdentifier.create(getUriPath(document.uri)),
55+
new vscode.CancellationTokenSource().token
56+
);
4157
}
4258
});
4359

src/lsptoolshost/razor/razorEndpoints.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export function registerRazorEndpoints(
7676
// Local Functions
7777
//
7878
function registerCohostingEndpoints() {
79-
const documentManager = new HtmlDocumentManager(platformInfo, razorLogger);
79+
const documentManager = new HtmlDocumentManager(platformInfo, roslynLanguageServer, razorLogger);
8080
const reportIssueCommand = new ReportIssueCommand(vscode, undefined, documentManager, razorLogger);
8181
context.subscriptions.push(documentManager.register());
8282
context.subscriptions.push(reportIssueCommand.register());

0 commit comments

Comments
 (0)