Pull hint colors from VS Code themes (#3543)

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

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2023-12-07 16:11:56 -05:00 committed by GitHub
commit d23bba5b18
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 183 additions and 177 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
use anyhow::Result; use anyhow::Result;
use gpui::{Hsla, Rgba}; use gpui::{rgba, Hsla, Rgba};
use indexmap::IndexMap; use indexmap::IndexMap;
use strum::IntoEnumIterator; use strum::IntoEnumIterator;
use theme::{ use theme::{
@ -66,6 +66,11 @@ impl VsCodeThemeConverter {
fn convert_status_colors(&self) -> Result<StatusColorsRefinement> { fn convert_status_colors(&self) -> Result<StatusColorsRefinement> {
let vscode_colors = &self.theme.colors; let vscode_colors = &self.theme.colors;
let vscode_base_status_colors = StatusColorsRefinement {
hint: Some(rgba(0x969696ff).into()),
..Default::default()
};
Ok(StatusColorsRefinement { Ok(StatusColorsRefinement {
// conflict: None, // conflict: None,
// created: None, // created: None,
@ -81,6 +86,11 @@ impl VsCodeThemeConverter {
.tab_inactive_foreground .tab_inactive_foreground
.as_ref() .as_ref()
.traverse(|color| try_parse_color(&color))?, .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, // ignored: None,
// info: None, // info: None,
// modified: None, // modified: None,
@ -310,63 +320,5 @@ impl VsCodeThemeConverter {
Ok(UserSyntaxTheme { Ok(UserSyntaxTheme {
highlights: highlight_styles.into_iter().collect(), 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)
// }
} }
} }

View file

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

View file

@ -163,6 +163,18 @@ pub struct VsCodeColors {
pub editor_foreground: Option<String>, pub editor_foreground: Option<String>,
#[serde(rename = "editor.background")] #[serde(rename = "editor.background")]
pub editor_background: Option<String>, 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")] #[serde(rename = "editorLineNumber.foreground")]
pub editor_line_number_foreground: Option<String>, pub editor_line_number_foreground: Option<String>,
#[serde(rename = "editor.selectionBackground")] #[serde(rename = "editor.selectionBackground")]