Pull hint colors from VS Code themes (#3543)

Marshall Bowers created

This PR updates the `theme_importer` to pull hint colors from VS Code
themes.

Release Notes:

- N/A

Change summary

crates/theme2/src/themes/andromeda.rs         |   2 
crates/theme2/src/themes/ayu.rs               |   3 
crates/theme2/src/themes/dracula.rs           |   1 
crates/theme2/src/themes/gruvbox.rs           |   6 
crates/theme2/src/themes/night_owl.rs         |   2 
crates/theme2/src/themes/noctis.rs            |  11 
crates/theme2/src/themes/nord.rs              |   1 
crates/theme2/src/themes/palenight.rs         |   3 
crates/theme2/src/themes/rose_pine.rs         |   3 
crates/theme2/src/themes/solarized.rs         |   2 
crates/theme2/src/themes/synthwave_84.rs      |   1 
crates/theme_importer/src/theme_printer.rs    |   3 
crates/theme_importer/src/vscode/converter.rs |  70 -----
crates/theme_importer/src/vscode/syntax.rs    | 240 ++++++++++----------
crates/theme_importer/src/vscode/theme.rs     |  12 +
15 files changed, 183 insertions(+), 177 deletions(-)

Detailed changes

crates/theme2/src/themes/andromeda.rs 🔗

@@ -58,6 +58,7 @@ pub fn andromeda() -> UserThemeFamily {
                         deleted: Some(rgba(0xfc634cff).into()),
                         error: Some(rgba(0xfc634cff).into()),
                         hidden: Some(rgba(0x746f77ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -201,6 +202,7 @@ pub fn andromeda() -> UserThemeFamily {
                         deleted: Some(rgba(0xfc634cff).into()),
                         error: Some(rgba(0xfc634cff).into()),
                         hidden: Some(rgba(0x746f77ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {

crates/theme2/src/themes/ayu.rs 🔗

@@ -62,6 +62,7 @@ pub fn ayu() -> UserThemeFamily {
                         deleted: Some(rgba(0xe65050ff).into()),
                         error: Some(rgba(0xe65050ff).into()),
                         hidden: Some(rgba(0x8a9199ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -324,6 +325,7 @@ pub fn ayu() -> UserThemeFamily {
                         deleted: Some(rgba(0xff6565ff).into()),
                         error: Some(rgba(0xff6565ff).into()),
                         hidden: Some(rgba(0x707a8cff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -586,6 +588,7 @@ pub fn ayu() -> UserThemeFamily {
                         deleted: Some(rgba(0xd95757ff).into()),
                         error: Some(rgba(0xd95757ff).into()),
                         hidden: Some(rgba(0x565b66ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {

crates/theme2/src/themes/dracula.rs 🔗

@@ -62,6 +62,7 @@ pub fn dracula() -> UserThemeFamily {
                     deleted: Some(rgba(0xff5555ff).into()),
                     error: Some(rgba(0xff5555ff).into()),
                     hidden: Some(rgba(0x6272a4ff).into()),
+                    hint: Some(rgba(0x969696ff).into()),
                     warning: Some(rgba(0xffb76bff).into()),
                     ..Default::default()
                 },

crates/theme2/src/themes/gruvbox.rs 🔗

@@ -61,6 +61,7 @@ pub fn gruvbox() -> UserThemeFamily {
                         deleted: Some(rgba(0xfb4833ff).into()),
                         error: Some(rgba(0xfb4833ff).into()),
                         hidden: Some(rgba(0xa89984ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -251,6 +252,7 @@ pub fn gruvbox() -> UserThemeFamily {
                         deleted: Some(rgba(0xfb4833ff).into()),
                         error: Some(rgba(0xfb4833ff).into()),
                         hidden: Some(rgba(0xa89984ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -441,6 +443,7 @@ pub fn gruvbox() -> UserThemeFamily {
                         deleted: Some(rgba(0xfb4833ff).into()),
                         error: Some(rgba(0xfb4833ff).into()),
                         hidden: Some(rgba(0xa89984ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -631,6 +634,7 @@ pub fn gruvbox() -> UserThemeFamily {
                         deleted: Some(rgba(0x9d0006ff).into()),
                         error: Some(rgba(0x9d0006ff).into()),
                         hidden: Some(rgba(0x7c6f64ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -821,6 +825,7 @@ pub fn gruvbox() -> UserThemeFamily {
                         deleted: Some(rgba(0x9d0006ff).into()),
                         error: Some(rgba(0x9d0006ff).into()),
                         hidden: Some(rgba(0x7c6f64ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -1011,6 +1016,7 @@ pub fn gruvbox() -> UserThemeFamily {
                         deleted: Some(rgba(0x9d0006ff).into()),
                         error: Some(rgba(0x9d0006ff).into()),
                         hidden: Some(rgba(0x7c6f64ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {

crates/theme2/src/themes/night_owl.rs 🔗

@@ -62,6 +62,7 @@ pub fn night_owl() -> UserThemeFamily {
                         deleted: Some(rgba(0xef524fff).into()),
                         error: Some(rgba(0xef524fff).into()),
                         hidden: Some(rgba(0x5f7e97ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -242,6 +243,7 @@ pub fn night_owl() -> UserThemeFamily {
                         deleted: Some(rgba(0x403f53ff).into()),
                         error: Some(rgba(0x403f53ff).into()),
                         hidden: Some(rgba(0x403f53ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xdaa900ff).into()),
                         ..Default::default()
                     },

crates/theme2/src/themes/noctis.rs 🔗

@@ -63,6 +63,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0x9fb6c6ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa857ff).into()),
                         ..Default::default()
                     },
@@ -282,6 +283,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0xbbaab0ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa857ff).into()),
                         ..Default::default()
                     },
@@ -501,6 +503,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xff3f00ff).into()),
                         error: Some(rgba(0xff3f00ff).into()),
                         hidden: Some(rgba(0x70838dff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xe07a52ff).into()),
                         ..Default::default()
                     },
@@ -720,6 +723,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xff3f00ff).into()),
                         error: Some(rgba(0xff3f00ff).into()),
                         hidden: Some(rgba(0x74708dff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xe07a52ff).into()),
                         ..Default::default()
                     },
@@ -939,6 +943,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xff3f00ff).into()),
                         error: Some(rgba(0xff3f00ff).into()),
                         hidden: Some(rgba(0x878476ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xe07a52ff).into()),
                         ..Default::default()
                     },
@@ -1158,6 +1163,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xb96245ff).into()),
                         error: Some(rgba(0xb96245ff).into()),
                         hidden: Some(rgba(0x96a8b6ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa857ff).into()),
                         ..Default::default()
                     },
@@ -1377,6 +1383,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0x87a7abff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa487ff).into()),
                         ..Default::default()
                     },
@@ -1596,6 +1603,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0x87a7abff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa487ff).into()),
                         ..Default::default()
                     },
@@ -1815,6 +1823,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0x87a7abff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa487ff).into()),
                         ..Default::default()
                     },
@@ -2034,6 +2043,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0xa9a5c0ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa857ff).into()),
                         ..Default::default()
                     },
@@ -2253,6 +2263,7 @@ pub fn noctis() -> UserThemeFamily {
                         deleted: Some(rgba(0xe34d1bff).into()),
                         error: Some(rgba(0xe34d1bff).into()),
                         hidden: Some(rgba(0xb3a5c0ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         warning: Some(rgba(0xffa857ff).into()),
                         ..Default::default()
                     },

crates/theme2/src/themes/nord.rs 🔗

@@ -62,6 +62,7 @@ pub fn nord() -> UserThemeFamily {
                     deleted: Some(rgba(0xbf616aff).into()),
                     error: Some(rgba(0xbf616aff).into()),
                     hidden: Some(rgba(0xd8dee966).into()),
+                    hint: Some(rgba(0xd8dee9ff).into()),
                     warning: Some(rgba(0xebcb8bff).into()),
                     ..Default::default()
                 },

crates/theme2/src/themes/palenight.rs 🔗

@@ -62,6 +62,7 @@ pub fn palenight() -> UserThemeFamily {
                         deleted: Some(rgba(0xef524fff).into()),
                         error: Some(rgba(0xef524fff).into()),
                         hidden: Some(rgba(0x9199c8ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -268,6 +269,7 @@ pub fn palenight() -> UserThemeFamily {
                         deleted: Some(rgba(0xef524fff).into()),
                         error: Some(rgba(0xef524fff).into()),
                         hidden: Some(rgba(0x9199c8ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -474,6 +476,7 @@ pub fn palenight() -> UserThemeFamily {
                         deleted: Some(rgba(0xef524fff).into()),
                         error: Some(rgba(0xef524fff).into()),
                         hidden: Some(rgba(0x9199c8ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {

crates/theme2/src/themes/rose_pine.rs 🔗

@@ -62,6 +62,7 @@ pub fn rose_pine() -> UserThemeFamily {
                         deleted: Some(rgba(0xeb6f92ff).into()),
                         error: Some(rgba(0xeb6f92ff).into()),
                         hidden: Some(rgba(0x908caaff).into()),
+                        hint: Some(rgba(0x908caaff).into()),
                         warning: Some(rgba(0xf5c177ff).into()),
                         ..Default::default()
                     },
@@ -228,6 +229,7 @@ pub fn rose_pine() -> UserThemeFamily {
                         deleted: Some(rgba(0xeb6f92ff).into()),
                         error: Some(rgba(0xeb6f92ff).into()),
                         hidden: Some(rgba(0x908caaff).into()),
+                        hint: Some(rgba(0x908caaff).into()),
                         warning: Some(rgba(0xf5c177ff).into()),
                         ..Default::default()
                     },
@@ -394,6 +396,7 @@ pub fn rose_pine() -> UserThemeFamily {
                         deleted: Some(rgba(0xb3627aff).into()),
                         error: Some(rgba(0xb3627aff).into()),
                         hidden: Some(rgba(0x797593ff).into()),
+                        hint: Some(rgba(0x797593ff).into()),
                         warning: Some(rgba(0xea9d34ff).into()),
                         ..Default::default()
                     },

crates/theme2/src/themes/solarized.rs 🔗

@@ -59,6 +59,7 @@ pub fn solarized() -> UserThemeFamily {
                         deleted: Some(rgba(0xffeaeaff).into()),
                         error: Some(rgba(0xffeaeaff).into()),
                         hidden: Some(rgba(0x93a1a1ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {
@@ -243,6 +244,7 @@ pub fn solarized() -> UserThemeFamily {
                     },
                     status: StatusColorsRefinement {
                         hidden: Some(rgba(0x586e75ff).into()),
+                        hint: Some(rgba(0x969696ff).into()),
                         ..Default::default()
                     },
                     syntax: Some(UserSyntaxTheme {

crates/theme2/src/themes/synthwave_84.rs 🔗

@@ -47,6 +47,7 @@ pub fn synthwave_84() -> UserThemeFamily {
                 status: StatusColorsRefinement {
                     deleted: Some(rgba(0xfe444fff).into()),
                     error: Some(rgba(0xfe444fff).into()),
+                    hint: Some(rgba(0x969696ff).into()),
                     warning: Some(rgba(0x71f1b7bb).into()),
                     ..Default::default()
                 },

crates/theme_importer/src/theme_printer.rs 🔗

@@ -283,11 +283,14 @@ impl<'a> Debug for StatusColorsRefinementPrinter<'a> {
             ("deleted", self.0.deleted),
             ("error", self.0.error),
             ("hidden", self.0.hidden),
+            ("hint", self.0.hint),
             ("ignored", self.0.ignored),
             ("info", self.0.info),
             ("modified", self.0.modified),
+            ("predictive", self.0.predictive),
             ("renamed", self.0.renamed),
             ("success", self.0.success),
+            ("unreachable", self.0.unreachable),
             ("warning", self.0.warning),
         ];
 

crates/theme_importer/src/vscode/converter.rs 🔗

@@ -1,5 +1,5 @@
 use anyhow::Result;
-use gpui::{Hsla, Rgba};
+use gpui::{rgba, Hsla, Rgba};
 use indexmap::IndexMap;
 use strum::IntoEnumIterator;
 use theme::{
@@ -66,6 +66,11 @@ impl VsCodeThemeConverter {
     fn convert_status_colors(&self) -> Result<StatusColorsRefinement> {
         let vscode_colors = &self.theme.colors;
 
+        let vscode_base_status_colors = StatusColorsRefinement {
+            hint: Some(rgba(0x969696ff).into()),
+            ..Default::default()
+        };
+
         Ok(StatusColorsRefinement {
             // conflict: None,
             // created: None,
@@ -81,6 +86,11 @@ impl VsCodeThemeConverter {
                 .tab_inactive_foreground
                 .as_ref()
                 .traverse(|color| try_parse_color(&color))?,
+            hint: vscode_colors
+                .editor_inlay_hint_foreground
+                .as_ref()
+                .traverse(|color| try_parse_color(&color))?
+                .or(vscode_base_status_colors.hint),
             // ignored: None,
             // info: None,
             // modified: None,
@@ -310,63 +320,5 @@ impl VsCodeThemeConverter {
         Ok(UserSyntaxTheme {
             highlights: highlight_styles.into_iter().collect(),
         })
-
-        // let mut highlight_styles = IndexMap::new();
-
-        // for token_color in self.theme.token_colors {
-        //     highlight_styles.extend(token_color.highlight_styles()?);
-        // }
-
-        // let syntax_theme = UserSyntaxTheme {
-        //     highlights: highlight_styles.into_iter().collect(),
-        // };
-
-        // pub fn highlight_styles(&self) -> Result<IndexMap<String, UserHighlightStyle>> {
-        // let mut highlight_styles = IndexMap::new();
-
-        // for syntax_token in ZedSyntaxToken::iter() {
-        //     let scope = syntax_token.to_scope();
-
-        //     // let token_color =
-        // }
-
-        // let scope = match self.scope {
-        //     Some(VsCodeTokenScope::One(ref scope)) => vec![scope.clone()],
-        //     Some(VsCodeTokenScope::Many(ref scopes)) => scopes.clone(),
-        //     None => return Ok(IndexMap::new()),
-        // };
-
-        // for scope in &scope {
-        //     let Some(syntax_token) = Self::to_zed_token(&scope) else {
-        //         continue;
-        //     };
-
-        //     let highlight_style = UserHighlightStyle {
-        //         color: self
-        //             .settings
-        //             .foreground
-        //             .as_ref()
-        //             .traverse(|color| try_parse_color(&color))?,
-        //         font_style: self
-        //             .settings
-        //             .font_style
-        //             .as_ref()
-        //             .and_then(|style| try_parse_font_style(&style)),
-        //         font_weight: self
-        //             .settings
-        //             .font_style
-        //             .as_ref()
-        //             .and_then(|style| try_parse_font_weight(&style)),
-        //     };
-
-        //     if highlight_style.is_empty() {
-        //         continue;
-        //     }
-
-        //     highlight_styles.insert(syntax_token, highlight_style);
-        // }
-
-        // Ok(highlight_styles)
-        // }
     }
 }

crates/theme_importer/src/vscode/syntax.rs 🔗

@@ -35,94 +35,92 @@ pub struct VsCodeTokenColorSettings {
 
 #[derive(Debug, PartialEq, Copy, Clone, EnumIter)]
 pub enum ZedSyntaxToken {
-    SyntaxAttribute,
-    SyntaxBoolean,
-    SyntaxComment,
-    SyntaxCommentDoc,
-    SyntaxConstant,
-    SyntaxConstructor,
-    SyntaxEmbedded,
-    SyntaxEmphasis,
-    SyntaxEmphasisStrong,
-    SyntaxEnum,
-    SyntaxFunction,
-    SyntaxHint,
-    SyntaxKeyword,
-    SyntaxLabel,
-    SyntaxLinkText,
-    SyntaxLinkUri,
-    SyntaxNumber,
-    SyntaxOperator,
-    SyntaxPredictive,
-    SyntaxPreproc,
-    SyntaxPrimary,
-    SyntaxProperty,
-    SyntaxPunctuation,
-    SyntaxPunctuationBracket,
-    SyntaxPunctuationDelimiter,
-    SyntaxPunctuationListMarker,
-    SyntaxPunctuationSpecial,
-    SyntaxString,
-    SyntaxStringEscape,
-    SyntaxStringRegex,
-    SyntaxStringSpecial,
-    SyntaxStringSpecialSymbol,
-    SyntaxTag,
-    SyntaxTextLiteral,
-    SyntaxTitle,
-    SyntaxType,
-    SyntaxVariable,
-    SyntaxVariableSpecial,
-    SyntaxVariant,
+    Attribute,
+    Boolean,
+    Comment,
+    CommentDoc,
+    Constant,
+    Constructor,
+    Embedded,
+    Emphasis,
+    EmphasisStrong,
+    Enum,
+    Function,
+    Hint,
+    Keyword,
+    Label,
+    LinkText,
+    LinkUri,
+    Number,
+    Operator,
+    Predictive,
+    Preproc,
+    Primary,
+    Property,
+    Punctuation,
+    PunctuationBracket,
+    PunctuationDelimiter,
+    PunctuationListMarker,
+    PunctuationSpecial,
+    String,
+    StringEscape,
+    StringRegex,
+    StringSpecial,
+    StringSpecialSymbol,
+    Tag,
+    TextLiteral,
+    Title,
+    Type,
+    Variable,
+    VariableSpecial,
+    Variant,
 }
 
 impl std::fmt::Display for ZedSyntaxToken {
     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        use ZedSyntaxToken::*;
-
         write!(
             f,
             "{}",
             match self {
-                SyntaxAttribute => "attribute",
-                SyntaxBoolean => "boolean",
-                SyntaxComment => "comment",
-                SyntaxCommentDoc => "comment.doc",
-                SyntaxConstant => "constant",
-                SyntaxConstructor => "constructor",
-                SyntaxEmbedded => "embedded",
-                SyntaxEmphasis => "emphasis",
-                SyntaxEmphasisStrong => "emphasis.strong",
-                SyntaxEnum => "enum",
-                SyntaxFunction => "function",
-                SyntaxHint => "hint",
-                SyntaxKeyword => "keyword",
-                SyntaxLabel => "label",
-                SyntaxLinkText => "link_text",
-                SyntaxLinkUri => "link_uri",
-                SyntaxNumber => "number",
-                SyntaxOperator => "operator",
-                SyntaxPredictive => "predictive",
-                SyntaxPreproc => "preproc",
-                SyntaxPrimary => "primary",
-                SyntaxProperty => "property",
-                SyntaxPunctuation => "punctuation",
-                SyntaxPunctuationBracket => "punctuation.bracket",
-                SyntaxPunctuationDelimiter => "punctuation.delimiter",
-                SyntaxPunctuationListMarker => "punctuation.list_marker",
-                SyntaxPunctuationSpecial => "punctuation.special",
-                SyntaxString => "string",
-                SyntaxStringEscape => "string.escape",
-                SyntaxStringRegex => "string.regex",
-                SyntaxStringSpecial => "string.special",
-                SyntaxStringSpecialSymbol => "string.special.symbol",
-                SyntaxTag => "tag",
-                SyntaxTextLiteral => "text.literal",
-                SyntaxTitle => "title",
-                SyntaxType => "type",
-                SyntaxVariable => "variable",
-                SyntaxVariableSpecial => "variable.special",
-                SyntaxVariant => "variant",
+                ZedSyntaxToken::Attribute => "attribute",
+                ZedSyntaxToken::Boolean => "boolean",
+                ZedSyntaxToken::Comment => "comment",
+                ZedSyntaxToken::CommentDoc => "comment.doc",
+                ZedSyntaxToken::Constant => "constant",
+                ZedSyntaxToken::Constructor => "constructor",
+                ZedSyntaxToken::Embedded => "embedded",
+                ZedSyntaxToken::Emphasis => "emphasis",
+                ZedSyntaxToken::EmphasisStrong => "emphasis.strong",
+                ZedSyntaxToken::Enum => "enum",
+                ZedSyntaxToken::Function => "function",
+                ZedSyntaxToken::Hint => "hint",
+                ZedSyntaxToken::Keyword => "keyword",
+                ZedSyntaxToken::Label => "label",
+                ZedSyntaxToken::LinkText => "link_text",
+                ZedSyntaxToken::LinkUri => "link_uri",
+                ZedSyntaxToken::Number => "number",
+                ZedSyntaxToken::Operator => "operator",
+                ZedSyntaxToken::Predictive => "predictive",
+                ZedSyntaxToken::Preproc => "preproc",
+                ZedSyntaxToken::Primary => "primary",
+                ZedSyntaxToken::Property => "property",
+                ZedSyntaxToken::Punctuation => "punctuation",
+                ZedSyntaxToken::PunctuationBracket => "punctuation.bracket",
+                ZedSyntaxToken::PunctuationDelimiter => "punctuation.delimiter",
+                ZedSyntaxToken::PunctuationListMarker => "punctuation.list_marker",
+                ZedSyntaxToken::PunctuationSpecial => "punctuation.special",
+                ZedSyntaxToken::String => "string",
+                ZedSyntaxToken::StringEscape => "string.escape",
+                ZedSyntaxToken::StringRegex => "string.regex",
+                ZedSyntaxToken::StringSpecial => "string.special",
+                ZedSyntaxToken::StringSpecialSymbol => "string.special.symbol",
+                ZedSyntaxToken::Tag => "tag",
+                ZedSyntaxToken::TextLiteral => "text.literal",
+                ZedSyntaxToken::Title => "title",
+                ZedSyntaxToken::Type => "type",
+                ZedSyntaxToken::Variable => "variable",
+                ZedSyntaxToken::VariableSpecial => "variable.special",
+                ZedSyntaxToken::Variant => "variant",
             }
         )
     }
@@ -130,47 +128,47 @@ impl std::fmt::Display for ZedSyntaxToken {
 
 impl ZedSyntaxToken {
     pub fn to_vscode(&self) -> Vec<&'static str> {
-        use ZedSyntaxToken::*;
-
         match self {
-            SyntaxAttribute => vec!["entity.other.attribute-name"],
-            SyntaxBoolean => vec!["constant.language"],
-            SyntaxComment => vec!["comment"],
-            SyntaxCommentDoc => vec!["comment.block.documentation"],
-            SyntaxConstant => vec!["constant.character"],
-            SyntaxConstructor => vec!["entity.name.function.definition.special.constructor"],
-            SyntaxEmbedded => vec!["meta.embedded"],
-            SyntaxEmphasis => vec!["markup.italic"],
-            SyntaxEmphasisStrong => vec![
+            ZedSyntaxToken::Attribute => vec!["entity.other.attribute-name"],
+            ZedSyntaxToken::Boolean => vec!["constant.language"],
+            ZedSyntaxToken::Comment => vec!["comment"],
+            ZedSyntaxToken::CommentDoc => vec!["comment.block.documentation"],
+            ZedSyntaxToken::Constant => vec!["constant.character"],
+            ZedSyntaxToken::Constructor => {
+                vec!["entity.name.function.definition.special.constructor"]
+            }
+            ZedSyntaxToken::Embedded => vec!["meta.embedded"],
+            ZedSyntaxToken::Emphasis => vec!["markup.italic"],
+            ZedSyntaxToken::EmphasisStrong => vec![
                 "markup.bold",
                 "markup.italic markup.bold",
                 "markup.bold markup.italic",
             ],
-            SyntaxEnum => vec!["support.type.enum"],
-            SyntaxFunction => vec![
+            ZedSyntaxToken::Enum => vec!["support.type.enum"],
+            ZedSyntaxToken::Function => vec![
                 "entity.name.function",
                 "variable.function",
                 "support.function",
             ],
-            SyntaxKeyword => vec!["keyword"],
-            SyntaxLabel => vec![
+            ZedSyntaxToken::Keyword => vec!["keyword"],
+            ZedSyntaxToken::Label => vec![
                 "label",
                 "entity.name",
                 "entity.name.import",
                 "entity.name.package",
             ],
-            SyntaxLinkText => vec!["markup.underline.link", "string.other.link"],
-            SyntaxLinkUri => vec!["markup.underline.link", "string.other.link"],
-            SyntaxNumber => vec!["constant.numeric", "number"],
-            SyntaxOperator => vec!["operator", "keyword.operator"],
-            SyntaxPreproc => vec!["preproc"],
-            SyntaxProperty => vec![
+            ZedSyntaxToken::LinkText => vec!["markup.underline.link", "string.other.link"],
+            ZedSyntaxToken::LinkUri => vec!["markup.underline.link", "string.other.link"],
+            ZedSyntaxToken::Number => vec!["constant.numeric", "number"],
+            ZedSyntaxToken::Operator => vec!["operator", "keyword.operator"],
+            ZedSyntaxToken::Preproc => vec!["preproc"],
+            ZedSyntaxToken::Property => vec![
                 "variable.member",
                 "support.type.property-name",
                 "variable.object.property",
                 "variable.other.field",
             ],
-            SyntaxPunctuation => vec![
+            ZedSyntaxToken::Punctuation => vec![
                 "punctuation",
                 "punctuation.section",
                 "punctuation.accessor",
@@ -178,40 +176,46 @@ impl ZedSyntaxToken {
                 "punctuation.terminator",
                 "punctuation.definition.tag",
             ],
-            SyntaxPunctuationBracket => vec![
+            ZedSyntaxToken::PunctuationBracket => vec![
                 "punctuation.bracket",
                 "punctuation.definition.tag.begin",
                 "punctuation.definition.tag.end",
             ],
-            SyntaxPunctuationDelimiter => vec![
+            ZedSyntaxToken::PunctuationDelimiter => vec![
                 "punctuation.delimiter",
                 "punctuation.separator",
                 "punctuation.terminator",
             ],
-            SyntaxPunctuationListMarker => vec!["markup.list punctuation.definition.list.begin"],
-            SyntaxPunctuationSpecial => vec!["punctuation.special"],
-            SyntaxString => vec!["string"],
-            SyntaxStringEscape => vec!["string.escape", "constant.character", "constant.other"],
-            SyntaxStringRegex => vec!["string.regex"],
-            SyntaxStringSpecial => vec!["string.special", "constant.other.symbol"],
-            SyntaxStringSpecialSymbol => vec!["string.special.symbol", "constant.other.symbol"],
-            SyntaxTag => vec!["tag", "entity.name.tag", "meta.tag.sgml"],
-            SyntaxTextLiteral => vec!["text.literal", "string"],
-            SyntaxTitle => vec!["title", "entity.name"],
-            SyntaxType => vec!["entity.name.type", "support.type", "support.class"],
-            SyntaxVariable => vec![
+            ZedSyntaxToken::PunctuationListMarker => {
+                vec!["markup.list punctuation.definition.list.begin"]
+            }
+            ZedSyntaxToken::PunctuationSpecial => vec!["punctuation.special"],
+            ZedSyntaxToken::String => vec!["string"],
+            ZedSyntaxToken::StringEscape => {
+                vec!["string.escape", "constant.character", "constant.other"]
+            }
+            ZedSyntaxToken::StringRegex => vec!["string.regex"],
+            ZedSyntaxToken::StringSpecial => vec!["string.special", "constant.other.symbol"],
+            ZedSyntaxToken::StringSpecialSymbol => {
+                vec!["string.special.symbol", "constant.other.symbol"]
+            }
+            ZedSyntaxToken::Tag => vec!["tag", "entity.name.tag", "meta.tag.sgml"],
+            ZedSyntaxToken::TextLiteral => vec!["text.literal", "string"],
+            ZedSyntaxToken::Title => vec!["title", "entity.name"],
+            ZedSyntaxToken::Type => vec!["entity.name.type", "support.type", "support.class"],
+            ZedSyntaxToken::Variable => vec![
                 "variable",
                 "variable.language",
                 "variable.member",
                 "variable.parameter.function-call",
             ],
-            SyntaxVariableSpecial => vec![
+            ZedSyntaxToken::VariableSpecial => vec![
                 "variable.special",
                 "variable.member",
                 "variable.annotation",
                 "variable.language",
             ],
-            SyntaxVariant => vec!["variant"],
+            ZedSyntaxToken::Variant => vec!["variant"],
             _ => vec![],
         }
     }

crates/theme_importer/src/vscode/theme.rs 🔗

@@ -163,6 +163,18 @@ pub struct VsCodeColors {
     pub editor_foreground: Option<String>,
     #[serde(rename = "editor.background")]
     pub editor_background: Option<String>,
+    #[serde(rename = "editorInlayHint.foreground")]
+    pub editor_inlay_hint_foreground: Option<String>,
+    #[serde(rename = "editorInlayHint.background")]
+    pub editor_inlay_hint_background: Option<String>,
+    #[serde(rename = "editorInlayHint.parameterForeground")]
+    pub editor_inlay_hint_parameter_foreground: Option<String>,
+    #[serde(rename = "editorInlayHint.parameterBackground")]
+    pub editor_inlay_hint_parameter_background: Option<String>,
+    #[serde(rename = "editorInlayHint.typForeground")]
+    pub editor_inlay_hint_typ_foreground: Option<String>,
+    #[serde(rename = "editorInlayHint.typBackground")]
+    pub editor_inlay_hint_typ_background: Option<String>,
     #[serde(rename = "editorLineNumber.foreground")]
     pub editor_line_number_foreground: Option<String>,
     #[serde(rename = "editor.selectionBackground")]