194 lines
4.2 KiB
C++
194 lines
4.2 KiB
C++
#include "internal/theme/theme.h"
|
|
|
|
namespace bed::internal::theme {
|
|
Theme::Theme() {
|
|
hl.fill({
|
|
.fg = 0xF0F0F0,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
});
|
|
}
|
|
|
|
io::Highlight Theme::get(const io::Token::Kind &token) const {
|
|
return hl[token];
|
|
}
|
|
|
|
Theme Theme::default_theme() {
|
|
Theme theme;
|
|
theme.hl[io::Token::Color1] = {
|
|
.fg = 0x7DCFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Color2] = {
|
|
.fg = 0xAAD94C,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Color3] = {
|
|
.fg = 0xFF8F40,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Color4] = {
|
|
.fg = 0xD2A6FF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Color5] = {
|
|
.fg = 0xEF5168,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Warning] = {
|
|
.fg = 0xF1C55A,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
// Data is terminal default.
|
|
theme.hl[io::Token::Shebang] = {
|
|
.fg = 0x7DCFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Error] = {
|
|
.fg = 0xEF5168,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Comment] = {
|
|
.fg = 0xAAAAAA,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::Italic,
|
|
};
|
|
theme.hl[io::Token::String] = {
|
|
.fg = 0xAAD94C,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Escape] = {
|
|
.fg = 0x7DCFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Interpolation] = {
|
|
.fg = 0x7DCFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Regexp] = {
|
|
.fg = 0xD2A6FF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Number] = {
|
|
.fg = 0xE6C08A,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::True] = {
|
|
.fg = 0x7AE93C,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::False] = {
|
|
.fg = 0xEF5168,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Char] = {
|
|
.fg = 0xFFAF70,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Keyword] = {
|
|
.fg = 0xFF8F40,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::KeywordOperator] = {
|
|
.fg = 0xF07178,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Operator] = {
|
|
.fg = 0xFFFFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::Italic,
|
|
};
|
|
theme.hl[io::Token::Function] = {
|
|
.fg = 0xFFAF70,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Type] = {
|
|
.fg = 0xF07178,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Constant] = {
|
|
.fg = 0x7DCFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::VariableInstance] = {
|
|
.fg = 0x95E6CB,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::VariableGlobal] = {
|
|
.fg = 0xF07178,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Annotation] = {
|
|
.fg = 0x7DCFFF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Directive] = {
|
|
.fg = 0xFF8F40,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Label] = {
|
|
.fg = 0xD2A6FF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Brace1] = {
|
|
.fg = 0xD2A6FF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Brace2] = {
|
|
.fg = 0xFFAFAF,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Brace3] = {
|
|
.fg = 0xFFFF00,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Brace4] = {
|
|
.fg = 0x0FFF0F,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
theme.hl[io::Token::Brace5] = {
|
|
.fg = 0xFF0F0F,
|
|
.bg = 0x000000,
|
|
.flags = io::Highlight::None,
|
|
};
|
|
return theme;
|
|
}
|
|
|
|
Theme Theme::from_name(std::string_view name) {
|
|
if (name == "default")
|
|
return default_theme();
|
|
throw std::runtime_error("Unknown theme: " + std::string(name));
|
|
}
|
|
|
|
} // namespace bed::internal::theme
|