Файли
l0ng-ai beab7992f9 feat(editor): Rainbow brackets and semantic highlighting (rainbow variables) (#59)
Two editor toggles under Settings › Editor › Color Scheme › Language Defaults (off by default, also actions `editor.toggleRainbowBrackets` / `editor.toggleSemanticHighlighting`):
- Semantic highlighting (IDEA's rainbow variables): locals and parameters coloured by a name hash from LSP semantic tokens; fields, statics, constants, library symbols untouched.
- Rainbow brackets (VS Code's bracket pair colorization): (), [], {} by depth, unmatched in the error colour, strings/comments skipped, visible ranges only with 4 KB checkpoints.
Palettes are theme tokens (`--syn-rainbow-1..5`, `--syn-bracket-1..3`, light/dark/high-contrast), editable in the Color Scheme tree, and mapped from IntelliJ `.icls` RAINBOW_COLOR1..5.

App verification on macOS found the colours were overridden by the syntax highlighter's span nested inside the marks; the rules now cover descendants. Verified both toggles on/off live in a TS file.

Fixes #56

https://claude.ai/code/session_01VUYsdXA2nkF5v6zsC93dpn
2026-10-27 11:52:07 +08:00

103 рядки
3.4 KiB
JSON

// Harbor Night: editor colour scheme (syntax, editor surfaces, console ANSI colours),
// the counterpart of an IntelliJ .icls file. Merged over the UI theme's tokens.
{
"name": "Harbor Night",
"tokens": {
// Syntax
"--syn-keyword": "#e0a46e",
"--syn-string": "#9ccc7a",
"--syn-type": "#8fd4c9",
"--syn-function": "#f2d07a",
"--syn-function-call": "#d9dfe8",
"--syn-comment": "#6b7a8f",
"--syn-comment-style": "normal",
"--syn-doc-comment": "#74889c",
"--syn-docstring": "#8fb071",
"--syn-annotation": "#d7a0e0",
"--syn-decorator": "#d7a0e0",
"--syn-number": "#7fc8f8",
"--syn-punct": "#a9b4c2",
"--syn-variable": "#d9dfe8",
"--syn-param": "#d9dfe8",
"--syn-property": "#b9a3f0",
"--syn-constant": "#e58fa3",
"--syn-builtin": "#6fc3df",
"--syn-self": "#d6849c",
"--syn-keyword-arg": "#c4a0f2",
"--syn-predefined": "#c4a0f2",
"--syn-escape": "#7fd1c4",
"--syn-regexp": "#7fd1c4",
"--syn-tag": "#e0a46e",
"--syn-attribute": "#9fc0e8",
"--syn-todo": "#7fd1c4",
"--syn-link": "#6fc3df",
"--syn-markup-heading": "#f2d07a",
"--syn-markup-code": "#9ccc7a",
"--syn-invalid": "#ff6b7a",
"--syn-inline-value": "#6b7a8f",
"--syn-rainbow-1": "#7fd1c4",
"--syn-rainbow-2": "#e0a46e",
"--syn-rainbow-3": "#b9a3f0",
"--syn-rainbow-4": "#9ccc7a",
"--syn-rainbow-5": "#e58fa3",
"--syn-bracket-1": "#f2d07a",
"--syn-bracket-2": "#d7a0e0",
"--syn-bracket-3": "#6fc3df",
// Editor
"--fg-editor": "#d9dfe8",
"--caret": "#5ce0d2",
"--fg-line-number": "#3f4d60",
"--fg-line-number-current": "#93a1b4",
"--border-gutter": "#1f252e",
"--border-indent-guide": "#2a313b",
"--border-indent-guide-active": "#424e5e",
"--border-right-margin": "#2a313b",
"--bg-editor-selection": "#2d7772",
"--bg-editor-selection-inactive": "#255854",
"--bg-text-search-result": "#114957",
"--bg-text-search-result-current": "#165e70",
"--bg-matched-brace": "#38424f",
"--matched-brace-weight": "700",
"--bg-matched-tag": "#353e4a",
"--bg-fold-placeholder": "#303944",
"--fg-fold-placeholder": "#75869d",
"--fg-fold-marker": "#5f6f85",
"--fg-whitespace": "#5f6f85",
"--fg-unused": "#5f6f85",
"--bg-identifier-under-caret": "#2e353f",
"--bg-identifier-under-caret-write": "#402f33",
"--fg-inlay": "#75869d",
"--bg-inlay": "#303944",
"--wave-error": "#fa6675",
"--wave-warning": "#f2c55c",
"--editor-error-decoration": "underline wavy #fa6675",
"--editor-warning-decoration": "underline wavy #f2c55c",
"--editor-warning-background": "transparent",
"--bg-breakpoint-line": "#40252b",
"--fg-completion-match": "#68e4dc",
"--bg-editor-inline": "#1b2027",
"--bg-editor-banner": "#2a514f",
"--fg-weak-warning": "#5f6f85",
"--fg-bulb": "#f2c55c",
// ANSI palette
"--ansi-black": "#000000",
"--ansi-red": "#f0524f",
"--ansi-green": "#5c962c",
"--ansi-yellow": "#a68a0d",
"--ansi-blue": "#4cc1b9",
"--ansi-magenta": "#a771bf",
"--ansi-cyan": "#00a3a3",
"--ansi-white": "#6e7b8d",
"--ansi-bright-black": "#4c5561",
"--ansi-bright-red": "#ff4050",
"--ansi-bright-green": "#4fc414",
"--ansi-bright-yellow": "#e5bf00",
"--ansi-bright-blue": "#3be3d8",
"--ansi-bright-magenta": "#ed7eed",
"--ansi-bright-cyan": "#00e5e5",
"--ansi-bright-white": "#ffffff"
}
}