Skip to content

Commit 54f6611

Browse files
committed
Move compiler outputs to webviews and rework full view expansion to be a tab
1 parent c00a837 commit 54f6611

File tree

10 files changed

+271
-202
lines changed

10 files changed

+271
-202
lines changed

package-lock.json

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@
473473
"typescript": "^5.9.3"
474474
},
475475
"dependencies": {
476+
"ansi-to-html": "^0.7.2",
476477
"valibot": "^1.2.0"
477478
}
478479
}

src/extension/providers/BaseViewProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ export default abstract class BaseViewProvider<
186186
<head>
187187
<meta charset="UTF-8">
188188
<meta name="viewport" content="width=device-width, initial-scale=1.0">
189-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src ${webview.cspSource} 'nonce-${nonce}'; font-src ${webview.cspSource}; img-src ${webview.cspSource} https:; script-src 'nonce-${nonce}';">
189+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src ${webview.cspSource} 'unsafe-inline'; font-src ${webview.cspSource}; img-src ${webview.cspSource} https:; script-src 'nonce-${nonce}';">
190190
<link rel="stylesheet" href="${stylesUri}">
191191
<link rel="stylesheet" href="${codiconsUri}">
192192
</head>

src/extension/providers/JudgeViewProvider.ts

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import type { RunTermination, Severity } from "../utils/runtime";
2323
import {
2424
getFileRunSettings,
2525
openInNewEditor,
26+
openInTerminalTab,
2627
ReadonlyStringProvider,
2728
resolveVariables,
2829
showOpenRunSettingsErrorWindow,
@@ -197,16 +198,32 @@ export default class extends BaseViewProvider<typeof ProviderMessageSchema, Webv
197198
}
198199
compilePromises.push(interactorCompilePromise);
199200
}
200-
const errored = await Promise.all(compilePromises);
201-
const anyErrored = errored.some((hadError) => hadError);
202-
if (anyErrored) {
201+
const results = await Promise.all(compilePromises);
202+
const compilationError = results.find((r) => r.code !== 0);
203+
if (compilationError) {
203204
testcase.status = "CE";
204205
super._postMessage({
205206
type: "SET",
206207
uuid,
207208
property: "status",
208209
value: "CE",
209210
});
211+
super._postMessage({
212+
type: "SET",
213+
uuid,
214+
property: "stdout",
215+
value: "",
216+
});
217+
super._postMessage({
218+
type: "SET",
219+
uuid,
220+
property: "stderr",
221+
value: "",
222+
});
223+
testcase.stdout.reset();
224+
testcase.stderr.reset();
225+
testcase.stdout.write(compilationError.stdout, "final");
226+
testcase.stderr.write(compilationError.stderr, "final");
210227
return null;
211228
}
212229

@@ -1356,10 +1373,18 @@ export default class extends BaseViewProvider<typeof ProviderMessageSchema, Webv
13561373
void openInNewEditor(testcase.stdin.data);
13571374
break;
13581375
case "STDERR":
1359-
void openInNewEditor(testcase.stderr.data);
1376+
if (testcase.status === "CE") {
1377+
void openInTerminalTab(testcase.stderr.data, "Compilation Error");
1378+
} else {
1379+
void openInNewEditor(testcase.stderr.data);
1380+
}
13601381
break;
13611382
case "STDOUT":
1362-
void openInNewEditor(testcase.stdout.data);
1383+
if (testcase.status === "CE") {
1384+
void openInTerminalTab(testcase.stdout.data, "Compilation Output");
1385+
} else {
1386+
void openInNewEditor(testcase.stdout.data);
1387+
}
13631388
break;
13641389
case "ACCEPTED_STDOUT":
13651390
void openInNewEditor(testcase.acceptedStdout.data);

0 commit comments

Comments
 (0)