theme.rs

   1use serde::{Deserialize, Deserializer};
   2
   3use crate::vscode::VsCodeTokenColor;
   4
   5fn empty_string_as_none<'de, D>(deserializer: D) -> Result<Option<String>, D::Error>
   6where
   7    D: Deserializer<'de>,
   8{
   9    let value = Option::<String>::deserialize(deserializer)?;
  10    Ok(value.filter(|value| !value.is_empty()))
  11}
  12
  13#[derive(Deserialize, Debug)]
  14pub struct VsCodeTheme {
  15    #[serde(rename = "$schema")]
  16    pub schema: Option<String>,
  17    pub name: Option<String>,
  18    pub author: Option<String>,
  19    pub maintainers: Option<Vec<String>>,
  20    #[serde(rename = "semanticClass")]
  21    pub semantic_class: Option<String>,
  22    #[serde(rename = "semanticHighlighting")]
  23    pub semantic_highlighting: Option<bool>,
  24    pub colors: VsCodeColors,
  25    #[serde(rename = "tokenColors")]
  26    pub token_colors: Vec<VsCodeTokenColor>,
  27}
  28
  29#[derive(Debug, Deserialize)]
  30pub struct VsCodeColors {
  31    #[serde(
  32        default,
  33        rename = "terminal.background",
  34        deserialize_with = "empty_string_as_none"
  35    )]
  36    pub terminal_background: Option<String>,
  37
  38    #[serde(
  39        default,
  40        rename = "terminal.foreground",
  41        deserialize_with = "empty_string_as_none"
  42    )]
  43    pub terminal_foreground: Option<String>,
  44
  45    #[serde(
  46        default,
  47        rename = "terminal.ansiBrightBlack",
  48        deserialize_with = "empty_string_as_none"
  49    )]
  50    pub terminal_ansi_bright_black: Option<String>,
  51
  52    #[serde(
  53        default,
  54        rename = "terminal.ansiBrightRed",
  55        deserialize_with = "empty_string_as_none"
  56    )]
  57    pub terminal_ansi_bright_red: Option<String>,
  58
  59    #[serde(
  60        default,
  61        rename = "terminal.ansiBrightGreen",
  62        deserialize_with = "empty_string_as_none"
  63    )]
  64    pub terminal_ansi_bright_green: Option<String>,
  65
  66    #[serde(
  67        default,
  68        rename = "terminal.ansiBrightYellow",
  69        deserialize_with = "empty_string_as_none"
  70    )]
  71    pub terminal_ansi_bright_yellow: Option<String>,
  72
  73    #[serde(
  74        default,
  75        rename = "terminal.ansiBrightBlue",
  76        deserialize_with = "empty_string_as_none"
  77    )]
  78    pub terminal_ansi_bright_blue: Option<String>,
  79
  80    #[serde(
  81        default,
  82        rename = "terminal.ansiBrightMagenta",
  83        deserialize_with = "empty_string_as_none"
  84    )]
  85    pub terminal_ansi_bright_magenta: Option<String>,
  86
  87    #[serde(
  88        default,
  89        rename = "terminal.ansiBrightCyan",
  90        deserialize_with = "empty_string_as_none"
  91    )]
  92    pub terminal_ansi_bright_cyan: Option<String>,
  93
  94    #[serde(
  95        default,
  96        rename = "terminal.ansiBrightWhite",
  97        deserialize_with = "empty_string_as_none"
  98    )]
  99    pub terminal_ansi_bright_white: Option<String>,
 100
 101    #[serde(
 102        default,
 103        rename = "terminal.ansiBlack",
 104        deserialize_with = "empty_string_as_none"
 105    )]
 106    pub terminal_ansi_black: Option<String>,
 107
 108    #[serde(
 109        default,
 110        rename = "terminal.ansiRed",
 111        deserialize_with = "empty_string_as_none"
 112    )]
 113    pub terminal_ansi_red: Option<String>,
 114
 115    #[serde(
 116        default,
 117        rename = "terminal.ansiGreen",
 118        deserialize_with = "empty_string_as_none"
 119    )]
 120    pub terminal_ansi_green: Option<String>,
 121
 122    #[serde(
 123        default,
 124        rename = "terminal.ansiYellow",
 125        deserialize_with = "empty_string_as_none"
 126    )]
 127    pub terminal_ansi_yellow: Option<String>,
 128
 129    #[serde(
 130        default,
 131        rename = "terminal.ansiBlue",
 132        deserialize_with = "empty_string_as_none"
 133    )]
 134    pub terminal_ansi_blue: Option<String>,
 135
 136    #[serde(
 137        default,
 138        rename = "terminal.ansiMagenta",
 139        deserialize_with = "empty_string_as_none"
 140    )]
 141    pub terminal_ansi_magenta: Option<String>,
 142
 143    #[serde(
 144        default,
 145        rename = "terminal.ansiCyan",
 146        deserialize_with = "empty_string_as_none"
 147    )]
 148    pub terminal_ansi_cyan: Option<String>,
 149
 150    #[serde(
 151        default,
 152        rename = "terminal.ansiWhite",
 153        deserialize_with = "empty_string_as_none"
 154    )]
 155    pub terminal_ansi_white: Option<String>,
 156
 157    #[serde(
 158        default,
 159        rename = "textLink.activeForeground",
 160        deserialize_with = "empty_string_as_none"
 161    )]
 162    pub text_link_active_foreground: Option<String>,
 163
 164    #[serde(
 165        default,
 166        rename = "focusBorder",
 167        deserialize_with = "empty_string_as_none"
 168    )]
 169    pub focus_border: Option<String>,
 170
 171    #[serde(default, deserialize_with = "empty_string_as_none")]
 172    pub foreground: Option<String>,
 173
 174    #[serde(
 175        default,
 176        rename = "selection.background",
 177        deserialize_with = "empty_string_as_none"
 178    )]
 179    pub selection_background: Option<String>,
 180
 181    #[serde(
 182        default,
 183        rename = "errorForeground",
 184        deserialize_with = "empty_string_as_none"
 185    )]
 186    pub error_foreground: Option<String>,
 187
 188    #[serde(
 189        default,
 190        rename = "button.background",
 191        deserialize_with = "empty_string_as_none"
 192    )]
 193    pub button_background: Option<String>,
 194
 195    #[serde(
 196        default,
 197        rename = "button.foreground",
 198        deserialize_with = "empty_string_as_none"
 199    )]
 200    pub button_foreground: Option<String>,
 201
 202    #[serde(
 203        default,
 204        rename = "button.secondaryBackground",
 205        deserialize_with = "empty_string_as_none"
 206    )]
 207    pub button_secondary_background: Option<String>,
 208
 209    #[serde(
 210        default,
 211        rename = "button.secondaryForeground",
 212        deserialize_with = "empty_string_as_none"
 213    )]
 214    pub button_secondary_foreground: Option<String>,
 215
 216    #[serde(
 217        default,
 218        rename = "button.secondaryHoverBackground",
 219        deserialize_with = "empty_string_as_none"
 220    )]
 221    pub button_secondary_hover_background: Option<String>,
 222
 223    #[serde(
 224        default,
 225        rename = "dropdown.background",
 226        deserialize_with = "empty_string_as_none"
 227    )]
 228    pub dropdown_background: Option<String>,
 229
 230    #[serde(
 231        default,
 232        rename = "dropdown.border",
 233        deserialize_with = "empty_string_as_none"
 234    )]
 235    pub dropdown_border: Option<String>,
 236
 237    #[serde(
 238        default,
 239        rename = "dropdown.foreground",
 240        deserialize_with = "empty_string_as_none"
 241    )]
 242    pub dropdown_foreground: Option<String>,
 243
 244    #[serde(
 245        default,
 246        rename = "input.background",
 247        deserialize_with = "empty_string_as_none"
 248    )]
 249    pub input_background: Option<String>,
 250
 251    #[serde(
 252        default,
 253        rename = "input.foreground",
 254        deserialize_with = "empty_string_as_none"
 255    )]
 256    pub input_foreground: Option<String>,
 257
 258    #[serde(
 259        default,
 260        rename = "input.border",
 261        deserialize_with = "empty_string_as_none"
 262    )]
 263    pub input_border: Option<String>,
 264
 265    #[serde(
 266        default,
 267        rename = "input.placeholderForeground",
 268        deserialize_with = "empty_string_as_none"
 269    )]
 270    pub input_placeholder_foreground: Option<String>,
 271
 272    #[serde(
 273        default,
 274        rename = "inputOption.activeBorder",
 275        deserialize_with = "empty_string_as_none"
 276    )]
 277    pub input_option_active_border: Option<String>,
 278
 279    #[serde(
 280        default,
 281        rename = "inputValidation.infoBorder",
 282        deserialize_with = "empty_string_as_none"
 283    )]
 284    pub input_validation_info_border: Option<String>,
 285
 286    #[serde(
 287        default,
 288        rename = "inputValidation.warningBorder",
 289        deserialize_with = "empty_string_as_none"
 290    )]
 291    pub input_validation_warning_border: Option<String>,
 292
 293    #[serde(
 294        default,
 295        rename = "inputValidation.errorBorder",
 296        deserialize_with = "empty_string_as_none"
 297    )]
 298    pub input_validation_error_border: Option<String>,
 299
 300    #[serde(
 301        default,
 302        rename = "badge.foreground",
 303        deserialize_with = "empty_string_as_none"
 304    )]
 305    pub badge_foreground: Option<String>,
 306
 307    #[serde(
 308        default,
 309        rename = "badge.background",
 310        deserialize_with = "empty_string_as_none"
 311    )]
 312    pub badge_background: Option<String>,
 313
 314    #[serde(
 315        default,
 316        rename = "progressBar.background",
 317        deserialize_with = "empty_string_as_none"
 318    )]
 319    pub progress_bar_background: Option<String>,
 320
 321    #[serde(
 322        default,
 323        rename = "list.activeSelectionBackground",
 324        deserialize_with = "empty_string_as_none"
 325    )]
 326    pub list_active_selection_background: Option<String>,
 327
 328    #[serde(
 329        default,
 330        rename = "list.activeSelectionForeground",
 331        deserialize_with = "empty_string_as_none"
 332    )]
 333    pub list_active_selection_foreground: Option<String>,
 334
 335    #[serde(
 336        default,
 337        rename = "list.dropBackground",
 338        deserialize_with = "empty_string_as_none"
 339    )]
 340    pub list_drop_background: Option<String>,
 341
 342    #[serde(
 343        default,
 344        rename = "list.focusBackground",
 345        deserialize_with = "empty_string_as_none"
 346    )]
 347    pub list_focus_background: Option<String>,
 348
 349    #[serde(
 350        default,
 351        rename = "list.highlightForeground",
 352        deserialize_with = "empty_string_as_none"
 353    )]
 354    pub list_highlight_foreground: Option<String>,
 355
 356    #[serde(
 357        default,
 358        rename = "list.hoverBackground",
 359        deserialize_with = "empty_string_as_none"
 360    )]
 361    pub list_hover_background: Option<String>,
 362
 363    #[serde(
 364        default,
 365        rename = "list.inactiveSelectionBackground",
 366        deserialize_with = "empty_string_as_none"
 367    )]
 368    pub list_inactive_selection_background: Option<String>,
 369
 370    #[serde(
 371        default,
 372        rename = "list.warningForeground",
 373        deserialize_with = "empty_string_as_none"
 374    )]
 375    pub list_warning_foreground: Option<String>,
 376
 377    #[serde(
 378        default,
 379        rename = "list.errorForeground",
 380        deserialize_with = "empty_string_as_none"
 381    )]
 382    pub list_error_foreground: Option<String>,
 383
 384    #[serde(
 385        default,
 386        rename = "activityBar.background",
 387        deserialize_with = "empty_string_as_none"
 388    )]
 389    pub activity_bar_background: Option<String>,
 390
 391    #[serde(
 392        default,
 393        rename = "activityBar.inactiveForeground",
 394        deserialize_with = "empty_string_as_none"
 395    )]
 396    pub activity_bar_inactive_foreground: Option<String>,
 397
 398    #[serde(
 399        default,
 400        rename = "activityBar.foreground",
 401        deserialize_with = "empty_string_as_none"
 402    )]
 403    pub activity_bar_foreground: Option<String>,
 404
 405    #[serde(
 406        default,
 407        rename = "activityBar.activeBorder",
 408        deserialize_with = "empty_string_as_none"
 409    )]
 410    pub activity_bar_active_border: Option<String>,
 411
 412    #[serde(
 413        default,
 414        rename = "activityBar.activeBackground",
 415        deserialize_with = "empty_string_as_none"
 416    )]
 417    pub activity_bar_active_background: Option<String>,
 418
 419    #[serde(
 420        default,
 421        rename = "activityBarBadge.background",
 422        deserialize_with = "empty_string_as_none"
 423    )]
 424    pub activity_bar_badge_background: Option<String>,
 425
 426    #[serde(
 427        default,
 428        rename = "activityBarBadge.foreground",
 429        deserialize_with = "empty_string_as_none"
 430    )]
 431    pub activity_bar_badge_foreground: Option<String>,
 432
 433    #[serde(
 434        default,
 435        rename = "sideBar.background",
 436        deserialize_with = "empty_string_as_none"
 437    )]
 438    pub side_bar_background: Option<String>,
 439
 440    #[serde(
 441        default,
 442        rename = "sideBarTitle.foreground",
 443        deserialize_with = "empty_string_as_none"
 444    )]
 445    pub side_bar_title_foreground: Option<String>,
 446
 447    #[serde(
 448        default,
 449        rename = "sideBarSectionHeader.background",
 450        deserialize_with = "empty_string_as_none"
 451    )]
 452    pub side_bar_section_header_background: Option<String>,
 453
 454    #[serde(
 455        default,
 456        rename = "sideBarSectionHeader.border",
 457        deserialize_with = "empty_string_as_none"
 458    )]
 459    pub side_bar_section_header_border: Option<String>,
 460
 461    #[serde(
 462        default,
 463        rename = "editorGroup.border",
 464        deserialize_with = "empty_string_as_none"
 465    )]
 466    pub editor_group_border: Option<String>,
 467
 468    #[serde(
 469        default,
 470        rename = "editorGroup.dropBackground",
 471        deserialize_with = "empty_string_as_none"
 472    )]
 473    pub editor_group_drop_background: Option<String>,
 474
 475    #[serde(
 476        default,
 477        rename = "editorGroupHeader.tabsBackground",
 478        deserialize_with = "empty_string_as_none"
 479    )]
 480    pub editor_group_header_tabs_background: Option<String>,
 481
 482    #[serde(
 483        default,
 484        rename = "tab.activeBackground",
 485        deserialize_with = "empty_string_as_none"
 486    )]
 487    pub tab_active_background: Option<String>,
 488
 489    #[serde(
 490        default,
 491        rename = "tab.activeForeground",
 492        deserialize_with = "empty_string_as_none"
 493    )]
 494    pub tab_active_foreground: Option<String>,
 495
 496    #[serde(
 497        default,
 498        rename = "tab.border",
 499        deserialize_with = "empty_string_as_none"
 500    )]
 501    pub tab_border: Option<String>,
 502
 503    #[serde(
 504        default,
 505        rename = "tab.activeBorderTop",
 506        deserialize_with = "empty_string_as_none"
 507    )]
 508    pub tab_active_border_top: Option<String>,
 509
 510    #[serde(
 511        default,
 512        rename = "tab.inactiveBackground",
 513        deserialize_with = "empty_string_as_none"
 514    )]
 515    pub tab_inactive_background: Option<String>,
 516
 517    #[serde(
 518        default,
 519        rename = "tab.inactiveForeground",
 520        deserialize_with = "empty_string_as_none"
 521    )]
 522    pub tab_inactive_foreground: Option<String>,
 523
 524    #[serde(
 525        default,
 526        rename = "editor.foreground",
 527        deserialize_with = "empty_string_as_none"
 528    )]
 529    pub editor_foreground: Option<String>,
 530
 531    #[serde(
 532        default,
 533        rename = "editor.background",
 534        deserialize_with = "empty_string_as_none"
 535    )]
 536    pub editor_background: Option<String>,
 537
 538    #[serde(
 539        default,
 540        rename = "editorInlayHint.foreground",
 541        deserialize_with = "empty_string_as_none"
 542    )]
 543    pub editor_inlay_hint_foreground: Option<String>,
 544
 545    #[serde(
 546        default,
 547        rename = "editorInlayHint.background",
 548        deserialize_with = "empty_string_as_none"
 549    )]
 550    pub editor_inlay_hint_background: Option<String>,
 551
 552    #[serde(
 553        default,
 554        rename = "editorInlayHint.parameterForeground",
 555        deserialize_with = "empty_string_as_none"
 556    )]
 557    pub editor_inlay_hint_parameter_foreground: Option<String>,
 558
 559    #[serde(
 560        default,
 561        rename = "editorInlayHint.parameterBackground",
 562        deserialize_with = "empty_string_as_none"
 563    )]
 564    pub editor_inlay_hint_parameter_background: Option<String>,
 565
 566    #[serde(
 567        default,
 568        rename = "editorInlayHint.typForeground",
 569        deserialize_with = "empty_string_as_none"
 570    )]
 571    pub editor_inlay_hint_typ_foreground: Option<String>,
 572
 573    #[serde(
 574        default,
 575        rename = "editorInlayHint.typBackground",
 576        deserialize_with = "empty_string_as_none"
 577    )]
 578    pub editor_inlay_hint_typ_background: Option<String>,
 579
 580    #[serde(
 581        default,
 582        rename = "editorLineNumber.foreground",
 583        deserialize_with = "empty_string_as_none"
 584    )]
 585    pub editor_line_number_foreground: Option<String>,
 586
 587    #[serde(
 588        default,
 589        rename = "editor.selectionBackground",
 590        deserialize_with = "empty_string_as_none"
 591    )]
 592    pub editor_selection_background: Option<String>,
 593
 594    #[serde(
 595        default,
 596        rename = "editor.selectionHighlightBackground",
 597        deserialize_with = "empty_string_as_none"
 598    )]
 599    pub editor_selection_highlight_background: Option<String>,
 600
 601    #[serde(
 602        default,
 603        rename = "editor.foldBackground",
 604        deserialize_with = "empty_string_as_none"
 605    )]
 606    pub editor_fold_background: Option<String>,
 607
 608    #[serde(
 609        default,
 610        rename = "editor.wordHighlightBackground",
 611        deserialize_with = "empty_string_as_none"
 612    )]
 613    pub editor_word_highlight_background: Option<String>,
 614
 615    #[serde(
 616        default,
 617        rename = "editor.wordHighlightStrongBackground",
 618        deserialize_with = "empty_string_as_none"
 619    )]
 620    pub editor_word_highlight_strong_background: Option<String>,
 621
 622    #[serde(
 623        default,
 624        rename = "editor.findMatchBackground",
 625        deserialize_with = "empty_string_as_none"
 626    )]
 627    pub editor_find_match_background: Option<String>,
 628
 629    #[serde(
 630        default,
 631        rename = "editor.findMatchHighlightBackground",
 632        deserialize_with = "empty_string_as_none"
 633    )]
 634    pub editor_find_match_highlight_background: Option<String>,
 635
 636    #[serde(
 637        default,
 638        rename = "editor.findRangeHighlightBackground",
 639        deserialize_with = "empty_string_as_none"
 640    )]
 641    pub editor_find_range_highlight_background: Option<String>,
 642
 643    #[serde(
 644        default,
 645        rename = "editor.hoverHighlightBackground",
 646        deserialize_with = "empty_string_as_none"
 647    )]
 648    pub editor_hover_highlight_background: Option<String>,
 649
 650    #[serde(
 651        default,
 652        rename = "editor.lineHighlightBorder",
 653        deserialize_with = "empty_string_as_none"
 654    )]
 655    pub editor_line_highlight_border: Option<String>,
 656
 657    #[serde(
 658        default,
 659        rename = "editorLink.activeForeground",
 660        deserialize_with = "empty_string_as_none"
 661    )]
 662    pub editor_link_active_foreground: Option<String>,
 663
 664    #[serde(
 665        default,
 666        rename = "editor.rangeHighlightBackground",
 667        deserialize_with = "empty_string_as_none"
 668    )]
 669    pub editor_range_highlight_background: Option<String>,
 670
 671    #[serde(
 672        default,
 673        rename = "editor.snippetTabstopHighlightBackground",
 674        deserialize_with = "empty_string_as_none"
 675    )]
 676    pub editor_snippet_tabstop_highlight_background: Option<String>,
 677
 678    #[serde(
 679        default,
 680        rename = "editor.snippetTabstopHighlightBorder",
 681        deserialize_with = "empty_string_as_none"
 682    )]
 683    pub editor_snippet_tabstop_highlight_border: Option<String>,
 684
 685    #[serde(
 686        default,
 687        rename = "editor.snippetFinalTabstopHighlightBackground",
 688        deserialize_with = "empty_string_as_none"
 689    )]
 690    pub editor_snippet_final_tabstop_highlight_background: Option<String>,
 691
 692    #[serde(
 693        default,
 694        rename = "editor.snippetFinalTabstopHighlightBorder",
 695        deserialize_with = "empty_string_as_none"
 696    )]
 697    pub editor_snippet_final_tabstop_highlight_border: Option<String>,
 698
 699    #[serde(
 700        default,
 701        rename = "editorWhitespace.foreground",
 702        deserialize_with = "empty_string_as_none"
 703    )]
 704    pub editor_whitespace_foreground: Option<String>,
 705
 706    #[serde(
 707        default,
 708        rename = "editorIndentGuide.background",
 709        deserialize_with = "empty_string_as_none"
 710    )]
 711    pub editor_indent_guide_background: Option<String>,
 712
 713    #[serde(
 714        default,
 715        rename = "editorIndentGuide.activeBackground",
 716        deserialize_with = "empty_string_as_none"
 717    )]
 718    pub editor_indent_guide_active_background: Option<String>,
 719
 720    #[serde(
 721        default,
 722        rename = "editorRuler.foreground",
 723        deserialize_with = "empty_string_as_none"
 724    )]
 725    pub editor_ruler_foreground: Option<String>,
 726
 727    #[serde(
 728        default,
 729        rename = "editorCodeLens.foreground",
 730        deserialize_with = "empty_string_as_none"
 731    )]
 732    pub editor_code_lens_foreground: Option<String>,
 733
 734    #[serde(
 735        default,
 736        rename = "editorBracketHighlight.foreground1",
 737        deserialize_with = "empty_string_as_none"
 738    )]
 739    pub editor_bracket_highlight_foreground1: Option<String>,
 740
 741    #[serde(
 742        default,
 743        rename = "editorBracketHighlight.foreground2",
 744        deserialize_with = "empty_string_as_none"
 745    )]
 746    pub editor_bracket_highlight_foreground2: Option<String>,
 747
 748    #[serde(
 749        default,
 750        rename = "editorBracketHighlight.foreground3",
 751        deserialize_with = "empty_string_as_none"
 752    )]
 753    pub editor_bracket_highlight_foreground3: Option<String>,
 754
 755    #[serde(
 756        default,
 757        rename = "editorBracketHighlight.foreground4",
 758        deserialize_with = "empty_string_as_none"
 759    )]
 760    pub editor_bracket_highlight_foreground4: Option<String>,
 761
 762    #[serde(
 763        default,
 764        rename = "editorBracketHighlight.foreground5",
 765        deserialize_with = "empty_string_as_none"
 766    )]
 767    pub editor_bracket_highlight_foreground5: Option<String>,
 768
 769    #[serde(
 770        default,
 771        rename = "editorBracketHighlight.foreground6",
 772        deserialize_with = "empty_string_as_none"
 773    )]
 774    pub editor_bracket_highlight_foreground6: Option<String>,
 775
 776    #[serde(
 777        default,
 778        rename = "editorBracketHighlight.unexpectedBracket.foreground",
 779        deserialize_with = "empty_string_as_none"
 780    )]
 781    pub editor_bracket_highlight_unexpected_bracket_foreground: Option<String>,
 782
 783    #[serde(
 784        default,
 785        rename = "editorOverviewRuler.border",
 786        deserialize_with = "empty_string_as_none"
 787    )]
 788    pub editor_overview_ruler_border: Option<String>,
 789
 790    #[serde(
 791        default,
 792        rename = "editorOverviewRuler.selectionHighlightForeground",
 793        deserialize_with = "empty_string_as_none"
 794    )]
 795    pub editor_overview_ruler_selection_highlight_foreground: Option<String>,
 796
 797    #[serde(
 798        default,
 799        rename = "editorOverviewRuler.wordHighlightForeground",
 800        deserialize_with = "empty_string_as_none"
 801    )]
 802    pub editor_overview_ruler_word_highlight_foreground: Option<String>,
 803
 804    #[serde(
 805        default,
 806        rename = "editorOverviewRuler.wordHighlightStrongForeground",
 807        deserialize_with = "empty_string_as_none"
 808    )]
 809    pub editor_overview_ruler_word_highlight_strong_foreground: Option<String>,
 810
 811    #[serde(
 812        default,
 813        rename = "editorOverviewRuler.modifiedForeground",
 814        deserialize_with = "empty_string_as_none"
 815    )]
 816    pub editor_overview_ruler_modified_foreground: Option<String>,
 817
 818    #[serde(
 819        default,
 820        rename = "editorOverviewRuler.addedForeground",
 821        deserialize_with = "empty_string_as_none"
 822    )]
 823    pub editor_overview_ruler_added_foreground: Option<String>,
 824
 825    #[serde(
 826        default,
 827        rename = "editorOverviewRuler.deletedForeground",
 828        deserialize_with = "empty_string_as_none"
 829    )]
 830    pub editor_overview_ruler_deleted_foreground: Option<String>,
 831
 832    #[serde(
 833        default,
 834        rename = "editorOverviewRuler.errorForeground",
 835        deserialize_with = "empty_string_as_none"
 836    )]
 837    pub editor_overview_ruler_error_foreground: Option<String>,
 838
 839    #[serde(
 840        default,
 841        rename = "editorOverviewRuler.warningForeground",
 842        deserialize_with = "empty_string_as_none"
 843    )]
 844    pub editor_overview_ruler_warning_foreground: Option<String>,
 845
 846    #[serde(
 847        default,
 848        rename = "editorOverviewRuler.infoForeground",
 849        deserialize_with = "empty_string_as_none"
 850    )]
 851    pub editor_overview_ruler_info_foreground: Option<String>,
 852
 853    #[serde(
 854        default,
 855        rename = "editorError.foreground",
 856        deserialize_with = "empty_string_as_none"
 857    )]
 858    pub editor_error_foreground: Option<String>,
 859
 860    #[serde(
 861        default,
 862        rename = "editorWarning.foreground",
 863        deserialize_with = "empty_string_as_none"
 864    )]
 865    pub editor_warning_foreground: Option<String>,
 866
 867    #[serde(
 868        default,
 869        rename = "editorGutter.modifiedBackground",
 870        deserialize_with = "empty_string_as_none"
 871    )]
 872    pub editor_gutter_modified_background: Option<String>,
 873
 874    #[serde(
 875        default,
 876        rename = "editorGutter.addedBackground",
 877        deserialize_with = "empty_string_as_none"
 878    )]
 879    pub editor_gutter_added_background: Option<String>,
 880
 881    #[serde(
 882        default,
 883        rename = "editorGutter.deletedBackground",
 884        deserialize_with = "empty_string_as_none"
 885    )]
 886    pub editor_gutter_deleted_background: Option<String>,
 887
 888    #[serde(
 889        default,
 890        rename = "gitDecoration.modifiedResourceForeground",
 891        deserialize_with = "empty_string_as_none"
 892    )]
 893    pub git_decoration_modified_resource_foreground: Option<String>,
 894
 895    #[serde(
 896        default,
 897        rename = "gitDecoration.deletedResourceForeground",
 898        deserialize_with = "empty_string_as_none"
 899    )]
 900    pub git_decoration_deleted_resource_foreground: Option<String>,
 901
 902    #[serde(
 903        default,
 904        rename = "gitDecoration.untrackedResourceForeground",
 905        deserialize_with = "empty_string_as_none"
 906    )]
 907    pub git_decoration_untracked_resource_foreground: Option<String>,
 908
 909    #[serde(
 910        default,
 911        rename = "gitDecoration.ignoredResourceForeground",
 912        deserialize_with = "empty_string_as_none"
 913    )]
 914    pub git_decoration_ignored_resource_foreground: Option<String>,
 915
 916    #[serde(
 917        default,
 918        rename = "gitDecoration.conflictingResourceForeground",
 919        deserialize_with = "empty_string_as_none"
 920    )]
 921    pub git_decoration_conflicting_resource_foreground: Option<String>,
 922
 923    #[serde(
 924        default,
 925        rename = "diffEditor.insertedTextBackground",
 926        deserialize_with = "empty_string_as_none"
 927    )]
 928    pub diff_editor_inserted_text_background: Option<String>,
 929
 930    #[serde(
 931        default,
 932        rename = "diffEditor.removedTextBackground",
 933        deserialize_with = "empty_string_as_none"
 934    )]
 935    pub diff_editor_removed_text_background: Option<String>,
 936
 937    #[serde(
 938        default,
 939        rename = "inlineChat.regionHighlight",
 940        deserialize_with = "empty_string_as_none"
 941    )]
 942    pub inline_chat_region_highlight: Option<String>,
 943
 944    #[serde(
 945        default,
 946        rename = "editorWidget.background",
 947        deserialize_with = "empty_string_as_none"
 948    )]
 949    pub editor_widget_background: Option<String>,
 950
 951    #[serde(
 952        default,
 953        rename = "editorSuggestWidget.background",
 954        deserialize_with = "empty_string_as_none"
 955    )]
 956    pub editor_suggest_widget_background: Option<String>,
 957
 958    #[serde(
 959        default,
 960        rename = "editorSuggestWidget.foreground",
 961        deserialize_with = "empty_string_as_none"
 962    )]
 963    pub editor_suggest_widget_foreground: Option<String>,
 964
 965    #[serde(
 966        default,
 967        rename = "editorSuggestWidget.selectedBackground",
 968        deserialize_with = "empty_string_as_none"
 969    )]
 970    pub editor_suggest_widget_selected_background: Option<String>,
 971
 972    #[serde(
 973        default,
 974        rename = "editorHoverWidget.background",
 975        deserialize_with = "empty_string_as_none"
 976    )]
 977    pub editor_hover_widget_background: Option<String>,
 978
 979    #[serde(
 980        default,
 981        rename = "editorHoverWidget.border",
 982        deserialize_with = "empty_string_as_none"
 983    )]
 984    pub editor_hover_widget_border: Option<String>,
 985
 986    #[serde(
 987        default,
 988        rename = "editorMarkerNavigation.background",
 989        deserialize_with = "empty_string_as_none"
 990    )]
 991    pub editor_marker_navigation_background: Option<String>,
 992
 993    #[serde(
 994        default,
 995        rename = "peekView.border",
 996        deserialize_with = "empty_string_as_none"
 997    )]
 998    pub peek_view_border: Option<String>,
 999
