Skip to content

Commit 6a0de19

Browse files
committed
Resurrect report issue command
1 parent d8c8cd0 commit 6a0de19

File tree

6 files changed

+29
-61
lines changed

6 files changed

+29
-61
lines changed

l10n/bundle.l10n.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
"Non Razor file as active document": "Non Razor file as active document",
104104
"Could not determine CSharp content": "Could not determine CSharp content",
105105
"Could not determine Html content": "Could not determine Html content",
106+
"Cohosting is on, client has no access to CSharp content": "Cohosting is on, client has no access to CSharp content",
106107
"A valid dotnet installation could not be found: {0}": "A valid dotnet installation could not be found: {0}",
107108
"Is this a Bug or Feature request?": "Is this a Bug or Feature request?",
108109
"Bug": "Bug",

src/lsptoolshost/razor/razorEndpoints.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import { MappingHandler } from '../../razor/src/mapping/mappingHandler';
4949
import { RazorMapTextChangesParams } from '../../razor/src/mapping/razorMapTextChangesParams';
5050
import { RazorMapTextChangesResponse } from '../../razor/src/mapping/razorMapTextChangesResponse';
5151
import { FormattingHandler } from '../../razor/src/formatting/formattingHandler';
52+
import { ReportIssueCommand } from '../../razor/src/diagnostics/reportIssueCommand';
5253

5354
export function registerRazorEndpoints(
5455
context: vscode.ExtensionContext,
@@ -74,7 +75,9 @@ export function registerRazorEndpoints(
7475
//
7576
function registerCohostingEndpoints() {
7677
const documentManager = new HtmlDocumentManager(platformInfo, razorLogger);
78+
const reportIssueCommand = new ReportIssueCommand(vscode, undefined, documentManager, razorLogger);
7779
context.subscriptions.push(documentManager.register());
80+
context.subscriptions.push(reportIssueCommand.register());
7881

7982
registerMethodHandler<HtmlUpdateParameters, void>('razor/updateHtml', async (params) => {
8083
const uri = UriConverter.deserialize(params.textDocument.uri);

src/razor/src/diagnostics/razorIssueDataCollector.ts

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/razor/src/diagnostics/reportIssueCommand.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { HtmlDocumentManager } from '../../../lsptoolshost/razor/htmlDocumentManager';
67
import { RazorDocumentManager } from '../document/razorDocumentManager';
78
import { RazorLogger } from '../razorLogger';
89
import { api } from '../vscodeAdapter';
@@ -16,9 +17,14 @@ export class ReportIssueCommand {
1617
private readonly issueCreator: ReportIssueCreator;
1718
private readonly dataCollectorFactory: ReportIssueDataCollectorFactory;
1819

19-
constructor(private readonly vscodeApi: api, documentManager: RazorDocumentManager, logger: RazorLogger) {
20+
constructor(
21+
private readonly vscodeApi: api,
22+
documentManager: RazorDocumentManager | undefined,
23+
cohostingDocumentManager: HtmlDocumentManager | undefined,
24+
logger: RazorLogger
25+
) {
2026
this.dataCollectorFactory = new ReportIssueDataCollectorFactory(logger);
21-
this.issueCreator = new ReportIssueCreator(this.vscodeApi, documentManager);
27+
this.issueCreator = new ReportIssueCreator(this.vscodeApi, documentManager, cohostingDocumentManager);
2228
this.issuePanel = new ReportIssuePanel(this.dataCollectorFactory, this.issueCreator, logger);
2329
}
2430

src/razor/src/diagnostics/reportIssueCreator.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,36 @@ import { IRazorDocument } from '../document/IRazorDocument';
1111
import { IRazorDocumentManager } from '../document/IRazorDocumentManager';
1212
import { razorExtensionId } from '../razorExtensionId';
1313
import { IReportIssueDataCollectionResult } from './IReportIssueDataCollectionResult';
14+
import { HtmlDocumentManager } from '../../../lsptoolshost/razor/htmlDocumentManager';
1415

1516
export class ReportIssueCreator {
1617
constructor(
1718
private readonly vscodeApi: vscodeAdapter.api,
18-
private readonly documentManager: IRazorDocumentManager
19+
private readonly documentManager?: IRazorDocumentManager,
20+
private readonly cohostingDocumentManager?: HtmlDocumentManager
1921
) {}
2022

2123
public async create(collectionResult: IReportIssueDataCollectionResult) {
2224
let razorContent: string;
2325
let csharpContent: string;
2426
let htmlContent: string;
2527

28+
razorContent = vscode.l10n.t('Non Razor file as active document');
29+
csharpContent = vscode.l10n.t('Could not determine CSharp content');
30+
htmlContent = vscode.l10n.t('Could not determine Html content');
31+
2632
if (collectionResult.document) {
2733
razorContent = await this.getRazor(collectionResult.document);
2834

29-
const razorDocument = await this.documentManager.getDocument(collectionResult.document.uri);
30-
csharpContent = await this.getProjectedCSharp(razorDocument);
31-
htmlContent = await this.getProjectedHtml(razorDocument);
32-
} else {
33-
razorContent = vscode.l10n.t('Non Razor file as active document');
34-
csharpContent = vscode.l10n.t('Could not determine CSharp content');
35-
htmlContent = vscode.l10n.t('Could not determine Html content');
35+
if (this.documentManager) {
36+
const razorDocument = await this.documentManager.getDocument(collectionResult.document.uri);
37+
csharpContent = await this.getProjectedCSharp(razorDocument);
38+
htmlContent = await this.getProjectedHtml(razorDocument);
39+
} else if (this.cohostingDocumentManager) {
40+
const htmlDocument = await this.cohostingDocumentManager.getDocument(collectionResult.document.uri);
41+
csharpContent = vscode.l10n.t('Cohosting is on, client has no access to CSharp content');
42+
htmlContent = htmlDocument.getContent();
43+
}
3644
}
3745

3846
const razorExtensionVersion = this.getExtensionVersion();

src/razor/src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ export async function activate(
139139
const csharpFeature = new RazorCSharpFeature(documentManager, eventEmitterFactory, logger);
140140
const htmlFeature = new RazorHtmlFeature(documentManager, languageServiceClient, eventEmitterFactory, logger);
141141
const localRegistrations: vscode.Disposable[] = [];
142-
const reportIssueCommand = new ReportIssueCommand(vscodeType, documentManager, logger);
142+
const reportIssueCommand = new ReportIssueCommand(vscodeType, documentManager, undefined, logger);
143143
const razorCodeActionRunner = new RazorCodeActionRunner(languageServerClient, logger);
144144
const codeActionsHandler = new CodeActionsHandler(
145145
documentManager,

0 commit comments

Comments
 (0)