Pass proper theme colors for inlays and suggestions

This commit is contained in:
Kirill Bulatov 2023-12-06 21:38:30 +02:00
parent 147c99f1a7
commit f76e1cfd91
5 changed files with 30 additions and 19 deletions

View file

@ -24,7 +24,7 @@ use lsp::DiagnosticSeverity;
use std::{any::TypeId, borrow::Cow, fmt::Debug, num::NonZeroU32, ops::Range, sync::Arc}; use std::{any::TypeId, borrow::Cow, fmt::Debug, num::NonZeroU32, ops::Range, sync::Arc};
use sum_tree::{Bias, TreeMap}; use sum_tree::{Bias, TreeMap};
use tab_map::TabMap; use tab_map::TabMap;
use theme::{SyntaxTheme, Theme}; use theme::{StatusColors, SyntaxTheme, Theme};
use wrap_map::WrapMap; use wrap_map::WrapMap;
pub use block_map::{ pub use block_map::{
@ -513,8 +513,8 @@ impl DisplaySnapshot {
self.chunks( self.chunks(
display_rows, display_rows,
language_aware, language_aware,
Some(editor_style.syntax.inlay_style), Some(editor_style.hints_style),
Some(editor_style.syntax.suggestion_style), Some(editor_style.suggestions_style),
) )
.map(|chunk| { .map(|chunk| {
let mut highlight_style = chunk let mut highlight_style = chunk

View file

@ -499,6 +499,8 @@ pub struct EditorStyle {
pub scrollbar_width: Pixels, pub scrollbar_width: Pixels,
pub syntax: Arc<SyntaxTheme>, pub syntax: Arc<SyntaxTheme>,
pub diagnostic_style: DiagnosticStyle, pub diagnostic_style: DiagnosticStyle,
pub hints_style: HighlightStyle,
pub suggestions_style: HighlightStyle,
} }
type CompletionId = usize; type CompletionId = usize;
@ -7640,6 +7642,18 @@ impl Editor {
.editor_style .editor_style
.diagnostic_style .diagnostic_style
.clone(), .clone(),
// todo!("what about the rest of the highlight style parts for inlays and suggestions?")
hints_style: HighlightStyle {
color: Some(cx.theme().status().hint),
font_weight: Some(FontWeight::BOLD),
fade_out: Some(0.6),
..HighlightStyle::default()
},
suggestions_style: HighlightStyle {
color: Some(cx.theme().status().predictive),
fade_out: Some(0.6),
..HighlightStyle::default()
},
}, },
)) ))
.into_any_element() .into_any_element()
@ -9302,6 +9316,19 @@ impl Render for Editor {
scrollbar_width: px(12.), scrollbar_width: px(12.),
syntax: cx.theme().syntax().clone(), syntax: cx.theme().syntax().clone(),
diagnostic_style: cx.theme().diagnostic_style(), diagnostic_style: cx.theme().diagnostic_style(),
// TODO kb find `HighlightStyle` usages
// todo!("what about the rest of the highlight style parts?")
hints_style: HighlightStyle {
color: Some(cx.theme().status().hint),
font_weight: Some(FontWeight::BOLD),
fade_out: Some(0.6),
..HighlightStyle::default()
},
suggestions_style: HighlightStyle {
color: Some(cx.theme().status().predictive),
fade_out: Some(0.6),
..HighlightStyle::default()
},
}, },
) )
} }

View file

@ -95,8 +95,6 @@ mod tests {
.iter() .iter()
.map(|(name, color)| (name.to_string(), (*color).into())) .map(|(name, color)| (name.to_string(), (*color).into()))
.collect(), .collect(),
inlay_style: HighlightStyle::default(),
suggestion_style: HighlightStyle::default(),
}; };
let capture_names = &[ let capture_names = &[

View file

@ -191,8 +191,6 @@ pub(crate) fn one_dark() -> Theme {
("variable.special".into(), red.into()), ("variable.special".into(), red.into()),
("variant".into(), HighlightStyle::default()), ("variant".into(), HighlightStyle::default()),
], ],
inlay_style: HighlightStyle::default(),
suggestion_style: HighlightStyle::default(),
}), }),
}, },
} }

View file

@ -8,12 +8,6 @@ use crate::{
#[derive(Clone, Default)] #[derive(Clone, Default)]
pub struct SyntaxTheme { pub struct SyntaxTheme {
pub highlights: Vec<(String, HighlightStyle)>, pub highlights: Vec<(String, HighlightStyle)>,
// todo!("Remove this in favor of StatusColor.hint")
// If this should be overridable we should move it to ThemeColors
pub inlay_style: HighlightStyle,
// todo!("Remove this in favor of StatusColor.prediction")
// If this should be overridable we should move it to ThemeColors
pub suggestion_style: HighlightStyle,
} }
impl SyntaxTheme { impl SyntaxTheme {
@ -72,8 +66,6 @@ impl SyntaxTheme {
("variable.special".into(), red().light().step_9().into()), ("variable.special".into(), red().light().step_9().into()),
("variant".into(), red().light().step_9().into()), ("variant".into(), red().light().step_9().into()),
], ],
inlay_style: tomato().light().step_1().into(), // todo!("nate: use a proper style")
suggestion_style: orange().light().step_1().into(), // todo!("nate: use proper style")
} }
} }
@ -132,8 +124,6 @@ impl SyntaxTheme {
("variable.special".into(), red().dark().step_11().into()), ("variable.special".into(), red().dark().step_11().into()),
("variant".into(), red().dark().step_11().into()), ("variant".into(), red().dark().step_11().into()),
], ],
inlay_style: neutral().dark().step_11().into(), // todo!("nate: use a proper style")
suggestion_style: orange().dark().step_11().into(), // todo!("nate: use a proper style")
} }
} }
@ -152,8 +142,6 @@ impl SyntaxTheme {
) )
}) })
.collect(), .collect(),
inlay_style: HighlightStyle::default(),
suggestion_style: HighlightStyle::default(),
} }
} }