1000    #[serde(
1001        default,
1002        rename = "peekViewEditor.background",
1003        deserialize_with = "empty_string_as_none"
1004    )]
1005    pub peek_view_editor_background: Option<String>,
1006
1007    #[serde(
1008        default,
1009        rename = "peekViewEditor.matchHighlightBackground",
1010        deserialize_with = "empty_string_as_none"
1011    )]
1012    pub peek_view_editor_match_highlight_background: Option<String>,
1013
1014    #[serde(
1015        default,
1016        rename = "peekViewResult.background",
1017        deserialize_with = "empty_string_as_none"
1018    )]
1019    pub peek_view_result_background: Option<String>,
1020
1021    #[serde(
1022        default,
1023        rename = "peekViewResult.fileForeground",
1024        deserialize_with = "empty_string_as_none"
1025    )]
1026    pub peek_view_result_file_foreground: Option<String>,
1027
1028    #[serde(
1029        default,
1030        rename = "peekViewResult.lineForeground",
1031        deserialize_with = "empty_string_as_none"
1032    )]
1033    pub peek_view_result_line_foreground: Option<String>,
1034
1035    #[serde(
1036        default,
1037        rename = "peekViewResult.matchHighlightBackground",
1038        deserialize_with = "empty_string_as_none"
1039    )]
1040    pub peek_view_result_match_highlight_background: Option<String>,
1041
1042    #[serde(
1043        default,
1044        rename = "peekViewResult.selectionBackground",
1045        deserialize_with = "empty_string_as_none"
1046    )]
1047    pub peek_view_result_selection_background: Option<String>,
1048
1049    #[serde(
1050        default,
1051        rename = "peekViewResult.selectionForeground",
1052        deserialize_with = "empty_string_as_none"
1053    )]
1054    pub peek_view_result_selection_foreground: Option<String>,
1055
1056    #[serde(
1057        default,
1058        rename = "peekViewTitle.background",
1059        deserialize_with = "empty_string_as_none"
1060    )]
1061    pub peek_view_title_background: Option<String>,
1062
1063    #[serde(
1064        default,
1065        rename = "peekViewTitleDescription.foreground",
1066        deserialize_with = "empty_string_as_none"
1067    )]
1068    pub peek_view_title_description_foreground: Option<String>,
1069
1070    #[serde(
1071        default,
1072        rename = "peekViewTitleLabel.foreground",
1073        deserialize_with = "empty_string_as_none"
1074    )]
1075    pub peek_view_title_label_foreground: Option<String>,
1076
1077    #[serde(
1078        default,
1079        rename = "merge.currentHeaderBackground",
1080        deserialize_with = "empty_string_as_none"
1081    )]
1082    pub merge_current_header_background: Option<String>,
1083
1084    #[serde(
1085        default,
1086        rename = "merge.incomingHeaderBackground",
1087        deserialize_with = "empty_string_as_none"
1088    )]
1089    pub merge_incoming_header_background: Option<String>,
1090
1091    #[serde(
1092        default,
1093        rename = "editorOverviewRuler.currentContentForeground",
1094        deserialize_with = "empty_string_as_none"
1095    )]
1096    pub editor_overview_ruler_current_content_foreground: Option<String>,
1097
1098    #[serde(
1099        default,
1100        rename = "editorOverviewRuler.incomingContentForeground",
1101        deserialize_with = "empty_string_as_none"
1102    )]
1103    pub editor_overview_ruler_incoming_content_foreground: Option<String>,
1104
1105    #[serde(
1106        default,
1107        rename = "panel.background",
1108        deserialize_with = "empty_string_as_none"
1109    )]
1110    pub panel_background: Option<String>,
1111
1112    #[serde(
1113        default,
1114        rename = "panel.border",
1115        deserialize_with = "empty_string_as_none"
1116    )]
1117    pub panel_border: Option<String>,
1118
1119    #[serde(
1120        default,
1121        rename = "panelTitle.activeBorder",
1122        deserialize_with = "empty_string_as_none"
1123    )]
1124    pub panel_title_active_border: Option<String>,
1125
1126    #[serde(
1127        default,
1128        rename = "panelTitle.activeForeground",
1129        deserialize_with = "empty_string_as_none"
1130    )]
1131    pub panel_title_active_foreground: Option<String>,
1132
1133    #[serde(
1134        default,
1135        rename = "panelTitle.inactiveForeground",
1136        deserialize_with = "empty_string_as_none"
1137    )]
1138    pub panel_title_inactive_foreground: Option<String>,
1139
1140    #[serde(
1141        default,
1142        rename = "scrollbar.shadow",
1143        deserialize_with = "empty_string_as_none"
1144    )]
1145    pub scrollbar_shadow: Option<String>,
1146
1147    #[serde(
1148        default,
1149        rename = "scrollbarSlider.background",
1150        deserialize_with = "empty_string_as_none"
1151    )]
1152    pub scrollbar_slider_background: Option<String>,
1153
1154    #[serde(
1155        default,
1156        rename = "scrollbarSlider.activeBackground",
1157        deserialize_with = "empty_string_as_none"
1158    )]
1159    pub scrollbar_slider_active_background: Option<String>,
1160
1161    #[serde(
1162        default,
1163        rename = "scrollbarSlider.hoverBackground",
1164        deserialize_with = "empty_string_as_none"
1165    )]
1166    pub scrollbar_slider_hover_background: Option<String>,
1167
1168    #[serde(
1169        default,
1170        rename = "statusBar.background",
1171        deserialize_with = "empty_string_as_none"
1172    )]
1173    pub status_bar_background: Option<String>,
1174
1175    #[serde(
1176        default,
1177        rename = "statusBar.border",
1178        deserialize_with = "empty_string_as_none"
1179    )]
1180    pub status_bar_border: Option<String>,
1181
1182    #[serde(
1183        default,
1184        rename = "statusBar.foreground",
1185        deserialize_with = "empty_string_as_none"
1186    )]
1187    pub status_bar_foreground: Option<String>,
1188
1189    #[serde(
1190        default,
1191        rename = "statusBar.debuggingBackground",
1192        deserialize_with = "empty_string_as_none"
1193    )]
1194    pub status_bar_debugging_background: Option<String>,
1195
1196    #[serde(
1197        default,
1198        rename = "statusBar.debuggingForeground",
1199        deserialize_with = "empty_string_as_none"
1200    )]
1201    pub status_bar_debugging_foreground: Option<String>,
1202
1203    #[serde(
1204        default,
1205        rename = "statusBar.noFolderBackground",
1206        deserialize_with = "empty_string_as_none"
1207    )]
1208    pub status_bar_no_folder_background: Option<String>,
1209
1210    #[serde(
1211        default,
1212        rename = "statusBar.noFolderForeground",
1213        deserialize_with = "empty_string_as_none"
1214    )]
1215    pub status_bar_no_folder_foreground: Option<String>,
1216
1217    #[serde(
1218        default,
1219        rename = "statusBarItem.prominentBackground",
1220        deserialize_with = "empty_string_as_none"
1221    )]
1222    pub status_bar_item_prominent_background: Option<String>,
1223
1224    #[serde(
1225        default,
1226        rename = "statusBarItem.prominentHoverBackground",
1227        deserialize_with = "empty_string_as_none"
1228    )]
1229    pub status_bar_item_prominent_hover_background: Option<String>,
1230
1231    #[serde(
1232        default,
1233        rename = "statusBarItem.remoteForeground",
1234        deserialize_with = "empty_string_as_none"
1235    )]
1236    pub status_bar_item_remote_foreground: Option<String>,
1237
1238    #[serde(
1239        default,
1240        rename = "statusBarItem.remoteBackground",
1241        deserialize_with = "empty_string_as_none"
1242    )]
1243    pub status_bar_item_remote_background: Option<String>,
1244
1245    #[serde(
1246        default,
1247        rename = "titleBar.activeBackground",
1248        deserialize_with = "empty_string_as_none"
1249    )]
1250    pub title_bar_active_background: Option<String>,
1251
1252    #[serde(
1253        default,
1254        rename = "titleBar.activeForeground",
1255        deserialize_with = "empty_string_as_none"
1256    )]
1257    pub title_bar_active_foreground: Option<String>,
1258
1259    #[serde(
1260        default,
1261        rename = "titleBar.inactiveBackground",
1262        deserialize_with = "empty_string_as_none"
1263    )]
1264    pub title_bar_inactive_background: Option<String>,
1265
1266    #[serde(
1267        default,
1268        rename = "titleBar.inactiveForeground",
1269        deserialize_with = "empty_string_as_none"
1270    )]
1271    pub title_bar_inactive_foreground: Option<String>,
1272
1273    #[serde(
1274        default,
1275        rename = "extensionButton.prominentForeground",
1276        deserialize_with = "empty_string_as_none"
1277    )]
1278    pub extension_button_prominent_foreground: Option<String>,
1279
1280    #[serde(
1281        default,
1282        rename = "extensionButton.prominentBackground",
1283        deserialize_with = "empty_string_as_none"
1284    )]
1285    pub extension_button_prominent_background: Option<String>,
1286
1287    #[serde(
1288        default,
1289        rename = "extensionButton.prominentHoverBackground",
1290        deserialize_with = "empty_string_as_none"
1291    )]
1292    pub extension_button_prominent_hover_background: Option<String>,
1293
1294    #[serde(
1295        default,
1296        rename = "pickerGroup.border",
1297        deserialize_with = "empty_string_as_none"
1298    )]
1299    pub picker_group_border: Option<String>,
1300
1301    #[serde(
1302        default,
1303        rename = "pickerGroup.foreground",
1304        deserialize_with = "empty_string_as_none"
1305    )]
1306    pub picker_group_foreground: Option<String>,
1307
1308    #[serde(
1309        default,
1310        rename = "debugToolBar.background",
1311        deserialize_with = "empty_string_as_none"
1312    )]
1313    pub debug_tool_bar_background: Option<String>,
1314
1315    #[serde(
1316        default,
1317        rename = "walkThrough.embeddedEditorBackground",
1318        deserialize_with = "empty_string_as_none"
1319    )]
1320    pub walk_through_embedded_editor_background: Option<String>,
1321
1322    #[serde(
1323        default,
1324        rename = "settings.headerForeground",
1325        deserialize_with = "empty_string_as_none"
1326    )]
1327    pub settings_header_foreground: Option<String>,
1328
1329    #[serde(
1330        default,
1331        rename = "settings.modifiedItemIndicator",
1332        deserialize_with = "empty_string_as_none"
1333    )]
1334    pub settings_modified_item_indicator: Option<String>,
1335
1336    #[serde(
1337        default,
1338        rename = "settings.dropdownBackground",
1339        deserialize_with = "empty_string_as_none"
1340    )]
1341    pub settings_dropdown_background: Option<String>,
1342
1343    #[serde(
1344        default,
1345        rename = "settings.dropdownForeground",
1346        deserialize_with = "empty_string_as_none"
1347    )]
1348    pub settings_dropdown_foreground: Option<String>,
1349
1350    #[serde(
1351        default,
1352        rename = "settings.dropdownBorder",
1353        deserialize_with = "empty_string_as_none"
1354    )]
1355    pub settings_dropdown_border: Option<String>,
1356
1357    #[serde(
1358        default,
1359        rename = "settings.checkboxBackground",
1360        deserialize_with = "empty_string_as_none"
1361    )]
1362    pub settings_checkbox_background: Option<String>,
1363
1364    #[serde(
1365        default,
1366        rename = "settings.checkboxForeground",
1367        deserialize_with = "empty_string_as_none"
1368    )]
1369    pub settings_checkbox_foreground: Option<String>,
1370
1371    #[serde(
1372        default,
1373        rename = "settings.checkboxBorder",
1374        deserialize_with = "empty_string_as_none"
1375    )]
1376    pub settings_checkbox_border: Option<String>,
1377
1378    #[serde(
1379        default,
1380        rename = "settings.textInputBackground",
1381        deserialize_with = "empty_string_as_none"
1382    )]
1383    pub settings_text_input_background: Option<String>,
1384
1385    #[serde(
1386        default,
1387        rename = "settings.textInputForeground",
1388        deserialize_with = "empty_string_as_none"
1389    )]
1390    pub settings_text_input_foreground: Option<String>,
1391
1392    #[serde(
1393        default,
1394        rename = "settings.textInputBorder",
1395        deserialize_with = "empty_string_as_none"
1396    )]
1397    pub settings_text_input_border: Option<String>,
1398
1399    #[serde(
1400        default,
1401        rename = "settings.numberInputBackground",
1402        deserialize_with = "empty_string_as_none"
1403    )]
1404    pub settings_number_input_background: Option<String>,
1405
1406    #[serde(
1407        default,
1408        rename = "settings.numberInputForeground",
1409        deserialize_with = "empty_string_as_none"
1410    )]
1411    pub settings_number_input_foreground: Option<String>,
1412
1413    #[serde(
1414        default,
1415        rename = "settings.numberInputBorder",
1416        deserialize_with = "empty_string_as_none"
1417    )]
1418    pub settings_number_input_border: Option<String>,
1419
1420    #[serde(
1421        default,
1422        rename = "breadcrumb.foreground",
1423        deserialize_with = "empty_string_as_none"
1424    )]
1425    pub breadcrumb_foreground: Option<String>,
1426
1427    #[serde(
1428        default,
1429        rename = "breadcrumb.background",
1430        deserialize_with = "empty_string_as_none"
1431    )]
1432    pub breadcrumb_background: Option<String>,
1433
1434    #[serde(
1435        default,
1436        rename = "breadcrumb.focusForeground",
1437        deserialize_with = "empty_string_as_none"
1438    )]
1439    pub breadcrumb_focus_foreground: Option<String>,
1440
1441    #[serde(
1442        default,
1443        rename = "breadcrumb.activeSelectionForeground",
1444        deserialize_with = "empty_string_as_none"
1445    )]
1446    pub breadcrumb_active_selection_foreground: Option<String>,
1447
1448    #[serde(
1449        default,
1450        rename = "breadcrumbPicker.background",
1451        deserialize_with = "empty_string_as_none"
1452    )]
1453    pub breadcrumb_picker_background: Option<String>,
1454
1455    #[serde(
1456        default,
1457        rename = "listFilterWidget.background",
1458        deserialize_with = "empty_string_as_none"
1459    )]
1460    pub list_filter_widget_background: Option<String>,
1461
1462    #[serde(
1463        default,
1464        rename = "listFilterWidget.outline",
1465        deserialize_with = "empty_string_as_none"
1466    )]
1467    pub list_filter_widget_outline: Option<String>,
1468
1469    #[serde(
1470        default,
1471        rename = "listFilterWidget.noMatchesOutline",
1472        deserialize_with = "empty_string_as_none"
1473    )]
1474    pub list_filter_widget_no_matches_outline: Option<String>,
1475}