Skip to content

Commit d8c096e

Browse files
authored
Merge pull request #7663 from dotnet/dev/jorobich/razor-doc-context
Lookup Razor file context using its document uri.
2 parents 3a4b66e + 99fd564 commit d8c096e

File tree

2 files changed

+11
-32
lines changed

2 files changed

+11
-32
lines changed

src/lsptoolshost/miscellaneousFileNotifier.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ export function registerMiscellaneousFileNotifier(
1818
languageServer: RoslynLanguageServer
1919
) {
2020
languageServer._projectContextService.onActiveFileContextChanged((e) => {
21-
// Only warn for miscellaneous files when the workspace is fully initialized.
22-
if (!e.context._vs_is_miscellaneous || languageServer.state !== ServerState.ProjectInitializationComplete) {
21+
// Only warn for C# miscellaneous files when the workspace is fully initialized.
22+
if (
23+
e.languageId !== 'csharp' ||
24+
!e.context._vs_is_miscellaneous ||
25+
languageServer.state !== ServerState.ProjectInitializationComplete
26+
) {
2327
return;
2428
}
2529

src/lsptoolshost/services/projectContextService.ts

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ import { TextDocumentIdentifier } from 'vscode-languageserver-protocol';
1010
import { UriConverter } from '../uriConverter';
1111
import { LanguageServerEvents } from '../languageServerEvents';
1212
import { ServerState } from '../serverStateChange';
13-
import { DynamicFileInfoHandler } from '../../razor/src/dynamicFile/dynamicFileInfoHandler';
14-
import { ProvideDynamicFileResponse } from '../../razor/src/dynamicFile/provideDynamicFileResponse';
15-
import { ProvideDynamicFileParams } from '../../razor/src/dynamicFile/provideDynamicFileParams';
1613

1714
export interface ProjectContextChangeEvent {
15+
languageId: string;
1816
uri: vscode.Uri;
1917
context: VSProjectContext;
2018
}
@@ -57,44 +55,21 @@ export class ProjectContextService {
5755
this._source.cancel();
5856
this._source = new vscode.CancellationTokenSource();
5957

60-
let uri = textEditor!.document.uri;
58+
const uri = textEditor!.document.uri;
6159

6260
if (!this._languageServer.isRunning()) {
63-
this._contextChangeEmitter.fire({ uri, context: this._emptyProjectContext });
61+
this._contextChangeEmitter.fire({ languageId, uri, context: this._emptyProjectContext });
6462
return;
6563
}
6664

67-
// If the active document is a Razor file, we need to map it back to a C# file.
68-
if (languageId === 'aspnetcorerazor') {
69-
const virtualUri = await this.getVirtualCSharpUri(uri);
70-
if (!virtualUri) {
71-
return;
72-
}
73-
74-
uri = virtualUri;
75-
}
76-
7765
const contextList = await this.getProjectContexts(uri, this._source.token);
7866
if (!contextList) {
67+
this._contextChangeEmitter.fire({ languageId, uri, context: this._emptyProjectContext });
7968
return;
8069
}
8170

8271
const context = contextList._vs_projectContexts[contextList._vs_defaultIndex];
83-
this._contextChangeEmitter.fire({ uri, context });
84-
}
85-
86-
private async getVirtualCSharpUri(uri: vscode.Uri): Promise<vscode.Uri | undefined> {
87-
const response = await vscode.commands.executeCommand<ProvideDynamicFileResponse>(
88-
DynamicFileInfoHandler.provideDynamicFileInfoCommand,
89-
new ProvideDynamicFileParams({ uri: UriConverter.serialize(uri) })
90-
);
91-
92-
const responseUri = response.csharpDocument?.uri;
93-
if (!responseUri) {
94-
return undefined;
95-
}
96-
97-
return UriConverter.deserialize(responseUri);
72+
this._contextChangeEmitter.fire({ languageId, uri, context });
9873
}
9974

10075
private async getProjectContexts(

0 commit comments

Comments
 (0)