Skip to content

Use TextMate highlighting in component fixtures - #335568

Merged
Henning Dieterichs (hediet) merged 6 commits into
mainfrom
hediet/component-fixture-textmate
Sep 11, 2026
Merged

Use TextMate highlighting in component fixtures#335568
Henning Dieterichs (hediet) merged 6 commits into
mainfrom
hediet/component-fixture-textmate

Conversation

@hediet

Copy link
Copy Markdown
Member

Summary

  • load VS Code's shipped TextMate grammars and Oniguruma WASM for component fixtures
  • register fixture languages and synchronously tokenize fixture text models after the async runtime setup
  • use the Dark 2026 TextMate palette for Dark fixtures and monochrome token text for non-Dark themes
  • reference-count the shared tokenizer installation and safely restore an existing token palette

The shared fixture Dark color theme remains Dark Modern in this PR. Switching the fixture default to Dark 2026 stays separate, and fully scoped multi-theme token palettes remain tracked by #335530.

Validation

  • npm run transpile-client
  • npm exec eslint -- src\vs\workbench\test\browser\componentFixtures\fixtureResourceLoader.ts src\vs\workbench\test\browser\componentFixtures\fixtureSyntaxHighlighting.ts src\vs\workbench\test\browser\componentFixtures\fixtureSyntaxHighlighting.test.ts src\vs\workbench\test\browser\componentFixtures\fixtureUtils.ts
  • .\scripts\test.bat --run src\vs\workbench\test\browser\componentFixtures\fixtureSyntaxHighlighting.test.ts (6 passing)

Copilot AI balanced review requested due to automatic review settings September 10, 2026 21:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

An undefined variable breaks compilation, fixtures receive the wrong token theme, and a test leaks global palette state.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 1 High severity · 2 Medium severity

New issues introduced by this change (3)
Severity Finding
High severity src/​vs/​workbench/​test/​browser/​componentFixtures/​fixtureUtils.ts — Undefined disposable store breaks theme loading
Medium severity src/​vs/​workbench/​test/​browser/​componentFixtures/​fixtureSyntaxHighlighting.test.ts — Restore the token palette after this test
Medium severity src/​vs/​workbench/​test/​browser/​componentFixtures/​fixtureUtils.ts — Load the Dark 2026 palette instead of Dark Modern
What changed in this PR

Adds real TextMate syntax highlighting to component fixtures using shipped grammars and Oniguruma.

Changes:

  • Registers fixture languages and shared tokenizers.
  • Adds theme-scoped token CSS and synchronous model tokenization.
  • Adds resource loading and tokenizer lifecycle tests.
File Description
fixtureUtils.ts Integrates syntax highlighting into fixture setup.
fixtureSyntaxHighlighting.ts Implements shared TextMate tokenizer registration and styling.
fixtureSyntaxHighlighting.test.ts Tests tokenization, themes, and disposal.
fixtureResourceLoader.ts Loads grammar and WASM resources.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts Outdated
Comment thread src/vs/workbench/test/browser/componentFixtures/fixtureSyntaxHighlighting.test.ts Outdated
Comment thread src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts
@hediet
Henning Dieterichs (hediet) force-pushed the hediet/component-fixture-textmate branch 2 times, most recently from a3c4b02 to f5bbca5 Compare September 10, 2026 22:18
@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Screenshot Changes

Base: b1779c60 Current: 4d88e4b0

Changed (92)

