2.9 KiB
2.9 KiB
08. Add Syntax Highlighting Integration
meta: id: theme-refactoring-08 feature: theme-refactoring-json-format priority: P1 depends_on: [theme-refactoring-04, theme-refactoring-05] tags: [implementation, syntax]
objective:
- Add syntax highlighting support using theme colors
- Generate syntax rules from theme definitions
- Support markdown syntax highlighting
- Integrate with OpenTUI syntax highlighting
deliverables:
src/utils/syntax-highlighter.ts- Syntax highlighting utilitiessrc/utils/syntax-rules.ts- Syntax rule generation
steps:
-
Step 8.1: Create
src/utils/syntax-rules.ts- Implement
getSyntaxRules(theme: ThemeColors)function - Define syntax scopes and their mappings
- Map theme colors to syntax scopes:
- Default text
- Keywords (return, conditional, repeat, coroutine)
- Types (function, class, module)
- Variables (parameter, member, builtin)
- Strings, numbers, booleans
- Comments
- Operators and punctuation
- Markdown-specific scopes (headings, bold, italic, links)
- Diff scopes (added, removed, context)
- Add style properties (foreground, bold, italic, underline)
- Implement
-
Step 8.2: Create
src/utils/syntax-highlighter.ts- Implement
generateSyntax(theme: ThemeColors)function - Implement
generateSubtleSyntax(theme: ThemeColors)function - Apply opacity to syntax colors for subtle highlighting
- Use theme's
thinkingOpacityproperty
- Implement
-
Step 8.3: Integrate with OpenTUI syntax highlighting
- Import
SyntaxStylefrom@opentui/core - Use
SyntaxStyle.fromTheme()to create syntax styles - Apply syntax styles to code components
- Import
-
Step 8.4: Add syntax scope mappings
- Map common programming language scopes
- Map markdown and markup scopes
- Map diff and git scopes
- Add scope aliases for common patterns
tests:
-
Unit:
- Test
getSyntaxRulesgenerates correct rules - Test
generateSyntaxcreates valid syntax styles - Test
generateSubtleSyntaxapplies opacity correctly - Test syntax rules cover all expected scopes
- Test
-
Integration/e2e:
- Test syntax highlighting with different themes
- Verify syntax colors match theme definitions
- Test markdown highlighting
acceptance_criteria:
src/utils/syntax-rules.tsfile exists with rule generationsrc/utils/syntax-highlighter.tsfile exists with style generation- Syntax highlighting works with theme colors
- Markdown highlighting is supported
- Syntax rules cover common programming patterns
validation:
- Run:
bun run typecheck- Should pass - Run:
bun test src/utils/syntax-rules.test.ts - Run:
bun test src/utils/syntax-highlighter.test.ts - Test syntax highlighting in application
- Verify syntax colors are readable
notes:
- Use opencode's syntax rule generation as reference
- Include comprehensive scope mappings
- Support common programming languages
- Reference:
/home/mike/code/PodTui/opencode/packages/opencode/src/cli/cmd/tui/context/theme.tsx(lines 622-1152)