From 9ac9532d3d0542f241c8f5b7eabe233227d5cff9 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 8 Dec 2023 13:12:09 -0500 Subject: [PATCH 1/4] Treat empty strings as `None` when deserializing VS Code themes --- crates/theme_importer/src/vscode/theme.rs | 1410 ++++++++++++++++++--- 1 file changed, 1209 insertions(+), 201 deletions(-) diff --git a/crates/theme_importer/src/vscode/theme.rs b/crates/theme_importer/src/vscode/theme.rs index d2c1136d7b..2c3fcd1752 100644 --- a/crates/theme_importer/src/vscode/theme.rs +++ b/crates/theme_importer/src/vscode/theme.rs @@ -1,7 +1,15 @@ -use serde::Deserialize; +use serde::{Deserialize, Deserializer}; use crate::vscode::VsCodeTokenColor; +fn empty_string_as_none<'de, D>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, +{ + let value = Option::::deserialize(deserializer)?; + Ok(value.filter(|value| !value.is_empty())) +} + #[derive(Deserialize, Debug)] pub struct VsCodeTheme { #[serde(rename = "$schema")] @@ -20,405 +28,1405 @@ pub struct VsCodeTheme { #[derive(Debug, Deserialize)] pub struct VsCodeColors { - #[serde(rename = "terminal.background")] + #[serde( + default, + rename = "terminal.background", + deserialize_with = "empty_string_as_none" + )] pub terminal_background: Option, - #[serde(rename = "terminal.foreground")] + + #[serde( + default, + rename = "terminal.foreground", + deserialize_with = "empty_string_as_none" + )] pub terminal_foreground: Option, - #[serde(rename = "terminal.ansiBrightBlack")] + + #[serde( + default, + rename = "terminal.ansiBrightBlack", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_black: Option, - #[serde(rename = "terminal.ansiBrightRed")] + + #[serde( + default, + rename = "terminal.ansiBrightRed", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_red: Option, - #[serde(rename = "terminal.ansiBrightGreen")] + + #[serde( + default, + rename = "terminal.ansiBrightGreen", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_green: Option, - #[serde(rename = "terminal.ansiBrightYellow")] + + #[serde( + default, + rename = "terminal.ansiBrightYellow", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_yellow: Option, - #[serde(rename = "terminal.ansiBrightBlue")] + + #[serde( + default, + rename = "terminal.ansiBrightBlue", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_blue: Option, - #[serde(rename = "terminal.ansiBrightMagenta")] + + #[serde( + default, + rename = "terminal.ansiBrightMagenta", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_magenta: Option, - #[serde(rename = "terminal.ansiBrightCyan")] + + #[serde( + default, + rename = "terminal.ansiBrightCyan", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_cyan: Option, - #[serde(rename = "terminal.ansiBrightWhite")] + + #[serde( + default, + rename = "terminal.ansiBrightWhite", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_bright_white: Option, - #[serde(rename = "terminal.ansiBlack")] + + #[serde( + default, + rename = "terminal.ansiBlack", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_black: Option, - #[serde(rename = "terminal.ansiRed")] + + #[serde( + default, + rename = "terminal.ansiRed", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_red: Option, - #[serde(rename = "terminal.ansiGreen")] + + #[serde( + default, + rename = "terminal.ansiGreen", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_green: Option, - #[serde(rename = "terminal.ansiYellow")] + + #[serde( + default, + rename = "terminal.ansiYellow", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_yellow: Option, - #[serde(rename = "terminal.ansiBlue")] + + #[serde( + default, + rename = "terminal.ansiBlue", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_blue: Option, - #[serde(rename = "terminal.ansiMagenta")] + + #[serde( + default, + rename = "terminal.ansiMagenta", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_magenta: Option, - #[serde(rename = "terminal.ansiCyan")] + + #[serde( + default, + rename = "terminal.ansiCyan", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_cyan: Option, - #[serde(rename = "terminal.ansiWhite")] + + #[serde( + default, + rename = "terminal.ansiWhite", + deserialize_with = "empty_string_as_none" + )] pub terminal_ansi_white: Option, - #[serde(rename = "focusBorder")] + + #[serde( + default, + rename = "focusBorder", + deserialize_with = "empty_string_as_none" + )] pub focus_border: Option, + pub foreground: Option, - #[serde(rename = "selection.background")] + + #[serde( + default, + rename = "selection.background", + deserialize_with = "empty_string_as_none" + )] pub selection_background: Option, - #[serde(rename = "errorForeground")] + + #[serde( + default, + rename = "errorForeground", + deserialize_with = "empty_string_as_none" + )] pub error_foreground: Option, - #[serde(rename = "button.background")] + + #[serde( + default, + rename = "button.background", + deserialize_with = "empty_string_as_none" + )] pub button_background: Option, - #[serde(rename = "button.foreground")] + + #[serde( + default, + rename = "button.foreground", + deserialize_with = "empty_string_as_none" + )] pub button_foreground: Option, - #[serde(rename = "button.secondaryBackground")] + + #[serde( + default, + rename = "button.secondaryBackground", + deserialize_with = "empty_string_as_none" + )] pub button_secondary_background: Option, - #[serde(rename = "button.secondaryForeground")] + + #[serde( + default, + rename = "button.secondaryForeground", + deserialize_with = "empty_string_as_none" + )] pub button_secondary_foreground: Option, - #[serde(rename = "button.secondaryHoverBackground")] + + #[serde( + default, + rename = "button.secondaryHoverBackground", + deserialize_with = "empty_string_as_none" + )] pub button_secondary_hover_background: Option, - #[serde(rename = "dropdown.background")] + + #[serde( + default, + rename = "dropdown.background", + deserialize_with = "empty_string_as_none" + )] pub dropdown_background: Option, - #[serde(rename = "dropdown.border")] + + #[serde( + default, + rename = "dropdown.border", + deserialize_with = "empty_string_as_none" + )] pub dropdown_border: Option, - #[serde(rename = "dropdown.foreground")] + + #[serde( + default, + rename = "dropdown.foreground", + deserialize_with = "empty_string_as_none" + )] pub dropdown_foreground: Option, - #[serde(rename = "input.background")] + + #[serde( + default, + rename = "input.background", + deserialize_with = "empty_string_as_none" + )] pub input_background: Option, - #[serde(rename = "input.foreground")] + + #[serde( + default, + rename = "input.foreground", + deserialize_with = "empty_string_as_none" + )] pub input_foreground: Option, - #[serde(rename = "input.border")] + + #[serde( + default, + rename = "input.border", + deserialize_with = "empty_string_as_none" + )] pub input_border: Option, - #[serde(rename = "input.placeholderForeground")] + + #[serde( + default, + rename = "input.placeholderForeground", + deserialize_with = "empty_string_as_none" + )] pub input_placeholder_foreground: Option, - #[serde(rename = "inputOption.activeBorder")] + + #[serde( + default, + rename = "inputOption.activeBorder", + deserialize_with = "empty_string_as_none" + )] pub input_option_active_border: Option, - #[serde(rename = "inputValidation.infoBorder")] + + #[serde( + default, + rename = "inputValidation.infoBorder", + deserialize_with = "empty_string_as_none" + )] pub input_validation_info_border: Option, - #[serde(rename = "inputValidation.warningBorder")] + + #[serde( + default, + rename = "inputValidation.warningBorder", + deserialize_with = "empty_string_as_none" + )] pub input_validation_warning_border: Option, - #[serde(rename = "inputValidation.errorBorder")] + + #[serde( + default, + rename = "inputValidation.errorBorder", + deserialize_with = "empty_string_as_none" + )] pub input_validation_error_border: Option, - #[serde(rename = "badge.foreground")] + + #[serde( + default, + rename = "badge.foreground", + deserialize_with = "empty_string_as_none" + )] pub badge_foreground: Option, - #[serde(rename = "badge.background")] + + #[serde( + default, + rename = "badge.background", + deserialize_with = "empty_string_as_none" + )] pub badge_background: Option, - #[serde(rename = "progressBar.background")] + + #[serde( + default, + rename = "progressBar.background", + deserialize_with = "empty_string_as_none" + )] pub progress_bar_background: Option, - #[serde(rename = "list.activeSelectionBackground")] + + #[serde( + default, + rename = "list.activeSelectionBackground", + deserialize_with = "empty_string_as_none" + )] pub list_active_selection_background: Option, - #[serde(rename = "list.activeSelectionForeground")] + + #[serde( + default, + rename = "list.activeSelectionForeground", + deserialize_with = "empty_string_as_none" + )] pub list_active_selection_foreground: Option, - #[serde(rename = "list.dropBackground")] + + #[serde( + default, + rename = "list.dropBackground", + deserialize_with = "empty_string_as_none" + )] pub list_drop_background: Option, - #[serde(rename = "list.focusBackground")] + + #[serde( + default, + rename = "list.focusBackground", + deserialize_with = "empty_string_as_none" + )] pub list_focus_background: Option, - #[serde(rename = "list.highlightForeground")] + + #[serde( + default, + rename = "list.highlightForeground", + deserialize_with = "empty_string_as_none" + )] pub list_highlight_foreground: Option, - #[serde(rename = "list.hoverBackground")] + + #[serde( + default, + rename = "list.hoverBackground", + deserialize_with = "empty_string_as_none" + )] pub list_hover_background: Option, - #[serde(rename = "list.inactiveSelectionBackground")] + + #[serde( + default, + rename = "list.inactiveSelectionBackground", + deserialize_with = "empty_string_as_none" + )] pub list_inactive_selection_background: Option, - #[serde(rename = "list.warningForeground")] + + #[serde( + default, + rename = "list.warningForeground", + deserialize_with = "empty_string_as_none" + )] pub list_warning_foreground: Option, - #[serde(rename = "list.errorForeground")] + + #[serde( + default, + rename = "list.errorForeground", + deserialize_with = "empty_string_as_none" + )] pub list_error_foreground: Option, - #[serde(rename = "activityBar.background")] + + #[serde( + default, + rename = "activityBar.background", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_background: Option, - #[serde(rename = "activityBar.inactiveForeground")] + + #[serde( + default, + rename = "activityBar.inactiveForeground", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_inactive_foreground: Option, - #[serde(rename = "activityBar.foreground")] + + #[serde( + default, + rename = "activityBar.foreground", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_foreground: Option, - #[serde(rename = "activityBar.activeBorder")] + + #[serde( + default, + rename = "activityBar.activeBorder", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_active_border: Option, - #[serde(rename = "activityBar.activeBackground")] + + #[serde( + default, + rename = "activityBar.activeBackground", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_active_background: Option, - #[serde(rename = "activityBarBadge.background")] + + #[serde( + default, + rename = "activityBarBadge.background", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_badge_background: Option, - #[serde(rename = "activityBarBadge.foreground")] + + #[serde( + default, + rename = "activityBarBadge.foreground", + deserialize_with = "empty_string_as_none" + )] pub activity_bar_badge_foreground: Option, - #[serde(rename = "sideBar.background")] + + #[serde( + default, + rename = "sideBar.background", + deserialize_with = "empty_string_as_none" + )] pub side_bar_background: Option, - #[serde(rename = "sideBarTitle.foreground")] + + #[serde( + default, + rename = "sideBarTitle.foreground", + deserialize_with = "empty_string_as_none" + )] pub side_bar_title_foreground: Option, - #[serde(rename = "sideBarSectionHeader.background")] + + #[serde( + default, + rename = "sideBarSectionHeader.background", + deserialize_with = "empty_string_as_none" + )] pub side_bar_section_header_background: Option, - #[serde(rename = "sideBarSectionHeader.border")] + + #[serde( + default, + rename = "sideBarSectionHeader.border", + deserialize_with = "empty_string_as_none" + )] pub side_bar_section_header_border: Option, - #[serde(rename = "editorGroup.border")] + + #[serde( + default, + rename = "editorGroup.border", + deserialize_with = "empty_string_as_none" + )] pub editor_group_border: Option, - #[serde(rename = "editorGroup.dropBackground")] + + #[serde( + default, + rename = "editorGroup.dropBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_group_drop_background: Option, - #[serde(rename = "editorGroupHeader.tabsBackground")] + + #[serde( + default, + rename = "editorGroupHeader.tabsBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_group_header_tabs_background: Option, - #[serde(rename = "tab.activeBackground")] + + #[serde( + default, + rename = "tab.activeBackground", + deserialize_with = "empty_string_as_none" + )] pub tab_active_background: Option, - #[serde(rename = "tab.activeForeground")] + + #[serde( + default, + rename = "tab.activeForeground", + deserialize_with = "empty_string_as_none" + )] pub tab_active_foreground: Option, - #[serde(rename = "tab.border")] + + #[serde( + default, + rename = "tab.border", + deserialize_with = "empty_string_as_none" + )] pub tab_border: Option, - #[serde(rename = "tab.activeBorderTop")] + + #[serde( + default, + rename = "tab.activeBorderTop", + deserialize_with = "empty_string_as_none" + )] pub tab_active_border_top: Option, - #[serde(rename = "tab.inactiveBackground")] + + #[serde( + default, + rename = "tab.inactiveBackground", + deserialize_with = "empty_string_as_none" + )] pub tab_inactive_background: Option, - #[serde(rename = "tab.inactiveForeground")] + + #[serde( + default, + rename = "tab.inactiveForeground", + deserialize_with = "empty_string_as_none" + )] pub tab_inactive_foreground: Option, - #[serde(rename = "editor.foreground")] + + #[serde( + default, + rename = "editor.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_foreground: Option, - #[serde(rename = "editor.background")] + + #[serde( + default, + rename = "editor.background", + deserialize_with = "empty_string_as_none" + )] pub editor_background: Option, - #[serde(rename = "editorInlayHint.foreground")] + + #[serde( + default, + rename = "editorInlayHint.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_inlay_hint_foreground: Option, - #[serde(rename = "editorInlayHint.background")] + + #[serde( + default, + rename = "editorInlayHint.background", + deserialize_with = "empty_string_as_none" + )] pub editor_inlay_hint_background: Option, - #[serde(rename = "editorInlayHint.parameterForeground")] + + #[serde( + default, + rename = "editorInlayHint.parameterForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_inlay_hint_parameter_foreground: Option, - #[serde(rename = "editorInlayHint.parameterBackground")] + + #[serde( + default, + rename = "editorInlayHint.parameterBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_inlay_hint_parameter_background: Option, - #[serde(rename = "editorInlayHint.typForeground")] + + #[serde( + default, + rename = "editorInlayHint.typForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_inlay_hint_typ_foreground: Option, - #[serde(rename = "editorInlayHint.typBackground")] + + #[serde( + default, + rename = "editorInlayHint.typBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_inlay_hint_typ_background: Option, - #[serde(rename = "editorLineNumber.foreground")] + + #[serde( + default, + rename = "editorLineNumber.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_line_number_foreground: Option, - #[serde(rename = "editor.selectionBackground")] + + #[serde( + default, + rename = "editor.selectionBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_selection_background: Option, - #[serde(rename = "editor.selectionHighlightBackground")] + + #[serde( + default, + rename = "editor.selectionHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_selection_highlight_background: Option, - #[serde(rename = "editor.foldBackground")] + + #[serde( + default, + rename = "editor.foldBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_fold_background: Option, - #[serde(rename = "editor.wordHighlightBackground")] + + #[serde( + default, + rename = "editor.wordHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_word_highlight_background: Option, - #[serde(rename = "editor.wordHighlightStrongBackground")] + + #[serde( + default, + rename = "editor.wordHighlightStrongBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_word_highlight_strong_background: Option, - #[serde(rename = "editor.findMatchBackground")] + + #[serde( + default, + rename = "editor.findMatchBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_find_match_background: Option, - #[serde(rename = "editor.findMatchHighlightBackground")] + + #[serde( + default, + rename = "editor.findMatchHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_find_match_highlight_background: Option, - #[serde(rename = "editor.findRangeHighlightBackground")] + + #[serde( + default, + rename = "editor.findRangeHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_find_range_highlight_background: Option, - #[serde(rename = "editor.hoverHighlightBackground")] + + #[serde( + default, + rename = "editor.hoverHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_hover_highlight_background: Option, - #[serde(rename = "editor.lineHighlightBorder")] + + #[serde( + default, + rename = "editor.lineHighlightBorder", + deserialize_with = "empty_string_as_none" + )] pub editor_line_highlight_border: Option, - #[serde(rename = "editorLink.activeForeground")] + + #[serde( + default, + rename = "editorLink.activeForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_link_active_foreground: Option, - #[serde(rename = "editor.rangeHighlightBackground")] + + #[serde( + default, + rename = "editor.rangeHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_range_highlight_background: Option, - #[serde(rename = "editor.snippetTabstopHighlightBackground")] + + #[serde( + default, + rename = "editor.snippetTabstopHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_snippet_tabstop_highlight_background: Option, - #[serde(rename = "editor.snippetTabstopHighlightBorder")] + + #[serde( + default, + rename = "editor.snippetTabstopHighlightBorder", + deserialize_with = "empty_string_as_none" + )] pub editor_snippet_tabstop_highlight_border: Option, - #[serde(rename = "editor.snippetFinalTabstopHighlightBackground")] + + #[serde( + default, + rename = "editor.snippetFinalTabstopHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_snippet_final_tabstop_highlight_background: Option, - #[serde(rename = "editor.snippetFinalTabstopHighlightBorder")] + + #[serde( + default, + rename = "editor.snippetFinalTabstopHighlightBorder", + deserialize_with = "empty_string_as_none" + )] pub editor_snippet_final_tabstop_highlight_border: Option, - #[serde(rename = "editorWhitespace.foreground")] + + #[serde( + default, + rename = "editorWhitespace.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_whitespace_foreground: Option, - #[serde(rename = "editorIndentGuide.background")] + + #[serde( + default, + rename = "editorIndentGuide.background", + deserialize_with = "empty_string_as_none" + )] pub editor_indent_guide_background: Option, - #[serde(rename = "editorIndentGuide.activeBackground")] + + #[serde( + default, + rename = "editorIndentGuide.activeBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_indent_guide_active_background: Option, - #[serde(rename = "editorRuler.foreground")] + + #[serde( + default, + rename = "editorRuler.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_ruler_foreground: Option, - #[serde(rename = "editorCodeLens.foreground")] + + #[serde( + default, + rename = "editorCodeLens.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_code_lens_foreground: Option, - #[serde(rename = "editorBracketHighlight.foreground1")] + + #[serde( + default, + rename = "editorBracketHighlight.foreground1", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_foreground1: Option, - #[serde(rename = "editorBracketHighlight.foreground2")] + + #[serde( + default, + rename = "editorBracketHighlight.foreground2", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_foreground2: Option, - #[serde(rename = "editorBracketHighlight.foreground3")] + + #[serde( + default, + rename = "editorBracketHighlight.foreground3", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_foreground3: Option, - #[serde(rename = "editorBracketHighlight.foreground4")] + + #[serde( + default, + rename = "editorBracketHighlight.foreground4", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_foreground4: Option, - #[serde(rename = "editorBracketHighlight.foreground5")] + + #[serde( + default, + rename = "editorBracketHighlight.foreground5", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_foreground5: Option, - #[serde(rename = "editorBracketHighlight.foreground6")] + + #[serde( + default, + rename = "editorBracketHighlight.foreground6", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_foreground6: Option, - #[serde(rename = "editorBracketHighlight.unexpectedBracket.foreground")] + + #[serde( + default, + rename = "editorBracketHighlight.unexpectedBracket.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_bracket_highlight_unexpected_bracket_foreground: Option, - #[serde(rename = "editorOverviewRuler.border")] + + #[serde( + default, + rename = "editorOverviewRuler.border", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_border: Option, - #[serde(rename = "editorOverviewRuler.selectionHighlightForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.selectionHighlightForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_selection_highlight_foreground: Option, - #[serde(rename = "editorOverviewRuler.wordHighlightForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.wordHighlightForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_word_highlight_foreground: Option, - #[serde(rename = "editorOverviewRuler.wordHighlightStrongForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.wordHighlightStrongForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_word_highlight_strong_foreground: Option, - #[serde(rename = "editorOverviewRuler.modifiedForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.modifiedForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_modified_foreground: Option, - #[serde(rename = "editorOverviewRuler.addedForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.addedForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_added_foreground: Option, - #[serde(rename = "editorOverviewRuler.deletedForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.deletedForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_deleted_foreground: Option, - #[serde(rename = "editorOverviewRuler.errorForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.errorForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_error_foreground: Option, - #[serde(rename = "editorOverviewRuler.warningForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.warningForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_warning_foreground: Option, - #[serde(rename = "editorOverviewRuler.infoForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.infoForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_info_foreground: Option, - #[serde(rename = "editorError.foreground")] + + #[serde( + default, + rename = "editorError.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_error_foreground: Option, - #[serde(rename = "editorWarning.foreground")] + + #[serde( + default, + rename = "editorWarning.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_warning_foreground: Option, - #[serde(rename = "editorGutter.modifiedBackground")] + + #[serde( + default, + rename = "editorGutter.modifiedBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_gutter_modified_background: Option, - #[serde(rename = "editorGutter.addedBackground")] + + #[serde( + default, + rename = "editorGutter.addedBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_gutter_added_background: Option, - #[serde(rename = "editorGutter.deletedBackground")] + + #[serde( + default, + rename = "editorGutter.deletedBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_gutter_deleted_background: Option, - #[serde(rename = "gitDecoration.modifiedResourceForeground")] + + #[serde( + default, + rename = "gitDecoration.modifiedResourceForeground", + deserialize_with = "empty_string_as_none" + )] pub git_decoration_modified_resource_foreground: Option, - #[serde(rename = "gitDecoration.deletedResourceForeground")] + + #[serde( + default, + rename = "gitDecoration.deletedResourceForeground", + deserialize_with = "empty_string_as_none" + )] pub git_decoration_deleted_resource_foreground: Option, - #[serde(rename = "gitDecoration.untrackedResourceForeground")] + + #[serde( + default, + rename = "gitDecoration.untrackedResourceForeground", + deserialize_with = "empty_string_as_none" + )] pub git_decoration_untracked_resource_foreground: Option, - #[serde(rename = "gitDecoration.ignoredResourceForeground")] + + #[serde( + default, + rename = "gitDecoration.ignoredResourceForeground", + deserialize_with = "empty_string_as_none" + )] pub git_decoration_ignored_resource_foreground: Option, - #[serde(rename = "gitDecoration.conflictingResourceForeground")] + + #[serde( + default, + rename = "gitDecoration.conflictingResourceForeground", + deserialize_with = "empty_string_as_none" + )] pub git_decoration_conflicting_resource_foreground: Option, - #[serde(rename = "diffEditor.insertedTextBackground")] + + #[serde( + default, + rename = "diffEditor.insertedTextBackground", + deserialize_with = "empty_string_as_none" + )] pub diff_editor_inserted_text_background: Option, - #[serde(rename = "diffEditor.removedTextBackground")] + + #[serde( + default, + rename = "diffEditor.removedTextBackground", + deserialize_with = "empty_string_as_none" + )] pub diff_editor_removed_text_background: Option, - #[serde(rename = "inlineChat.regionHighlight")] + + #[serde( + default, + rename = "inlineChat.regionHighlight", + deserialize_with = "empty_string_as_none" + )] pub inline_chat_region_highlight: Option, - #[serde(rename = "editorWidget.background")] + + #[serde( + default, + rename = "editorWidget.background", + deserialize_with = "empty_string_as_none" + )] pub editor_widget_background: Option, - #[serde(rename = "editorSuggestWidget.background")] + + #[serde( + default, + rename = "editorSuggestWidget.background", + deserialize_with = "empty_string_as_none" + )] pub editor_suggest_widget_background: Option, - #[serde(rename = "editorSuggestWidget.foreground")] + + #[serde( + default, + rename = "editorSuggestWidget.foreground", + deserialize_with = "empty_string_as_none" + )] pub editor_suggest_widget_foreground: Option, - #[serde(rename = "editorSuggestWidget.selectedBackground")] + + #[serde( + default, + rename = "editorSuggestWidget.selectedBackground", + deserialize_with = "empty_string_as_none" + )] pub editor_suggest_widget_selected_background: Option, - #[serde(rename = "editorHoverWidget.background")] + + #[serde( + default, + rename = "editorHoverWidget.background", + deserialize_with = "empty_string_as_none" + )] pub editor_hover_widget_background: Option, - #[serde(rename = "editorHoverWidget.border")] + + #[serde( + default, + rename = "editorHoverWidget.border", + deserialize_with = "empty_string_as_none" + )] pub editor_hover_widget_border: Option, - #[serde(rename = "editorMarkerNavigation.background")] + + #[serde( + default, + rename = "editorMarkerNavigation.background", + deserialize_with = "empty_string_as_none" + )] pub editor_marker_navigation_background: Option, - #[serde(rename = "peekView.border")] + + #[serde( + default, + rename = "peekView.border", + deserialize_with = "empty_string_as_none" + )] pub peek_view_border: Option, - #[serde(rename = "peekViewEditor.background")] + + #[serde( + default, + rename = "peekViewEditor.background", + deserialize_with = "empty_string_as_none" + )] pub peek_view_editor_background: Option, - #[serde(rename = "peekViewEditor.matchHighlightBackground")] + + #[serde( + default, + rename = "peekViewEditor.matchHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_editor_match_highlight_background: Option, - #[serde(rename = "peekViewResult.background")] + + #[serde( + default, + rename = "peekViewResult.background", + deserialize_with = "empty_string_as_none" + )] pub peek_view_result_background: Option, - #[serde(rename = "peekViewResult.fileForeground")] + + #[serde( + default, + rename = "peekViewResult.fileForeground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_result_file_foreground: Option, - #[serde(rename = "peekViewResult.lineForeground")] + + #[serde( + default, + rename = "peekViewResult.lineForeground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_result_line_foreground: Option, - #[serde(rename = "peekViewResult.matchHighlightBackground")] + + #[serde( + default, + rename = "peekViewResult.matchHighlightBackground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_result_match_highlight_background: Option, - #[serde(rename = "peekViewResult.selectionBackground")] + + #[serde( + default, + rename = "peekViewResult.selectionBackground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_result_selection_background: Option, - #[serde(rename = "peekViewResult.selectionForeground")] + + #[serde( + default, + rename = "peekViewResult.selectionForeground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_result_selection_foreground: Option, - #[serde(rename = "peekViewTitle.background")] + + #[serde( + default, + rename = "peekViewTitle.background", + deserialize_with = "empty_string_as_none" + )] pub peek_view_title_background: Option, - #[serde(rename = "peekViewTitleDescription.foreground")] + + #[serde( + default, + rename = "peekViewTitleDescription.foreground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_title_description_foreground: Option, - #[serde(rename = "peekViewTitleLabel.foreground")] + + #[serde( + default, + rename = "peekViewTitleLabel.foreground", + deserialize_with = "empty_string_as_none" + )] pub peek_view_title_label_foreground: Option, - #[serde(rename = "merge.currentHeaderBackground")] + + #[serde( + default, + rename = "merge.currentHeaderBackground", + deserialize_with = "empty_string_as_none" + )] pub merge_current_header_background: Option, - #[serde(rename = "merge.incomingHeaderBackground")] + + #[serde( + default, + rename = "merge.incomingHeaderBackground", + deserialize_with = "empty_string_as_none" + )] pub merge_incoming_header_background: Option, - #[serde(rename = "editorOverviewRuler.currentContentForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.currentContentForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_current_content_foreground: Option, - #[serde(rename = "editorOverviewRuler.incomingContentForeground")] + + #[serde( + default, + rename = "editorOverviewRuler.incomingContentForeground", + deserialize_with = "empty_string_as_none" + )] pub editor_overview_ruler_incoming_content_foreground: Option, - #[serde(rename = "panel.background")] + + #[serde( + default, + rename = "panel.background", + deserialize_with = "empty_string_as_none" + )] pub panel_background: Option, - #[serde(rename = "panel.border")] + + #[serde( + default, + rename = "panel.border", + deserialize_with = "empty_string_as_none" + )] pub panel_border: Option, - #[serde(rename = "panelTitle.activeBorder")] + + #[serde( + default, + rename = "panelTitle.activeBorder", + deserialize_with = "empty_string_as_none" + )] pub panel_title_active_border: Option, - #[serde(rename = "panelTitle.activeForeground")] + + #[serde( + default, + rename = "panelTitle.activeForeground", + deserialize_with = "empty_string_as_none" + )] pub panel_title_active_foreground: Option, - #[serde(rename = "panelTitle.inactiveForeground")] + + #[serde( + default, + rename = "panelTitle.inactiveForeground", + deserialize_with = "empty_string_as_none" + )] pub panel_title_inactive_foreground: Option, - #[serde(rename = "statusBar.background")] + + #[serde( + default, + rename = "statusBar.background", + deserialize_with = "empty_string_as_none" + )] pub status_bar_background: Option, - #[serde(rename = "statusBar.foreground")] + + #[serde( + default, + rename = "statusBar.foreground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_foreground: Option, - #[serde(rename = "statusBar.debuggingBackground")] + + #[serde( + default, + rename = "statusBar.debuggingBackground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_debugging_background: Option, - #[serde(rename = "statusBar.debuggingForeground")] + + #[serde( + default, + rename = "statusBar.debuggingForeground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_debugging_foreground: Option, - #[serde(rename = "statusBar.noFolderBackground")] + + #[serde( + default, + rename = "statusBar.noFolderBackground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_no_folder_background: Option, - #[serde(rename = "statusBar.noFolderForeground")] + + #[serde( + default, + rename = "statusBar.noFolderForeground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_no_folder_foreground: Option, - #[serde(rename = "statusBarItem.prominentBackground")] + + #[serde( + default, + rename = "statusBarItem.prominentBackground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_item_prominent_background: Option, - #[serde(rename = "statusBarItem.prominentHoverBackground")] + + #[serde( + default, + rename = "statusBarItem.prominentHoverBackground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_item_prominent_hover_background: Option, - #[serde(rename = "statusBarItem.remoteForeground")] + + #[serde( + default, + rename = "statusBarItem.remoteForeground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_item_remote_foreground: Option, - #[serde(rename = "statusBarItem.remoteBackground")] + + #[serde( + default, + rename = "statusBarItem.remoteBackground", + deserialize_with = "empty_string_as_none" + )] pub status_bar_item_remote_background: Option, - #[serde(rename = "titleBar.activeBackground")] + + #[serde( + default, + rename = "titleBar.activeBackground", + deserialize_with = "empty_string_as_none" + )] pub title_bar_active_background: Option, - #[serde(rename = "titleBar.activeForeground")] + + #[serde( + default, + rename = "titleBar.activeForeground", + deserialize_with = "empty_string_as_none" + )] pub title_bar_active_foreground: Option, - #[serde(rename = "titleBar.inactiveBackground")] + + #[serde( + default, + rename = "titleBar.inactiveBackground", + deserialize_with = "empty_string_as_none" + )] pub title_bar_inactive_background: Option, - #[serde(rename = "titleBar.inactiveForeground")] + + #[serde( + default, + rename = "titleBar.inactiveForeground", + deserialize_with = "empty_string_as_none" + )] pub title_bar_inactive_foreground: Option, - #[serde(rename = "extensionButton.prominentForeground")] + + #[serde( + default, + rename = "extensionButton.prominentForeground", + deserialize_with = "empty_string_as_none" + )] pub extension_button_prominent_foreground: Option, - #[serde(rename = "extensionButton.prominentBackground")] + + #[serde( + default, + rename = "extensionButton.prominentBackground", + deserialize_with = "empty_string_as_none" + )] pub extension_button_prominent_background: Option, - #[serde(rename = "extensionButton.prominentHoverBackground")] + + #[serde( + default, + rename = "extensionButton.prominentHoverBackground", + deserialize_with = "empty_string_as_none" + )] pub extension_button_prominent_hover_background: Option, - #[serde(rename = "pickerGroup.border")] + + #[serde( + default, + rename = "pickerGroup.border", + deserialize_with = "empty_string_as_none" + )] pub picker_group_border: Option, - #[serde(rename = "pickerGroup.foreground")] + + #[serde( + default, + rename = "pickerGroup.foreground", + deserialize_with = "empty_string_as_none" + )] pub picker_group_foreground: Option, - #[serde(rename = "debugToolBar.background")] + + #[serde( + default, + rename = "debugToolBar.background", + deserialize_with = "empty_string_as_none" + )] pub debug_tool_bar_background: Option, - #[serde(rename = "walkThrough.embeddedEditorBackground")] + + #[serde( + default, + rename = "walkThrough.embeddedEditorBackground", + deserialize_with = "empty_string_as_none" + )] pub walk_through_embedded_editor_background: Option, - #[serde(rename = "settings.headerForeground")] + + #[serde( + default, + rename = "settings.headerForeground", + deserialize_with = "empty_string_as_none" + )] pub settings_header_foreground: Option, - #[serde(rename = "settings.modifiedItemIndicator")] + + #[serde( + default, + rename = "settings.modifiedItemIndicator", + deserialize_with = "empty_string_as_none" + )] pub settings_modified_item_indicator: Option, - #[serde(rename = "settings.dropdownBackground")] + + #[serde( + default, + rename = "settings.dropdownBackground", + deserialize_with = "empty_string_as_none" + )] pub settings_dropdown_background: Option, - #[serde(rename = "settings.dropdownForeground")] + + #[serde( + default, + rename = "settings.dropdownForeground", + deserialize_with = "empty_string_as_none" + )] pub settings_dropdown_foreground: Option, - #[serde(rename = "settings.dropdownBorder")] + + #[serde( + default, + rename = "settings.dropdownBorder", + deserialize_with = "empty_string_as_none" + )] pub settings_dropdown_border: Option, - #[serde(rename = "settings.checkboxBackground")] + + #[serde( + default, + rename = "settings.checkboxBackground", + deserialize_with = "empty_string_as_none" + )] pub settings_checkbox_background: Option, - #[serde(rename = "settings.checkboxForeground")] + + #[serde( + default, + rename = "settings.checkboxForeground", + deserialize_with = "empty_string_as_none" + )] pub settings_checkbox_foreground: Option, - #[serde(rename = "settings.checkboxBorder")] + + #[serde( + default, + rename = "settings.checkboxBorder", + deserialize_with = "empty_string_as_none" + )] pub settings_checkbox_border: Option, - #[serde(rename = "settings.textInputBackground")] + + #[serde( + default, + rename = "settings.textInputBackground", + deserialize_with = "empty_string_as_none" + )] pub settings_text_input_background: Option, - #[serde(rename = "settings.textInputForeground")] + + #[serde( + default, + rename = "settings.textInputForeground", + deserialize_with = "empty_string_as_none" + )] pub settings_text_input_foreground: Option, - #[serde(rename = "settings.textInputBorder")] + + #[serde( + default, + rename = "settings.textInputBorder", + deserialize_with = "empty_string_as_none" + )] pub settings_text_input_border: Option, - #[serde(rename = "settings.numberInputBackground")] + + #[serde( + default, + rename = "settings.numberInputBackground", + deserialize_with = "empty_string_as_none" + )] pub settings_number_input_background: Option, - #[serde(rename = "settings.numberInputForeground")] + + #[serde( + default, + rename = "settings.numberInputForeground", + deserialize_with = "empty_string_as_none" + )] pub settings_number_input_foreground: Option, - #[serde(rename = "settings.numberInputBorder")] + + #[serde( + default, + rename = "settings.numberInputBorder", + deserialize_with = "empty_string_as_none" + )] pub settings_number_input_border: Option, - #[serde(rename = "breadcrumb.foreground")] + + #[serde( + default, + rename = "breadcrumb.foreground", + deserialize_with = "empty_string_as_none" + )] pub breadcrumb_foreground: Option, - #[serde(rename = "breadcrumb.background")] + + #[serde( + default, + rename = "breadcrumb.background", + deserialize_with = "empty_string_as_none" + )] pub breadcrumb_background: Option, - #[serde(rename = "breadcrumb.focusForeground")] + + #[serde( + default, + rename = "breadcrumb.focusForeground", + deserialize_with = "empty_string_as_none" + )] pub breadcrumb_focus_foreground: Option, - #[serde(rename = "breadcrumb.activeSelectionForeground")] + + #[serde( + default, + rename = "breadcrumb.activeSelectionForeground", + deserialize_with = "empty_string_as_none" + )] pub breadcrumb_active_selection_foreground: Option, - #[serde(rename = "breadcrumbPicker.background")] + + #[serde( + default, + rename = "breadcrumbPicker.background", + deserialize_with = "empty_string_as_none" + )] pub breadcrumb_picker_background: Option, - #[serde(rename = "listFilterWidget.background")] + + #[serde( + default, + rename = "listFilterWidget.background", + deserialize_with = "empty_string_as_none" + )] pub list_filter_widget_background: Option, - #[serde(rename = "listFilterWidget.outline")] + + #[serde( + default, + rename = "listFilterWidget.outline", + deserialize_with = "empty_string_as_none" + )] pub list_filter_widget_outline: Option, - #[serde(rename = "listFilterWidget.noMatchesOutline")] + + #[serde( + default, + rename = "listFilterWidget.noMatchesOutline", + deserialize_with = "empty_string_as_none" + )] pub list_filter_widget_no_matches_outline: Option, } From a5a0ad8b5c06a595027ea7ab6f6bf645f0c70915 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 8 Dec 2023 13:13:19 -0500 Subject: [PATCH 2/4] Add missing serde attribute to `foreground` --- crates/theme_importer/src/vscode/theme.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/theme_importer/src/vscode/theme.rs b/crates/theme_importer/src/vscode/theme.rs index 2c3fcd1752..f214f5089d 100644 --- a/crates/theme_importer/src/vscode/theme.rs +++ b/crates/theme_importer/src/vscode/theme.rs @@ -161,6 +161,7 @@ pub struct VsCodeColors { )] pub focus_border: Option, + #[serde(default, deserialize_with = "empty_string_as_none")] pub foreground: Option, #[serde( From ab5b76e9438314164158eed6cbab519cafd7406d Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 8 Dec 2023 13:14:22 -0500 Subject: [PATCH 3/4] Pull Git status colors from VS Code themes --- crates/theme2/src/themes/andromeda.rs | 2 + crates/theme2/src/themes/ayu.rs | 9 ++++ crates/theme2/src/themes/dracula.rs | 4 ++ crates/theme2/src/themes/gruvbox.rs | 24 ++++++++++ crates/theme2/src/themes/night_owl.rs | 4 ++ crates/theme2/src/themes/noctis.rs | 44 +++++++++++++++++++ crates/theme2/src/themes/nord.rs | 4 ++ crates/theme2/src/themes/palenight.rs | 12 +++++ crates/theme2/src/themes/rose_pine.rs | 12 +++++ crates/theme2/src/themes/synthwave_84.rs | 3 ++ crates/theme_importer/src/vscode/converter.rs | 20 +++++++-- 11 files changed, 134 insertions(+), 4 deletions(-) diff --git a/crates/theme2/src/themes/andromeda.rs b/crates/theme2/src/themes/andromeda.rs index 577bbea543..c789f4f395 100644 --- a/crates/theme2/src/themes/andromeda.rs +++ b/crates/theme2/src/themes/andromeda.rs @@ -63,6 +63,7 @@ pub fn andromeda() -> UserThemeFamily { error: Some(rgba(0xfc644dff).into()), hidden: Some(rgba(0x746f77ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x555555ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -267,6 +268,7 @@ pub fn andromeda() -> UserThemeFamily { error: Some(rgba(0xfc644dff).into()), hidden: Some(rgba(0x746f77ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x555555ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { diff --git a/crates/theme2/src/themes/ayu.rs b/crates/theme2/src/themes/ayu.rs index 10ef469490..c9bb3dd514 100644 --- a/crates/theme2/src/themes/ayu.rs +++ b/crates/theme2/src/themes/ayu.rs @@ -63,10 +63,13 @@ pub fn ayu() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + created: Some(rgba(0x6cbf43b3).into()), deleted: Some(rgba(0xe65050ff).into()), error: Some(rgba(0xe65050ff).into()), hidden: Some(rgba(0x8a9199ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x8a919980).into()), + modified: Some(rgba(0x478accb3).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -359,10 +362,13 @@ pub fn ayu() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + created: Some(rgba(0x87d96cb3).into()), deleted: Some(rgba(0xff6666ff).into()), error: Some(rgba(0xff6666ff).into()), hidden: Some(rgba(0x707a8cff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x707a8c80).into()), + modified: Some(rgba(0x80bfffb3).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -655,10 +661,13 @@ pub fn ayu() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + created: Some(rgba(0x7fd962b3).into()), deleted: Some(rgba(0xd95757ff).into()), error: Some(rgba(0xd95757ff).into()), hidden: Some(rgba(0x565b66ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x565b6680).into()), + modified: Some(rgba(0x73b8ffb3).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { diff --git a/crates/theme2/src/themes/dracula.rs b/crates/theme2/src/themes/dracula.rs index 19902dd79d..27bc05c64a 100644 --- a/crates/theme2/src/themes/dracula.rs +++ b/crates/theme2/src/themes/dracula.rs @@ -63,10 +63,14 @@ pub fn dracula() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffb86cff).into()), + created: Some(rgba(0x50fa7bff).into()), deleted: Some(rgba(0xff5555ff).into()), error: Some(rgba(0xff5555ff).into()), hidden: Some(rgba(0x6272a4ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x6272a4ff).into()), + modified: Some(rgba(0x8be9fdff).into()), warning: Some(rgba(0xffb86cff).into()), ..Default::default() }, diff --git a/crates/theme2/src/themes/gruvbox.rs b/crates/theme2/src/themes/gruvbox.rs index 43354b2d22..79efc43109 100644 --- a/crates/theme2/src/themes/gruvbox.rs +++ b/crates/theme2/src/themes/gruvbox.rs @@ -60,10 +60,14 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb16286ff).into()), + created: Some(rgba(0x98971aff).into()), deleted: Some(rgba(0xfb4934ff).into()), error: Some(rgba(0xfb4934ff).into()), hidden: Some(rgba(0xa89984ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x7c6f64ff).into()), + modified: Some(rgba(0xd79921ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -331,10 +335,14 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb16286ff).into()), + created: Some(rgba(0x98971aff).into()), deleted: Some(rgba(0xfb4934ff).into()), error: Some(rgba(0xfb4934ff).into()), hidden: Some(rgba(0xa89984ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x7c6f64ff).into()), + modified: Some(rgba(0xd79921ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -602,10 +610,14 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb16286ff).into()), + created: Some(rgba(0x98971aff).into()), deleted: Some(rgba(0xfb4934ff).into()), error: Some(rgba(0xfb4934ff).into()), hidden: Some(rgba(0xa89984ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x7c6f64ff).into()), + modified: Some(rgba(0xd79921ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -873,10 +885,14 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb16286ff).into()), + created: Some(rgba(0x98971aff).into()), deleted: Some(rgba(0x9d0006ff).into()), error: Some(rgba(0x9d0006ff).into()), hidden: Some(rgba(0x7c6f64ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xa89984ff).into()), + modified: Some(rgba(0xd79921ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -1144,10 +1160,14 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb16286ff).into()), + created: Some(rgba(0x98971aff).into()), deleted: Some(rgba(0x9d0006ff).into()), error: Some(rgba(0x9d0006ff).into()), hidden: Some(rgba(0x7c6f64ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xa89984ff).into()), + modified: Some(rgba(0xd79921ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -1415,10 +1435,14 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb16286ff).into()), + created: Some(rgba(0x98971aff).into()), deleted: Some(rgba(0x9d0006ff).into()), error: Some(rgba(0x9d0006ff).into()), hidden: Some(rgba(0x7c6f64ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xa89984ff).into()), + modified: Some(rgba(0xd79921ff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { diff --git a/crates/theme2/src/themes/night_owl.rs b/crates/theme2/src/themes/night_owl.rs index 09b73c10db..cece73f00e 100644 --- a/crates/theme2/src/themes/night_owl.rs +++ b/crates/theme2/src/themes/night_owl.rs @@ -63,10 +63,14 @@ pub fn night_owl() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffeb95cc).into()), + created: Some(rgba(0xc5e478ff).into()), deleted: Some(rgba(0xef5350ff).into()), error: Some(rgba(0xef5350ff).into()), hidden: Some(rgba(0x5f7e97ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x395a75ff).into()), + modified: Some(rgba(0xa2bffcff).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { diff --git a/crates/theme2/src/themes/noctis.rs b/crates/theme2/src/themes/noctis.rs index a05422300c..25a31f0290 100644 --- a/crates/theme2/src/themes/noctis.rs +++ b/crates/theme2/src/themes/noctis.rs @@ -64,10 +64,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffc180ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0x9fb6c6ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x5b788bff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa857ff).into()), ..Default::default() }, @@ -330,10 +334,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffc180ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0xbbaab0ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x5b788bff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa857ff).into()), ..Default::default() }, @@ -596,10 +604,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xe9a149ff).into()), + created: Some(rgba(0x00c6e0ff).into()), deleted: Some(rgba(0xff4000ff).into()), error: Some(rgba(0xff4000ff).into()), hidden: Some(rgba(0x71838eff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xa8a28faa).into()), + modified: Some(rgba(0x14b832ff).into()), warning: Some(rgba(0xe07a52ff).into()), ..Default::default() }, @@ -862,10 +874,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xe9a149ff).into()), + created: Some(rgba(0x00c6e0ff).into()), deleted: Some(rgba(0xff4000ff).into()), error: Some(rgba(0xff4000ff).into()), hidden: Some(rgba(0x75718eff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xa8a28faa).into()), + modified: Some(rgba(0x14b832ff).into()), warning: Some(rgba(0xe07a52ff).into()), ..Default::default() }, @@ -1128,10 +1144,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xe9a149ff).into()), + created: Some(rgba(0x00c6e0ff).into()), deleted: Some(rgba(0xff4000ff).into()), error: Some(rgba(0xff4000ff).into()), hidden: Some(rgba(0x888477ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xa8a28faa).into()), + modified: Some(rgba(0x14b832ff).into()), warning: Some(rgba(0xe07a52ff).into()), ..Default::default() }, @@ -1394,10 +1414,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xdfc09fff).into()), + created: Some(rgba(0x6fb0b8ff).into()), deleted: Some(rgba(0xb96346ff).into()), error: Some(rgba(0xb96346ff).into()), hidden: Some(rgba(0x96a8b6ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x5b788bff).into()), + modified: Some(rgba(0x72c09fff).into()), warning: Some(rgba(0xffa857ff).into()), ..Default::default() }, @@ -1660,10 +1684,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xe4b781ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0x87a7abff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x5b858bff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa487ff).into()), ..Default::default() }, @@ -1926,10 +1954,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xe4b781ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0x87a7abff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x647e82ff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa487ff).into()), ..Default::default() }, @@ -2192,10 +2224,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xe4b781ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0x87a7abff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x647e82ff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa487ff).into()), ..Default::default() }, @@ -2458,10 +2494,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffc180ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0xa9a5c0ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x5b788bff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa857ff).into()), ..Default::default() }, @@ -2724,10 +2764,14 @@ pub fn noctis() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffc180ff).into()), + created: Some(rgba(0x40d4e7ff).into()), deleted: Some(rgba(0xe34e1cff).into()), error: Some(rgba(0xe34e1cff).into()), hidden: Some(rgba(0xb3a5c0ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x5b788bff).into()), + modified: Some(rgba(0x49e9a6ff).into()), warning: Some(rgba(0xffa857ff).into()), ..Default::default() }, diff --git a/crates/theme2/src/themes/nord.rs b/crates/theme2/src/themes/nord.rs index ee32e56645..b4a723d35c 100644 --- a/crates/theme2/src/themes/nord.rs +++ b/crates/theme2/src/themes/nord.rs @@ -63,10 +63,14 @@ pub fn nord() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0x5e81acff).into()), + created: Some(rgba(0xa3be8cff).into()), deleted: Some(rgba(0xbf616aff).into()), error: Some(rgba(0xbf616aff).into()), hidden: Some(rgba(0xd8dee966).into()), hint: Some(rgba(0xd8dee9ff).into()), + ignored: Some(rgba(0xd8dee966).into()), + modified: Some(rgba(0xebcb8bff).into()), warning: Some(rgba(0xebcb8bff).into()), ..Default::default() }, diff --git a/crates/theme2/src/themes/palenight.rs b/crates/theme2/src/themes/palenight.rs index 0b2cfaca99..31de1b798b 100644 --- a/crates/theme2/src/themes/palenight.rs +++ b/crates/theme2/src/themes/palenight.rs @@ -63,10 +63,14 @@ pub fn palenight() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffeb95cc).into()), + created: Some(rgba(0xa9c77dff).into()), deleted: Some(rgba(0xef5350ff).into()), error: Some(rgba(0xef5350ff).into()), hidden: Some(rgba(0x929ac9ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x69709890).into()), + modified: Some(rgba(0xe2c08de6).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -338,10 +342,14 @@ pub fn palenight() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffeb95cc).into()), + created: Some(rgba(0xa9c77dff).into()), deleted: Some(rgba(0xef5350ff).into()), error: Some(rgba(0xef5350ff).into()), hidden: Some(rgba(0x929ac9ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x69709890).into()), + modified: Some(rgba(0xe2c08de6).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { @@ -613,10 +621,14 @@ pub fn palenight() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xffeb95cc).into()), + created: Some(rgba(0xa9c77dff).into()), deleted: Some(rgba(0xef5350ff).into()), error: Some(rgba(0xef5350ff).into()), hidden: Some(rgba(0x929ac9ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0x69709890).into()), + modified: Some(rgba(0xe2c08de6).into()), ..Default::default() }, syntax: Some(UserSyntaxTheme { diff --git a/crates/theme2/src/themes/rose_pine.rs b/crates/theme2/src/themes/rose_pine.rs index 2e5cf835ab..e0513bbd08 100644 --- a/crates/theme2/src/themes/rose_pine.rs +++ b/crates/theme2/src/themes/rose_pine.rs @@ -63,10 +63,14 @@ pub fn rose_pine() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xeb6f92ff).into()), + created: Some(rgba(0xf6c177ff).into()), deleted: Some(rgba(0xeb6f92ff).into()), error: Some(rgba(0xeb6f92ff).into()), hidden: Some(rgba(0x908caaff).into()), hint: Some(rgba(0x908caaff).into()), + ignored: Some(rgba(0x6e6a86ff).into()), + modified: Some(rgba(0xebbcbaff).into()), warning: Some(rgba(0xf6c177ff).into()), ..Default::default() }, @@ -310,10 +314,14 @@ pub fn rose_pine() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xeb6f92ff).into()), + created: Some(rgba(0xf6c177ff).into()), deleted: Some(rgba(0xeb6f92ff).into()), error: Some(rgba(0xeb6f92ff).into()), hidden: Some(rgba(0x908caaff).into()), hint: Some(rgba(0x908caaff).into()), + ignored: Some(rgba(0x6e6a86ff).into()), + modified: Some(rgba(0xea9a97ff).into()), warning: Some(rgba(0xf6c177ff).into()), ..Default::default() }, @@ -557,10 +565,14 @@ pub fn rose_pine() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + conflict: Some(rgba(0xb4637aff).into()), + created: Some(rgba(0xea9d34ff).into()), deleted: Some(rgba(0xb4637aff).into()), error: Some(rgba(0xb4637aff).into()), hidden: Some(rgba(0x797593ff).into()), hint: Some(rgba(0x797593ff).into()), + ignored: Some(rgba(0x9893a5ff).into()), + modified: Some(rgba(0xd7827eff).into()), warning: Some(rgba(0xea9d34ff).into()), ..Default::default() }, diff --git a/crates/theme2/src/themes/synthwave_84.rs b/crates/theme2/src/themes/synthwave_84.rs index 90e8a9c667..832b92c7a1 100644 --- a/crates/theme2/src/themes/synthwave_84.rs +++ b/crates/theme2/src/themes/synthwave_84.rs @@ -47,9 +47,12 @@ pub fn synthwave_84() -> UserThemeFamily { ..Default::default() }, status: StatusColorsRefinement { + created: Some(rgba(0x72f1b8ff).into()), deleted: Some(rgba(0xfe4450ff).into()), error: Some(rgba(0xfe4450ff).into()), hint: Some(rgba(0x969696ff).into()), + ignored: Some(rgba(0xffffff59).into()), + modified: Some(rgba(0xb893ceee).into()), warning: Some(rgba(0x72f1b8bb).into()), ..Default::default() }, diff --git a/crates/theme_importer/src/vscode/converter.rs b/crates/theme_importer/src/vscode/converter.rs index 4e9090d2cd..6e2f11e5ff 100644 --- a/crates/theme_importer/src/vscode/converter.rs +++ b/crates/theme_importer/src/vscode/converter.rs @@ -75,8 +75,14 @@ impl VsCodeThemeConverter { }; Ok(StatusColorsRefinement { - // conflict: None, - // created: None, + conflict: vscode_colors + .git_decoration_conflicting_resource_foreground + .as_ref() + .traverse(|color| try_parse_color(&color))?, + created: vscode_colors + .git_decoration_untracked_resource_foreground + .as_ref() + .traverse(|color| try_parse_color(&color))?, deleted: vscode_colors .error_foreground .as_ref() @@ -94,9 +100,15 @@ impl VsCodeThemeConverter { .as_ref() .traverse(|color| try_parse_color(&color))? .or(vscode_base_status_colors.hint), - // ignored: None, + ignored: vscode_colors + .git_decoration_ignored_resource_foreground + .as_ref() + .traverse(|color| try_parse_color(&color))?, // info: None, - // modified: None, + modified: vscode_colors + .git_decoration_modified_resource_foreground + .as_ref() + .traverse(|color| try_parse_color(&color))?, // renamed: None, // success: None, warning: vscode_colors From 62155f3a88f5d15945621514885fe1851fc7f686 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Fri, 8 Dec 2023 13:20:00 -0500 Subject: [PATCH 4/4] Add fallback to constant tokens for numbers --- crates/theme2/src/themes/dracula.rs | 7 ++++ crates/theme2/src/themes/gruvbox.rs | 42 ++++++++++++++++++++++ crates/theme_importer/src/vscode/syntax.rs | 1 + 3 files changed, 50 insertions(+) diff --git a/crates/theme2/src/themes/dracula.rs b/crates/theme2/src/themes/dracula.rs index 27bc05c64a..855698b471 100644 --- a/crates/theme2/src/themes/dracula.rs +++ b/crates/theme2/src/themes/dracula.rs @@ -156,6 +156,13 @@ pub fn dracula() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0xbd93f9ff).into()), + ..Default::default() + }, + ), ( "string".into(), UserHighlightStyle { diff --git a/crates/theme2/src/themes/gruvbox.rs b/crates/theme2/src/themes/gruvbox.rs index 79efc43109..d961c661a3 100644 --- a/crates/theme2/src/themes/gruvbox.rs +++ b/crates/theme2/src/themes/gruvbox.rs @@ -152,6 +152,13 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0xd3869bff).into()), + ..Default::default() + }, + ), ( "operator".into(), UserHighlightStyle { @@ -427,6 +434,13 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0xd3869bff).into()), + ..Default::default() + }, + ), ( "operator".into(), UserHighlightStyle { @@ -702,6 +716,13 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0xd3869bff).into()), + ..Default::default() + }, + ), ( "operator".into(), UserHighlightStyle { @@ -977,6 +998,13 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0x8f3f71ff).into()), + ..Default::default() + }, + ), ( "operator".into(), UserHighlightStyle { @@ -1252,6 +1280,13 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0x8f3f71ff).into()), + ..Default::default() + }, + ), ( "operator".into(), UserHighlightStyle { @@ -1527,6 +1562,13 @@ pub fn gruvbox() -> UserThemeFamily { ..Default::default() }, ), + ( + "number".into(), + UserHighlightStyle { + color: Some(rgba(0x8f3f71ff).into()), + ..Default::default() + }, + ), ( "operator".into(), UserHighlightStyle { diff --git a/crates/theme_importer/src/vscode/syntax.rs b/crates/theme_importer/src/vscode/syntax.rs index 262bd81f77..f055fc3551 100644 --- a/crates/theme_importer/src/vscode/syntax.rs +++ b/crates/theme_importer/src/vscode/syntax.rs @@ -167,6 +167,7 @@ impl ZedSyntaxToken { pub fn fallbacks(&self) -> &[Self] { match self { ZedSyntaxToken::CommentDoc => &[ZedSyntaxToken::Comment], + ZedSyntaxToken::Number => &[ZedSyntaxToken::Constant], ZedSyntaxToken::VariableSpecial => &[ZedSyntaxToken::Variable], ZedSyntaxToken::PunctuationBracket | ZedSyntaxToken::PunctuationDelimiter