From 8fa193ace5d98c415d378a08784294a822a0906f Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Wed, 25 Mar 2026 14:12:53 +0000 Subject: [PATCH] add Star Haven Dark theme, EVT keyword highlighting, and enable semantic tokens --- app/package.json | 2 +- .../c-language/evt-keyword-decorator.ts | 285 +++ .../src/browser/c-language/inlay-hints.ts | 16 + extensions/studio/src/browser/fonts/fonts.css | 5 + .../studio/src/browser/icon-theme-sync.ts | 1 + .../src/browser/studio-frontend-module.ts | 4 + local-plugins/star-haven-theme/package.json | 22 + .../star-haven-theme/star-haven-dark.json | 2238 +++++++++++++++++ package.json | 9 +- 9 files changed, 2577 insertions(+), 5 deletions(-) create mode 100644 extensions/studio/src/browser/c-language/evt-keyword-decorator.ts create mode 100644 local-plugins/star-haven-theme/package.json create mode 100644 local-plugins/star-haven-theme/star-haven-dark.json diff --git a/app/package.json b/app/package.json index 9afff72..167e844 100644 --- a/app/package.json +++ b/app/package.json @@ -50,7 +50,7 @@ "applicationName": "Star Haven Studio", "defaultTheme": { "light": "Catppuccin Latte", - "dark": "Catppuccin Mocha" + "dark": "Star Haven Dark" }, "defaultIconTheme": "catppuccin-mocha" } diff --git a/extensions/studio/src/browser/c-language/evt-keyword-decorator.ts b/extensions/studio/src/browser/c-language/evt-keyword-decorator.ts new file mode 100644 index 0000000..4702f6c --- /dev/null +++ b/extensions/studio/src/browser/c-language/evt-keyword-decorator.ts @@ -0,0 +1,285 @@ +// SPDX-FileCopyrightText: 2026 Star Haven contributors +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +import { + injectable, + inject, + postConstruct, +} from "@theia/core/shared/inversify"; +import { FrontendApplicationContribution } from "@theia/core/lib/browser"; +import { EditorManager } from "@theia/editor/lib/browser/editor-manager"; +import { MonacoEditor } from "@theia/monaco/lib/browser/monaco-editor"; +import { DisposableCollection, Disposable } from "@theia/core/lib/common"; +import { StandaloneServices } from "@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices"; +import { IThemeService } from "@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService"; + +const EVT_KEYWORDS = new Set([ + "End", + "Return", + "Jump", + "Label", + "Goto", + "Loop", + "EndLoop", + "BreakLoop", + "Wait", + "WaitSecs", + "IfEq", + "IfNe", + "IfLt", + "IfGt", + "IfLe", + "IfGe", + "IfFlag", + "IfNotFlag", + "Else", + "EndIf", + "Switch", + "SwitchConst", + "CaseEq", + "CaseNe", + "CaseLt", + "CaseGt", + "CaseLe", + "CaseGe", + "CaseDefault", + "CaseOrEq", + "CaseAndEq", + "CaseFlag", + "EndCaseGroup", + "CaseRange", + "BreakSwitch", + "EndSwitch", + "Set", + "SetConst", + "SetF", + "Add", + "Sub", + "Mul", + "Div", + "Mod", + "AddF", + "SubF", + "MulF", + "DivF", + "UseBuf", + "BufRead1", + "BufRead2", + "BufRead3", + "BufRead4", + "BufPeek", + "UseFBuf", + "FBufRead1", + "FBufRead2", + "FBufRead3", + "FBufRead4", + "FBufPeek", + "UseArray", + "UseFlagArray", + "MallocArray", + "BitwiseAnd", + "BitwiseAndConst", + "BitwiseOr", + "BitwiseOrConst", + "Exec", + "ExecGetTID", + "ExecWait", + "Unbind", + "BindPadlock", + "KillThread", + "SetPriority", + "SetTimescale", + "SetGroup", + "SuspendGroup", + "ResumeGroup", + "SuspendOthers", + "ResumeOthers", + "SuspendThread", + "ResumeThread", + "IsThreadRunning", + "Thread", + "EndThread", + "ChildThread", + "EndChildThread", + "Call", + "DebugPrintVar", + "BreakPoint", +]); + +// Match an EVT keyword at a word boundary, optionally followed by ( or whitespace/comma +const EVT_KEYWORD_PATTERN = new RegExp( + "\\b(" + Array.from(EVT_KEYWORDS).join("|") + ")\\b", + "g", +); + +@injectable() +export class EvtKeywordDecorator implements FrontendApplicationContribution { + @inject(EditorManager) + protected readonly editorManager!: EditorManager; + + protected readonly toDispose = new DisposableCollection(); + + private readonly attached = new WeakSet(); + + @postConstruct() + protected init(): void { + this.editorManager.onCreated((widget) => { + const editor = widget.editor; + if (editor instanceof MonacoEditor && !this.attached.has(editor)) { + this.attached.add(editor); + this.attachToEditor(editor); + } + }); + + for (const widget of this.editorManager.all) { + const editor = widget.editor; + if (editor instanceof MonacoEditor && !this.attached.has(editor)) { + this.attached.add(editor); + this.attachToEditor(editor); + } + } + } + + async onStart(): Promise { + const themeService = StandaloneServices.get(IThemeService); + const updateKeywordColor = () => { + const theme = themeService.getColorTheme() as any; + const rules: any[] = theme.themeData?.rules || theme.rules || []; + let color: string | undefined; + for (const rule of rules) { + if (rule.token === "keyword" && rule.foreground) { + color = rule.foreground.startsWith("#") + ? rule.foreground + : `#${rule.foreground}`; + break; + } + } + if (color) { + document.documentElement.style.setProperty( + "--star-haven-keyword-foreground", + color, + ); + } + }; + updateKeywordColor(); + themeService.onDidColorThemeChange(updateKeywordColor); + } + + protected attachToEditor(editor: MonacoEditor): void { + const monacoEditor = editor.getControl(); + const model = monacoEditor.getModel(); + if (model) { + this.decorateModel(monacoEditor, model, editor); + } else { + const sub = monacoEditor.onDidChangeModel(() => { + const m = monacoEditor.getModel(); + if (m) { + sub.dispose(); + this.decorateModel(monacoEditor, m, editor); + } + }); + } + } + + protected decorateModel( + monacoEditor: ReturnType, + model: NonNullable< + ReturnType["getModel"]> + >, + editor: MonacoEditor, + ): void { + const disposables = new DisposableCollection(); + let decorations = monacoEditor.createDecorationsCollection([]); + + const isEvtLanguage = () => { + const lang = model.getLanguageId(); + return lang === "c" || lang === "cpp"; + }; + + const update = () => { + if (!isEvtLanguage()) { + decorations.set([]); + return; + } + + const newDecorations: { + range: { + startLineNumber: number; + startColumn: number; + endLineNumber: number; + endColumn: number; + }; + options: { description: string; inlineClassName: string }; + }[] = []; + + const tokenization = (model as any).tokenization; + + for ( + let lineNumber = 1; + lineNumber <= model.getLineCount(); + lineNumber++ + ) { + const lineContent = model.getLineContent(lineNumber); + EVT_KEYWORD_PATTERN.lastIndex = 0; + + let lineTokens: any; + if (tokenization) { + tokenization.forceTokenization(lineNumber); + lineTokens = tokenization.getLineTokens(lineNumber); + } + + let match; + while ((match = EVT_KEYWORD_PATTERN.exec(lineContent)) !== null) { + // Skip if inside a comment or string + if (lineTokens) { + const tokenIndex = lineTokens.findTokenIndexAtOffset(match.index); + const tokenType = lineTokens.getStandardTokenType(tokenIndex); + // 1 = Comment, 2 = String, 3 = RegExp + if (tokenType !== 0) { + continue; + } + } + + newDecorations.push({ + range: { + startLineNumber: lineNumber, + startColumn: match.index + 1, + endLineNumber: lineNumber, + endColumn: match.index + match[0].length + 1, + }, + options: { + description: "evt-keyword", + inlineClassName: "evt-keyword", + }, + }); + } + } + + decorations.set(newDecorations as any); + }; + + let timeout: ReturnType | undefined; + const scheduleUpdate = () => { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(update, 100); + }; + + disposables.push(model.onDidChangeContent(scheduleUpdate)); + disposables.push(model.onDidChangeLanguage(scheduleUpdate)); + disposables.push((model as any).onDidChangeTokens(scheduleUpdate)); + disposables.push( + Disposable.create(() => { + if (timeout) { + clearTimeout(timeout); + } + }), + ); + + update(); + + editor.onDispose(() => disposables.dispose()); + } +} diff --git a/extensions/studio/src/browser/c-language/inlay-hints.ts b/extensions/studio/src/browser/c-language/inlay-hints.ts index 3ff7ed1..c210e47 100644 --- a/extensions/studio/src/browser/c-language/inlay-hints.ts +++ b/extensions/studio/src/browser/c-language/inlay-hints.ts @@ -152,6 +152,22 @@ export class InlayHintsContribution implements FrontendApplicationContribution { undefined, ); } + + // Theia's standalone theme service doesn't propagate the theme's + // semanticHighlighting setting, so force it on globally. + this.preferenceService.set( + "editor.semanticHighlighting.enabled", + true, + undefined, + undefined, + ); + + this.preferenceService.set( + "editor.bracketPairColorization.enabled", + false, + undefined, + undefined, + ); } onStop(): void { diff --git a/extensions/studio/src/browser/fonts/fonts.css b/extensions/studio/src/browser/fonts/fonts.css index 6e91aea..b5049da 100644 --- a/extensions/studio/src/browser/fonts/fonts.css +++ b/extensions/studio/src/browser/fonts/fonts.css @@ -34,3 +34,8 @@ .monaco-editor .comment-font-xenon { font-family: "Monaspace Xenon", monospace !important; } + +/* EVT script keywords: colored as keywords */ +.monaco-editor .evt-keyword { + color: var(--star-haven-keyword-foreground) !important; +} diff --git a/extensions/studio/src/browser/icon-theme-sync.ts b/extensions/studio/src/browser/icon-theme-sync.ts index 234cd00..90d159b 100644 --- a/extensions/studio/src/browser/icon-theme-sync.ts +++ b/extensions/studio/src/browser/icon-theme-sync.ts @@ -12,6 +12,7 @@ import { ThemeService } from "@theia/core/lib/browser/theming"; import { IconThemeService } from "@theia/core/lib/browser/icon-theme-service"; const ICON_THEMES: Record = { + "Star Haven Dark": "catppuccin-mocha", "Catppuccin Mocha": "catppuccin-mocha", "Catppuccin Macchiato": "catppuccin-macchiato", "Catppuccin Frappé": "catppuccin-frappe", diff --git a/extensions/studio/src/browser/studio-frontend-module.ts b/extensions/studio/src/browser/studio-frontend-module.ts index 80a152c..cda8550 100644 --- a/extensions/studio/src/browser/studio-frontend-module.ts +++ b/extensions/studio/src/browser/studio-frontend-module.ts @@ -25,6 +25,7 @@ import { CommentFontDecorator } from "./comment-font-decorator"; import { CDeclarationService } from "./c-language/c-declaration-service"; import { DocCommentHoverContribution } from "./c-language/doc-comment-hover"; import { InlayHintsContribution } from "./c-language/inlay-hints"; +import { EvtKeywordDecorator } from "./c-language/evt-keyword-decorator"; import { IconThemeSync } from "./icon-theme-sync"; import "../../src/browser/asset-browser/style.css"; @@ -65,6 +66,9 @@ export default new ContainerModule((bind) => { bind(InlayHintsContribution).toSelf().inSingletonScope(); bind(FrontendApplicationContribution).toService(InlayHintsContribution); + bind(EvtKeywordDecorator).toSelf().inSingletonScope(); + bind(FrontendApplicationContribution).toService(EvtKeywordDecorator); + bind(IconThemeSync).toSelf().inSingletonScope(); bind(FrontendApplicationContribution).toService(IconThemeSync); }); diff --git a/local-plugins/star-haven-theme/package.json b/local-plugins/star-haven-theme/package.json new file mode 100644 index 0000000..790b74b --- /dev/null +++ b/local-plugins/star-haven-theme/package.json @@ -0,0 +1,22 @@ +{ + "name": "star-haven-theme", + "displayName": "Star Haven Theme", + "version": "0.0.0", + "publisher": "star-haven", + "license": "AGPL-3.0-or-later", + "engines": { + "vscode": "^1.50.0" + }, + "categories": [ + "Themes" + ], + "contributes": { + "themes": [ + { + "label": "Star Haven Dark", + "uiTheme": "vs-dark", + "path": "./star-haven-dark.json" + } + ] + } +} diff --git a/local-plugins/star-haven-theme/star-haven-dark.json b/local-plugins/star-haven-theme/star-haven-dark.json new file mode 100644 index 0000000..a509b22 --- /dev/null +++ b/local-plugins/star-haven-theme/star-haven-dark.json @@ -0,0 +1,2238 @@ +{ + "name": "Catppuccin Mocha", + "type": "dark", + "colors": { + "focusBorder": "#cba6f7", + "foreground": "#cdd6f4", + "disabledForeground": "#a6adc8", + "widget.shadow": "#18182580", + "selection.background": "#cba6f766", + "descriptionForeground": "#cdd6f4", + "errorForeground": "#f38ba8", + "icon.foreground": "#cba6f7", + "sash.hoverBorder": "#cba6f7", + "textBlockQuote.background": "#181825", + "textBlockQuote.border": "#11111b", + "textCodeBlock.background": "#181825", + "textLink.activeForeground": "#89dceb", + "textLink.foreground": "#89b4fa", + "textPreformat.foreground": "#cdd6f4", + "textSeparator.foreground": "#cba6f7", + "activityBar.background": "#11111b", + "activityBar.foreground": "#cba6f7", + "activityBar.dropBorder": "#cba6f733", + "activityBar.inactiveForeground": "#6c7086", + "activityBar.border": "#00000000", + "activityBarBadge.background": "#cba6f7", + "activityBarBadge.foreground": "#11111b", + "activityBar.activeBorder": "#00000000", + "activityBar.activeBackground": "#00000000", + "activityBar.activeFocusBorder": "#00000000", + "activityBarTop.foreground": "#cba6f7", + "activityBarTop.activeBorder": "#00000000", + "activityBarTop.inactiveForeground": "#6c7086", + "activityBarTop.dropBorder": "#cba6f733", + "badge.background": "#45475a", + "badge.foreground": "#cdd6f4", + "breadcrumb.activeSelectionForeground": "#cba6f7", + "breadcrumb.background": "#1e1e2e", + "breadcrumb.focusForeground": "#cba6f7", + "breadcrumb.foreground": "#cdd6f4cc", + "breadcrumbPicker.background": "#181825", + "button.background": "#cba6f7", + "button.foreground": "#11111b", + "button.border": "#00000000", + "button.separator": "#00000000", + "button.hoverBackground": "#dec7fa", + "button.secondaryForeground": "#cdd6f4", + "button.secondaryBackground": "#585b70", + "button.secondaryHoverBackground": "#686b84", + "checkbox.background": "#45475a", + "checkbox.border": "#00000000", + "checkbox.foreground": "#cba6f7", + "dropdown.background": "#181825", + "dropdown.listBackground": "#585b70", + "dropdown.border": "#cba6f7", + "dropdown.foreground": "#cdd6f4", + "debugToolBar.background": "#11111b", + "debugToolBar.border": "#00000000", + "debugExceptionWidget.background": "#11111b", + "debugExceptionWidget.border": "#cba6f7", + "debugTokenExpression.number": "#fab387", + "debugTokenExpression.boolean": "#cba6f7", + "debugTokenExpression.string": "#a6e3a1", + "debugTokenExpression.error": "#f38ba8", + "debugIcon.breakpointForeground": "#f38ba8", + "debugIcon.breakpointDisabledForeground": "#f38ba899", + "debugIcon.breakpointUnverifiedForeground": "#a6738c", + "debugIcon.breakpointCurrentStackframeForeground": "#585b70", + "debugIcon.breakpointStackframeForeground": "#585b70", + "debugIcon.startForeground": "#a6e3a1", + "debugIcon.pauseForeground": "#89b4fa", + "debugIcon.stopForeground": "#f38ba8", + "debugIcon.disconnectForeground": "#585b70", + "debugIcon.restartForeground": "#94e2d5", + "debugIcon.stepOverForeground": "#cba6f7", + "debugIcon.stepIntoForeground": "#cdd6f4", + "debugIcon.stepOutForeground": "#cdd6f4", + "debugIcon.continueForeground": "#a6e3a1", + "debugIcon.stepBackForeground": "#585b70", + "debugConsole.infoForeground": "#89b4fa", + "debugConsole.warningForeground": "#fab387", + "debugConsole.errorForeground": "#f38ba8", + "debugConsole.sourceForeground": "#f5e0dc", + "debugConsoleInputIcon.foreground": "#cdd6f4", + "testing.runAction": "#cba6f7", + "testing.iconErrored": "#f38ba8", + "testing.iconFailed": "#f38ba8", + "testing.iconPassed": "#a6e3a1", + "testing.iconQueued": "#89b4fa", + "testing.iconUnset": "#cdd6f4", + "testing.iconSkipped": "#a6adc8", + "testing.iconErrored.retired": "#f38ba8", + "testing.iconFailed.retired": "#f38ba8", + "testing.iconPassed.retired": "#a6e3a1", + "testing.iconQueued.retired": "#89b4fa", + "testing.iconUnset.retired": "#cdd6f4", + "testing.iconSkipped.retired": "#a6adc8", + "testing.peekBorder": "#cba6f7", + "testing.peekHeaderBackground": "#585b70", + "testing.message.error.lineBackground": "#f38ba826", + "testing.message.info.decorationForeground": "#a6e3a1cc", + "testing.message.info.lineBackground": "#a6e3a126", + "testing.messagePeekBorder": "#cba6f7", + "testing.messagePeekHeaderBackground": "#585b70", + "testing.coveredBackground": "#a6e3a14d", + "testing.coveredBorder": "#00000000", + "testing.coveredGutterBackground": "#a6e3a14d", + "testing.uncoveredBranchBackground": "#f38ba833", + "testing.uncoveredBackground": "#f38ba833", + "testing.uncoveredBorder": "#00000000", + "testing.uncoveredGutterBackground": "#f38ba840", + "testing.coverCountBadgeBackground": "#00000000", + "testing.coverCountBadgeForeground": "#cba6f7", + "diffEditor.border": "#585b70", + "diffEditor.insertedTextBackground": "#a6e3a133", + "diffEditor.removedTextBackground": "#f38ba833", + "diffEditor.insertedLineBackground": "#a6e3a126", + "diffEditor.removedLineBackground": "#f38ba826", + "diffEditor.diagonalFill": "#585b7099", + "diffEditorOverview.insertedForeground": "#a6e3a1cc", + "diffEditorOverview.removedForeground": "#f38ba8cc", + "editor.background": "#1e1e2e", + "editor.findMatchBackground": "#5e3f53", + "editor.findMatchBorder": "#f38ba833", + "editor.findMatchHighlightBackground": "#3e5767", + "editor.findMatchHighlightBorder": "#89dceb33", + "editor.findRangeHighlightBackground": "#3e5767", + "editor.findRangeHighlightBorder": "#89dceb33", + "editor.foldBackground": "#89dceb40", + "editor.foreground": "#cdd6f4", + "editor.hoverHighlightBackground": "#89dceb40", + "editor.lineHighlightBackground": "#cdd6f412", + "editor.lineHighlightBorder": "#00000000", + "editor.rangeHighlightBackground": "#89dceb40", + "editor.rangeHighlightBorder": "#00000000", + "editor.selectionBackground": "#9399b240", + "editor.selectionHighlightBackground": "#9399b233", + "editor.selectionHighlightBorder": "#9399b233", + "editor.wordHighlightBackground": "#9399b233", + "editor.wordHighlightStrongBackground": "#89b4fa33", + "editorBracketMatch.background": "#9399b21a", + "editorBracketMatch.border": "#9399b2", + "editorCodeLens.foreground": "#7f849c", + "editorCursor.background": "#1e1e2e", + "editorCursor.foreground": "#f5e0dc", + "editorGroup.border": "#585b70", + "editorGroup.dropBackground": "#cba6f733", + "editorGroup.emptyBackground": "#1e1e2e", + "editorGroupHeader.tabsBackground": "#11111b", + "editorGutter.addedBackground": "#a6e3a1", + "editorGutter.background": "#1e1e2e", + "editorGutter.commentRangeForeground": "#313244", + "editorGutter.commentGlyphForeground": "#cba6f7", + "editorGutter.deletedBackground": "#f38ba8", + "editorGutter.foldingControlForeground": "#9399b2", + "editorGutter.modifiedBackground": "#f9e2af", + "editorHoverWidget.background": "#181825", + "editorHoverWidget.border": "#585b70", + "editorHoverWidget.foreground": "#cdd6f4", + "editorIndentGuide.activeBackground": "#585b70", + "editorIndentGuide.background": "#45475a", + "editorInlayHint.foreground": "#585b70", + "editorInlayHint.background": "#181825bf", + "editorInlayHint.typeForeground": "#bac2de", + "editorInlayHint.typeBackground": "#181825bf", + "editorInlayHint.parameterForeground": "#a6adc8", + "editorInlayHint.parameterBackground": "#181825bf", + "editorLineNumber.activeForeground": "#cba6f7", + "editorLineNumber.foreground": "#7f849c", + "editorLink.activeForeground": "#cba6f7", + "editorMarkerNavigation.background": "#181825", + "editorMarkerNavigationError.background": "#f38ba8", + "editorMarkerNavigationInfo.background": "#89b4fa", + "editorMarkerNavigationWarning.background": "#fab387", + "editorOverviewRuler.background": "#181825", + "editorOverviewRuler.border": "#cdd6f412", + "editorOverviewRuler.modifiedForeground": "#f9e2af", + "editorRuler.foreground": "#585b70", + "editor.stackFrameHighlightBackground": "#f9e2af26", + "editor.focusedStackFrameHighlightBackground": "#a6e3a126", + "editorStickyScrollHover.background": "#313244", + "editorSuggestWidget.background": "#181825", + "editorSuggestWidget.border": "#585b70", + "editorSuggestWidget.foreground": "#cdd6f4", + "editorSuggestWidget.highlightForeground": "#cba6f7", + "editorSuggestWidget.selectedBackground": "#313244", + "editorWhitespace.foreground": "#9399b266", + "editorWidget.background": "#181825", + "editorWidget.foreground": "#cdd6f4", + "editorWidget.resizeBorder": "#585b70", + "editorLightBulb.foreground": "#f9e2af", + "editorError.foreground": "#f38ba8", + "editorError.border": "#00000000", + "editorError.background": "#00000000", + "editorWarning.foreground": "#fab387", + "editorWarning.border": "#00000000", + "editorWarning.background": "#00000000", + "editorInfo.foreground": "#89b4fa", + "editorInfo.border": "#00000000", + "editorInfo.background": "#00000000", + "problemsErrorIcon.foreground": "#f38ba8", + "problemsInfoIcon.foreground": "#89b4fa", + "problemsWarningIcon.foreground": "#fab387", + "extensionButton.prominentForeground": "#11111b", + "extensionButton.prominentBackground": "#cba6f7", + "extensionButton.separator": "#1e1e2e", + "extensionButton.prominentHoverBackground": "#dec7fa", + "extensionBadge.remoteBackground": "#89b4fa", + "extensionBadge.remoteForeground": "#11111b", + "extensionIcon.starForeground": "#f9e2af", + "extensionIcon.verifiedForeground": "#a6e3a1", + "extensionIcon.preReleaseForeground": "#585b70", + "extensionIcon.sponsorForeground": "#f5c2e7", + "gitDecoration.addedResourceForeground": "#a6e3a1", + "gitDecoration.conflictingResourceForeground": "#cba6f7", + "gitDecoration.deletedResourceForeground": "#f38ba8", + "gitDecoration.ignoredResourceForeground": "#6c7086", + "gitDecoration.modifiedResourceForeground": "#f9e2af", + "gitDecoration.stageDeletedResourceForeground": "#f38ba8", + "gitDecoration.stageModifiedResourceForeground": "#f9e2af", + "gitDecoration.submoduleResourceForeground": "#89b4fa", + "gitDecoration.untrackedResourceForeground": "#a6e3a1", + "scmGraph.historyItemRefColor": "#89b4fa", + "scmGraph.historyItemBaseRefColor": "#fab387", + "scmGraph.historyItemRemoteRefColor": "#cba6f7", + "scmGraph.foreground1": "#f9e2af", + "scmGraph.foreground2": "#f38ba8", + "scmGraph.foreground3": "#a6e3a1", + "scmGraph.foreground4": "#cba6f7", + "scmGraph.foreground5": "#94e2d5", + "input.background": "#313244", + "input.border": "#00000000", + "input.foreground": "#cdd6f4", + "input.placeholderForeground": "#cdd6f473", + "inputOption.activeBackground": "#585b70", + "inputOption.activeBorder": "#cba6f7", + "inputOption.activeForeground": "#cdd6f4", + "inputValidation.errorBackground": "#f38ba8", + "inputValidation.errorBorder": "#11111b33", + "inputValidation.errorForeground": "#11111b", + "inputValidation.infoBackground": "#89b4fa", + "inputValidation.infoBorder": "#11111b33", + "inputValidation.infoForeground": "#11111b", + "inputValidation.warningBackground": "#fab387", + "inputValidation.warningBorder": "#11111b33", + "inputValidation.warningForeground": "#11111b", + "list.activeSelectionBackground": "#313244", + "list.activeSelectionForeground": "#cdd6f4", + "list.dropBackground": "#cba6f733", + "list.focusBackground": "#313244", + "list.focusForeground": "#cdd6f4", + "list.focusOutline": "#00000000", + "list.highlightForeground": "#cba6f7", + "list.hoverBackground": "#31324480", + "list.hoverForeground": "#cdd6f4", + "list.inactiveSelectionBackground": "#313244", + "list.inactiveSelectionForeground": "#cdd6f4", + "list.warningForeground": "#fab387", + "listFilterWidget.background": "#45475a", + "listFilterWidget.noMatchesOutline": "#f38ba8", + "listFilterWidget.outline": "#00000000", + "tree.indentGuidesStroke": "#9399b2", + "tree.inactiveIndentGuidesStroke": "#45475a", + "menu.background": "#1e1e2e", + "menu.border": "#1e1e2e80", + "menu.foreground": "#cdd6f4", + "menu.selectionBackground": "#585b70", + "menu.selectionBorder": "#00000000", + "menu.selectionForeground": "#cdd6f4", + "menu.separatorBackground": "#585b70", + "menubar.selectionBackground": "#45475a", + "menubar.selectionForeground": "#cdd6f4", + "merge.commonContentBackground": "#45475a", + "merge.commonHeaderBackground": "#585b70", + "merge.currentContentBackground": "#a6e3a133", + "merge.currentHeaderBackground": "#a6e3a166", + "merge.incomingContentBackground": "#89b4fa33", + "merge.incomingHeaderBackground": "#89b4fa66", + "minimap.background": "#18182580", + "minimap.findMatchHighlight": "#89dceb4d", + "minimap.selectionHighlight": "#585b70bf", + "minimap.selectionOccurrenceHighlight": "#585b70bf", + "minimap.warningHighlight": "#fab387bf", + "minimap.errorHighlight": "#f38ba8bf", + "minimapSlider.background": "#cba6f733", + "minimapSlider.hoverBackground": "#cba6f766", + "minimapSlider.activeBackground": "#cba6f799", + "minimapGutter.addedBackground": "#a6e3a1bf", + "minimapGutter.deletedBackground": "#f38ba8bf", + "minimapGutter.modifiedBackground": "#f9e2afbf", + "notificationCenter.border": "#cba6f7", + "notificationCenterHeader.foreground": "#cdd6f4", + "notificationCenterHeader.background": "#181825", + "notificationToast.border": "#cba6f7", + "notifications.foreground": "#cdd6f4", + "notifications.background": "#181825", + "notifications.border": "#cba6f7", + "notificationLink.foreground": "#89b4fa", + "notificationsErrorIcon.foreground": "#f38ba8", + "notificationsWarningIcon.foreground": "#fab387", + "notificationsInfoIcon.foreground": "#89b4fa", + "panel.background": "#1e1e2e", + "panel.border": "#585b70", + "panelSection.border": "#585b70", + "panelSection.dropBackground": "#cba6f733", + "panelTitle.activeBorder": "#cba6f7", + "panelTitle.activeForeground": "#cdd6f4", + "panelTitle.inactiveForeground": "#a6adc8", + "peekView.border": "#cba6f7", + "peekViewEditor.background": "#181825", + "peekViewEditorGutter.background": "#181825", + "peekViewEditor.matchHighlightBackground": "#89dceb4d", + "peekViewEditor.matchHighlightBorder": "#00000000", + "peekViewResult.background": "#181825", + "peekViewResult.fileForeground": "#cdd6f4", + "peekViewResult.lineForeground": "#cdd6f4", + "peekViewResult.matchHighlightBackground": "#89dceb4d", + "peekViewResult.selectionBackground": "#313244", + "peekViewResult.selectionForeground": "#cdd6f4", + "peekViewTitle.background": "#1e1e2e", + "peekViewTitleDescription.foreground": "#bac2deb3", + "peekViewTitleLabel.foreground": "#cdd6f4", + "pickerGroup.border": "#cba6f7", + "pickerGroup.foreground": "#cba6f7", + "progressBar.background": "#cba6f7", + "scrollbar.shadow": "#11111b", + "scrollbarSlider.activeBackground": "#31324466", + "scrollbarSlider.background": "#585b7080", + "scrollbarSlider.hoverBackground": "#6c7086", + "settings.focusedRowBackground": "#585b7033", + "settings.headerForeground": "#cdd6f4", + "settings.modifiedItemIndicator": "#cba6f7", + "settings.dropdownBackground": "#45475a", + "settings.dropdownListBorder": "#00000000", + "settings.textInputBackground": "#45475a", + "settings.textInputBorder": "#00000000", + "settings.numberInputBackground": "#45475a", + "settings.numberInputBorder": "#00000000", + "sideBar.background": "#181825", + "sideBar.dropBackground": "#cba6f733", + "sideBar.foreground": "#cdd6f4", + "sideBar.border": "#00000000", + "sideBarSectionHeader.background": "#181825", + "sideBarSectionHeader.foreground": "#cdd6f4", + "sideBarTitle.foreground": "#cba6f7", + "banner.background": "#45475a", + "banner.foreground": "#cdd6f4", + "banner.iconForeground": "#cdd6f4", + "statusBar.background": "#11111b", + "statusBar.foreground": "#cdd6f4", + "statusBar.border": "#00000000", + "statusBar.noFolderBackground": "#11111b", + "statusBar.noFolderForeground": "#cdd6f4", + "statusBar.noFolderBorder": "#00000000", + "statusBar.debuggingBackground": "#fab387", + "statusBar.debuggingForeground": "#11111b", + "statusBar.debuggingBorder": "#00000000", + "statusBarItem.remoteBackground": "#89b4fa", + "statusBarItem.remoteForeground": "#11111b", + "statusBarItem.activeBackground": "#585b7066", + "statusBarItem.hoverBackground": "#585b7033", + "statusBarItem.prominentForeground": "#cba6f7", + "statusBarItem.prominentBackground": "#00000000", + "statusBarItem.prominentHoverBackground": "#585b7033", + "statusBarItem.errorForeground": "#f38ba8", + "statusBarItem.errorBackground": "#00000000", + "statusBarItem.warningForeground": "#fab387", + "statusBarItem.warningBackground": "#00000000", + "commandCenter.foreground": "#bac2de", + "commandCenter.inactiveForeground": "#bac2de", + "commandCenter.activeForeground": "#cba6f7", + "commandCenter.background": "#181825", + "commandCenter.activeBackground": "#585b7033", + "commandCenter.border": "#00000000", + "commandCenter.inactiveBorder": "#00000000", + "commandCenter.activeBorder": "#cba6f7", + "tab.activeBackground": "#1e1e2e", + "tab.activeBorder": "#00000000", + "tab.activeBorderTop": "#cba6f7", + "tab.activeForeground": "#cba6f7", + "tab.activeModifiedBorder": "#f9e2af", + "tab.border": "#181825", + "tab.hoverBackground": "#28283d", + "tab.hoverBorder": "#00000000", + "tab.hoverForeground": "#cba6f7", + "tab.inactiveBackground": "#181825", + "tab.inactiveForeground": "#6c7086", + "tab.inactiveModifiedBorder": "#f9e2af4d", + "tab.lastPinnedBorder": "#cba6f7", + "tab.unfocusedActiveBackground": "#181825", + "tab.unfocusedActiveBorder": "#00000000", + "tab.unfocusedActiveBorderTop": "#cba6f74d", + "tab.unfocusedInactiveBackground": "#0e0e16", + "terminal.foreground": "#cdd6f4", + "terminal.ansiBlack": "#45475a", + "terminal.ansiRed": "#f38ba8", + "terminal.ansiGreen": "#a6e3a1", + "terminal.ansiYellow": "#f9e2af", + "terminal.ansiBlue": "#89b4fa", + "terminal.ansiMagenta": "#f5c2e7", + "terminal.ansiCyan": "#94e2d5", + "terminal.ansiWhite": "#a6adc8", + "terminal.ansiBrightBlack": "#585b70", + "terminal.ansiBrightRed": "#f37799", + "terminal.ansiBrightGreen": "#89d88b", + "terminal.ansiBrightYellow": "#ebd391", + "terminal.ansiBrightBlue": "#74a8fc", + "terminal.ansiBrightMagenta": "#f2aede", + "terminal.ansiBrightCyan": "#6bd7ca", + "terminal.ansiBrightWhite": "#bac2de", + "terminal.selectionBackground": "#585b70", + "terminal.inactiveSelectionBackground": "#585b7080", + "terminalCursor.background": "#1e1e2e", + "terminalCursor.foreground": "#f5e0dc", + "terminal.border": "#585b70", + "terminal.dropBackground": "#cba6f733", + "terminal.tab.activeBorder": "#cba6f7", + "terminalCommandDecoration.defaultBackground": "#585b70", + "terminalCommandDecoration.successBackground": "#a6e3a1", + "terminalCommandDecoration.errorBackground": "#f38ba8", + "titleBar.activeBackground": "#11111b", + "titleBar.activeForeground": "#cdd6f4", + "titleBar.inactiveBackground": "#11111b", + "titleBar.inactiveForeground": "#cdd6f480", + "titleBar.border": "#00000000", + "welcomePage.tileBackground": "#181825", + "welcomePage.progress.background": "#11111b", + "welcomePage.progress.foreground": "#cba6f7", + "walkThrough.embeddedEditorBackground": "#1e1e2e4d", + "symbolIcon.textForeground": "#cdd6f4", + "symbolIcon.arrayForeground": "#fab387", + "symbolIcon.booleanForeground": "#cba6f7", + "symbolIcon.classForeground": "#f9e2af", + "symbolIcon.colorForeground": "#f5c2e7", + "symbolIcon.constantForeground": "#fab387", + "symbolIcon.constructorForeground": "#b4befe", + "symbolIcon.enumeratorForeground": "#f9e2af", + "symbolIcon.enumeratorMemberForeground": "#f9e2af", + "symbolIcon.eventForeground": "#f5c2e7", + "symbolIcon.fieldForeground": "#cdd6f4", + "symbolIcon.fileForeground": "#cba6f7", + "symbolIcon.folderForeground": "#cba6f7", + "symbolIcon.functionForeground": "#89b4fa", + "symbolIcon.interfaceForeground": "#f9e2af", + "symbolIcon.keyForeground": "#94e2d5", + "symbolIcon.keywordForeground": "#cba6f7", + "symbolIcon.methodForeground": "#89b4fa", + "symbolIcon.moduleForeground": "#cdd6f4", + "symbolIcon.namespaceForeground": "#f9e2af", + "symbolIcon.nullForeground": "#eba0ac", + "symbolIcon.numberForeground": "#fab387", + "symbolIcon.objectForeground": "#f9e2af", + "symbolIcon.operatorForeground": "#94e2d5", + "symbolIcon.packageForeground": "#f2cdcd", + "symbolIcon.propertyForeground": "#eba0ac", + "symbolIcon.referenceForeground": "#f9e2af", + "symbolIcon.snippetForeground": "#f2cdcd", + "symbolIcon.stringForeground": "#a6e3a1", + "symbolIcon.structForeground": "#94e2d5", + "symbolIcon.typeParameterForeground": "#eba0ac", + "symbolIcon.unitForeground": "#cdd6f4", + "symbolIcon.variableForeground": "#cdd6f4", + "charts.foreground": "#cdd6f4", + "charts.lines": "#bac2de", + "charts.red": "#f38ba8", + "charts.blue": "#89b4fa", + "charts.yellow": "#f9e2af", + "charts.orange": "#fab387", + "charts.green": "#a6e3a1", + "charts.purple": "#cba6f7", + "errorLens.errorBackground": "#f38ba826", + "errorLens.errorBackgroundLight": "#f38ba826", + "errorLens.errorForeground": "#f38ba8", + "errorLens.errorForegroundLight": "#f38ba8", + "errorLens.errorMessageBackground": "#f38ba826", + "errorLens.hintBackground": "#a6e3a126", + "errorLens.hintBackgroundLight": "#a6e3a126", + "errorLens.hintForeground": "#a6e3a1", + "errorLens.hintForegroundLight": "#a6e3a1", + "errorLens.hintMessageBackground": "#a6e3a126", + "errorLens.infoBackground": "#89b4fa26", + "errorLens.infoBackgroundLight": "#89b4fa26", + "errorLens.infoForeground": "#89b4fa", + "errorLens.infoForegroundLight": "#89b4fa", + "errorLens.infoMessageBackground": "#89b4fa26", + "errorLens.statusBarErrorForeground": "#f38ba8", + "errorLens.statusBarHintForeground": "#a6e3a1", + "errorLens.statusBarIconErrorForeground": "#f38ba8", + "errorLens.statusBarIconWarningForeground": "#fab387", + "errorLens.statusBarInfoForeground": "#89b4fa", + "errorLens.statusBarWarningForeground": "#fab387", + "errorLens.warningBackground": "#fab38726", + "errorLens.warningBackgroundLight": "#fab38726", + "errorLens.warningForeground": "#fab387", + "errorLens.warningForegroundLight": "#fab387", + "errorLens.warningMessageBackground": "#fab38726", + "issues.closed": "#cba6f7", + "issues.newIssueDecoration": "#f5e0dc", + "issues.open": "#a6e3a1", + "pullRequests.closed": "#f38ba8", + "pullRequests.draft": "#9399b2", + "pullRequests.merged": "#cba6f7", + "pullRequests.notification": "#cdd6f4", + "pullRequests.open": "#a6e3a1", + "gitlens.gutterBackgroundColor": "#3132444d", + "gitlens.gutterForegroundColor": "#cdd6f4", + "gitlens.gutterUncommittedForegroundColor": "#cba6f7", + "gitlens.trailingLineBackgroundColor": "#00000000", + "gitlens.trailingLineForegroundColor": "#cdd6f44d", + "gitlens.lineHighlightBackgroundColor": "#cba6f726", + "gitlens.lineHighlightOverviewRulerColor": "#cba6f7cc", + "gitlens.openAutolinkedIssueIconColor": "#a6e3a1", + "gitlens.closedAutolinkedIssueIconColor": "#cba6f7", + "gitlens.closedPullRequestIconColor": "#f38ba8", + "gitlens.openPullRequestIconColor": "#a6e3a1", + "gitlens.mergedPullRequestIconColor": "#cba6f7", + "gitlens.unpublishedChangesIconColor": "#a6e3a1", + "gitlens.unpublishedCommitIconColor": "#a6e3a1", + "gitlens.unpulledChangesIconColor": "#fab387", + "gitlens.decorations.branchAheadForegroundColor": "#a6e3a1", + "gitlens.decorations.branchBehindForegroundColor": "#fab387", + "gitlens.decorations.branchDivergedForegroundColor": "#f9e2af", + "gitlens.decorations.branchUnpublishedForegroundColor": "#a6e3a1", + "gitlens.decorations.branchMissingUpstreamForegroundColor": "#fab387", + "gitlens.decorations.statusMergingOrRebasingConflictForegroundColor": "#eba0ac", + "gitlens.decorations.statusMergingOrRebasingForegroundColor": "#f9e2af", + "gitlens.decorations.workspaceRepoMissingForegroundColor": "#a6adc8", + "gitlens.decorations.workspaceCurrentForegroundColor": "#cba6f7", + "gitlens.decorations.workspaceRepoOpenForegroundColor": "#cba6f7", + "gitlens.decorations.worktreeHasUncommittedChangesForegroundColor": "#fab387", + "gitlens.decorations.worktreeMissingForegroundColor": "#eba0ac", + "gitlens.graphLane1Color": "#cba6f7", + "gitlens.graphLane2Color": "#f9e2af", + "gitlens.graphLane3Color": "#89b4fa", + "gitlens.graphLane4Color": "#f2cdcd", + "gitlens.graphLane5Color": "#a6e3a1", + "gitlens.graphLane6Color": "#b4befe", + "gitlens.graphLane7Color": "#f5e0dc", + "gitlens.graphLane8Color": "#f38ba8", + "gitlens.graphLane9Color": "#94e2d5", + "gitlens.graphLane10Color": "#f5c2e7", + "gitlens.graphChangesColumnAddedColor": "#a6e3a1", + "gitlens.graphChangesColumnDeletedColor": "#f38ba8", + "gitlens.graphMinimapMarkerHeadColor": "#a6e3a1", + "gitlens.graphScrollMarkerHeadColor": "#a6e3a1", + "gitlens.graphMinimapMarkerUpstreamColor": "#93dd8d", + "gitlens.graphScrollMarkerUpstreamColor": "#93dd8d", + "gitlens.graphMinimapMarkerHighlightsColor": "#f9e2af", + "gitlens.graphScrollMarkerHighlightsColor": "#f9e2af", + "gitlens.graphMinimapMarkerLocalBranchesColor": "#89b4fa", + "gitlens.graphScrollMarkerLocalBranchesColor": "#89b4fa", + "gitlens.graphMinimapMarkerRemoteBranchesColor": "#71a4f9", + "gitlens.graphScrollMarkerRemoteBranchesColor": "#71a4f9", + "gitlens.graphMinimapMarkerStashesColor": "#cba6f7", + "gitlens.graphScrollMarkerStashesColor": "#cba6f7", + "gitlens.graphMinimapMarkerTagsColor": "#f2cdcd", + "gitlens.graphScrollMarkerTagsColor": "#f2cdcd", + "editorBracketHighlight.foreground1": "#f38ba8", + "editorBracketHighlight.foreground2": "#fab387", + "editorBracketHighlight.foreground3": "#f9e2af", + "editorBracketHighlight.foreground4": "#a6e3a1", + "editorBracketHighlight.foreground5": "#74c7ec", + "editorBracketHighlight.foreground6": "#cba6f7", + "editorBracketHighlight.unexpectedBracket.foreground": "#eba0ac", + "button.secondaryBorder": "#cba6f7", + "table.headerBackground": "#313244", + "table.headerForeground": "#cdd6f4", + "list.focusAndSelectionBackground": "#45475a" + }, + "semanticHighlighting": true, + "semanticTokenColors": { + "enumMember": { + "foreground": "#94e2d5" + }, + "selfKeyword": { + "foreground": "#f38ba8" + }, + "boolean": { + "foreground": "#fab387" + }, + "number": { + "foreground": "#fab387" + }, + "variable.defaultLibrary": { + "foreground": "#eba0ac" + }, + "class:python": { + "foreground": "#f9e2af" + }, + "class.builtin:python": { + "foreground": "#cba6f7" + }, + "variable.typeHint:python": { + "foreground": "#f9e2af" + }, + "function.decorator:python": { + "foreground": "#fab387" + }, + "variable.readonly:javascript": { + "foreground": "#cdd6f4" + }, + "variable.readonly:typescript": { + "foreground": "#cdd6f4" + }, + "property.readonly:javascript": { + "foreground": "#cdd6f4" + }, + "property.readonly:typescript": { + "foreground": "#cdd6f4" + }, + "variable.readonly:javascriptreact": { + "foreground": "#cdd6f4" + }, + "variable.readonly:typescriptreact": { + "foreground": "#cdd6f4" + }, + "property.readonly:javascriptreact": { + "foreground": "#cdd6f4" + }, + "property.readonly:typescriptreact": { + "foreground": "#cdd6f4" + }, + "variable.readonly:scala": { + "foreground": "#cdd6f4" + }, + "type.defaultLibrary:go": { + "foreground": "#cba6f7" + }, + "variable.readonly.defaultLibrary:go": { + "foreground": "#cba6f7" + }, + "tomlArrayKey": { + "foreground": "#89b4fa", + "fontStyle": "" + }, + "tomlTableKey": { + "foreground": "#89b4fa", + "fontStyle": "" + }, + "builtinAttribute.attribute.library:rust": { + "foreground": "#89b4fa" + }, + "generic.attribute:rust": { + "foreground": "#cdd6f4" + }, + "constant.builtin.readonly:nix": { + "foreground": "#cba6f7" + }, + "heading": { + "foreground": "#f38ba8" + }, + "text.emph": { + "foreground": "#f38ba8", + "fontStyle": "italic" + }, + "text.strong": { + "foreground": "#f38ba8", + "fontStyle": "bold" + }, + "text.math": { + "foreground": "#f2cdcd" + }, + "pol": { + "foreground": "#f2cdcd" + } + }, + "tokenColors": [ + { + "name": "Basic text & variable names (incl. leading punctuation)", + "scope": [ + "text", + "source", + "variable.other.readwrite", + "punctuation.definition.variable" + ], + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Parentheses, Brackets, Braces", + "scope": "punctuation", + "settings": { + "foreground": "#9399b2", + "fontStyle": "" + } + }, + { + "name": "Comments", + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "foreground": "#9399b2", + "fontStyle": "" + } + }, + { + "scope": ["string", "punctuation.definition.string"], + "settings": { + "foreground": "#a6e3a1" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Booleans, constants, numbers", + "scope": [ + "constant.numeric", + "variable.other.constant", + "entity.name.constant", + "constant.language.boolean", + "constant.language.false", + "constant.language.true", + "keyword.other.unit.user-defined", + "keyword.other.unit.suffix.floating-point" + ], + "settings": { + "foreground": "#fab387" + } + }, + { + "scope": [ + "keyword", + "keyword.operator.word", + "keyword.operator.new", + "variable.language.super", + "support.type.primitive", + "storage.type", + "storage.modifier", + "punctuation.definition.keyword" + ], + "settings": { + "foreground": "#cba6f7", + "fontStyle": "" + } + }, + { + "scope": "entity.name.tag.documentation", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "Punctuation", + "scope": [ + "keyword.operator", + "punctuation.accessor", + "punctuation.definition.generic", + "meta.function.closure punctuation.section.parameters", + "punctuation.definition.tag", + "punctuation.separator.key-value" + ], + "settings": { + "foreground": "#94e2d5" + } + }, + { + "scope": [ + "entity.name.function", + "meta.function-call.method", + "support.function", + "support.function.misc", + "variable.function" + ], + "settings": { + "foreground": "#89b4fa", + "fontStyle": "italic" + } + }, + { + "name": "Classes", + "scope": [ + "entity.name.class", + "entity.other.inherited-class", + "support.class", + "meta.function-call.constructor", + "entity.name.struct" + ], + "settings": { + "foreground": "#f9e2af", + "fontStyle": "italic" + } + }, + { + "name": "Enum", + "scope": "entity.name.enum", + "settings": { + "foreground": "#f9e2af", + "fontStyle": "italic" + } + }, + { + "name": "Enum member", + "scope": [ + "meta.enum variable.other.readwrite", + "variable.other.enummember" + ], + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Object properties", + "scope": "meta.property.object", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Types", + "scope": [ + "meta.type", + "meta.type-alias", + "support.type", + "entity.name.type" + ], + "settings": { + "foreground": "#f9e2af", + "fontStyle": "italic" + } + }, + { + "name": "Decorators", + "scope": [ + "meta.annotation variable.function", + "meta.annotation variable.annotation.function", + "meta.annotation punctuation.definition.annotation", + "meta.decorator", + "punctuation.decorator" + ], + "settings": { + "foreground": "#fab387" + } + }, + { + "scope": ["variable.parameter", "meta.function.parameters"], + "settings": { + "foreground": "#eba0ac", + "fontStyle": "italic" + } + }, + { + "name": "Built-ins", + "scope": ["constant.language", "support.function.builtin"], + "settings": { + "foreground": "#f38ba8" + } + }, + { + "scope": "entity.other.attribute-name.documentation", + "settings": { + "foreground": "#f38ba8" + } + }, + { + "name": "Preprocessor directives", + "scope": [ + "keyword.control.directive", + "punctuation.definition.directive" + ], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Type parameters", + "scope": "punctuation.definition.typeparameters", + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "Namespaces", + "scope": "entity.name.namespace", + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Property names (left hand assignments in json/yaml/css/less)", + "scope": [ + "support.type.property-name.css", + "support.type.property-name.less" + ], + "settings": { + "foreground": "#89b4fa", + "fontStyle": "" + } + }, + { + "name": "This/Self keyword", + "scope": [ + "variable.language.this", + "variable.language.this punctuation.definition.variable" + ], + "settings": { + "foreground": "#f38ba8" + } + }, + { + "name": "Object properties", + "scope": "variable.object.property", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "String template interpolation", + "scope": ["string.template variable", "string variable"], + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "`new` as bold", + "scope": "keyword.operator.new", + "settings": { + "fontStyle": "bold" + } + }, + { + "name": "C++ extern keyword", + "scope": "storage.modifier.specifier.extern.cpp", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "C++ scope resolution", + "scope": [ + "entity.name.scope-resolution.template.call.cpp", + "entity.name.scope-resolution.parameter.cpp", + "entity.name.scope-resolution.cpp", + "entity.name.scope-resolution.function.definition.cpp" + ], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "C++ doc keywords", + "scope": "storage.type.class.doxygen", + "settings": { + "fontStyle": "" + } + }, + { + "name": "C++ operators", + "scope": ["storage.modifier.reference.cpp"], + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "C# Interpolated Strings", + "scope": "meta.interpolation.cs", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "C# xml-style docs", + "scope": "comment.block.documentation.cs", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Classes, reflecting the className color in JSX", + "scope": [ + "source.css entity.other.attribute-name.class.css", + "entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css" + ], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Operators", + "scope": "punctuation.separator.operator.css", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Pseudo classes", + "scope": "source.css entity.other.attribute-name.pseudo-class", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "scope": "source.css constant.other.unicode-range", + "settings": { + "foreground": "#fab387" + } + }, + { + "scope": "source.css variable.parameter.url", + "settings": { + "foreground": "#a6e3a1", + "fontStyle": "" + } + }, + { + "name": "CSS vendored property names", + "scope": ["support.type.vendored.property-name"], + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "Less/SCSS right-hand variables (@/$-prefixed)", + "scope": [ + "source.css meta.property-value variable", + "source.css meta.property-value variable.other.less", + "source.css meta.property-value variable.other.less punctuation.definition.variable.less", + "meta.definition.variable.scss" + ], + "settings": { + "foreground": "#eba0ac" + } + }, + { + "name": "CSS variables (--prefixed)", + "scope": [ + "source.css meta.property-list variable", + "meta.property-list variable.other.less", + "meta.property-list variable.other.less punctuation.definition.variable.less" + ], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "CSS Percentage values, styled the same as numbers", + "scope": "keyword.other.unit.percentage.css", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "CSS Attribute selectors, styled the same as strings", + "scope": "source.css meta.attribute-selector", + "settings": { + "foreground": "#a6e3a1" + } + }, + { + "name": "JSON/YAML keys, other left-hand assignments", + "scope": [ + "keyword.other.definition.ini", + "punctuation.support.type.property-name.json", + "support.type.property-name.json", + "punctuation.support.type.property-name.toml", + "support.type.property-name.toml", + "entity.name.tag.yaml", + "punctuation.support.type.property-name.yaml", + "support.type.property-name.yaml" + ], + "settings": { + "foreground": "#89b4fa", + "fontStyle": "" + } + }, + { + "name": "JSON/YAML constants", + "scope": ["constant.language.json", "constant.language.yaml"], + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "YAML anchors", + "scope": ["entity.name.type.anchor.yaml", "variable.other.alias.yaml"], + "settings": { + "foreground": "#f9e2af", + "fontStyle": "" + } + }, + { + "name": "TOML tables / ini groups", + "scope": [ + "support.type.property-name.table", + "entity.name.section.group-title.ini" + ], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "TOML dates", + "scope": "constant.other.time.datetime.offset.toml", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "YAML anchor puctuation", + "scope": [ + "punctuation.definition.anchor.yaml", + "punctuation.definition.alias.yaml" + ], + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "YAML triple dashes", + "scope": "entity.other.document.begin.yaml", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Markup Diff", + "scope": "markup.changed.diff", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Diff", + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "Diff Inserted", + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#a6e3a1" + } + }, + { + "name": "Diff Deleted", + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#f38ba8" + } + }, + { + "name": "dotenv left-hand side assignments", + "scope": ["variable.other.env"], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "dotenv reference to existing env variable", + "scope": ["string.quoted variable.other.env"], + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "GDScript functions", + "scope": "support.function.builtin.gdscript", + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "GDScript constants", + "scope": "constant.language.gdscript", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Comment keywords", + "scope": "comment meta.annotation.go", + "settings": { + "foreground": "#eba0ac" + } + }, + { + "name": "go:embed, go:build, etc.", + "scope": "comment meta.annotation.parameters.go", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Go constants (nil, true, false)", + "scope": "constant.language.go", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "GraphQL variables", + "scope": "variable.graphql", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "GraphQL aliases", + "scope": "string.unquoted.alias.graphql", + "settings": { + "foreground": "#f2cdcd" + } + }, + { + "name": "GraphQL enum members", + "scope": "constant.character.enum.graphql", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "GraphQL field in types", + "scope": "meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql", + "settings": { + "foreground": "#f2cdcd" + } + }, + { + "name": "HTML/XML DOCTYPE as keyword", + "scope": [ + "keyword.other.doctype", + "meta.tag.sgml.doctype punctuation.definition.tag", + "meta.tag.metadata.doctype entity.name.tag", + "meta.tag.metadata.doctype punctuation.definition.tag" + ], + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "HTML/XML-like ", + "scope": ["entity.name.tag"], + "settings": { + "foreground": "#89b4fa", + "fontStyle": "" + } + }, + { + "name": "Special characters like &", + "scope": [ + "text.html constant.character.entity", + "text.html constant.character.entity punctuation", + "constant.character.entity.xml", + "constant.character.entity.xml punctuation", + "constant.character.entity.js.jsx", + "constant.charactger.entity.js.jsx punctuation", + "constant.character.entity.tsx", + "constant.character.entity.tsx punctuation" + ], + "settings": { + "foreground": "#f38ba8" + } + }, + { + "name": "HTML/XML tag attribute values", + "scope": ["entity.other.attribute-name"], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Components", + "scope": [ + "support.class.component", + "support.class.component.jsx", + "support.class.component.tsx", + "support.class.component.vue" + ], + "settings": { + "foreground": "#f5c2e7", + "fontStyle": "" + } + }, + { + "name": "Annotations", + "scope": ["punctuation.definition.annotation", "storage.type.annotation"], + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Java enums", + "scope": "constant.other.enum.java", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Java imports", + "scope": "storage.modifier.import.java", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Javadoc", + "scope": "comment.block.javadoc.java keyword.other.documentation.javadoc.java", + "settings": { + "fontStyle": "" + } + }, + { + "name": "Exported Variable", + "scope": "meta.export variable.other.readwrite.js", + "settings": { + "foreground": "#eba0ac" + } + }, + { + "name": "JS/TS constants & properties", + "scope": [ + "variable.other.constant.js", + "variable.other.constant.ts", + "variable.other.property.js", + "variable.other.property.ts" + ], + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "JSDoc; these are mainly params, so styled as such", + "scope": [ + "variable.other.jsdoc", + "comment.block.documentation variable.other" + ], + "settings": { + "foreground": "#eba0ac", + "fontStyle": "" + } + }, + { + "name": "JSDoc keywords", + "scope": "storage.type.class.jsdoc", + "settings": { + "fontStyle": "" + } + }, + { + "scope": "support.type.object.console.js", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Node constants as keywords (module, etc.)", + "scope": ["support.constant.node", "support.type.object.module.js"], + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "implements as keyword", + "scope": "storage.modifier.implements", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "Builtin types", + "scope": [ + "constant.language.null.js", + "constant.language.null.ts", + "constant.language.undefined.js", + "constant.language.undefined.ts", + "support.type.builtin.ts" + ], + "settings": { + "foreground": "#cba6f7" + } + }, + { + "scope": "variable.parameter.generic", + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Arrow functions", + "scope": [ + "keyword.declaration.function.arrow.js", + "storage.type.function.arrow.ts" + ], + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach)", + "scope": "punctuation.decorator.ts", + "settings": { + "foreground": "#89b4fa", + "fontStyle": "italic" + } + }, + { + "name": "Extra JS/TS keywords", + "scope": [ + "keyword.operator.expression.in.js", + "keyword.operator.expression.in.ts", + "keyword.operator.expression.infer.ts", + "keyword.operator.expression.instanceof.js", + "keyword.operator.expression.instanceof.ts", + "keyword.operator.expression.is", + "keyword.operator.expression.keyof.ts", + "keyword.operator.expression.of.js", + "keyword.operator.expression.of.ts", + "keyword.operator.expression.typeof.ts" + ], + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "Julia macros", + "scope": "support.function.macro.julia", + "settings": { + "foreground": "#94e2d5", + "fontStyle": "italic" + } + }, + { + "name": "Julia language constants (true, false)", + "scope": "constant.language.julia", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Julia other constants (these seem to be arguments inside arrays)", + "scope": "constant.other.symbol.julia", + "settings": { + "foreground": "#eba0ac" + } + }, + { + "name": "LaTeX preamble", + "scope": "text.tex keyword.control.preamble", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "LaTeX be functions", + "scope": "text.tex support.function.be", + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "LaTeX math", + "scope": "constant.other.general.math.tex", + "settings": { + "foreground": "#f2cdcd" + } + }, + { + "name": "Liquid Builtin Objects & User Defined Variables", + "scope": "variable.language.liquid", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Lua docstring keywords", + "scope": "comment.line.double-dash.documentation.lua storage.type.annotation.lua", + "settings": { + "foreground": "#cba6f7", + "fontStyle": "" + } + }, + { + "name": "Lua docstring variables", + "scope": [ + "comment.line.double-dash.documentation.lua entity.name.variable.lua", + "comment.line.double-dash.documentation.lua variable.lua" + ], + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "scope": [ + "heading.1.markdown punctuation.definition.heading.markdown", + "heading.1.markdown", + "heading.1.quarto punctuation.definition.heading.quarto", + "heading.1.quarto", + "markup.heading.atx.1.mdx", + "markup.heading.atx.1.mdx punctuation.definition.heading.mdx", + "markup.heading.setext.1.markdown", + "markup.heading.heading-0.asciidoc" + ], + "settings": { + "foreground": "#f38ba8" + } + }, + { + "scope": [ + "heading.2.markdown punctuation.definition.heading.markdown", + "heading.2.markdown", + "heading.2.quarto punctuation.definition.heading.quarto", + "heading.2.quarto", + "markup.heading.atx.2.mdx", + "markup.heading.atx.2.mdx punctuation.definition.heading.mdx", + "markup.heading.setext.2.markdown", + "markup.heading.heading-1.asciidoc" + ], + "settings": { + "foreground": "#fab387" + } + }, + { + "scope": [ + "heading.3.markdown punctuation.definition.heading.markdown", + "heading.3.markdown", + "heading.3.quarto punctuation.definition.heading.quarto", + "heading.3.quarto", + "markup.heading.atx.3.mdx", + "markup.heading.atx.3.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-2.asciidoc" + ], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "scope": [ + "heading.4.markdown punctuation.definition.heading.markdown", + "heading.4.markdown", + "heading.4.quarto punctuation.definition.heading.quarto", + "heading.4.quarto", + "markup.heading.atx.4.mdx", + "markup.heading.atx.4.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-3.asciidoc" + ], + "settings": { + "foreground": "#a6e3a1" + } + }, + { + "scope": [ + "heading.5.markdown punctuation.definition.heading.markdown", + "heading.5.markdown", + "heading.5.quarto punctuation.definition.heading.quarto", + "heading.5.quarto", + "markup.heading.atx.5.mdx", + "markup.heading.atx.5.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-4.asciidoc" + ], + "settings": { + "foreground": "#74c7ec" + } + }, + { + "scope": [ + "heading.6.markdown punctuation.definition.heading.markdown", + "heading.6.markdown", + "heading.6.quarto punctuation.definition.heading.quarto", + "heading.6.quarto", + "markup.heading.atx.6.mdx", + "markup.heading.atx.6.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-5.asciidoc" + ], + "settings": { + "foreground": "#b4befe" + } + }, + { + "scope": "markup.bold", + "settings": { + "foreground": "#f38ba8", + "fontStyle": "bold" + } + }, + { + "scope": "markup.italic", + "settings": { + "foreground": "#f38ba8", + "fontStyle": "italic" + } + }, + { + "scope": "markup.strikethrough", + "settings": { + "foreground": "#a6adc8", + "fontStyle": "strikethrough" + } + }, + { + "name": "Markdown auto links", + "scope": ["punctuation.definition.link", "markup.underline.link"], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "Markdown links", + "scope": [ + "text.html.markdown punctuation.definition.link.title", + "text.html.quarto punctuation.definition.link.title", + "string.other.link.title.markdown", + "string.other.link.title.quarto", + "markup.link", + "punctuation.definition.constant.markdown", + "punctuation.definition.constant.quarto", + "constant.other.reference.link.markdown", + "constant.other.reference.link.quarto", + "markup.substitution.attribute-reference" + ], + "settings": { + "foreground": "#b4befe" + } + }, + { + "name": "Markdown code spans", + "scope": [ + "punctuation.definition.raw.markdown", + "punctuation.definition.raw.quarto", + "markup.inline.raw.string.markdown", + "markup.inline.raw.string.quarto", + "markup.raw.block.markdown", + "markup.raw.block.quarto" + ], + "settings": { + "foreground": "#a6e3a1" + } + }, + { + "name": "Markdown triple backtick language identifier", + "scope": "fenced_code.block.language", + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "Markdown triple backticks", + "scope": [ + "markup.fenced_code.block punctuation.definition", + "markup.raw support.asciidoc" + ], + "settings": { + "foreground": "#9399b2" + } + }, + { + "name": "Markdown quotes", + "scope": ["markup.quote", "punctuation.definition.quote.begin"], + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Markdown separators", + "scope": "meta.separator.markdown", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Markdown list bullets", + "scope": [ + "punctuation.definition.list.begin.markdown", + "punctuation.definition.list.begin.quarto", + "markup.list.bullet" + ], + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Quarto headings", + "scope": "markup.heading.quarto", + "settings": { + "fontStyle": "bold" + } + }, + { + "name": "Nix attribute names", + "scope": [ + "entity.other.attribute-name.multipart.nix", + "entity.other.attribute-name.single.nix" + ], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "Nix parameter names", + "scope": "variable.parameter.name.nix", + "settings": { + "foreground": "#cdd6f4", + "fontStyle": "" + } + }, + { + "name": "Nix interpolated parameter names", + "scope": "meta.embedded variable.parameter.name.nix", + "settings": { + "foreground": "#b4befe", + "fontStyle": "" + } + }, + { + "name": "Nix paths", + "scope": "string.unquoted.path.nix", + "settings": { + "foreground": "#f5c2e7", + "fontStyle": "" + } + }, + { + "name": "PHP Attributes", + "scope": ["support.attribute.builtin", "meta.attribute.php"], + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "PHP Parameters (needed for the leading dollar sign)", + "scope": "meta.function.parameters.php punctuation.definition.variable.php", + "settings": { + "foreground": "#eba0ac" + } + }, + { + "name": "PHP Constants (null, __FILE__, etc.)", + "scope": "constant.language.php", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "PHP functions", + "scope": "text.html.php support.function", + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "PHPdoc keywords", + "scope": "keyword.other.phpdoc.php", + "settings": { + "fontStyle": "" + } + }, + { + "name": "Python argument functions reset to text, otherwise they inherit blue from function-call", + "scope": [ + "support.variable.magic.python", + "meta.function-call.arguments.python" + ], + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Python double underscore functions", + "scope": ["support.function.magic.python"], + "settings": { + "foreground": "#89dceb", + "fontStyle": "italic" + } + }, + { + "name": "Python `self` keyword", + "scope": [ + "variable.parameter.function.language.special.self.python", + "variable.language.special.self.python" + ], + "settings": { + "foreground": "#f38ba8", + "fontStyle": "italic" + } + }, + { + "name": "python keyword flow/logical (for ... in)", + "scope": [ + "keyword.control.flow.python", + "keyword.operator.logical.python" + ], + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "python storage type", + "scope": "storage.type.function.python", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "python function support", + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "python function calls", + "scope": ["meta.function-call.python"], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "python function decorators", + "scope": [ + "entity.name.function.decorator.python", + "punctuation.definition.decorator.python" + ], + "settings": { + "foreground": "#fab387", + "fontStyle": "italic" + } + }, + { + "name": "python placeholder reset to normal string", + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Python exception & builtins such as exit()", + "scope": [ + "support.type.exception.python", + "support.function.builtin.python" + ], + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "entity.name.type", + "scope": ["support.type.python"], + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "python constants (True/False)", + "scope": "constant.language.python", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Arguments accessed later in the function body", + "scope": ["meta.indexed-name.python", "meta.item-access.python"], + "settings": { + "foreground": "#eba0ac", + "fontStyle": "italic" + } + }, + { + "name": "Python f-strings/binary/unicode storage types", + "scope": "storage.type.string.python", + "settings": { + "foreground": "#a6e3a1", + "fontStyle": "italic" + } + }, + { + "name": "Python type hints", + "scope": "meta.function.parameters.python", + "settings": { + "fontStyle": "" + } + }, + { + "name": "R function calls", + "scope": "meta.function-call.r", + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "R function call arguments", + "scope": "meta.function-call.arguments.r", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Regex string begin/end in JS/TS", + "scope": [ + "string.regexp punctuation.definition.string.begin", + "string.regexp punctuation.definition.string.end" + ], + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Regex anchors (^, $)", + "scope": "keyword.control.anchor.regexp", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "Regex regular string match", + "scope": "string.regexp.ts", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Regex group parenthesis & backreference (\\1, \\2, \\3, ...)", + "scope": [ + "punctuation.definition.group.regexp", + "keyword.other.back-reference.regexp" + ], + "settings": { + "foreground": "#a6e3a1" + } + }, + { + "name": "Regex character class []", + "scope": "punctuation.definition.character-class.regexp", + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Regex character classes (\\d, \\w, \\s)", + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Regex range", + "scope": "constant.other.character-class.range.regexp", + "settings": { + "foreground": "#f5e0dc" + } + }, + { + "name": "Regex quantifier", + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Regex constant/numeric", + "scope": "constant.character.numeric.regexp", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds", + "scope": [ + "punctuation.definition.group.no-capture.regexp", + "meta.assertion.look-ahead.regexp", + "meta.assertion.negative-look-ahead.regexp" + ], + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "Rust attribute", + "scope": [ + "meta.annotation.rust", + "meta.annotation.rust punctuation", + "meta.attribute.rust", + "punctuation.definition.attribute.rust" + ], + "settings": { + "foreground": "#f9e2af", + "fontStyle": "italic" + } + }, + { + "name": "Rust attribute strings", + "scope": [ + "meta.attribute.rust string.quoted.double.rust", + "meta.attribute.rust string.quoted.single.char.rust" + ], + "settings": { + "fontStyle": "" + } + }, + { + "name": "Rust keyword", + "scope": [ + "entity.name.function.macro.rules.rust", + "storage.type.module.rust", + "storage.modifier.rust", + "storage.type.struct.rust", + "storage.type.enum.rust", + "storage.type.trait.rust", + "storage.type.union.rust", + "storage.type.impl.rust", + "storage.type.rust", + "storage.type.function.rust", + "storage.type.type.rust" + ], + "settings": { + "foreground": "#cba6f7", + "fontStyle": "" + } + }, + { + "name": "Rust u/i32, u/i64, etc.", + "scope": "entity.name.type.numeric.rust", + "settings": { + "foreground": "#cba6f7", + "fontStyle": "" + } + }, + { + "name": "Rust generic", + "scope": "meta.generic.rust", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Rust impl", + "scope": "entity.name.impl.rust", + "settings": { + "foreground": "#f9e2af", + "fontStyle": "italic" + } + }, + { + "name": "Rust module", + "scope": "entity.name.module.rust", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Rust trait", + "scope": "entity.name.trait.rust", + "settings": { + "foreground": "#f9e2af", + "fontStyle": "italic" + } + }, + { + "name": "Rust struct", + "scope": "storage.type.source.rust", + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Rust union", + "scope": "entity.name.union.rust", + "settings": { + "foreground": "#f9e2af" + } + }, + { + "name": "Rust enum member", + "scope": "meta.enum.rust storage.type.source.rust", + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Rust macro", + "scope": [ + "support.macro.rust", + "meta.macro.rust support.function.rust", + "entity.name.function.macro.rust" + ], + "settings": { + "foreground": "#89b4fa", + "fontStyle": "italic" + } + }, + { + "name": "Rust lifetime", + "scope": ["storage.modifier.lifetime.rust", "entity.name.type.lifetime"], + "settings": { + "foreground": "#89b4fa", + "fontStyle": "italic" + } + }, + { + "name": "Rust string formatting", + "scope": "string.quoted.double.rust constant.other.placeholder.rust", + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Rust return type generic", + "scope": "meta.function.return-type.rust meta.generic.rust storage.type.rust", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Rust functions", + "scope": "meta.function.call.rust", + "settings": { + "foreground": "#89b4fa" + } + }, + { + "name": "Rust angle brackets", + "scope": "punctuation.brackets.angle.rust", + "settings": { + "foreground": "#89dceb" + } + }, + { + "name": "Rust constants", + "scope": "constant.other.caps.rust", + "settings": { + "foreground": "#fab387" + } + }, + { + "name": "Rust function parameters", + "scope": ["meta.function.definition.rust variable.other.rust"], + "settings": { + "foreground": "#eba0ac" + } + }, + { + "name": "Rust closure variables", + "scope": "meta.function.call.rust variable.other.rust", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "name": "Rust self", + "scope": "variable.language.self.rust", + "settings": { + "foreground": "#f38ba8" + } + }, + { + "name": "Rust metavariable names", + "scope": [ + "variable.other.metavariable.name.rust", + "meta.macro.metavariable.rust keyword.operator.macro.dollar.rust" + ], + "settings": { + "foreground": "#f5c2e7" + } + }, + { + "name": "Shell shebang", + "scope": [ + "comment.line.shebang", + "comment.line.shebang punctuation.definition.comment", + "comment.line.shebang", + "punctuation.definition.comment.shebang.shell", + "meta.shebang.shell" + ], + "settings": { + "foreground": "#f5c2e7", + "fontStyle": "" + } + }, + { + "name": "Shell shebang command", + "scope": "comment.line.shebang constant.language", + "settings": { + "foreground": "#94e2d5", + "fontStyle": "" + } + }, + { + "name": "Shell interpolated command", + "scope": [ + "meta.function-call.arguments.shell punctuation.definition.variable.shell", + "meta.function-call.arguments.shell punctuation.section.interpolation", + "meta.function-call.arguments.shell punctuation.definition.variable.shell", + "meta.function-call.arguments.shell punctuation.section.interpolation" + ], + "settings": { + "foreground": "#f38ba8" + } + }, + { + "name": "Shell interpolated command variable", + "scope": "meta.string meta.interpolation.parameter.shell variable.other.readwrite", + "settings": { + "foreground": "#fab387", + "fontStyle": "italic" + } + }, + { + "scope": [ + "source.shell punctuation.section.interpolation", + "punctuation.definition.evaluation.backticks.shell" + ], + "settings": { + "foreground": "#94e2d5" + } + }, + { + "name": "Shell EOF", + "scope": "entity.name.tag.heredoc.shell", + "settings": { + "foreground": "#cba6f7" + } + }, + { + "name": "Shell quoted variable", + "scope": "string.quoted.double.shell variable.other.normal.shell", + "settings": { + "foreground": "#cdd6f4" + } + }, + { + "scope": ["markup.heading.typst"], + "settings": { + "foreground": "#f38ba8" + } + } + ] +} diff --git a/package.json b/package.json index aae035f..86d9831 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,11 @@ "node": ">=18" }, "scripts": { - "download:plugins": "yarn --cwd app download:plugins", - "build": "yarn --cwd app download:plugins && yarn --cwd app build", - "start": "yarn --cwd extensions/studio watch & yarn --cwd app watch & yarn --cwd app start & wait", - "debug": "yarn --cwd extensions/studio watch & yarn --cwd app watch & yarn --cwd app start --remote-debugging-port=9222 & wait", + "install:local-plugins": "cp -r local-plugins/* plugins/", + "download:plugins": "yarn --cwd app download:plugins && yarn install:local-plugins", + "build": "yarn download:plugins && yarn --cwd app build", + "start": "yarn install:local-plugins && yarn --cwd extensions/studio watch & yarn --cwd app watch & yarn --cwd app start & wait", + "debug": "yarn install:local-plugins && yarn --cwd extensions/studio watch & yarn --cwd app watch & yarn --cwd app start --remote-debugging-port=9222 & wait", "package": "yarn --cwd app package" }, "workspaces": [ -- 2.51.2