From 90b307b45ba1425b77d5c61aac7b1b4dc7ab6701 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 May 2026 16:52:20 +0000 Subject: [PATCH 1/4] Initial plan From ba3440465f593016e424d6b52dec542327bc80b2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 May 2026 17:07:00 +0000 Subject: [PATCH 2/4] Fix playground dimming of unused using statements Co-authored-by: timotheeguerin <1031227+timotheeguerin@users.noreply.github.com> --- packages/playground/src/react/playground.tsx | 5 ++--- packages/playground/src/services.ts | 22 +++++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/playground/src/react/playground.tsx b/packages/playground/src/react/playground.tsx index 956c49e9a74..031be14b334 100644 --- a/packages/playground/src/react/playground.tsx +++ b/packages/playground/src/react/playground.tsx @@ -3,7 +3,7 @@ import { $ } from "@typespec/compiler/typekit"; import { Pane, SplitPane } from "@typespec/react-components"; import "@typespec/react-components/style.css"; import debounce from "debounce"; -import { KeyCode, KeyMod, MarkerSeverity, Uri, editor } from "monaco-editor"; +import { KeyCode, KeyMod, MarkerSeverity, MarkerTag, Uri, editor } from "monaco-editor"; import { useCallback, useEffect, @@ -13,7 +13,6 @@ import { type FunctionComponent, type ReactNode, } from "react"; -import { CompletionItemTag } from "vscode-languageserver"; import { resolveVirtualPath } from "../browser-host.js"; import { EditorCommandBar } from "../editor-command-bar/editor-command-bar.js"; import { getMonacoRange, updateDiagnosticsForCodeFixes } from "../services.js"; @@ -289,7 +288,7 @@ export const Playground: FunctionComponent = (props) => { ...getMonacoRange(typespecCompiler, diag.target), message: diag.message, severity: diag.severity === "error" ? MarkerSeverity.Error : MarkerSeverity.Warning, - tags: diag.code === "deprecated" ? [CompletionItemTag.Deprecated] : undefined, + tags: diag.code === "deprecated" ? [MarkerTag.Deprecated] : undefined, })); // Update code action provider with current diagnostics (for codefix support). diff --git a/packages/playground/src/services.ts b/packages/playground/src/services.ts index 6b83443d1e6..abe92b32e93 100644 --- a/packages/playground/src/services.ts +++ b/packages/playground/src/services.ts @@ -79,7 +79,27 @@ export async function registerMonacoLanguage(host: BrowserHost) { const model = monaco.editor.getModel(monaco.Uri.parse(url)); return model ? MonacoToLsp.textDocumentForModel(model) : undefined; }, - sendDiagnostics() {}, + sendDiagnostics({ uri, diagnostics }) { + const model = monaco.editor.getModel(monaco.Uri.parse(uri)); + if (!model) return; + + // Apply visual tag markers (e.g., dim unused code, strikethrough deprecated) from LSP diagnostics. + // Regular error/warning markers are managed by the playground's own compilation. + // The LSP DiagnosticTag values (Unnecessary=1, Deprecated=2) match Monaco's MarkerTag values. + const taggedMarkers: monaco.editor.IMarkerData[] = diagnostics + .filter((d) => d.tags !== undefined && d.tags.length > 0) + .map((d) => ({ + severity: monaco.MarkerSeverity.Hint, + message: d.message, + startLineNumber: d.range.start.line + 1, + startColumn: d.range.start.character + 1, + endLineNumber: d.range.end.line + 1, + endColumn: d.range.end.character + 1, + tags: d.tags?.map((t) => t as unknown as monaco.MarkerTag), + })); + + monaco.editor.setModelMarkers(model, "lsp-tags", taggedMarkers); + }, log: (log) => { switch (log.level) { case "error": From c35be72a0587d0b44fb12ba30dbd6ef47433c192 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 May 2026 17:09:51 +0000 Subject: [PATCH 3/4] Improve type cast clarity in sendDiagnostics Co-authored-by: timotheeguerin <1031227+timotheeguerin@users.noreply.github.com> --- packages/playground/src/services.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/playground/src/services.ts b/packages/playground/src/services.ts index abe92b32e93..5bdba2a53c4 100644 --- a/packages/playground/src/services.ts +++ b/packages/playground/src/services.ts @@ -95,7 +95,7 @@ export async function registerMonacoLanguage(host: BrowserHost) { startColumn: d.range.start.character + 1, endLineNumber: d.range.end.line + 1, endColumn: d.range.end.character + 1, - tags: d.tags?.map((t) => t as unknown as monaco.MarkerTag), + tags: d.tags?.map((t) => t as number as monaco.MarkerTag), })); monaco.editor.setModelMarkers(model, "lsp-tags", taggedMarkers); From 33bf58950c03c8dd012dd40c19fed5a75281a529 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 May 2026 18:19:17 +0000 Subject: [PATCH 4/4] chore: add changelog entry for playground unused using fix Co-authored-by: timotheeguerin <1031227+timotheeguerin@users.noreply.github.com> --- .../fix-playground-unused-using-dimming-2026-5-27.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/fix-playground-unused-using-dimming-2026-5-27.md diff --git a/.chronus/changes/fix-playground-unused-using-dimming-2026-5-27.md b/.chronus/changes/fix-playground-unused-using-dimming-2026-5-27.md new file mode 100644 index 00000000000..3a3f776ab02 --- /dev/null +++ b/.chronus/changes/fix-playground-unused-using-dimming-2026-5-27.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/playground" +--- + +Fix unused `using` statements not being dimmed in the playground editor