sessions/agentFeedback/agentFeedbackEditorWidget/CollapsedSingleComment/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/CollapsedSingleComment/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedSingleComment/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedSingleComment/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/CollapsedMultiComment/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/CollapsedMultiComment/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedMultiComment/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedMultiComment/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedFocusedFeedback/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedFocusedFeedback/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedReviewOnly/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedReviewOnly/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedMixedComments/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedMixedComments/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedFocusedReviewComment/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedFocusedReviewComment/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedReviewSuggestion/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedReviewSuggestion/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedPRReviewOnly/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedPRReviewOnly/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedAllSourcesMixed/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedAllSourcesMixed/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedFocusedPRReview/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedFocusedPRReview/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedThreadedFeedback/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/ExpandedThreadedFeedback/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/HiddenWidget/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/HiddenWidget/Light
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/LongFileTwoComments/Dark
Before After
before after
sessions/agentFeedback/agentFeedbackEditorWidget/LongFileTwoComments/Light
Before After
before after
sessions/agentFeedback/agentFeedbackInputWidget/InEditor/Dark
Before After
before after
sessions/changes/agentsDiffEditor/CompactDiffWithFeedback/Dark
Before After
before after
sessions/changes/agentsDiffEditor/CompactDiffWithFeedback/Light
Before After
before after
sessions/changes/agentsDiffEditor/CompactDiffWithSubmitOverlay/Dark
Before After
before after
sessions/changes/agentsDiffEditor/CompactDiffWithSubmitOverlay/Light
Before After
before after
sessions/blockedSessionsList/BlockedSessionsList_TwoApprovals/Dark
Before After
before after
sessions/blockedSessionsList/BlockedSessionsList_FiveApprovals/Dark
Before After
before after
chat/chatAgentMerge/ExpandedMarkdownComment/Dark
Before After
before after
editor/codeEditor/CodeEditor/Dark
Before After
before after
editor/codeEditor/CodeEditor/Light
Before After
before after
editor/injectedTextDecorations/ColorDecorators/Dark
Before After
before after
editor/injectedTextDecorations/ColorDecorators/Light
Before After
before after
editor/injectedTextDecorations/SelectedColorDecorator/Dark
Before After
before after
editor/injectedTextDecorations/SelectedColorDecorator/Light
Before After
before after
editor/injectedTextDecorations/InlineProgress/Dark
Before After
before after
editor/injectedTextDecorations/InlineProgress/Light
Before After
before after
editor/injectedTextDecorations/InlayHints/Dark
Before After
before after
editor/injectedTextDecorations/InlayHints/Light
Before After
before after
editor/inlineChatAffordance/InlineChatAffordance/Dark
Before After
before after
editor/inlineChatAffordance/InlineChatAffordance/Light
Before After
before after
editor/inlineChatZoneWidget/InlineChatZoneWidget/Dark
Before After
before after
editor/inlineChatZoneWidget/InlineChatZoneWidget/Light
Before After
before after
editor/inlineChatZoneWidget/InlineChatZoneWidgetTerminated/Dark
Before After
before after
editor/inlineChatZoneWidget/InlineChatZoneWidgetTerminated/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Light
Before After
before after
editor/inlineCompletions/other/JumpToHint/Dark
Before After
before after
editor/inlineCompletions/other/JumpToHint/Light
Before After
before after
editor/inlineCompletions/other/NextFileEditSuggestion/Dark
Before After
before after
editor/inlineCompletions/other/NextFileEditSuggestion/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Light
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Light
Before After
before after
editor/inlineCompletions/views/DeletionView/Dark
Before After
before after
editor/inlineCompletions/views/DeletionView/Light
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorHideOriginalLineNumbers/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorHideOriginalLineNumbers/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalPending/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalPending/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalResolved/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalResolved/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorDocumentSwapAfter/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorDocumentSwapAfter/Light
Before After
before after
editor/suggestWidget/MethodCompletions/Dark
Before After
before after
editor/suggestWidget/MethodCompletions/Light
Before After
before after
editor/suggestWidget/MethodCompletionsWithDetails/Dark
Before After
before after
editor/suggestWidget/MethodCompletionsWithDetails/Light
Before After
before after
editor/multiDiff/multiDiffEditorScroll/RealWidget/Dark
Before After
before after
editor/multiDiff/multiDiffEditorScroll/RealWidget/Light
Before After
before after
peekReference/PeekReferences/Dark
Before After
before after
peekReference/PeekReferences/Light
Before After
before after
agentSessionsViewer/ApprovalRowJson/Dark
Before After
before after
agentSessionsViewer/ApprovalRowJson/Light
Before After
before after

5 insignificant change(s) omitted (≤20 px, Δ≤2). See CI logs for details.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hediet
Henning Dieterichs (hediet) merged commit 7233aba into main Sep 11, 2026
33 checks passed
@hediet
Henning Dieterichs (hediet) deleted the hediet/component-fixture-textmate branch September 11, 2026 10:57
@vs-code-engineering vs-code-engineering Bot added this to the 1.139.0 milestone Sep 11, 2026
@MominRaza

Copy link
Copy Markdown

Please don't rebase and merge, it doesn't show the PR number in commit history and unnecessary shows all the commits there, please use squash and merge it clearly shows the pr name and number, normal merge with commit is also okay but it is not as clear as squash because it shows branch name instead of PR title.

In this screenshot we have all three examples
Henning Dieterichs (@hediet) - rebase
Alex Ross (@alexr00) - squash
Lee Murray (@mrleemurray) - normal

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants