Skip to content

Commit f1d84b2

Browse files
committed
Using documentSynchronizer to send correct version
1 parent d8cc2a8 commit f1d84b2

File tree

2 files changed

+43
-4
lines changed

2 files changed

+43
-4
lines changed

src/razor/src/extension.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,13 @@ export async function activate(
9999
languageServiceClient,
100100
logger
101101
);
102-
const semanticTokenHandler = new SemanticTokensRangeHandler(languageServerClient);
102+
const semanticTokenHandler = new SemanticTokensRangeHandler(
103+
documentSynchronizer,
104+
languageServerClient,
105+
languageServiceClient,
106+
documentManager,
107+
logger
108+
);
103109
const colorPresentationHandler = new ColorPresentationHandler(
104110
documentManager,
105111
languageServerClient,

src/razor/src/semantic/semanticTokensRangeHandler.ts

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import { RequestType } from 'vscode-languageclient';
88
import { RazorLanguageServerClient } from '../razorLanguageServerClient';
99
import { ProvideSemanticTokensResponse } from './provideSemanticTokensResponse';
1010
import { SerializableSemanticTokensParams } from './serializableSemanticTokensParams';
11+
import { RazorDocumentSynchronizer } from '../document/razorDocumentSynchronizer';
12+
import { RazorDocumentManager } from '../document/razorDocumentManager';
13+
import { RazorLanguageServiceClient } from '../razorLanguageServiceClient';
14+
import { RazorLogger } from '../razorLogger';
1115

1216
export class SemanticTokensRangeHandler {
1317
private static readonly getSemanticTokensRangeEndpoint = 'razor/provideSemanticTokensRange';
@@ -18,10 +22,16 @@ export class SemanticTokensRangeHandler {
1822
> = new RequestType(SemanticTokensRangeHandler.getSemanticTokensRangeEndpoint);
1923
private emptySemanticTokensResponse: ProvideSemanticTokensResponse = new ProvideSemanticTokensResponse(
2024
new Array<Array<number>>(),
21-
-5
25+
-1
2226
);
2327

24-
constructor(private readonly serverClient: RazorLanguageServerClient) {}
28+
constructor(
29+
private readonly documentSynchronizer: RazorDocumentSynchronizer,
30+
protected readonly serverClient: RazorLanguageServerClient,
31+
protected readonly serviceClient: RazorLanguageServiceClient,
32+
protected readonly documentManager: RazorDocumentManager,
33+
protected readonly logger: RazorLogger
34+
) {}
2535

2636
public async register() {
2737
await this.serverClient.onRequestWithParams<
@@ -39,10 +49,33 @@ export class SemanticTokensRangeHandler {
3949
_semanticTokensParams: SerializableSemanticTokensParams,
4050
_cancellationToken: vscode.CancellationToken
4151
): Promise<ProvideSemanticTokensResponse> {
52+
let version = -1;
53+
try {
54+
const razorDocumentUri = vscode.Uri.parse(_semanticTokensParams.textDocument.uri);
55+
const razorDocument = await this.documentManager.getDocument(razorDocumentUri);
56+
if (razorDocument === undefined) {
57+
return this.emptySemanticTokensResponse;
58+
}
59+
60+
const textDocument = await vscode.workspace.openTextDocument(razorDocumentUri);
61+
version = textDocument.version;
62+
const synchronized = await this.documentSynchronizer.trySynchronizeProjectedDocument(
63+
textDocument,
64+
razorDocument.csharpDocument,
65+
version,
66+
_cancellationToken
67+
);
68+
if (!synchronized) {
69+
return this.emptySemanticTokensResponse;
70+
}
71+
} catch (error) {
72+
this.logger.logWarning(`${SemanticTokensRangeHandler.getSemanticTokensRangeEndpoint} failed with ${error}`);
73+
}
74+
4275
// This is currently a no-op since (1) the default C# semantic tokens experience is already powerful and
4376
// (2) there seems to be an issue with the semantic tokens execute command - possibly either O# not
4477
// returning tokens, or an issue with the command itself:
4578
// https://github.com/dotnet/razor/issues/6922
46-
return this.emptySemanticTokensResponse;
79+
return new ProvideSemanticTokensResponse(new Array<Array<number>>(), version);
4780
}
4881
}

0 commit comments

Comments
 (0)