Files
bed/src/internal/theme/theme.cc
T

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