Scaffold out new theme-importer crate

Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
This commit is contained in:
Nate Butler 2023-11-02 17:21:11 -04:00
parent 972f076b4d
commit 058981350c
14 changed files with 3239 additions and 474 deletions

15
Cargo.lock generated
View file

@ -8872,6 +8872,21 @@ dependencies = [
"util",
]
[[package]]
name = "theme_importer"
version = "0.1.0"
dependencies = [
"anyhow",
"convert_case 0.6.0",
"gpui2",
"log",
"rust-embed",
"serde",
"simplelog",
"theme2",
"uuid 1.4.1",
]
[[package]]
name = "theme_selector"
version = "0.1.0"

View file

@ -93,6 +93,7 @@ members = [
"crates/text",
"crates/theme",
"crates/theme2",
"crates/theme_importer",
"crates/theme_selector",
"crates/ui2",
"crates/util",

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016 Ike Ku
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.

View file

@ -0,0 +1,847 @@
{
"type": "dark",
"colors": {
"focusBorder": "#e6b450b3",
"foreground": "#565b66",
"widget.shadow": "#00000080",
"selection.background": "#409fff4d",
"icon.foreground": "#565b66",
"errorForeground": "#d95757",
"descriptionForeground": "#565b66",
"textBlockQuote.background": "#0f131a",
"textLink.foreground": "#e6b450",
"textLink.activeForeground": "#e6b450",
"textPreformat.foreground": "#bfbdb6",
"button.background": "#e6b450",
"button.foreground": "#734d00",
"button.hoverBackground": "#e1af4b",
"button.secondaryBackground": "#565b6633",
"button.secondaryForeground": "#bfbdb6",
"button.secondaryHoverBackground": "#565b6680",
"dropdown.background": "#0d1017",
"dropdown.foreground": "#565b66",
"dropdown.border": "#565b6645",
"input.background": "#0d1017",
"input.border": "#565b6645",
"input.foreground": "#bfbdb6",
"input.placeholderForeground": "#565b6680",
"inputOption.activeBorder": "#e6b4504d",
"inputOption.activeBackground": "#e6b45033",
"inputOption.activeForeground": "#e6b450",
"inputValidation.errorBackground": "#0d1017",
"inputValidation.errorBorder": "#d95757",
"inputValidation.infoBackground": "#0b0e14",
"inputValidation.infoBorder": "#39bae6",
"inputValidation.warningBackground": "#0b0e14",
"inputValidation.warningBorder": "#ffb454",
"scrollbar.shadow": "#1e232b00",
"scrollbarSlider.background": "#565b6666",
"scrollbarSlider.hoverBackground": "#565b6699",
"scrollbarSlider.activeBackground": "#565b66b3",
"badge.background": "#e6b45033",
"badge.foreground": "#e6b450",
"progressBar.background": "#e6b450",
"list.activeSelectionBackground": "#47526640",
"list.activeSelectionForeground": "#bfbdb6",
"list.focusBackground": "#47526640",
"list.focusForeground": "#bfbdb6",
"list.focusOutline": "#47526640",
"list.highlightForeground": "#e6b450",
"list.deemphasizedForeground": "#d95757",
"list.hoverBackground": "#47526640",
"list.inactiveSelectionBackground": "#47526633",
"list.inactiveSelectionForeground": "#565b66",
"list.invalidItemForeground": "#565b664d",
"list.errorForeground": "#d95757",
"tree.indentGuidesStroke": "#6c738080",
"listFilterWidget.background": "#0f131a",
"listFilterWidget.outline": "#e6b450",
"listFilterWidget.noMatchesOutline": "#d95757",
"list.filterMatchBackground": "#5f4c7266",
"list.filterMatchBorder": "#6c598066",
"activityBar.background": "#0b0e14",
"activityBar.foreground": "#565b66cc",
"activityBar.inactiveForeground": "#565b6699",
"activityBar.border": "#0b0e14",
"activityBar.activeBorder": "#e6b450",
"activityBarBadge.background": "#e6b450",
"activityBarBadge.foreground": "#734d00",
"sideBar.background": "#0b0e14",
"sideBar.border": "#0b0e14",
"sideBarTitle.foreground": "#565b66",
"sideBarSectionHeader.background": "#0b0e14",
"sideBarSectionHeader.foreground": "#565b66",
"sideBarSectionHeader.border": "#0b0e14",
"minimap.background": "#0b0e14",
"minimap.selectionHighlight": "#409fff4d",
"minimap.errorHighlight": "#d95757",
"minimap.findMatchHighlight": "#6c5980",
"minimapGutter.addedBackground": "#7fd962",
"minimapGutter.modifiedBackground": "#73b8ff",
"minimapGutter.deletedBackground": "#f26d78",
"editorGroup.border": "#1e232b",
"editorGroup.background": "#0f131a",
"editorGroupHeader.noTabsBackground": "#0b0e14",
"editorGroupHeader.tabsBackground": "#0b0e14",
"editorGroupHeader.tabsBorder": "#0b0e14",
"tab.activeBackground": "#0b0e14",
"tab.activeForeground": "#bfbdb6",
"tab.border": "#0b0e14",
"tab.activeBorder": "#e6b450",
"tab.unfocusedActiveBorder": "#565b66",
"tab.inactiveBackground": "#0b0e14",
"tab.inactiveForeground": "#565b66",
"tab.unfocusedActiveForeground": "#565b66",
"tab.unfocusedInactiveForeground": "#565b66",
"editor.background": "#0b0e14",
"editor.foreground": "#bfbdb6",
"editorLineNumber.foreground": "#6c738099",
"editorLineNumber.activeForeground": "#6c7380e6",
"editorCursor.foreground": "#e6b450",
"editor.inactiveSelectionBackground": "#409fff21",
"editor.selectionBackground": "#409fff4d",
"editor.selectionHighlightBackground": "#7fd96226",
"editor.selectionHighlightBorder": "#7fd96200",
"editor.wordHighlightBackground": "#73b8ff14",
"editor.wordHighlightStrongBackground": "#7fd96214",
"editor.wordHighlightBorder": "#73b8ff80",
"editor.wordHighlightStrongBorder": "#7fd96280",
"editor.findMatchBackground": "#6c5980",
"editor.findMatchBorder": "#6c5980",
"editor.findMatchHighlightBackground": "#6c598066",
"editor.findMatchHighlightBorder": "#5f4c7266",
"editor.findRangeHighlightBackground": "#6c598040",
"editor.rangeHighlightBackground": "#6c598033",
"editor.lineHighlightBackground": "#131721",
"editorLink.activeForeground": "#e6b450",
"editorWhitespace.foreground": "#6c738099",
"editorIndentGuide.background": "#6c738033",
"editorIndentGuide.activeBackground": "#6c738080",
"editorRuler.foreground": "#6c738033",
"editorCodeLens.foreground": "#acb6bf8c",
"editorBracketMatch.background": "#6c73804d",
"editorBracketMatch.border": "#6c73804d",
"editor.snippetTabstopHighlightBackground": "#7fd96233",
"editorOverviewRuler.border": "#1e232b",
"editorOverviewRuler.modifiedForeground": "#73b8ff",
"editorOverviewRuler.addedForeground": "#7fd962",
"editorOverviewRuler.deletedForeground": "#f26d78",
"editorOverviewRuler.errorForeground": "#d95757",
"editorOverviewRuler.warningForeground": "#e6b450",
"editorOverviewRuler.bracketMatchForeground": "#6c7380b3",
"editorOverviewRuler.wordHighlightForeground": "#73b8ff66",
"editorOverviewRuler.wordHighlightStrongForeground": "#7fd96266",
"editorOverviewRuler.findMatchForeground": "#6c5980",
"editorError.foreground": "#d95757",
"editorWarning.foreground": "#e6b450",
"editorGutter.modifiedBackground": "#73b8ffcc",
"editorGutter.addedBackground": "#7fd962cc",
"editorGutter.deletedBackground": "#f26d78cc",
"diffEditor.insertedTextBackground": "#7fd9621f",
"diffEditor.removedTextBackground": "#f26d781f",
"diffEditor.diagonalFill": "#1e232b",
"editorWidget.background": "#0f131a",
"editorWidget.border": "#1e232b",
"editorHoverWidget.background": "#0f131a",
"editorHoverWidget.border": "#1e232b",
"editorSuggestWidget.background": "#0f131a",
"editorSuggestWidget.border": "#1e232b",
"editorSuggestWidget.highlightForeground": "#e6b450",
"editorSuggestWidget.selectedBackground": "#47526640",
"debugExceptionWidget.border": "#1e232b",
"debugExceptionWidget.background": "#0f131a",
"editorMarkerNavigation.background": "#0f131a",
"peekView.border": "#47526640",
"peekViewTitle.background": "#47526640",
"peekViewTitleDescription.foreground": "#565b66",
"peekViewTitleLabel.foreground": "#bfbdb6",
"peekViewEditor.background": "#0f131a",
"peekViewEditor.matchHighlightBackground": "#6c598066",
"peekViewEditor.matchHighlightBorder": "#5f4c7266",
"peekViewResult.background": "#0f131a",
"peekViewResult.fileForeground": "#bfbdb6",
"peekViewResult.lineForeground": "#565b66",
"peekViewResult.matchHighlightBackground": "#6c598066",
"peekViewResult.selectionBackground": "#47526640",
"panel.background": "#0b0e14",
"panel.border": "#1e232b",
"panelTitle.activeBorder": "#e6b450",
"panelTitle.activeForeground": "#bfbdb6",
"panelTitle.inactiveForeground": "#565b66",
"statusBar.background": "#0b0e14",
"statusBar.foreground": "#565b66",
"statusBar.border": "#0b0e14",
"statusBar.debuggingBackground": "#f29668",
"statusBar.debuggingForeground": "#0d1017",
"statusBar.noFolderBackground": "#0f131a",
"statusBarItem.activeBackground": "#565b6633",
"statusBarItem.hoverBackground": "#565b6633",
"statusBarItem.prominentBackground": "#1e232b",
"statusBarItem.prominentHoverBackground": "#00000030",
"statusBarItem.remoteBackground": "#e6b450",
"statusBarItem.remoteForeground": "#734d00",
"titleBar.activeBackground": "#0b0e14",
"titleBar.activeForeground": "#bfbdb6",
"titleBar.inactiveBackground": "#0b0e14",
"titleBar.inactiveForeground": "#565b66",
"titleBar.border": "#0b0e14",
"extensionButton.prominentForeground": "#734d00",
"extensionButton.prominentBackground": "#e6b450",
"extensionButton.prominentHoverBackground": "#e1af4b",
"pickerGroup.border": "#1e232b",
"pickerGroup.foreground": "#565b6680",
"debugToolBar.background": "#0f131a",
"debugIcon.breakpointForeground": "#f29668",
"debugIcon.breakpointDisabledForeground": "#f2966880",
"debugConsoleInputIcon.foreground": "#e6b450",
"welcomePage.tileBackground": "#0b0e14",
"welcomePage.tileShadow": "#00000080",
"welcomePage.progress.background": "#131721",
"welcomePage.buttonBackground": "#e6b45066",
"walkThrough.embeddedEditorBackground": "#0f131a",
"gitDecoration.modifiedResourceForeground": "#73b8ffb3",
"gitDecoration.deletedResourceForeground": "#f26d78b3",
"gitDecoration.untrackedResourceForeground": "#7fd962b3",
"gitDecoration.ignoredResourceForeground": "#565b6680",
"gitDecoration.conflictingResourceForeground": "",
"gitDecoration.submoduleResourceForeground": "#d2a6ffb3",
"settings.headerForeground": "#bfbdb6",
"settings.modifiedItemIndicator": "#73b8ff",
"keybindingLabel.background": "#565b661a",
"keybindingLabel.foreground": "#bfbdb6",
"keybindingLabel.border": "#bfbdb61a",
"keybindingLabel.bottomBorder": "#bfbdb61a",
"terminal.background": "#0b0e14",
"terminal.foreground": "#bfbdb6",
"terminal.ansiBlack": "#1e232b",
"terminal.ansiRed": "#ea6c73",
"terminal.ansiGreen": "#7fd962",
"terminal.ansiYellow": "#f9af4f",
"terminal.ansiBlue": "#53bdfa",
"terminal.ansiMagenta": "#cda1fa",
"terminal.ansiCyan": "#90e1c6",
"terminal.ansiWhite": "#c7c7c7",
"terminal.ansiBrightBlack": "#686868",
"terminal.ansiBrightRed": "#f07178",
"terminal.ansiBrightGreen": "#aad94c",
"terminal.ansiBrightYellow": "#ffb454",
"terminal.ansiBrightBlue": "#59c2ff",
"terminal.ansiBrightMagenta": "#d2a6ff",
"terminal.ansiBrightCyan": "#95e6cb",
"terminal.ansiBrightWhite": "#ffffff"
},
"tokenColors": [
{
"settings": {
"background": "#0b0e14",
"foreground": "#bfbdb6"
}
},
{
"name": "Comment",
"scope": [
"comment"
],
"settings": {
"fontStyle": "italic",
"foreground": "#acb6bf8c"
}
},
{
"name": "String",
"scope": [
"string",
"constant.other.symbol"
],
"settings": {
"foreground": "#aad94c"
}
},
{
"name": "Regular Expressions and Escape Characters",
"scope": [
"string.regexp",
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#95e6cb"
}
},
{
"name": "Number",
"scope": [
"constant.numeric"
],
"settings": {
"foreground": "#d2a6ff"
}
},
{
"name": "Built-in constants",
"scope": [
"constant.language"
],
"settings": {
"foreground": "#d2a6ff"
}
},
{
"name": "Variable",
"scope": [
"variable",
"variable.parameter.function-call"
],
"settings": {
"foreground": "#bfbdb6"
}
},
{
"name": "Member Variable",
"scope": [
"variable.member"
],
"settings": {
"foreground": "#f07178"
}
},
{
"name": "Language variable",
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#39bae6"
}
},
{
"name": "Storage",
"scope": [
"storage"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Keyword",
"scope": [
"keyword"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Operators",
"scope": [
"keyword.operator"
],
"settings": {
"foreground": "#f29668"
}
},
{
"name": "Separators like ; or ,",
"scope": [
"punctuation.separator",
"punctuation.terminator"
],
"settings": {
"foreground": "#bfbdb6b3"
}
},
{
"name": "Punctuation",
"scope": [
"punctuation.section"
],
"settings": {
"foreground": "#bfbdb6"
}
},
{
"name": "Accessor",
"scope": [
"punctuation.accessor"
],
"settings": {
"foreground": "#f29668"
}
},
{
"name": "JavaScript/TypeScript interpolation punctuation",
"scope": [
"punctuation.definition.template-expression"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Ruby interpolation punctuation",
"scope": [
"punctuation.section.embedded"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Interpolation text",
"scope": [
"meta.embedded"
],
"settings": {
"foreground": "#bfbdb6"
}
},
{
"name": "Types fixes",
"scope": [
"source.java storage.type",
"source.haskell storage.type",
"source.c storage.type"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "Inherited class type",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Lambda arrow",
"scope": [
"storage.type.function"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Java primitive variable types",
"scope": [
"source.java storage.type.primitive"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Function name",
"scope": [
"entity.name.function"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Function arguments",
"scope": [
"variable.parameter",
"meta.parameter"
],
"settings": {
"foreground": "#d2a6ff"
}
},
{
"name": "Function call",
"scope": [
"variable.function",
"variable.annotation",
"meta.function-call.generic",
"support.function.go"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Library function",
"scope": [
"support.function",
"support.macro"
],
"settings": {
"foreground": "#f07178"
}
},
{
"name": "Imports and packages",
"scope": [
"entity.name.import",
"entity.name.package"
],
"settings": {
"foreground": "#aad94c"
}
},
{
"name": "Entity name",
"scope": [
"entity.name"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "Tag",
"scope": [
"entity.name.tag",
"meta.tag.sgml"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "JSX Component",
"scope": [
"support.class.component"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.end",
"punctuation.definition.tag.begin",
"punctuation.definition.tag"
],
"settings": {
"foreground": "#39bae680"
}
},
{
"name": "Tag attribute",
"scope": [
"entity.other.attribute-name"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Library constant",
"scope": [
"support.constant"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f29668"
}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class",
"source.go storage.type"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Decorators/annotation",
"scope": [
"meta.decorator variable.other",
"meta.decorator punctuation.decorator",
"storage.type.annotation"
],
"settings": {
"foreground": "#e6b673"
}
},
{
"name": "Invalid",
"scope": [
"invalid"
],
"settings": {
"foreground": "#d95757"
}
},
{
"name": "diff.header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#c594c5"
}
},
{
"name": "Ruby class methods",
"scope": [
"source.ruby variable.other.readwrite"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "CSS tag names",
"scope": [
"source.css entity.name.tag",
"source.sass entity.name.tag",
"source.scss entity.name.tag",
"source.less entity.name.tag",
"source.stylus entity.name.tag"
],
"settings": {
"foreground": "#59c2ff"
}
},
{
"name": "CSS browser prefix",
"scope": [
"source.css support.type",
"source.sass support.type",
"source.scss support.type",
"source.less support.type",
"source.stylus support.type"
],
"settings": {
"foreground": "#acb6bf8c"
}
},
{
"name": "CSS Properties",
"scope": [
"support.type.property-name"
],
"settings": {
"fontStyle": "normal",
"foreground": "#39bae6"
}
},
{
"name": "Search Results Numbers",
"scope": [
"constant.numeric.line-number.find-in-files - match"
],
"settings": {
"foreground": "#acb6bf8c"
}
},
{
"name": "Search Results Match Numbers",
"scope": [
"constant.numeric.line-number.match"
],
"settings": {
"foreground": "#ff8f40"
}
},
{
"name": "Search Results Lines",
"scope": [
"entity.name.filename.find-in-files"
],
"settings": {
"foreground": "#aad94c"
}
},
{
"scope": [
"message.error"
],
"settings": {
"foreground": "#d95757"
}
},
{
"name": "Markup heading",
"scope": [
"markup.heading",
"markup.heading entity.name"
],
"settings": {
"fontStyle": "bold",
"foreground": "#aad94c"
}
},
{
"name": "Markup links",
"scope": [
"markup.underline.link",
"string.other.link"
],
"settings": {
"foreground": "#39bae6"
}
},
{
"name": "Markup Italic",
"scope": [
"markup.italic"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f07178"
}
},
{
"name": "Markup Bold",
"scope": [
"markup.bold"
],
"settings": {
"fontStyle": "bold",
"foreground": "#f07178"
}
},
{
"name": "Markup Bold/italic",
"scope": [
"markup.italic markup.bold",
"markup.bold markup.italic"
],
"settings": {
"fontStyle": "bold italic"
}
},
{
"name": "Markup Code",
"scope": [
"markup.raw"
],
"settings": {
"background": "#bfbdb605"
}
},
{
"name": "Markup Code Inline",
"scope": [
"markup.raw.inline"
],
"settings": {
"background": "#bfbdb60f"
}
},
{
"name": "Markdown Separator",
"scope": [
"meta.separator"
],
"settings": {
"fontStyle": "bold",
"background": "#bfbdb60f",
"foreground": "#acb6bf8c"
}
},
{
"name": "Markup Blockquote",
"scope": [
"markup.quote"
],
"settings": {
"foreground": "#95e6cb",
"fontStyle": "italic"
}
},
{
"name": "Markup List Bullet",
"scope": [
"markup.list punctuation.definition.list.begin"
],
"settings": {
"foreground": "#ffb454"
}
},
{
"name": "Markup added",
"scope": [
"markup.inserted"
],
"settings": {
"foreground": "#7fd962"
}
},
{
"name": "Markup modified",
"scope": [
"markup.changed"
],
"settings": {
"foreground": "#73b8ff"
}
},
{
"name": "Markup removed",
"scope": [
"markup.deleted"
],
"settings": {
"foreground": "#f26d78"
}
},
{
"name": "Markup Strike",
"scope": [
"markup.strike"
],
"settings": {
"foreground": "#e6b673"
}
},
{
"name": "Markup Table",
"scope": [
"markup.table"
],
"settings": {
"background": "#bfbdb60f",
"foreground": "#39bae6"
}
},
{
"name": "Markup Raw Inline",
"scope": [
"text.html.markdown markup.inline.raw"
],
"settings": {
"foreground": "#f29668"
}
},
{
"name": "Markdown - Line Break",
"scope": [
"text.html.markdown meta.dummy.line-break"
],
"settings": {
"background": "#acb6bf8c",
"foreground": "#acb6bf8c"
}
},
{
"name": "Markdown - Raw Block Fenced",
"scope": [
"punctuation.definition.markdown"
],
"settings": {
"background": "#bfbdb6",
"foreground": "#acb6bf8c"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"parameter.label": "#bfbdb6"
}
}

View file

@ -0,0 +1,847 @@
{
"type": "light",
"colors": {
"focusBorder": "#ffaa33b3",
"foreground": "#8a9199",
"widget.shadow": "#00000026",
"selection.background": "#035bd626",
"icon.foreground": "#8a9199",
"errorForeground": "#e65050",
"descriptionForeground": "#8a9199",
"textBlockQuote.background": "#f3f4f5",
"textLink.foreground": "#ffaa33",
"textLink.activeForeground": "#ffaa33",
"textPreformat.foreground": "#5c6166",
"button.background": "#ffaa33",
"button.foreground": "#804a00",
"button.hoverBackground": "#f9a52e",
"button.secondaryBackground": "#8a919933",
"button.secondaryForeground": "#5c6166",
"button.secondaryHoverBackground": "#8a919980",
"dropdown.background": "#fcfcfc",
"dropdown.foreground": "#8a9199",
"dropdown.border": "#8a919945",
"input.background": "#fcfcfc",
"input.border": "#8a919945",
"input.foreground": "#5c6166",
"input.placeholderForeground": "#8a919980",
"inputOption.activeBorder": "#f4a0284d",
"inputOption.activeBackground": "#ffaa3333",
"inputOption.activeForeground": "#f4a028",
"inputValidation.errorBackground": "#fcfcfc",
"inputValidation.errorBorder": "#e65050",
"inputValidation.infoBackground": "#f8f9fa",
"inputValidation.infoBorder": "#55b4d4",
"inputValidation.warningBackground": "#f8f9fa",
"inputValidation.warningBorder": "#f2ae49",
"scrollbar.shadow": "#6b7d8f00",
"scrollbarSlider.background": "#8a919966",
"scrollbarSlider.hoverBackground": "#8a919999",
"scrollbarSlider.activeBackground": "#8a9199b3",
"badge.background": "#ffaa3333",
"badge.foreground": "#f4a028",
"progressBar.background": "#ffaa33",
"list.activeSelectionBackground": "#56728f1f",
"list.activeSelectionForeground": "#5c6166",
"list.focusBackground": "#56728f1f",
"list.focusForeground": "#5c6166",
"list.focusOutline": "#56728f1f",
"list.highlightForeground": "#ffaa33",
"list.deemphasizedForeground": "#e65050",
"list.hoverBackground": "#56728f1f",
"list.inactiveSelectionBackground": "#6b7d8f1f",
"list.inactiveSelectionForeground": "#8a9199",
"list.invalidItemForeground": "#8a91994d",
"list.errorForeground": "#e65050",
"tree.indentGuidesStroke": "#8a919959",
"listFilterWidget.background": "#f3f4f5",
"listFilterWidget.outline": "#ffaa33",
"listFilterWidget.noMatchesOutline": "#e65050",
"list.filterMatchBackground": "#ddcaef73",
"list.filterMatchBorder": "#ecd9ff73",
"activityBar.background": "#f8f9fa",
"activityBar.foreground": "#8a9199cc",
"activityBar.inactiveForeground": "#8a919999",
"activityBar.border": "#f8f9fa",
"activityBar.activeBorder": "#ffaa33",
"activityBarBadge.background": "#ffaa33",
"activityBarBadge.foreground": "#f8f9fa",
"sideBar.background": "#f8f9fa",
"sideBar.border": "#f8f9fa",
"sideBarTitle.foreground": "#8a9199",
"sideBarSectionHeader.background": "#f8f9fa",
"sideBarSectionHeader.foreground": "#8a9199",
"sideBarSectionHeader.border": "#f8f9fa",
"minimap.background": "#f8f9fa",
"minimap.selectionHighlight": "#035bd626",
"minimap.errorHighlight": "#e65050",
"minimap.findMatchHighlight": "#ecd9ff",
"minimapGutter.addedBackground": "#6cbf43",
"minimapGutter.modifiedBackground": "#478acc",
"minimapGutter.deletedBackground": "#ff7383",
"editorGroup.border": "#6b7d8f1f",
"editorGroup.background": "#f3f4f5",
"editorGroupHeader.noTabsBackground": "#f8f9fa",
"editorGroupHeader.tabsBackground": "#f8f9fa",
"editorGroupHeader.tabsBorder": "#f8f9fa",
"tab.activeBackground": "#f8f9fa",
"tab.activeForeground": "#5c6166",
"tab.border": "#f8f9fa",
"tab.activeBorder": "#ffaa33",
"tab.unfocusedActiveBorder": "#8a9199",
"tab.inactiveBackground": "#f8f9fa",
"tab.inactiveForeground": "#8a9199",
"tab.unfocusedActiveForeground": "#8a9199",
"tab.unfocusedInactiveForeground": "#8a9199",
"editor.background": "#f8f9fa",
"editor.foreground": "#5c6166",
"editorLineNumber.foreground": "#8a919966",
"editorLineNumber.activeForeground": "#8a9199cc",
"editorCursor.foreground": "#ffaa33",
"editor.inactiveSelectionBackground": "#035bd612",
"editor.selectionBackground": "#035bd626",
"editor.selectionHighlightBackground": "#6cbf4326",
"editor.selectionHighlightBorder": "#6cbf4300",
"editor.wordHighlightBackground": "#478acc14",
"editor.wordHighlightStrongBackground": "#6cbf4314",
"editor.wordHighlightBorder": "#478acc80",
"editor.wordHighlightStrongBorder": "#6cbf4380",
"editor.findMatchBackground": "#ecd9ff",
"editor.findMatchBorder": "#ecd9ff",
"editor.findMatchHighlightBackground": "#ecd9ff73",
"editor.findMatchHighlightBorder": "#ddcaef73",
"editor.findRangeHighlightBackground": "#ecd9ff40",
"editor.rangeHighlightBackground": "#ecd9ff33",
"editor.lineHighlightBackground": "#8a91991a",
"editorLink.activeForeground": "#ffaa33",
"editorWhitespace.foreground": "#8a919966",
"editorIndentGuide.background": "#8a91992e",
"editorIndentGuide.activeBackground": "#8a919959",
"editorRuler.foreground": "#8a91992e",
"editorCodeLens.foreground": "#787b8099",
"editorBracketMatch.background": "#8a91994d",
"editorBracketMatch.border": "#8a91994d",
"editor.snippetTabstopHighlightBackground": "#6cbf4333",
"editorOverviewRuler.border": "#6b7d8f1f",
"editorOverviewRuler.modifiedForeground": "#478acc",
"editorOverviewRuler.addedForeground": "#6cbf43",
"editorOverviewRuler.deletedForeground": "#ff7383",
"editorOverviewRuler.errorForeground": "#e65050",
"editorOverviewRuler.warningForeground": "#ffaa33",
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
"editorOverviewRuler.wordHighlightForeground": "#478acc66",
"editorOverviewRuler.wordHighlightStrongForeground": "#6cbf4366",
"editorOverviewRuler.findMatchForeground": "#ecd9ff",
"editorError.foreground": "#e65050",
"editorWarning.foreground": "#ffaa33",
"editorGutter.modifiedBackground": "#478acccc",
"editorGutter.addedBackground": "#6cbf43cc",
"editorGutter.deletedBackground": "#ff7383cc",
"diffEditor.insertedTextBackground": "#6cbf431f",
"diffEditor.removedTextBackground": "#ff73831f",
"diffEditor.diagonalFill": "#6b7d8f1f",
"editorWidget.background": "#f3f4f5",
"editorWidget.border": "#6b7d8f1f",
"editorHoverWidget.background": "#f3f4f5",
"editorHoverWidget.border": "#6b7d8f1f",
"editorSuggestWidget.background": "#f3f4f5",
"editorSuggestWidget.border": "#6b7d8f1f",
"editorSuggestWidget.highlightForeground": "#ffaa33",
"editorSuggestWidget.selectedBackground": "#56728f1f",
"debugExceptionWidget.border": "#6b7d8f1f",
"debugExceptionWidget.background": "#f3f4f5",
"editorMarkerNavigation.background": "#f3f4f5",
"peekView.border": "#56728f1f",
"peekViewTitle.background": "#56728f1f",
"peekViewTitleDescription.foreground": "#8a9199",
"peekViewTitleLabel.foreground": "#5c6166",
"peekViewEditor.background": "#f3f4f5",
"peekViewEditor.matchHighlightBackground": "#ecd9ff73",
"peekViewEditor.matchHighlightBorder": "#ddcaef73",
"peekViewResult.background": "#f3f4f5",
"peekViewResult.fileForeground": "#5c6166",
"peekViewResult.lineForeground": "#8a9199",
"peekViewResult.matchHighlightBackground": "#ecd9ff73",
"peekViewResult.selectionBackground": "#56728f1f",
"panel.background": "#f8f9fa",
"panel.border": "#6b7d8f1f",
"panelTitle.activeBorder": "#ffaa33",
"panelTitle.activeForeground": "#5c6166",
"panelTitle.inactiveForeground": "#8a9199",
"statusBar.background": "#f8f9fa",
"statusBar.foreground": "#8a9199",
"statusBar.border": "#f8f9fa",
"statusBar.debuggingBackground": "#ed9366",
"statusBar.debuggingForeground": "#fcfcfc",
"statusBar.noFolderBackground": "#f3f4f5",
"statusBarItem.activeBackground": "#8a919933",
"statusBarItem.hoverBackground": "#8a919933",
"statusBarItem.prominentBackground": "#6b7d8f1f",
"statusBarItem.prominentHoverBackground": "#00000030",
"statusBarItem.remoteBackground": "#ffaa33",
"statusBarItem.remoteForeground": "#804a00",
"titleBar.activeBackground": "#f8f9fa",
"titleBar.activeForeground": "#5c6166",
"titleBar.inactiveBackground": "#f8f9fa",
"titleBar.inactiveForeground": "#8a9199",
"titleBar.border": "#f8f9fa",
"extensionButton.prominentForeground": "#804a00",
"extensionButton.prominentBackground": "#ffaa33",
"extensionButton.prominentHoverBackground": "#f9a52e",
"pickerGroup.border": "#6b7d8f1f",
"pickerGroup.foreground": "#8a919980",
"debugToolBar.background": "#f3f4f5",
"debugIcon.breakpointForeground": "#ed9366",
"debugIcon.breakpointDisabledForeground": "#ed936680",
"debugConsoleInputIcon.foreground": "#ffaa33",
"welcomePage.tileBackground": "#f8f9fa",
"welcomePage.tileShadow": "#00000026",
"welcomePage.progress.background": "#8a91991a",
"welcomePage.buttonBackground": "#ffaa3366",
"walkThrough.embeddedEditorBackground": "#f3f4f5",
"gitDecoration.modifiedResourceForeground": "#478accb3",
"gitDecoration.deletedResourceForeground": "#ff7383b3",
"gitDecoration.untrackedResourceForeground": "#6cbf43b3",
"gitDecoration.ignoredResourceForeground": "#8a919980",
"gitDecoration.conflictingResourceForeground": "",
"gitDecoration.submoduleResourceForeground": "#a37accb3",
"settings.headerForeground": "#5c6166",
"settings.modifiedItemIndicator": "#478acc",
"keybindingLabel.background": "#8a91991a",
"keybindingLabel.foreground": "#5c6166",
"keybindingLabel.border": "#5c61661a",
"keybindingLabel.bottomBorder": "#5c61661a",
"terminal.background": "#f8f9fa",
"terminal.foreground": "#5c6166",
"terminal.ansiBlack": "#000000",
"terminal.ansiRed": "#ea6c6d",
"terminal.ansiGreen": "#6cbf43",
"terminal.ansiYellow": "#eca944",
"terminal.ansiBlue": "#3199e1",
"terminal.ansiMagenta": "#9e75c7",
"terminal.ansiCyan": "#46ba94",
"terminal.ansiWhite": "#c7c7c7",
"terminal.ansiBrightBlack": "#686868",
"terminal.ansiBrightRed": "#f07171",
"terminal.ansiBrightGreen": "#86b300",
"terminal.ansiBrightYellow": "#f2ae49",
"terminal.ansiBrightBlue": "#399ee6",
"terminal.ansiBrightMagenta": "#a37acc",
"terminal.ansiBrightCyan": "#4cbf99",
"terminal.ansiBrightWhite": "#d1d1d1"
},
"tokenColors": [
{
"settings": {
"background": "#f8f9fa",
"foreground": "#5c6166"
}
},
{
"name": "Comment",
"scope": [
"comment"
],
"settings": {
"fontStyle": "italic",
"foreground": "#787b8099"
}
},
{
"name": "String",
"scope": [
"string",
"constant.other.symbol"
],
"settings": {
"foreground": "#86b300"
}
},
{
"name": "Regular Expressions and Escape Characters",
"scope": [
"string.regexp",
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#4cbf99"
}
},
{
"name": "Number",
"scope": [
"constant.numeric"
],
"settings": {
"foreground": "#a37acc"
}
},
{
"name": "Built-in constants",
"scope": [
"constant.language"
],
"settings": {
"foreground": "#a37acc"
}
},
{
"name": "Variable",
"scope": [
"variable",
"variable.parameter.function-call"
],
"settings": {
"foreground": "#5c6166"
}
},
{
"name": "Member Variable",
"scope": [
"variable.member"
],
"settings": {
"foreground": "#f07171"
}
},
{
"name": "Language variable",
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#55b4d4"
}
},
{
"name": "Storage",
"scope": [
"storage"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Keyword",
"scope": [
"keyword"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Operators",
"scope": [
"keyword.operator"
],
"settings": {
"foreground": "#ed9366"
}
},
{
"name": "Separators like ; or ,",
"scope": [
"punctuation.separator",
"punctuation.terminator"
],
"settings": {
"foreground": "#5c6166b3"
}
},
{
"name": "Punctuation",
"scope": [
"punctuation.section"
],
"settings": {
"foreground": "#5c6166"
}
},
{
"name": "Accessor",
"scope": [
"punctuation.accessor"
],
"settings": {
"foreground": "#ed9366"
}
},
{
"name": "JavaScript/TypeScript interpolation punctuation",
"scope": [
"punctuation.definition.template-expression"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Ruby interpolation punctuation",
"scope": [
"punctuation.section.embedded"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Interpolation text",
"scope": [
"meta.embedded"
],
"settings": {
"foreground": "#5c6166"
}
},
{
"name": "Types fixes",
"scope": [
"source.java storage.type",
"source.haskell storage.type",
"source.c storage.type"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "Inherited class type",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Lambda arrow",
"scope": [
"storage.type.function"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Java primitive variable types",
"scope": [
"source.java storage.type.primitive"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Function name",
"scope": [
"entity.name.function"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Function arguments",
"scope": [
"variable.parameter",
"meta.parameter"
],
"settings": {
"foreground": "#a37acc"
}
},
{
"name": "Function call",
"scope": [
"variable.function",
"variable.annotation",
"meta.function-call.generic",
"support.function.go"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Library function",
"scope": [
"support.function",
"support.macro"
],
"settings": {
"foreground": "#f07171"
}
},
{
"name": "Imports and packages",
"scope": [
"entity.name.import",
"entity.name.package"
],
"settings": {
"foreground": "#86b300"
}
},
{
"name": "Entity name",
"scope": [
"entity.name"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "Tag",
"scope": [
"entity.name.tag",
"meta.tag.sgml"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "JSX Component",
"scope": [
"support.class.component"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.end",
"punctuation.definition.tag.begin",
"punctuation.definition.tag"
],
"settings": {
"foreground": "#55b4d480"
}
},
{
"name": "Tag attribute",
"scope": [
"entity.other.attribute-name"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Library constant",
"scope": [
"support.constant"
],
"settings": {
"fontStyle": "italic",
"foreground": "#ed9366"
}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class",
"source.go storage.type"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Decorators/annotation",
"scope": [
"meta.decorator variable.other",
"meta.decorator punctuation.decorator",
"storage.type.annotation"
],
"settings": {
"foreground": "#e6ba7e"
}
},
{
"name": "Invalid",
"scope": [
"invalid"
],
"settings": {
"foreground": "#e65050"
}
},
{
"name": "diff.header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#c594c5"
}
},
{
"name": "Ruby class methods",
"scope": [
"source.ruby variable.other.readwrite"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "CSS tag names",
"scope": [
"source.css entity.name.tag",
"source.sass entity.name.tag",
"source.scss entity.name.tag",
"source.less entity.name.tag",
"source.stylus entity.name.tag"
],
"settings": {
"foreground": "#399ee6"
}
},
{
"name": "CSS browser prefix",
"scope": [
"source.css support.type",
"source.sass support.type",
"source.scss support.type",
"source.less support.type",
"source.stylus support.type"
],
"settings": {
"foreground": "#787b8099"
}
},
{
"name": "CSS Properties",
"scope": [
"support.type.property-name"
],
"settings": {
"fontStyle": "normal",
"foreground": "#55b4d4"
}
},
{
"name": "Search Results Numbers",
"scope": [
"constant.numeric.line-number.find-in-files - match"
],
"settings": {
"foreground": "#787b8099"
}
},
{
"name": "Search Results Match Numbers",
"scope": [
"constant.numeric.line-number.match"
],
"settings": {
"foreground": "#fa8d3e"
}
},
{
"name": "Search Results Lines",
"scope": [
"entity.name.filename.find-in-files"
],
"settings": {
"foreground": "#86b300"
}
},
{
"scope": [
"message.error"
],
"settings": {
"foreground": "#e65050"
}
},
{
"name": "Markup heading",
"scope": [
"markup.heading",
"markup.heading entity.name"
],
"settings": {
"fontStyle": "bold",
"foreground": "#86b300"
}
},
{
"name": "Markup links",
"scope": [
"markup.underline.link",
"string.other.link"
],
"settings": {
"foreground": "#55b4d4"
}
},
{
"name": "Markup Italic",
"scope": [
"markup.italic"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f07171"
}
},
{
"name": "Markup Bold",
"scope": [
"markup.bold"
],
"settings": {
"fontStyle": "bold",
"foreground": "#f07171"
}
},
{
"name": "Markup Bold/italic",
"scope": [
"markup.italic markup.bold",
"markup.bold markup.italic"
],
"settings": {
"fontStyle": "bold italic"
}
},
{
"name": "Markup Code",
"scope": [
"markup.raw"
],
"settings": {
"background": "#5c616605"
}
},
{
"name": "Markup Code Inline",
"scope": [
"markup.raw.inline"
],
"settings": {
"background": "#5c61660f"
}
},
{
"name": "Markdown Separator",
"scope": [
"meta.separator"
],
"settings": {
"fontStyle": "bold",
"background": "#5c61660f",
"foreground": "#787b8099"
}
},
{
"name": "Markup Blockquote",
"scope": [
"markup.quote"
],
"settings": {
"foreground": "#4cbf99",
"fontStyle": "italic"
}
},
{
"name": "Markup List Bullet",
"scope": [
"markup.list punctuation.definition.list.begin"
],
"settings": {
"foreground": "#f2ae49"
}
},
{
"name": "Markup added",
"scope": [
"markup.inserted"
],
"settings": {
"foreground": "#6cbf43"
}
},
{
"name": "Markup modified",
"scope": [
"markup.changed"
],
"settings": {
"foreground": "#478acc"
}
},
{
"name": "Markup removed",
"scope": [
"markup.deleted"
],
"settings": {
"foreground": "#ff7383"
}
},
{
"name": "Markup Strike",
"scope": [
"markup.strike"
],
"settings": {
"foreground": "#e6ba7e"
}
},
{
"name": "Markup Table",
"scope": [
"markup.table"
],
"settings": {
"background": "#5c61660f",
"foreground": "#55b4d4"
}
},
{
"name": "Markup Raw Inline",
"scope": [
"text.html.markdown markup.inline.raw"
],
"settings": {
"foreground": "#ed9366"
}
},
{
"name": "Markdown - Line Break",
"scope": [
"text.html.markdown meta.dummy.line-break"
],
"settings": {
"background": "#787b8099",
"foreground": "#787b8099"
}
},
{
"name": "Markdown - Raw Block Fenced",
"scope": [
"punctuation.definition.markdown"
],
"settings": {
"background": "#5c6166",
"foreground": "#787b8099"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"parameter.label": "#5c6166"
}
}

View file

@ -0,0 +1,847 @@
{
"type": "dark",
"colors": {
"focusBorder": "#ffcc66b3",
"foreground": "#707a8c",
"widget.shadow": "#12151cb3",
"selection.background": "#409fff40",
"icon.foreground": "#707a8c",
"errorForeground": "#ff6666",
"descriptionForeground": "#707a8c",
"textBlockQuote.background": "#1c212b",
"textLink.foreground": "#ffcc66",
"textLink.activeForeground": "#ffcc66",
"textPreformat.foreground": "#cccac2",
"button.background": "#ffcc66",
"button.foreground": "#805500",
"button.hoverBackground": "#fac761",
"button.secondaryBackground": "#707a8c33",
"button.secondaryForeground": "#cccac2",
"button.secondaryHoverBackground": "#707a8c80",
"dropdown.background": "#242936",
"dropdown.foreground": "#707a8c",
"dropdown.border": "#707a8c45",
"input.background": "#242936",
"input.border": "#707a8c45",
"input.foreground": "#cccac2",
"input.placeholderForeground": "#707a8c80",
"inputOption.activeBorder": "#ffcc664d",
"inputOption.activeBackground": "#ffcc6633",
"inputOption.activeForeground": "#ffcc66",
"inputValidation.errorBackground": "#242936",
"inputValidation.errorBorder": "#ff6666",
"inputValidation.infoBackground": "#1f2430",
"inputValidation.infoBorder": "#5ccfe6",
"inputValidation.warningBackground": "#1f2430",
"inputValidation.warningBorder": "#ffd173",
"scrollbar.shadow": "#171b2400",
"scrollbarSlider.background": "#707a8c66",
"scrollbarSlider.hoverBackground": "#707a8c99",
"scrollbarSlider.activeBackground": "#707a8cb3",
"badge.background": "#ffcc6633",
"badge.foreground": "#ffcc66",
"progressBar.background": "#ffcc66",
"list.activeSelectionBackground": "#63759926",
"list.activeSelectionForeground": "#cccac2",
"list.focusBackground": "#63759926",
"list.focusForeground": "#cccac2",
"list.focusOutline": "#63759926",
"list.highlightForeground": "#ffcc66",
"list.deemphasizedForeground": "#ff6666",
"list.hoverBackground": "#63759926",
"list.inactiveSelectionBackground": "#69758c1f",
"list.inactiveSelectionForeground": "#707a8c",
"list.invalidItemForeground": "#707a8c4d",
"list.errorForeground": "#ff6666",
"tree.indentGuidesStroke": "#8a919959",
"listFilterWidget.background": "#1c212b",
"listFilterWidget.outline": "#ffcc66",
"listFilterWidget.noMatchesOutline": "#ff6666",
"list.filterMatchBackground": "#5c467266",
"list.filterMatchBorder": "#69538066",
"activityBar.background": "#1f2430",
"activityBar.foreground": "#707a8ccc",
"activityBar.inactiveForeground": "#707a8c99",
"activityBar.border": "#1f2430",
"activityBar.activeBorder": "#ffcc66",
"activityBarBadge.background": "#ffcc66",
"activityBarBadge.foreground": "#805500",
"sideBar.background": "#1f2430",
"sideBar.border": "#1f2430",
"sideBarTitle.foreground": "#707a8c",
"sideBarSectionHeader.background": "#1f2430",
"sideBarSectionHeader.foreground": "#707a8c",
"sideBarSectionHeader.border": "#1f2430",
"minimap.background": "#1f2430",
"minimap.selectionHighlight": "#409fff40",
"minimap.errorHighlight": "#ff6666",
"minimap.findMatchHighlight": "#695380",
"minimapGutter.addedBackground": "#87d96c",
"minimapGutter.modifiedBackground": "#80bfff",
"minimapGutter.deletedBackground": "#f27983",
"editorGroup.border": "#171b24",
"editorGroup.background": "#1c212b",
"editorGroupHeader.noTabsBackground": "#1f2430",
"editorGroupHeader.tabsBackground": "#1f2430",
"editorGroupHeader.tabsBorder": "#1f2430",
"tab.activeBackground": "#1f2430",
"tab.activeForeground": "#cccac2",
"tab.border": "#1f2430",
"tab.activeBorder": "#ffcc66",
"tab.unfocusedActiveBorder": "#707a8c",
"tab.inactiveBackground": "#1f2430",
"tab.inactiveForeground": "#707a8c",
"tab.unfocusedActiveForeground": "#707a8c",
"tab.unfocusedInactiveForeground": "#707a8c",
"editor.background": "#1f2430",
"editor.foreground": "#cccac2",
"editorLineNumber.foreground": "#8a919966",
"editorLineNumber.activeForeground": "#8a9199cc",
"editorCursor.foreground": "#ffcc66",
"editor.inactiveSelectionBackground": "#409fff21",
"editor.selectionBackground": "#409fff40",
"editor.selectionHighlightBackground": "#87d96c26",
"editor.selectionHighlightBorder": "#87d96c00",
"editor.wordHighlightBackground": "#80bfff14",
"editor.wordHighlightStrongBackground": "#87d96c14",
"editor.wordHighlightBorder": "#80bfff80",
"editor.wordHighlightStrongBorder": "#87d96c80",
"editor.findMatchBackground": "#695380",
"editor.findMatchBorder": "#695380",
"editor.findMatchHighlightBackground": "#69538066",
"editor.findMatchHighlightBorder": "#5c467266",
"editor.findRangeHighlightBackground": "#69538040",
"editor.rangeHighlightBackground": "#69538033",
"editor.lineHighlightBackground": "#1a1f29",
"editorLink.activeForeground": "#ffcc66",
"editorWhitespace.foreground": "#8a919966",
"editorIndentGuide.background": "#8a91992e",
"editorIndentGuide.activeBackground": "#8a919959",
"editorRuler.foreground": "#8a91992e",
"editorCodeLens.foreground": "#b8cfe680",
"editorBracketMatch.background": "#8a91994d",
"editorBracketMatch.border": "#8a91994d",
"editor.snippetTabstopHighlightBackground": "#87d96c33",
"editorOverviewRuler.border": "#171b24",
"editorOverviewRuler.modifiedForeground": "#80bfff",
"editorOverviewRuler.addedForeground": "#87d96c",
"editorOverviewRuler.deletedForeground": "#f27983",
"editorOverviewRuler.errorForeground": "#ff6666",
"editorOverviewRuler.warningForeground": "#ffcc66",
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
"editorOverviewRuler.wordHighlightForeground": "#80bfff66",
"editorOverviewRuler.wordHighlightStrongForeground": "#87d96c66",
"editorOverviewRuler.findMatchForeground": "#695380",
"editorError.foreground": "#ff6666",
"editorWarning.foreground": "#ffcc66",
"editorGutter.modifiedBackground": "#80bfffcc",
"editorGutter.addedBackground": "#87d96ccc",
"editorGutter.deletedBackground": "#f27983cc",
"diffEditor.insertedTextBackground": "#87d96c1f",
"diffEditor.removedTextBackground": "#f279831f",
"diffEditor.diagonalFill": "#171b24",
"editorWidget.background": "#1c212b",
"editorWidget.border": "#171b24",
"editorHoverWidget.background": "#1c212b",
"editorHoverWidget.border": "#171b24",
"editorSuggestWidget.background": "#1c212b",
"editorSuggestWidget.border": "#171b24",
"editorSuggestWidget.highlightForeground": "#ffcc66",
"editorSuggestWidget.selectedBackground": "#63759926",
"debugExceptionWidget.border": "#171b24",
"debugExceptionWidget.background": "#1c212b",
"editorMarkerNavigation.background": "#1c212b",
"peekView.border": "#63759926",
"peekViewTitle.background": "#63759926",
"peekViewTitleDescription.foreground": "#707a8c",
"peekViewTitleLabel.foreground": "#cccac2",
"peekViewEditor.background": "#1c212b",
"peekViewEditor.matchHighlightBackground": "#69538066",
"peekViewEditor.matchHighlightBorder": "#5c467266",
"peekViewResult.background": "#1c212b",
"peekViewResult.fileForeground": "#cccac2",
"peekViewResult.lineForeground": "#707a8c",
"peekViewResult.matchHighlightBackground": "#69538066",
"peekViewResult.selectionBackground": "#63759926",
"panel.background": "#1f2430",
"panel.border": "#171b24",
"panelTitle.activeBorder": "#ffcc66",
"panelTitle.activeForeground": "#cccac2",
"panelTitle.inactiveForeground": "#707a8c",
"statusBar.background": "#1f2430",
"statusBar.foreground": "#707a8c",
"statusBar.border": "#1f2430",
"statusBar.debuggingBackground": "#f29e74",
"statusBar.debuggingForeground": "#242936",
"statusBar.noFolderBackground": "#1c212b",
"statusBarItem.activeBackground": "#707a8c33",
"statusBarItem.hoverBackground": "#707a8c33",
"statusBarItem.prominentBackground": "#171b24",
"statusBarItem.prominentHoverBackground": "#00000030",
"statusBarItem.remoteBackground": "#ffcc66",
"statusBarItem.remoteForeground": "#805500",
"titleBar.activeBackground": "#1f2430",
"titleBar.activeForeground": "#cccac2",
"titleBar.inactiveBackground": "#1f2430",
"titleBar.inactiveForeground": "#707a8c",
"titleBar.border": "#1f2430",
"extensionButton.prominentForeground": "#805500",
"extensionButton.prominentBackground": "#ffcc66",
"extensionButton.prominentHoverBackground": "#fac761",
"pickerGroup.border": "#171b24",
"pickerGroup.foreground": "#707a8c80",
"debugToolBar.background": "#1c212b",
"debugIcon.breakpointForeground": "#f29e74",
"debugIcon.breakpointDisabledForeground": "#f29e7480",
"debugConsoleInputIcon.foreground": "#ffcc66",
"welcomePage.tileBackground": "#1f2430",
"welcomePage.tileShadow": "#12151cb3",
"welcomePage.progress.background": "#1a1f29",
"welcomePage.buttonBackground": "#ffcc6666",
"walkThrough.embeddedEditorBackground": "#1c212b",
"gitDecoration.modifiedResourceForeground": "#80bfffb3",
"gitDecoration.deletedResourceForeground": "#f27983b3",
"gitDecoration.untrackedResourceForeground": "#87d96cb3",
"gitDecoration.ignoredResourceForeground": "#707a8c80",
"gitDecoration.conflictingResourceForeground": "",
"gitDecoration.submoduleResourceForeground": "#dfbfffb3",
"settings.headerForeground": "#cccac2",
"settings.modifiedItemIndicator": "#80bfff",
"keybindingLabel.background": "#707a8c1a",
"keybindingLabel.foreground": "#cccac2",
"keybindingLabel.border": "#cccac21a",
"keybindingLabel.bottomBorder": "#cccac21a",
"terminal.background": "#1f2430",
"terminal.foreground": "#cccac2",
"terminal.ansiBlack": "#171b24",
"terminal.ansiRed": "#ed8274",
"terminal.ansiGreen": "#87d96c",
"terminal.ansiYellow": "#facc6e",
"terminal.ansiBlue": "#6dcbfa",
"terminal.ansiMagenta": "#dabafa",
"terminal.ansiCyan": "#90e1c6",
"terminal.ansiWhite": "#c7c7c7",
"terminal.ansiBrightBlack": "#686868",
"terminal.ansiBrightRed": "#f28779",
"terminal.ansiBrightGreen": "#d5ff80",
"terminal.ansiBrightYellow": "#ffd173",
"terminal.ansiBrightBlue": "#73d0ff",
"terminal.ansiBrightMagenta": "#dfbfff",
"terminal.ansiBrightCyan": "#95e6cb",
"terminal.ansiBrightWhite": "#ffffff"
},
"tokenColors": [
{
"settings": {
"background": "#1f2430",
"foreground": "#cccac2"
}
},
{
"name": "Comment",
"scope": [
"comment"
],
"settings": {
"fontStyle": "italic",
"foreground": "#b8cfe680"
}
},
{
"name": "String",
"scope": [
"string",
"constant.other.symbol"
],
"settings": {
"foreground": "#d5ff80"
}
},
{
"name": "Regular Expressions and Escape Characters",
"scope": [
"string.regexp",
"constant.character",
"constant.other"
],
"settings": {
"foreground": "#95e6cb"
}
},
{
"name": "Number",
"scope": [
"constant.numeric"
],
"settings": {
"foreground": "#dfbfff"
}
},
{
"name": "Built-in constants",
"scope": [
"constant.language"
],
"settings": {
"foreground": "#dfbfff"
}
},
{
"name": "Variable",
"scope": [
"variable",
"variable.parameter.function-call"
],
"settings": {
"foreground": "#cccac2"
}
},
{
"name": "Member Variable",
"scope": [
"variable.member"
],
"settings": {
"foreground": "#f28779"
}
},
{
"name": "Language variable",
"scope": [
"variable.language"
],
"settings": {
"fontStyle": "italic",
"foreground": "#5ccfe6"
}
},
{
"name": "Storage",
"scope": [
"storage"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Keyword",
"scope": [
"keyword"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Operators",
"scope": [
"keyword.operator"
],
"settings": {
"foreground": "#f29e74"
}
},
{
"name": "Separators like ; or ,",
"scope": [
"punctuation.separator",
"punctuation.terminator"
],
"settings": {
"foreground": "#cccac2b3"
}
},
{
"name": "Punctuation",
"scope": [
"punctuation.section"
],
"settings": {
"foreground": "#cccac2"
}
},
{
"name": "Accessor",
"scope": [
"punctuation.accessor"
],
"settings": {
"foreground": "#f29e74"
}
},
{
"name": "JavaScript/TypeScript interpolation punctuation",
"scope": [
"punctuation.definition.template-expression"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Ruby interpolation punctuation",
"scope": [
"punctuation.section.embedded"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Interpolation text",
"scope": [
"meta.embedded"
],
"settings": {
"foreground": "#cccac2"
}
},
{
"name": "Types fixes",
"scope": [
"source.java storage.type",
"source.haskell storage.type",
"source.c storage.type"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "Inherited class type",
"scope": [
"entity.other.inherited-class"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Lambda arrow",
"scope": [
"storage.type.function"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Java primitive variable types",
"scope": [
"source.java storage.type.primitive"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Function name",
"scope": [
"entity.name.function"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Function arguments",
"scope": [
"variable.parameter",
"meta.parameter"
],
"settings": {
"foreground": "#dfbfff"
}
},
{
"name": "Function call",
"scope": [
"variable.function",
"variable.annotation",
"meta.function-call.generic",
"support.function.go"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Library function",
"scope": [
"support.function",
"support.macro"
],
"settings": {
"foreground": "#f28779"
}
},
{
"name": "Imports and packages",
"scope": [
"entity.name.import",
"entity.name.package"
],
"settings": {
"foreground": "#d5ff80"
}
},
{
"name": "Entity name",
"scope": [
"entity.name"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "Tag",
"scope": [
"entity.name.tag",
"meta.tag.sgml"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "JSX Component",
"scope": [
"support.class.component"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "Tag start/end",
"scope": [
"punctuation.definition.tag.end",
"punctuation.definition.tag.begin",
"punctuation.definition.tag"
],
"settings": {
"foreground": "#5ccfe680"
}
},
{
"name": "Tag attribute",
"scope": [
"entity.other.attribute-name"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Library constant",
"scope": [
"support.constant"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f29e74"
}
},
{
"name": "Library class/type",
"scope": [
"support.type",
"support.class",
"source.go storage.type"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Decorators/annotation",
"scope": [
"meta.decorator variable.other",
"meta.decorator punctuation.decorator",
"storage.type.annotation"
],
"settings": {
"foreground": "#ffdfb3"
}
},
{
"name": "Invalid",
"scope": [
"invalid"
],
"settings": {
"foreground": "#ff6666"
}
},
{
"name": "diff.header",
"scope": [
"meta.diff",
"meta.diff.header"
],
"settings": {
"foreground": "#c594c5"
}
},
{
"name": "Ruby class methods",
"scope": [
"source.ruby variable.other.readwrite"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "CSS tag names",
"scope": [
"source.css entity.name.tag",
"source.sass entity.name.tag",
"source.scss entity.name.tag",
"source.less entity.name.tag",
"source.stylus entity.name.tag"
],
"settings": {
"foreground": "#73d0ff"
}
},
{
"name": "CSS browser prefix",
"scope": [
"source.css support.type",
"source.sass support.type",
"source.scss support.type",
"source.less support.type",
"source.stylus support.type"
],
"settings": {
"foreground": "#b8cfe680"
}
},
{
"name": "CSS Properties",
"scope": [
"support.type.property-name"
],
"settings": {
"fontStyle": "normal",
"foreground": "#5ccfe6"
}
},
{
"name": "Search Results Numbers",
"scope": [
"constant.numeric.line-number.find-in-files - match"
],
"settings": {
"foreground": "#b8cfe680"
}
},
{
"name": "Search Results Match Numbers",
"scope": [
"constant.numeric.line-number.match"
],
"settings": {
"foreground": "#ffad66"
}
},
{
"name": "Search Results Lines",
"scope": [
"entity.name.filename.find-in-files"
],
"settings": {
"foreground": "#d5ff80"
}
},
{
"scope": [
"message.error"
],
"settings": {
"foreground": "#ff6666"
}
},
{
"name": "Markup heading",
"scope": [
"markup.heading",
"markup.heading entity.name"
],
"settings": {
"fontStyle": "bold",
"foreground": "#d5ff80"
}
},
{
"name": "Markup links",
"scope": [
"markup.underline.link",
"string.other.link"
],
"settings": {
"foreground": "#5ccfe6"
}
},
{
"name": "Markup Italic",
"scope": [
"markup.italic"
],
"settings": {
"fontStyle": "italic",
"foreground": "#f28779"
}
},
{
"name": "Markup Bold",
"scope": [
"markup.bold"
],
"settings": {
"fontStyle": "bold",
"foreground": "#f28779"
}
},
{
"name": "Markup Bold/italic",
"scope": [
"markup.italic markup.bold",
"markup.bold markup.italic"
],
"settings": {
"fontStyle": "bold italic"
}
},
{
"name": "Markup Code",
"scope": [
"markup.raw"
],
"settings": {
"background": "#cccac205"
}
},
{
"name": "Markup Code Inline",
"scope": [
"markup.raw.inline"
],
"settings": {
"background": "#cccac20f"
}
},
{
"name": "Markdown Separator",
"scope": [
"meta.separator"
],
"settings": {
"fontStyle": "bold",
"background": "#cccac20f",
"foreground": "#b8cfe680"
}
},
{
"name": "Markup Blockquote",
"scope": [
"markup.quote"
],
"settings": {
"foreground": "#95e6cb",
"fontStyle": "italic"
}
},
{
"name": "Markup List Bullet",
"scope": [
"markup.list punctuation.definition.list.begin"
],
"settings": {
"foreground": "#ffd173"
}
},
{
"name": "Markup added",
"scope": [
"markup.inserted"
],
"settings": {
"foreground": "#87d96c"
}
},
{
"name": "Markup modified",
"scope": [
"markup.changed"
],
"settings": {
"foreground": "#80bfff"
}
},
{
"name": "Markup removed",
"scope": [
"markup.deleted"
],
"settings": {
"foreground": "#f27983"
}
},
{
"name": "Markup Strike",
"scope": [
"markup.strike"
],
"settings": {
"foreground": "#ffdfb3"
}
},
{
"name": "Markup Table",
"scope": [
"markup.table"
],
"settings": {
"background": "#cccac20f",
"foreground": "#5ccfe6"
}
},
{
"name": "Markup Raw Inline",
"scope": [
"text.html.markdown markup.inline.raw"
],
"settings": {
"foreground": "#f29e74"
}
},
{
"name": "Markdown - Line Break",
"scope": [
"text.html.markdown meta.dummy.line-break"
],
"settings": {
"background": "#b8cfe680",
"foreground": "#b8cfe680"
}
},
{
"name": "Markdown - Raw Block Fenced",
"scope": [
"punctuation.definition.markdown"
],
"settings": {
"background": "#cccac2",
"foreground": "#b8cfe680"
}
}
],
"semanticHighlighting": true,
"semanticTokenColors": {
"parameter.label": "#cccac2"
}
}

View file

@ -0,0 +1,18 @@
{
"name": "Ayu",
"author": "dempfi (Ike Ku)",
"themes": [
{
"name": "Ayu Light",
"appearance": "light"
},
{
"name": "Ayu Mirage",
"appearance": "dark"
},
{
"name": "Ayu Dark",
"appearance": "dark"
}
]
}

View file

@ -0,0 +1,10 @@
{
"name": "Dracula",
"author": "Zeno Rocha",
"themes": [
{
"name": "Dracula",
"appearance": "dark"
}
]
}

View file

@ -1,471 +0,0 @@
use serde::Deserialize;
#[derive(Deserialize, Debug)]
pub struct Theme {
#[serde(rename = "$schema")]
pub schema: String,
pub name: String,
pub author: String,
pub maintainers: Vec<String>,
#[serde(rename = "semanticClass")]
pub semantic_class: String,
#[serde(rename = "semanticHighlighting")]
pub semantic_highlighting: bool,
// pub colors: VSCodeColors,
}
#[derive(Debug, Deserialize)]
pub struct VSCodeColors {
#[serde(rename = "editor_foreground")]
text: String,
#[serde(rename = "editor")]
editor_background: String,
}
#[cfg(test)]
mod tests {
use super::*;
use std::path::PathBuf;
#[test]
fn test_deserialize_dracula() {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let root_dir = manifest_dir.parent().unwrap().parent().unwrap();
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);
}
}
// #[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,
// }
// use crate::ThemeColorsRefinement;
// struct ImportedThemeFamily {
// pub id: String,
// pub name: String,
// pub author: String,
// pub url: String,
// pub license: String,
// pub themes: Vec<ImportedThemeVariant>,
// }
// 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()
// }
// }

View file

@ -1,7 +1,6 @@
mod colors;
mod default_colors;
mod default_theme;
mod import;
mod registry;
mod scale;
mod settings;
@ -40,8 +39,7 @@ impl ActiveTheme for AppContext {
}
pub struct ThemeFamily {
#[allow(dead_code)]
pub(crate) id: String,
pub id: String,
pub name: SharedString,
pub author: SharedString,
pub themes: Vec<ThemeVariant>,

View file

@ -0,0 +1,17 @@
[package]
name = "theme_importer"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow.workspace = true
convert_case = "0.6.0"
gpui = { package = "gpui2", path = "../gpui2" }
log.workspace = true
rust-embed.workspace = true
serde.workspace = true
simplelog = "0.9"
theme = { package = "theme2", path = "../theme2" }
uuid.workspace = true

View file

@ -0,0 +1,142 @@
use std::path::PathBuf;
use std::str::FromStr;
use std::{borrow::Cow, fs::File};
use anyhow::{anyhow, Context, Result};
use convert_case::Case;
use gpui::{AssetSource, SharedString};
use log::LevelFilter;
use rust_embed::RustEmbed;
use serde::Deserialize;
use simplelog::SimpleLogger;
use theme::{default_color_scales, ThemeColorsRefinement, ThemeFamily};
mod vscode;
pub(crate) fn new_theme_family(name: String, author: String) -> ThemeFamily {
ThemeFamily {
id: uuid::Uuid::new_v4().to_string(),
name: name.into(),
author: author.into(),
themes: Vec::new(),
scales: default_color_scales(),
}
}
#[derive(Deserialize)]
struct FamilyJson {
pub name: String,
pub themes: Vec<ThemeVariantJson>,
}
#[derive(Deserialize)]
#[serde(rename_all = "snake_case")]
enum ThemeAppearanceJson {
Light,
Dark,
}
#[derive(Deserialize)]
struct ThemeVariantJson {
pub name: String,
pub appearance: ThemeAppearanceJson,
}
struct ImportedThemeFamily {
pub id: String,
pub name: String,
pub author: String,
pub url: Option<String>,
// App should panic if we try to load a theme without a lisence
pub license: String,
pub themes: Vec<ImportedThemeVariant>,
}
struct ImportedThemeVariant {
pub id: String,
pub name: String,
pub colors: ThemeColorsRefinement,
}
// Load a vscode theme from json
// Load it's LICENSE from the same folder
// Create a ThemeFamily for the theme
// Create a ThemeVariant or Variants for the theme
// Output a rust file with the ThemeFamily and ThemeVariant(s) in it
fn main() -> Result<()> {
SimpleLogger::init(LevelFilter::Info, Default::default()).expect("could not initialize logger");
let themes_path = PathBuf::from_str("crates/theme2/src/themes")?;
let mut theme_modules = Vec::new();
for theme_path in Assets.list("themes/src/vsc/")? {
let (_, theme_name) = theme_path.split_once("themes/").unwrap();
if theme_name == ".gitkeep" {
continue;
}
let theme_contents = Assets::get(&theme_path)
.with_context(|| format!("theme file not found: '{theme_path}'"))?;
// let json_theme: JsonTheme =
// serde_json::from_str(std::str::from_utf8(&theme_contents.data)?)
// .context("failed to parse legacy theme")?;
// let (json_theme, legacy_theme) = load_theme(&theme_path)?;
// let theme = convert_theme(json_theme, legacy_theme)?;
// let theme_slug = theme
// .metadata
// .name
// .as_ref()
// .replace("é", "e")
// .to_case(Case::Snake);
// let mut output_file = File::create(themes_path.join(format!("{theme_slug}.rs")))?;
// let theme_module = format!(
// r#"
// use gpui2::rgba;
// use crate::{{PlayerTheme, SyntaxTheme, Theme, ThemeMetadata}};
// pub fn {theme_slug}() -> Theme {{
// {theme_definition}
// }}
// "#,
// theme_definition = format!("{:#?}", ThemePrinter::new(theme))
// );
// output_file.write_all(theme_module.as_bytes())?;
theme_modules.push(theme_slug);
}
println!("Hello, world!");
Ok(())
}
#[derive(RustEmbed)]
#[folder = "../../assets"]
#[include = "themes/**/*"]
pub struct Assets;
impl AssetSource for Assets {
fn load(&self, path: &str) -> Result<Cow<[u8]>> {
Self::get(path)
.map(|f| f.data)
.ok_or_else(|| anyhow!("could not find asset at path \"{}\"", path))
}
fn list(&self, path: &str) -> Result<Vec<SharedString>> {
Ok(Self::iter()
.filter(|p| p.starts_with(path))
.map(SharedString::from)
.collect())
}
}

View file

@ -0,0 +1,393 @@
#[derive(Debug, Deserialize)]
struct VSCodeColorsOld {
#[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,
}

View file

@ -0,0 +1,80 @@
use std::path::{Path, PathBuf};
use anyhow::Result;
use serde::Deserialize;
use theme::{default_color_scales, ColorScales, ThemeFamily};
#[derive(Deserialize, Debug)]
pub struct VSCodeTheme {
#[serde(rename = "$schema")]
pub schema: String,
pub name: String,
pub author: String,
pub maintainers: Vec<String>,
#[serde(rename = "semanticClass")]
pub semantic_class: String,
#[serde(rename = "semanticHighlighting")]
pub semantic_highlighting: bool,
pub colors: VSCodeColors,
}
#[derive(Debug, Deserialize)]
pub struct VSCodeColors {
#[serde(rename = "editor.foreground")]
text: String,
#[serde(rename = "editor.background")]
editor: String,
}
pub(crate) fn new_theme_family_from_vsc(path: &Path) -> Result<ThemeFamily> {
let path_str = path.to_str().unwrap();
let family_name = path_str.split('/').last().unwrap();
let mut json_files: Vec<String> = Vec::new();
if path.is_dir() {
for entry in std::fs::read_dir(path).unwrap() {
let entry = entry.unwrap();
let path = entry.path();
if path.is_file() {
if let Some(extension) = path.extension() {
if extension == "json" {
json_files.push(path.file_name().unwrap().to_str().unwrap().to_string());
}
}
}
}
} else {
anyhow::bail!("Path is not a directory");
}
let mut theme_family = ThemeFamily {
id: uuid::Uuid::new_v4().to_string(),
name: family_name.into(),
author: "New Theme Family".into(),
themes: Vec::new(),
scales: default_color_scales(),
};
Ok(theme_family)
}
#[cfg(test)]
mod tests {
use super::*;
use std::path::PathBuf;
#[test]
fn test_deserialize_theme() {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let root_dir = manifest_dir.parent().unwrap().parent().unwrap();
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);
}
}