diff --git a/assets/themes/src/vsc/dracula/LICENSE b/assets/themes/src/vsc/dracula/LICENSE new file mode 100644 index 0000000000..dcaf6d7f61 --- /dev/null +++ b/assets/themes/src/vsc/dracula/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Dracula Theme + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/assets/themes/src/vsc/dracula/dracula.json b/assets/themes/src/vsc/dracula/dracula.json new file mode 100644 index 0000000000..6604a094d5 --- /dev/null +++ b/assets/themes/src/vsc/dracula/dracula.json @@ -0,0 +1,1067 @@ +{ + "$schema": "vscode://schemas/color-theme", + "name": "Dracula", + "author": "Zeno Rocha", + "maintainers": ["Derek P Sifford "], + "semanticClass": "theme.dracula", + "semanticHighlighting": true, + "dracula": { + "base": [ + "#282A36", + "#F8F8F2", + "#44475A", + "#6272A4", + "#8BE9FD", + "#50FA7B", + "#FFB86C", + "#FF79C6", + "#BD93F9", + "#FF5555", + "#F1FA8C" + ], + "ansi": [ + "#21222C", + "#FF5555", + "#50FA7B", + "#F1FA8C", + "#BD93F9", + "#FF79C6", + "#8BE9FD", + "#F8F8F2", + "#6272A4", + "#FF6E6E", + "#69FF94", + "#FFFFA5", + "#D6ACFF", + "#FF92DF", + "#A4FFFF", + "#FFFFFF" + ], + "brightOther": ["#E9F284", "#8BE9FE"], + "other": [ + "#44475A75", + "#FFFFFF1A", + "#FFFFFF", + "#44475A70", + "#424450", + "#343746", + "#21222C", + "#191A21" + ] + }, + "colors": { + "terminal.background": "#282A36", + "terminal.foreground": "#F8F8F2", + "terminal.ansiBrightBlack": "#6272A4", + "terminal.ansiBrightRed": "#FF6E6E", + "terminal.ansiBrightGreen": "#69FF94", + "terminal.ansiBrightYellow": "#FFFFA5", + "terminal.ansiBrightBlue": "#D6ACFF", + "terminal.ansiBrightMagenta": "#FF92DF", + "terminal.ansiBrightCyan": "#A4FFFF", + "terminal.ansiBrightWhite": "#FFFFFF", + "terminal.ansiBlack": "#21222C", + "terminal.ansiRed": "#FF5555", + "terminal.ansiGreen": "#50FA7B", + "terminal.ansiYellow": "#F1FA8C", + "terminal.ansiBlue": "#BD93F9", + "terminal.ansiMagenta": "#FF79C6", + "terminal.ansiCyan": "#8BE9FD", + "terminal.ansiWhite": "#F8F8F2", + "focusBorder": "#6272A4", + "foreground": "#F8F8F2", + "selection.background": "#BD93F9", + "errorForeground": "#FF5555", + "button.background": "#44475A", + "button.foreground": "#F8F8F2", + "button.secondaryBackground": "#282A36", + "button.secondaryForeground": "#F8F8F2", + "button.secondaryHoverBackground": "#343746", + "dropdown.background": "#343746", + "dropdown.border": "#191A21", + "dropdown.foreground": "#F8F8F2", + "input.background": "#282A36", + "input.foreground": "#F8F8F2", + "input.border": "#191A21", + "input.placeholderForeground": "#6272A4", + "inputOption.activeBorder": "#BD93F9", + "inputValidation.infoBorder": "#FF79C6", + "inputValidation.warningBorder": "#FFB86C", + "inputValidation.errorBorder": "#FF5555", + "badge.foreground": "#F8F8F2", + "badge.background": "#44475A", + "progressBar.background": "#FF79C6", + "list.activeSelectionBackground": "#44475A", + "list.activeSelectionForeground": "#F8F8F2", + "list.dropBackground": "#44475A", + "list.focusBackground": "#44475A75", + "list.highlightForeground": "#8BE9FD", + "list.hoverBackground": "#44475A75", + "list.inactiveSelectionBackground": "#44475A75", + "list.warningForeground": "#FFB86C", + "list.errorForeground": "#FF5555", + "activityBar.background": "#343746", + "activityBar.inactiveForeground": "#6272A4", + "activityBar.foreground": "#F8F8F2", + "activityBar.activeBorder": "#FF79C680", + "activityBar.activeBackground": "#BD93F910", + "activityBarBadge.background": "#FF79C6", + "activityBarBadge.foreground": "#F8F8F2", + "sideBar.background": "#21222C", + "sideBarTitle.foreground": "#F8F8F2", + "sideBarSectionHeader.background": "#282A36", + "sideBarSectionHeader.border": "#191A21", + "editorGroup.border": "#BD93F9", + "editorGroup.dropBackground": "#44475A70", + "editorGroupHeader.tabsBackground": "#191A21", + "tab.activeBackground": "#282A36", + "tab.activeForeground": "#F8F8F2", + "tab.border": "#191A21", + "tab.activeBorderTop": "#FF79C680", + "tab.inactiveBackground": "#21222C", + "tab.inactiveForeground": "#6272A4", + "editor.foreground": "#F8F8F2", + "editor.background": "#282A36", + "editorLineNumber.foreground": "#6272A4", + "editor.selectionBackground": "#44475A", + "editor.selectionHighlightBackground": "#424450", + "editor.foldBackground": "#21222C80", + "editor.wordHighlightBackground": "#8BE9FD50", + "editor.wordHighlightStrongBackground": "#50FA7B50", + "editor.findMatchBackground": "#FFB86C80", + "editor.findMatchHighlightBackground": "#FFFFFF40", + "editor.findRangeHighlightBackground": "#44475A75", + "editor.hoverHighlightBackground": "#8BE9FD50", + "editor.lineHighlightBorder": "#44475A", + "editorLink.activeForeground": "#8BE9FD", + "editor.rangeHighlightBackground": "#BD93F915", + "editor.snippetTabstopHighlightBackground": "#282A36", + "editor.snippetTabstopHighlightBorder": "#6272A4", + "editor.snippetFinalTabstopHighlightBackground": "#282A36", + "editor.snippetFinalTabstopHighlightBorder": "#50FA7B", + "editorWhitespace.foreground": "#FFFFFF1A", + "editorIndentGuide.background": "#FFFFFF1A", + "editorIndentGuide.activeBackground": "#FFFFFF45", + "editorRuler.foreground": "#FFFFFF1A", + "editorCodeLens.foreground": "#6272A4", + "editorBracketHighlight.foreground1": "#F8F8F2", + "editorBracketHighlight.foreground2": "#FF79C6", + "editorBracketHighlight.foreground3": "#8BE9FD", + "editorBracketHighlight.foreground4": "#50FA7B", + "editorBracketHighlight.foreground5": "#BD93F9", + "editorBracketHighlight.foreground6": "#FFB86C", + "editorBracketHighlight.unexpectedBracket.foreground": "#FF5555", + "editorOverviewRuler.border": "#191A21", + "editorOverviewRuler.selectionHighlightForeground": "#FFB86C", + "editorOverviewRuler.wordHighlightForeground": "#8BE9FD", + "editorOverviewRuler.wordHighlightStrongForeground": "#50FA7B", + "editorOverviewRuler.modifiedForeground": "#8BE9FD80", + "editorOverviewRuler.addedForeground": "#50FA7B80", + "editorOverviewRuler.deletedForeground": "#FF555580", + "editorOverviewRuler.errorForeground": "#FF555580", + "editorOverviewRuler.warningForeground": "#FFB86C80", + "editorOverviewRuler.infoForeground": "#8BE9FD80", + "editorError.foreground": "#FF5555", + "editorWarning.foreground": "#8BE9FD", + "editorGutter.modifiedBackground": "#8BE9FD80", + "editorGutter.addedBackground": "#50FA7B80", + "editorGutter.deletedBackground": "#FF555580", + "gitDecoration.modifiedResourceForeground": "#8BE9FD", + "gitDecoration.deletedResourceForeground": "#FF5555", + "gitDecoration.untrackedResourceForeground": "#50FA7B", + "gitDecoration.ignoredResourceForeground": "#6272A4", + "gitDecoration.conflictingResourceForeground": "#FFB86C", + "diffEditor.insertedTextBackground": "#50FA7B20", + "diffEditor.removedTextBackground": "#FF555550", + "inlineChat.regionHighlight": "#343746", + "editorWidget.background": "#21222C", + "editorSuggestWidget.background": "#21222C", + "editorSuggestWidget.foreground": "#F8F8F2", + "editorSuggestWidget.selectedBackground": "#44475A", + "editorHoverWidget.background": "#282A36", + "editorHoverWidget.border": "#6272A4", + "editorMarkerNavigation.background": "#21222C", + "peekView.border": "#44475A", + "peekViewEditor.background": "#282A36", + "peekViewEditor.matchHighlightBackground": "#F1FA8C80", + "peekViewResult.background": "#21222C", + "peekViewResult.fileForeground": "#F8F8F2", + "peekViewResult.lineForeground": "#F8F8F2", + "peekViewResult.matchHighlightBackground": "#F1FA8C80", + "peekViewResult.selectionBackground": "#44475A", + "peekViewResult.selectionForeground": "#F8F8F2", + "peekViewTitle.background": "#191A21", + "peekViewTitleDescription.foreground": "#6272A4", + "peekViewTitleLabel.foreground": "#F8F8F2", + "merge.currentHeaderBackground": "#50FA7B90", + "merge.incomingHeaderBackground": "#BD93F990", + "editorOverviewRuler.currentContentForeground": "#50FA7B", + "editorOverviewRuler.incomingContentForeground": "#BD93F9", + "panel.background": "#282A36", + "panel.border": "#BD93F9", + "panelTitle.activeBorder": "#FF79C6", + "panelTitle.activeForeground": "#F8F8F2", + "panelTitle.inactiveForeground": "#6272A4", + "statusBar.background": "#191A21", + "statusBar.foreground": "#F8F8F2", + "statusBar.debuggingBackground": "#FF5555", + "statusBar.debuggingForeground": "#191A21", + "statusBar.noFolderBackground": "#191A21", + "statusBar.noFolderForeground": "#F8F8F2", + "statusBarItem.prominentBackground": "#FF5555", + "statusBarItem.prominentHoverBackground": "#FFB86C", + "statusBarItem.remoteForeground": "#282A36", + "statusBarItem.remoteBackground": "#BD93F9", + "titleBar.activeBackground": "#21222C", + "titleBar.activeForeground": "#F8F8F2", + "titleBar.inactiveBackground": "#191A21", + "titleBar.inactiveForeground": "#6272A4", + "extensionButton.prominentForeground": "#F8F8F2", + "extensionButton.prominentBackground": "#50FA7B90", + "extensionButton.prominentHoverBackground": "#50FA7B60", + "pickerGroup.border": "#BD93F9", + "pickerGroup.foreground": "#8BE9FD", + "debugToolBar.background": "#21222C", + "walkThrough.embeddedEditorBackground": "#21222C", + "settings.headerForeground": "#F8F8F2", + "settings.modifiedItemIndicator": "#FFB86C", + "settings.dropdownBackground": "#21222C", + "settings.dropdownForeground": "#F8F8F2", + "settings.dropdownBorder": "#191A21", + "settings.checkboxBackground": "#21222C", + "settings.checkboxForeground": "#F8F8F2", + "settings.checkboxBorder": "#191A21", + "settings.textInputBackground": "#21222C", + "settings.textInputForeground": "#F8F8F2", + "settings.textInputBorder": "#191A21", + "settings.numberInputBackground": "#21222C", + "settings.numberInputForeground": "#F8F8F2", + "settings.numberInputBorder": "#191A21", + "breadcrumb.foreground": "#6272A4", + "breadcrumb.background": "#282A36", + "breadcrumb.focusForeground": "#F8F8F2", + "breadcrumb.activeSelectionForeground": "#F8F8F2", + "breadcrumbPicker.background": "#191A21", + "listFilterWidget.background": "#343746", + "listFilterWidget.outline": "#424450", + "listFilterWidget.noMatchesOutline": "#FF5555" + }, + "tokenColors": [ + { + "scope": ["emphasis"], + "settings": { + "fontStyle": "italic" + } + }, + { + "scope": ["strong"], + "settings": { + "fontStyle": "bold" + } + }, + { + "scope": ["header"], + "settings": { + "foreground": "#BD93F9" + } + }, + { + "scope": ["meta.diff", "meta.diff.header"], + "settings": { + "foreground": "#6272A4" + } + }, + { + "scope": ["markup.inserted"], + "settings": { + "foreground": "#50FA7B" + } + }, + { + "scope": ["markup.deleted"], + "settings": { + "foreground": "#FF5555" + } + }, + { + "scope": ["markup.changed"], + "settings": { + "foreground": "#FFB86C" + } + }, + { + "scope": ["invalid"], + "settings": { + "foreground": "#FF5555", + "fontStyle": "underline italic" + } + }, + { + "scope": ["invalid.deprecated"], + "settings": { + "foreground": "#F8F8F2", + "fontStyle": "underline italic" + } + }, + { + "scope": ["entity.name.filename"], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "scope": ["markup.error"], + "settings": { + "foreground": "#FF5555" + } + }, + { + "name": "Underlined markup", + "scope": ["markup.underline"], + "settings": { + "fontStyle": "underline" + } + }, + { + "name": "Bold markup", + "scope": ["markup.bold"], + "settings": { + "fontStyle": "bold", + "foreground": "#FFB86C" + } + }, + { + "name": "Markup headings", + "scope": ["markup.heading"], + "settings": { + "fontStyle": "bold", + "foreground": "#BD93F9" + } + }, + { + "name": "Markup italic", + "scope": ["markup.italic"], + "settings": { + "foreground": "#F1FA8C", + "fontStyle": "italic" + } + }, + { + "name": "Bullets, lists (prose)", + "scope": [ + "beginning.punctuation.definition.list.markdown", + "beginning.punctuation.definition.quote.markdown", + "punctuation.definition.link.restructuredtext" + ], + "settings": { + "foreground": "#8BE9FD" + } + }, + { + "name": "Inline code (prose)", + "scope": ["markup.inline.raw", "markup.raw.restructuredtext"], + "settings": { + "foreground": "#50FA7B" + } + }, + { + "name": "Links (prose)", + "scope": ["markup.underline.link", "markup.underline.link.image"], + "settings": { + "foreground": "#8BE9FD" + } + }, + { + "name": "Link text, image alt text (prose)", + "scope": [ + "meta.link.reference.def.restructuredtext", + "punctuation.definition.directive.restructuredtext", + "string.other.link.description", + "string.other.link.title" + ], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "Blockquotes (prose)", + "scope": ["entity.name.directive.restructuredtext", "markup.quote"], + "settings": { + "foreground": "#F1FA8C", + "fontStyle": "italic" + } + }, + { + "name": "Horizontal rule (prose)", + "scope": ["meta.separator.markdown"], + "settings": { + "foreground": "#6272A4" + } + }, + { + "name": "Code blocks", + "scope": [ + "fenced_code.block.language", + "markup.raw.inner.restructuredtext", + "markup.fenced_code.block.markdown punctuation.definition.markdown" + ], + "settings": { + "foreground": "#50FA7B" + } + }, + { + "name": "Prose constants", + "scope": ["punctuation.definition.constant.restructuredtext"], + "settings": { + "foreground": "#BD93F9" + } + }, + { + "name": "Braces in markdown headings", + "scope": [ + "markup.heading.markdown punctuation.definition.string.begin", + "markup.heading.markdown punctuation.definition.string.end" + ], + "settings": { + "foreground": "#BD93F9" + } + }, + { + "name": "Braces in markdown paragraphs", + "scope": [ + "meta.paragraph.markdown punctuation.definition.string.begin", + "meta.paragraph.markdown punctuation.definition.string.end" + ], + "settings": { + "foreground": "#F8F8F2" + } + }, + { + "name": "Braces in markdown blockquotes", + "scope": [ + "markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin", + "markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end" + ], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "name": "User-defined class names", + "scope": ["entity.name.type.class", "entity.name.class"], + "settings": { + "foreground": "#8BE9FD", + "fontStyle": "normal" + } + }, + { + "name": "this, super, self, etc.", + "scope": [ + "keyword.expressions-and-types.swift", + "keyword.other.this", + "variable.language", + "variable.language punctuation.definition.variable.php", + "variable.other.readwrite.instance.ruby", + "variable.parameter.function.language.special" + ], + "settings": { + "foreground": "#BD93F9", + "fontStyle": "italic" + } + }, + { + "name": "Inherited classes", + "scope": ["entity.other.inherited-class"], + "settings": { + "fontStyle": "italic", + "foreground": "#8BE9FD" + } + }, + { + "name": "Comments", + "scope": [ + "comment", + "punctuation.definition.comment", + "unused.comment", + "wildcard.comment" + ], + "settings": { + "foreground": "#6272A4" + } + }, + { + "name": "JSDoc-style keywords", + "scope": [ + "comment keyword.codetag.notation", + "comment.block.documentation keyword", + "comment.block.documentation storage.type.class" + ], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "JSDoc-style types", + "scope": ["comment.block.documentation entity.name.type"], + "settings": { + "foreground": "#8BE9FD", + "fontStyle": "italic" + } + }, + { + "name": "JSDoc-style type brackets", + "scope": [ + "comment.block.documentation entity.name.type punctuation.definition.bracket" + ], + "settings": { + "foreground": "#8BE9FD" + } + }, + { + "name": "JSDoc-style comment parameters", + "scope": ["comment.block.documentation variable"], + "settings": { + "foreground": "#FFB86C", + "fontStyle": "italic" + } + }, + { + "name": "Constants", + "scope": ["constant", "variable.other.constant"], + "settings": { + "foreground": "#BD93F9" + } + }, + { + "name": "Constant escape sequences", + "scope": [ + "constant.character.escape", + "constant.character.string.escape", + "constant.regexp" + ], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "HTML tags", + "scope": ["entity.name.tag"], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "CSS attribute parent selectors ('&')", + "scope": ["entity.other.attribute-name.parent-selector"], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "HTML/CSS attribute names", + "scope": ["entity.other.attribute-name"], + "settings": { + "foreground": "#50FA7B", + "fontStyle": "italic" + } + }, + { + "name": "Function names", + "scope": [ + "entity.name.function", + "meta.function-call.object", + "meta.function-call.php", + "meta.function-call.static", + "meta.method-call.java meta.method", + "meta.method.groovy", + "support.function.any-method.lua", + "keyword.operator.function.infix" + ], + "settings": { + "foreground": "#50FA7B" + } + }, + { + "name": "Function parameters", + "scope": [ + "entity.name.variable.parameter", + "meta.at-rule.function variable", + "meta.at-rule.mixin variable", + "meta.function.arguments variable.other.php", + "meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql", + "variable.parameter" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#FFB86C" + } + }, + { + "name": "Decorators", + "scope": [ + "meta.decorator variable.other.readwrite", + "meta.decorator variable.other.property" + ], + "settings": { + "foreground": "#50FA7B", + "fontStyle": "italic" + } + }, + { + "name": "Decorator Objects", + "scope": ["meta.decorator variable.other.object"], + "settings": { + "foreground": "#50FA7B" + } + }, + { + "name": "Keywords", + "scope": ["keyword", "punctuation.definition.keyword"], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "Keyword \"new\"", + "scope": ["keyword.control.new", "keyword.operator.new"], + "settings": { + "fontStyle": "bold" + } + }, + { + "name": "Generic selectors (CSS/SCSS/Less/Stylus)", + "scope": ["meta.selector"], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "Language Built-ins", + "scope": ["support"], + "settings": { + "fontStyle": "italic", + "foreground": "#8BE9FD" + } + }, + { + "name": "Built-in magic functions and constants", + "scope": [ + "support.function.magic", + "support.variable", + "variable.other.predefined" + ], + "settings": { + "fontStyle": "regular", + "foreground": "#BD93F9" + } + }, + { + "name": "Built-in functions / properties", + "scope": ["support.function", "support.type.property-name"], + "settings": { + "fontStyle": "regular" + } + }, + { + "name": "Separators (key/value, namespace, inheritance, pointer, hash, slice, etc)", + "scope": [ + "constant.other.symbol.hashkey punctuation.definition.constant.ruby", + "entity.other.attribute-name.placeholder punctuation", + "entity.other.attribute-name.pseudo-class punctuation", + "entity.other.attribute-name.pseudo-element punctuation", + "meta.group.double.toml", + "meta.group.toml", + "meta.object-binding-pattern-variable punctuation.destructuring", + "punctuation.colon.graphql", + "punctuation.definition.block.scalar.folded.yaml", + "punctuation.definition.block.scalar.literal.yaml", + "punctuation.definition.block.sequence.item.yaml", + "punctuation.definition.entity.other.inherited-class", + "punctuation.function.swift", + "punctuation.separator.dictionary.key-value", + "punctuation.separator.hash", + "punctuation.separator.inheritance", + "punctuation.separator.key-value", + "punctuation.separator.key-value.mapping.yaml", + "punctuation.separator.namespace", + "punctuation.separator.pointer-access", + "punctuation.separator.slice", + "string.unquoted.heredoc punctuation.definition.string", + "support.other.chomping-indicator.yaml", + "punctuation.separator.annotation" + ], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "Brackets, braces, parens, etc.", + "scope": [ + "keyword.operator.other.powershell", + "keyword.other.statement-separator.powershell", + "meta.brace.round", + "meta.function-call punctuation", + "punctuation.definition.arguments.begin", + "punctuation.definition.arguments.end", + "punctuation.definition.entity.begin", + "punctuation.definition.entity.end", + "punctuation.definition.tag.cs", + "punctuation.definition.type.begin", + "punctuation.definition.type.end", + "punctuation.section.scope.begin", + "punctuation.section.scope.end", + "punctuation.terminator.expression.php", + "storage.type.generic.java", + "string.template meta.brace", + "string.template punctuation.accessor" + ], + "settings": { + "foreground": "#F8F8F2" + } + }, + { + "name": "Variable interpolation operators", + "scope": [ + "meta.string-contents.quoted.double punctuation.definition.variable", + "punctuation.definition.interpolation.begin", + "punctuation.definition.interpolation.end", + "punctuation.definition.template-expression.begin", + "punctuation.definition.template-expression.end", + "punctuation.section.embedded.begin", + "punctuation.section.embedded.coffee", + "punctuation.section.embedded.end", + "punctuation.section.embedded.end source.php", + "punctuation.section.embedded.end source.ruby", + "punctuation.definition.variable.makefile" + ], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "Keys (serializable languages)", + "scope": [ + "entity.name.function.target.makefile", + "entity.name.section.toml", + "entity.name.tag.yaml", + "variable.other.key.toml" + ], + "settings": { + "foreground": "#8BE9FD" + } + }, + { + "name": "Dates / timestamps (serializable languages)", + "scope": ["constant.other.date", "constant.other.timestamp"], + "settings": { + "foreground": "#FFB86C" + } + }, + { + "name": "YAML aliases", + "scope": ["variable.other.alias.yaml"], + "settings": { + "fontStyle": "italic underline", + "foreground": "#50FA7B" + } + }, + { + "name": "Storage", + "scope": [ + "storage", + "meta.implementation storage.type.objc", + "meta.interface-or-protocol storage.type.objc", + "source.groovy storage.type.def" + ], + "settings": { + "fontStyle": "regular", + "foreground": "#FF79C6" + } + }, + { + "name": "Types", + "scope": [ + "entity.name.type", + "keyword.primitive-datatypes.swift", + "keyword.type.cs", + "meta.protocol-list.objc", + "meta.return-type.objc", + "source.go storage.type", + "source.groovy storage.type", + "source.java storage.type", + "source.powershell entity.other.attribute-name", + "storage.class.std.rust", + "storage.type.attribute.swift", + "storage.type.c", + "storage.type.core.rust", + "storage.type.cs", + "storage.type.groovy", + "storage.type.objc", + "storage.type.php", + "storage.type.haskell", + "storage.type.ocaml" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#8BE9FD" + } + }, + { + "name": "Generics, templates, and mapped type declarations", + "scope": [ + "entity.name.type.type-parameter", + "meta.indexer.mappedtype.declaration entity.name.type", + "meta.type.parameters entity.name.type" + ], + "settings": { + "foreground": "#FFB86C" + } + }, + { + "name": "Modifiers", + "scope": ["storage.modifier"], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "RegExp string", + "scope": [ + "string.regexp", + "constant.other.character-class.set.regexp", + "constant.character.escape.backslash.regexp" + ], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "name": "Non-capture operators", + "scope": ["punctuation.definition.group.capture.regexp"], + "settings": { + "foreground": "#FF79C6" + } + }, + { + "name": "RegExp start and end characters", + "scope": [ + "string.regexp punctuation.definition.string.begin", + "string.regexp punctuation.definition.string.end" + ], + "settings": { + "foreground": "#FF5555" + } + }, + { + "name": "Character group", + "scope": ["punctuation.definition.character-class.regexp"], + "settings": { + "foreground": "#8BE9FD" + } + }, + { + "name": "Capture groups", + "scope": ["punctuation.definition.group.regexp"], + "settings": { + "foreground": "#FFB86C" + } + }, + { + "name": "Assertion operators", + "scope": [ + "punctuation.definition.group.assertion.regexp", + "keyword.operator.negation.regexp" + ], + "settings": { + "foreground": "#FF5555" + } + }, + { + "name": "Positive lookaheads", + "scope": ["meta.assertion.look-ahead.regexp"], + "settings": { + "foreground": "#50FA7B" + } + }, + { + "name": "Strings", + "scope": ["string"], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "name": "String quotes (temporary vscode fix)", + "scope": [ + "punctuation.definition.string.begin", + "punctuation.definition.string.end" + ], + "settings": { + "foreground": "#E9F284" + } + }, + { + "name": "Property quotes (temporary vscode fix)", + "scope": [ + "punctuation.support.type.property-name.begin", + "punctuation.support.type.property-name.end" + ], + "settings": { + "foreground": "#8BE9FE" + } + }, + { + "name": "Docstrings", + "scope": [ + "string.quoted.docstring.multi", + "string.quoted.docstring.multi.python punctuation.definition.string.begin", + "string.quoted.docstring.multi.python punctuation.definition.string.end", + "string.quoted.docstring.multi.python constant.character.escape" + ], + "settings": { + "foreground": "#6272A4" + } + }, + { + "name": "Variables and object properties", + "scope": [ + "variable", + "constant.other.key.perl", + "support.variable.property", + "variable.other.constant.js", + "variable.other.constant.ts", + "variable.other.constant.tsx" + ], + "settings": { + "foreground": "#F8F8F2" + } + }, + { + "name": "Destructuring / aliasing reference name (LHS)", + "scope": [ + "meta.import variable.other.readwrite", + "meta.variable.assignment.destructured.object.coffee variable" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#FFB86C" + } + }, + { + "name": "Destructuring / aliasing variable name (RHS)", + "scope": [ + "meta.import variable.other.readwrite.alias", + "meta.export variable.other.readwrite.alias", + "meta.variable.assignment.destructured.object.coffee variable variable" + ], + "settings": { + "fontStyle": "normal", + "foreground": "#F8F8F2" + } + }, + { + "name": "GraphQL keys", + "scope": ["meta.selectionset.graphql variable"], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "name": "GraphQL function arguments", + "scope": ["meta.selectionset.graphql meta.arguments variable"], + "settings": { + "foreground": "#F8F8F2" + } + }, + { + "name": "GraphQL fragment name (definition)", + "scope": ["entity.name.fragment.graphql", "variable.fragment.graphql"], + "settings": { + "foreground": "#8BE9FD" + } + }, + { + "name": "Edge cases (foreground color resets)", + "scope": [ + "constant.other.symbol.hashkey.ruby", + "keyword.operator.dereference.java", + "keyword.operator.navigation.groovy", + "meta.scope.for-loop.shell punctuation.definition.string.begin", + "meta.scope.for-loop.shell punctuation.definition.string.end", + "meta.scope.for-loop.shell string", + "storage.modifier.import", + "punctuation.section.embedded.begin.tsx", + "punctuation.section.embedded.end.tsx", + "punctuation.section.embedded.begin.jsx", + "punctuation.section.embedded.end.jsx", + "punctuation.separator.list.comma.css", + "constant.language.empty-list.haskell" + ], + "settings": { + "foreground": "#F8F8F2" + } + }, + { + "name": "Shell variables prefixed with \"$\" (edge case)", + "scope": ["source.shell variable.other"], + "settings": { + "foreground": "#BD93F9" + } + }, + { + "name": "Powershell constants mistakenly scoped to `support`, rather than `constant` (edge)", + "scope": ["support.constant"], + "settings": { + "fontStyle": "normal", + "foreground": "#BD93F9" + } + }, + { + "name": "Makefile prerequisite names", + "scope": ["meta.scope.prerequisites.makefile"], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "name": "SCSS attibute selector strings", + "scope": ["meta.attribute-selector.scss"], + "settings": { + "foreground": "#F1FA8C" + } + }, + { + "name": "SCSS attribute selector brackets", + "scope": [ + "punctuation.definition.attribute-selector.end.bracket.square.scss", + "punctuation.definition.attribute-selector.begin.bracket.square.scss" + ], + "settings": { + "foreground": "#F8F8F2" + } + }, + { + "name": "Haskell Pragmas", + "scope": ["meta.preprocessor.haskell"], + "settings": { + "foreground": "#6272A4" + } + }, + { + "name": "Log file error", + "scope": ["log.error"], + "settings": { + "foreground": "#FF5555", + "fontStyle": "bold" + } + }, + { + "name": "Log file warning", + "scope": ["log.warning"], + "settings": { + "foreground": "#F1FA8C", + "fontStyle": "bold" + } + } + ] +} diff --git a/crates/theme2/src/import.rs b/crates/theme2/src/import.rs index 26850b5b78..64b91e2150 100644 --- a/crates/theme2/src/import.rs +++ b/crates/theme2/src/import.rs @@ -1,254 +1,461 @@ -use crate::ThemeColorsRefinement; +use serde::Deserialize; -struct ImportedThemeFamily { - pub id: String, +#[derive(Deserialize, Debug)] +pub struct Theme { + #[serde(rename = "$schema")] + pub schema: String, pub name: String, pub author: String, - pub url: String, - pub license: String, - pub themes: Vec, + pub maintainers: Vec, + pub semantic_class: String, + pub semantic_highlighting: bool, + pub colors: VSCodeColors, } -struct ImportedThemeVariant { - pub id: String, - pub name: String, - pub colors: ThemeColorsRefinement, -} - -macro_rules! gen_vscode_colors_and_enum { - ($($name:ident: $type:ty),*) => { - #[derive(Debug)] - pub struct VSCodeColors { - $( - pub $name: $type, - )* - } - - pub enum VSCodeColor { - $( - $({ - let mut s = stringify!($name).to_string(); - s.get_mut(0..1).unwrap().make_ascii_uppercase(); - s.replace("_", "") - }), - )* - } - }; -} - -gen_vscode_colors_and_enum! { - terminal_background: String, - terminal_foreground: String -} - -#[derive(Debug)] +#[derive(Debug, Deserialize)] pub struct VSCodeColors { + #[serde(rename = "vsc_terminal_background")] terminal_background: String, + #[serde(rename = "vsc_terminal_foreground")] terminal_foreground: String, + #[serde(rename = "vsc_terminal_ansi_bright_black")] terminal_ansi_bright_black: String, + #[serde(rename = "vsc_terminal_ansi_bright_red")] terminal_ansi_bright_red: String, + #[serde(rename = "vsc_terminal_ansi_bright_green")] terminal_ansi_bright_green: String, + #[serde(rename = "vsc_terminal_ansi_bright_yellow")] terminal_ansi_bright_yellow: String, + #[serde(rename = "vsc_terminal_ansi_bright_blue")] terminal_ansi_bright_blue: String, + #[serde(rename = "vsc_terminal_ansi_bright_magenta")] terminal_ansi_bright_magenta: String, + #[serde(rename = "vsc_terminal_ansi_bright_cyan")] terminal_ansi_bright_cyan: String, + #[serde(rename = "vsc_terminal_ansi_bright_white")] terminal_ansi_bright_white: String, + #[serde(rename = "vsc_terminal_ansi_black")] terminal_ansi_black: String, + #[serde(rename = "vsc_terminal_ansi_red")] terminal_ansi_red: String, + #[serde(rename = "vsc_terminal_ansi_green")] terminal_ansi_green: String, + #[serde(rename = "vsc_terminal_ansi_yellow")] terminal_ansi_yellow: String, + #[serde(rename = "vsc_terminal_ansi_blue")] terminal_ansi_blue: String, + #[serde(rename = "vsc_terminal_ansi_magenta")] terminal_ansi_magenta: String, + #[serde(rename = "vsc_terminal_ansi_cyan")] terminal_ansi_cyan: String, + #[serde(rename = "vsc_terminal_ansi_white")] terminal_ansi_white: String, + #[serde(rename = "vsc_focus_border")] focus_border: String, + #[serde(rename = "vsc_foreground")] foreground: String, + #[serde(rename = "vsc_selection_background")] selection_background: String, + #[serde(rename = "vsc_error_foreground")] error_foreground: String, + #[serde(rename = "vsc_button_background")] button_background: String, + #[serde(rename = "vsc_button_foreground")] button_foreground: String, + #[serde(rename = "vsc_button_secondary_background")] button_secondary_background: String, + #[serde(rename = "vsc_button_secondary_foreground")] button_secondary_foreground: String, + #[serde(rename = "vsc_button_secondary_hover_background")] button_secondary_hover_background: String, + #[serde(rename = "vsc_dropdown_background")] dropdown_background: String, + #[serde(rename = "vsc_dropdown_border")] dropdown_border: String, + #[serde(rename = "vsc_dropdown_foreground")] dropdown_foreground: String, + #[serde(rename = "vsc_input_background")] input_background: String, + #[serde(rename = "vsc_input_foreground")] input_foreground: String, + #[serde(rename = "vsc_input_border")] input_border: String, + #[serde(rename = "vsc_input_placeholder_foreground")] input_placeholder_foreground: String, + #[serde(rename = "vsc_input_option_active_border")] input_option_active_border: String, + #[serde(rename = "vsc_input_validation_info_border")] input_validation_info_border: String, + #[serde(rename = "vsc_input_validation_warning_border")] input_validation_warning_border: String, + #[serde(rename = "vsc_input_validation_error_border")] input_validation_error_border: String, + #[serde(rename = "vsc_badge_foreground")] badge_foreground: String, + #[serde(rename = "vsc_badge_background")] badge_background: String, + #[serde(rename = "vsc_progress_bar_background")] progress_bar_background: String, + #[serde(rename = "vsc_list_active_selection_background")] list_active_selection_background: String, + #[serde(rename = "vsc_list_active_selection_foreground")] list_active_selection_foreground: String, + #[serde(rename = "vsc_list_drop_background")] list_drop_background: String, + #[serde(rename = "vsc_list_focus_background")] list_focus_background: String, + #[serde(rename = "vsc_list_highlight_foreground")] list_highlight_foreground: String, + #[serde(rename = "vsc_list_hover_background")] list_hover_background: String, + #[serde(rename = "vsc_list_inactive_selection_background")] list_inactive_selection_background: String, + #[serde(rename = "vsc_list_warning_foreground")] list_warning_foreground: String, + #[serde(rename = "vsc_list_error_foreground")] list_error_foreground: String, + #[serde(rename = "vsc_activity_bar_background")] activity_bar_background: String, + #[serde(rename = "vsc_activity_bar_inactive_foreground")] activity_bar_inactive_foreground: String, + #[serde(rename = "vsc_activity_bar_foreground")] activity_bar_foreground: String, + #[serde(rename = "vsc_activity_bar_active_border")] activity_bar_active_border: String, + #[serde(rename = "vsc_activity_bar_active_background")] activity_bar_active_background: String, + #[serde(rename = "vsc_activity_bar_badge_background")] activity_bar_badge_background: String, + #[serde(rename = "vsc_activity_bar_badge_foreground")] activity_bar_badge_foreground: String, + #[serde(rename = "vsc_side_bar_background")] side_bar_background: String, + #[serde(rename = "vsc_side_bar_title_foreground")] side_bar_title_foreground: String, + #[serde(rename = "vsc_side_bar_section_header_background")] side_bar_section_header_background: String, + #[serde(rename = "vsc_side_bar_section_header_border")] side_bar_section_header_border: String, + #[serde(rename = "vsc_editor_group_border")] editor_group_border: String, + #[serde(rename = "vsc_editor_group_drop_background")] editor_group_drop_background: String, + #[serde(rename = "vsc_editor_group_header_tabs_background")] editor_group_header_tabs_background: String, + #[serde(rename = "vsc_tab_active_background")] tab_active_background: String, + #[serde(rename = "vsc_tab_active_foreground")] tab_active_foreground: String, + #[serde(rename = "vsc_tab_border")] tab_border: String, + #[serde(rename = "vsc_tab_active_border_top")] tab_active_border_top: String, + #[serde(rename = "vsc_tab_inactive_background")] tab_inactive_background: String, + #[serde(rename = "vsc_tab_inactive_foreground")] tab_inactive_foreground: String, + #[serde(rename = "vsc_editor_foreground")] editor_foreground: String, + #[serde(rename = "vsc_editor_background")] editor_background: String, + #[serde(rename = "vsc_editor_line_number_foreground")] editor_line_number_foreground: String, + #[serde(rename = "vsc_editor_selection_background")] editor_selection_background: String, + #[serde(rename = "vsc_editor_selection_highlight_background")] editor_selection_highlight_background: String, + #[serde(rename = "vsc_editor_fold_background")] editor_fold_background: String, + #[serde(rename = "vsc_editor_word_highlight_background")] editor_word_highlight_background: String, + #[serde(rename = "vsc_editor_word_highlight_strong_background")] editor_word_highlight_strong_background: String, + #[serde(rename = "vsc_editor_find_match_background")] editor_find_match_background: String, + #[serde(rename = "vsc_editor_find_match_highlight_background")] editor_find_match_highlight_background: String, + #[serde(rename = "vsc_editor_find_range_highlight_background")] editor_find_range_highlight_background: String, + #[serde(rename = "vsc_editor_hover_highlight_background")] editor_hover_highlight_background: String, + #[serde(rename = "vsc_editor_line_highlight_border")] editor_line_highlight_border: String, + #[serde(rename = "vsc_editor_link_active_foreground")] editor_link_active_foreground: String, + #[serde(rename = "vsc_editor_range_highlight_background")] editor_range_highlight_background: String, + #[serde(rename = "vsc_editor_snippet_tabstop_highlight_background")] editor_snippet_tabstop_highlight_background: String, + #[serde(rename = "vsc_editor_snippet_tabstop_highlight_border")] editor_snippet_tabstop_highlight_border: String, + #[serde(rename = "vsc_editor_snippet_final_tabstop_highlight_background")] editor_snippet_final_tabstop_highlight_background: String, + #[serde(rename = "vsc_editor_snippet_final_tabstop_highlight_border")] editor_snippet_final_tabstop_highlight_border: String, + #[serde(rename = "vsc_editor_whitespace_foreground")] editor_whitespace_foreground: String, + #[serde(rename = "vsc_editor_indent_guide_background")] editor_indent_guide_background: String, + #[serde(rename = "vsc_editor_indent_guide_active_background")] editor_indent_guide_active_background: String, + #[serde(rename = "vsc_editor_ruler_foreground")] editor_ruler_foreground: String, + #[serde(rename = "vsc_editor_code_lens_foreground")] editor_code_lens_foreground: String, + #[serde(rename = "vsc_editor_bracket_highlight_foreground1")] editor_bracket_highlight_foreground1: String, + #[serde(rename = "vsc_editor_bracket_highlight_foreground2")] editor_bracket_highlight_foreground2: String, + #[serde(rename = "vsc_editor_bracket_highlight_foreground3")] editor_bracket_highlight_foreground3: String, + #[serde(rename = "vsc_editor_bracket_highlight_foreground4")] editor_bracket_highlight_foreground4: String, + #[serde(rename = "vsc_editor_bracket_highlight_foreground5")] editor_bracket_highlight_foreground5: String, + #[serde(rename = "vsc_editor_bracket_highlight_foreground6")] editor_bracket_highlight_foreground6: String, + #[serde(rename = "vsc_editor_bracket_highlight_unexpected_bracket_foreground")] editor_bracket_highlight_unexpected_bracket_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_border")] editor_overview_ruler_border: String, + #[serde(rename = "vsc_editor_overview_ruler_selection_highlight_foreground")] editor_overview_ruler_selection_highlight_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_word_highlight_foreground")] editor_overview_ruler_word_highlight_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_word_highlight_strong_foreground")] editor_overview_ruler_word_highlight_strong_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_modified_foreground")] editor_overview_ruler_modified_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_added_foreground")] editor_overview_ruler_added_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_deleted_foreground")] editor_overview_ruler_deleted_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_error_foreground")] editor_overview_ruler_error_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_warning_foreground")] editor_overview_ruler_warning_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_info_foreground")] editor_overview_ruler_info_foreground: String, + #[serde(rename = "vsc_editor_error_foreground")] editor_error_foreground: String, + #[serde(rename = "vsc_editor_warning_foreground")] editor_warning_foreground: String, + #[serde(rename = "vsc_editor_gutter_modified_background")] editor_gutter_modified_background: String, + #[serde(rename = "vsc_editor_gutter_added_background")] editor_gutter_added_background: String, + #[serde(rename = "vsc_editor_gutter_deleted_background")] editor_gutter_deleted_background: String, + #[serde(rename = "vsc_git_decoration_modified_resource_foreground")] git_decoration_modified_resource_foreground: String, + #[serde(rename = "vsc_git_decoration_deleted_resource_foreground")] git_decoration_deleted_resource_foreground: String, + #[serde(rename = "vsc_git_decoration_untracked_resource_foreground")] git_decoration_untracked_resource_foreground: String, + #[serde(rename = "vsc_git_decoration_ignored_resource_foreground")] git_decoration_ignored_resource_foreground: String, + #[serde(rename = "vsc_git_decoration_conflicting_resource_foreground")] git_decoration_conflicting_resource_foreground: String, + #[serde(rename = "vsc_diff_editor_inserted_text_background")] diff_editor_inserted_text_background: String, + #[serde(rename = "vsc_diff_editor_removed_text_background")] diff_editor_removed_text_background: String, + #[serde(rename = "vsc_inline_chat_region_highlight")] inline_chat_region_highlight: String, + #[serde(rename = "vsc_editor_widget_background")] editor_widget_background: String, + #[serde(rename = "vsc_editor_suggest_widget_background")] editor_suggest_widget_background: String, + #[serde(rename = "vsc_editor_suggest_widget_foreground")] editor_suggest_widget_foreground: String, + #[serde(rename = "vsc_editor_suggest_widget_selected_background")] editor_suggest_widget_selected_background: String, + #[serde(rename = "vsc_editor_hover_widget_background")] editor_hover_widget_background: String, + #[serde(rename = "vsc_editor_hover_widget_border")] editor_hover_widget_border: String, + #[serde(rename = "vsc_editor_marker_navigation_background")] editor_marker_navigation_background: String, + #[serde(rename = "vsc_peek_view_border")] peek_view_border: String, + #[serde(rename = "vsc_peek_view_editor_background")] peek_view_editor_background: String, + #[serde(rename = "vsc_peek_view_editor_match_highlight_background")] peek_view_editor_match_highlight_background: String, + #[serde(rename = "vsc_peek_view_result_background")] peek_view_result_background: String, + #[serde(rename = "vsc_peek_view_result_file_foreground")] peek_view_result_file_foreground: String, + #[serde(rename = "vsc_peek_view_result_line_foreground")] peek_view_result_line_foreground: String, + #[serde(rename = "vsc_peek_view_result_match_highlight_background")] peek_view_result_match_highlight_background: String, + #[serde(rename = "vsc_peek_view_result_selection_background")] peek_view_result_selection_background: String, + #[serde(rename = "vsc_peek_view_result_selection_foreground")] peek_view_result_selection_foreground: String, + #[serde(rename = "vsc_peek_view_title_background")] peek_view_title_background: String, + #[serde(rename = "vsc_peek_view_title_description_foreground")] peek_view_title_description_foreground: String, + #[serde(rename = "vsc_peek_view_title_label_foreground")] peek_view_title_label_foreground: String, + #[serde(rename = "vsc_merge_current_header_background")] merge_current_header_background: String, + #[serde(rename = "vsc_merge_incoming_header_background")] merge_incoming_header_background: String, + #[serde(rename = "vsc_editor_overview_ruler_current_content_foreground")] editor_overview_ruler_current_content_foreground: String, + #[serde(rename = "vsc_editor_overview_ruler_incoming_content_foreground")] editor_overview_ruler_incoming_content_foreground: String, + #[serde(rename = "vsc_panel_background")] panel_background: String, + #[serde(rename = "vsc_panel_border")] panel_border: String, + #[serde(rename = "vsc_panel_title_active_border")] panel_title_active_border: String, + #[serde(rename = "vsc_panel_title_active_foreground")] panel_title_active_foreground: String, + #[serde(rename = "vsc_panel_title_inactive_foreground")] panel_title_inactive_foreground: String, + #[serde(rename = "vsc_status_bar_background")] status_bar_background: String, + #[serde(rename = "vsc_status_bar_foreground")] status_bar_foreground: String, + #[serde(rename = "vsc_status_bar_debugging_background")] status_bar_debugging_background: String, + #[serde(rename = "vsc_status_bar_debugging_foreground")] status_bar_debugging_foreground: String, + #[serde(rename = "vsc_status_bar_no_folder_background")] status_bar_no_folder_background: String, + #[serde(rename = "vsc_status_bar_no_folder_foreground")] status_bar_no_folder_foreground: String, + #[serde(rename = "vsc_status_bar_item_prominent_background")] status_bar_item_prominent_background: String, + #[serde(rename = "vsc_status_bar_item_prominent_hover_background")] status_bar_item_prominent_hover_background: String, + #[serde(rename = "vsc_status_bar_item_remote_foreground")] status_bar_item_remote_foreground: String, + #[serde(rename = "vsc_status_bar_item_remote_background")] status_bar_item_remote_background: String, + #[serde(rename = "vsc_title_bar_active_background")] title_bar_active_background: String, + #[serde(rename = "vsc_title_bar_active_foreground")] title_bar_active_foreground: String, + #[serde(rename = "vsc_title_bar_inactive_background")] title_bar_inactive_background: String, + #[serde(rename = "vsc_title_bar_inactive_foreground")] title_bar_inactive_foreground: String, + #[serde(rename = "vsc_extension_button_prominent_foreground")] extension_button_prominent_foreground: String, + #[serde(rename = "vsc_extension_button_prominent_background")] extension_button_prominent_background: String, + #[serde(rename = "vsc_extension_button_prominent_hover_background")] extension_button_prominent_hover_background: String, + #[serde(rename = "vsc_picker_group_border")] picker_group_border: String, + #[serde(rename = "vsc_picker_group_foreground")] picker_group_foreground: String, + #[serde(rename = "vsc_debug_tool_bar_background")] debug_tool_bar_background: String, + #[serde(rename = "vsc_walk_through_embedded_editor_background")] walk_through_embedded_editor_background: String, + #[serde(rename = "vsc_settings_header_foreground")] settings_header_foreground: String, + #[serde(rename = "vsc_settings_modified_item_indicator")] settings_modified_item_indicator: String, + #[serde(rename = "vsc_settings_dropdown_background")] settings_dropdown_background: String, + #[serde(rename = "vsc_settings_dropdown_foreground")] settings_dropdown_foreground: String, + #[serde(rename = "vsc_settings_dropdown_border")] settings_dropdown_border: String, + #[serde(rename = "vsc_settings_checkbox_background")] settings_checkbox_background: String, + #[serde(rename = "vsc_settings_checkbox_foreground")] settings_checkbox_foreground: String, + #[serde(rename = "vsc_settings_checkbox_border")] settings_checkbox_border: String, + #[serde(rename = "vsc_settings_text_input_background")] settings_text_input_background: String, + #[serde(rename = "vsc_settings_text_input_foreground")] settings_text_input_foreground: String, + #[serde(rename = "vsc_settings_text_input_border")] settings_text_input_border: String, + #[serde(rename = "vsc_settings_number_input_background")] settings_number_input_background: String, + #[serde(rename = "vsc_settings_number_input_foreground")] settings_number_input_foreground: String, + #[serde(rename = "vsc_settings_number_input_border")] settings_number_input_border: String, + #[serde(rename = "vsc_breadcrumb_foreground")] breadcrumb_foreground: String, + #[serde(rename = "vsc_breadcrumb_background")] breadcrumb_background: String, + #[serde(rename = "vsc_breadcrumb_focus_foreground")] breadcrumb_focus_foreground: String, + #[serde(rename = "vsc_breadcrumb_active_selection_foreground")] breadcrumb_active_selection_foreground: String, + #[serde(rename = "vsc_breadcrumb_picker_background")] breadcrumb_picker_background: String, + #[serde(rename = "vsc_list_filter_widget_background")] list_filter_widget_background: String, + #[serde(rename = "vsc_list_filter_widget_outline")] list_filter_widget_outline: String, + #[serde(rename = "vsc_list_filter_widget_no_matches_outline")] list_filter_widget_no_matches_outline: String, } -pub fn try_vscode_colors_to_theme_colors(colors: VSCodeColors) -> ThemeColorsRefinement { - let mut theme_colors = ThemeColorsRefinement::default(); +#[cfg(test)] +mod tests { + use super::*; + use std::path::PathBuf; - theme_colors -} + #[test] + fn test_deserialize_dracula() { + let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let root_dir = manifest_dir.parent().unwrap().parent().unwrap(); -pub fn vscode_colors_to_theme_colors(color: String) -> ThemeColorsRefinement { - ThemeColorsRefinement { - text: Some(color), - ..Default::default() + let mut d = root_dir.to_path_buf(); + d.push("assets/themes/src/vsc/dracula/dracula.json"); + + let data = std::fs::read_to_string(d).expect("Unable to read file"); + + let result: Theme = serde_json::from_str(&data).unwrap(); + println!("{:#?}", result); + + // Uncomment the following lines to print specific fields + println!("Name: {:?}", result.name); + println!("Author: {:?}", result.author); } } + +// use crate::ThemeColorsRefinement; + +// struct ImportedThemeFamily { +// pub id: String, +// pub name: String, +// pub author: String, +// pub url: String, +// pub license: String, +// pub themes: Vec, +// } + +// struct ImportedThemeVariant { +// pub id: String, +// pub name: String, +// pub colors: ThemeColorsRefinement, +// } + +// pub fn try_vscode_colors_to_theme_colors(colors: VSCodeColors) -> ThemeColorsRefinement { +// let mut theme_colors = ThemeColorsRefinement::default(); + +// theme_colors +// } + +// pub fn vscode_colors_to_theme_colors(color: String) -> ThemeColorsRefinement { +// ThemeColorsRefinement { +// text: Some(color), +// ..Default::default() +// } +// }