1pub(crate) struct DarkPlus;
2
3const DARK_BLUE: dialect::Rgb = dialect::rgb!(86, 156, 214);
4const DARK_GREEN: dialect::Rgb = dialect::rgb!(107, 153, 85);
5const DULL_GREEN_DARKER: dialect::Rgb = dialect::rgb!(181, 206, 168);
6const FADED: dialect::Rgb = dialect::rgb!(178, 178, 178);
7const GREEN: dialect::Rgb = dialect::rgb!(134, 198, 145);
8const DULL_GREEN: dialect::Rgb = dialect::rgb!(184, 215, 163);
9const LIGHT_BLUE: dialect::Rgb = dialect::rgb!(156, 220, 254);
10const ORANGE: dialect::Rgb = dialect::rgb!(206, 144, 120);
11const PURPLE: dialect::Rgb = dialect::rgb!(197, 134, 192);
12const RED: dialect::Rgb = dialect::rgb!(244, 71, 71);
13const TEAL: dialect::Rgb = dialect::rgb!(78, 201, 176);
14const YELLOW: dialect::Rgb = dialect::rgb!(220, 220, 170);
15
16impl dialect::Theme for DarkPlus {
17 fn default_style(&self) -> dialect::ResolvedStyle {
18 dialect::ResolvedStyle {
19 fg_color: dialect::rgb!(212, 212, 212),
20 bg_color: dialect::rgb!(30, 30, 30),
21 is_bold: false,
22 is_italic: false,
23 is_underline: false,
24 }
25 }
26
27 fn style(&self, group: dialect::HighlightGroup) -> dialect::Style {
28 match group {
29 dialect::HighlightGroup::CtrlFlowKeyword => dialect::Style {
30 fg_color: Some(PURPLE),
31 bg_color: None,
32 is_bold: false,
33 is_italic: false,
34 is_underline: false,
35 },
36
37 dialect::HighlightGroup::OtherKeyword
39 | dialect::HighlightGroup::PrimitiveTy
40 | dialect::HighlightGroup::Boolean => dialect::Style {
41 fg_color: Some(DARK_BLUE),
42 bg_color: None,
43 is_bold: false,
44 is_italic: false,
45 is_underline: false,
46 },
47
48 dialect::HighlightGroup::FunctionDef
50 | dialect::HighlightGroup::FunctionCall
51 | dialect::HighlightGroup::MacroDef
52 | dialect::HighlightGroup::MacroUse => dialect::Style {
53 fg_color: Some(YELLOW),
54 bg_color: None,
55 is_bold: false,
56 is_italic: false,
57 is_underline: false,
58 },
59
60 dialect::HighlightGroup::TyDef | dialect::HighlightGroup::TyUse => dialect::Style {
61 fg_color: Some(TEAL),
62 bg_color: None,
63 is_bold: false,
64 is_italic: false,
65 is_underline: false,
66 },
67
68 dialect::HighlightGroup::InterfaceDef | dialect::HighlightGroup::InterfaceUse => {
69 dialect::Style {
70 fg_color: Some(DULL_GREEN),
71 bg_color: None,
72 is_bold: false,
73 is_italic: false,
74 is_underline: false,
75 }
76 }
77
78 dialect::HighlightGroup::VariableDef
79 | dialect::HighlightGroup::VariableUse
80 | dialect::HighlightGroup::MemberDef
81 | dialect::HighlightGroup::MemberUse
82 | dialect::HighlightGroup::ConstantDef
83 | dialect::HighlightGroup::ConstantUse
84 | dialect::HighlightGroup::FunctionParam => dialect::Style {
85 fg_color: Some(LIGHT_BLUE),
86 bg_color: None,
87 is_bold: false,
88 is_italic: false,
89 is_underline: false,
90 },
91
92 dialect::HighlightGroup::SpecialIdentDef | dialect::HighlightGroup::SpecialIdentUse => {
93 dialect::Style {
94 fg_color: Some(GREEN),
102 bg_color: None,
103 is_bold: false,
104 is_italic: false,
105 is_underline: false,
106 }
107 }
108
109 dialect::HighlightGroup::ModuleDef | dialect::HighlightGroup::ModuleUse => {
111 dialect::Style {
112 fg_color: None,
113 bg_color: None,
114 is_bold: false,
115 is_italic: false,
116 is_underline: false,
117 }
118 }
119
120 dialect::HighlightGroup::Number => dialect::Style {
121 fg_color: Some(DULL_GREEN_DARKER),
122 bg_color: None,
123 is_bold: false,
124 is_italic: false,
125 is_underline: false,
126 },
127
128 dialect::HighlightGroup::String
129 | dialect::HighlightGroup::StringDelimiter
130 | dialect::HighlightGroup::Character
131 | dialect::HighlightGroup::CharacterDelimiter => dialect::Style {
132 fg_color: Some(ORANGE),
133 bg_color: None,
134 is_bold: false,
135 is_italic: false,
136 is_underline: false,
137 },
138
139 dialect::HighlightGroup::PreProc => dialect::Style {
140 fg_color: Some(DARK_BLUE),
141 bg_color: None,
142 is_bold: false,
143 is_italic: false,
144 is_underline: false,
145 },
146
147 dialect::HighlightGroup::Attribute => dialect::Style {
148 fg_color: Some(FADED),
149 bg_color: None,
150 is_bold: false,
151 is_italic: false,
152 is_underline: false,
153 },
154
155 dialect::HighlightGroup::Comment | dialect::HighlightGroup::DocComment => {
156 dialect::Style {
157 fg_color: Some(DARK_GREEN),
158 bg_color: None,
159 is_bold: false,
160 is_italic: false,
161 is_underline: false,
162 }
163 }
164
165 dialect::HighlightGroup::MemberOper
167 | dialect::HighlightGroup::PointerOper
168 | dialect::HighlightGroup::AssignOper
169 | dialect::HighlightGroup::BinaryOper
170 | dialect::HighlightGroup::OtherOper
171 | dialect::HighlightGroup::Delimiter
172 | dialect::HighlightGroup::Separator
173 | dialect::HighlightGroup::Terminator => dialect::Style {
174 fg_color: Some(FADED),
175 bg_color: None,
176 is_bold: false,
177 is_italic: false,
178 is_underline: false,
179 },
180
181 dialect::HighlightGroup::Error => dialect::Style {
182 fg_color: Some(RED),
183 bg_color: None,
184 is_bold: false,
185 is_italic: false,
186 is_underline: true,
187 },
188 }
189 }
190}