summaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/theme/editor/mod.rs74
-rw-r--r--src/config/theme/mod.rs9
2 files changed, 82 insertions, 1 deletions
diff --git a/src/config/theme/editor/mod.rs b/src/config/theme/editor/mod.rs
new file mode 100644
index 0000000..d9e2b16
--- /dev/null
+++ b/src/config/theme/editor/mod.rs
@@ -0,0 +1,74 @@
+use mlua::UserData;
+
+use crate::lua::evalsto::EvalTo;
+use crate::widgets::luaeditor::theme::HighlightTheme;
+
+use super::super::GlobalConfig;
+use super::style::Style;
+
+#[derive(Clone, Debug, Default)]
+pub struct EditorTheme {
+ pub background: EvalTo<Style, ()>,
+ pub highlight: HighlightTheme,
+ pub cursor_line: EvalTo<Style, ()>,
+ pub line_number: EvalTo<Style, ()>,
+ pub active_line_number: EvalTo<Style, ()>,
+}
+
+impl EditorTheme {
+ pub const fn new() -> Self {
+ Self {
+ background: EvalTo::Value(Style::new()),
+ highlight: HighlightTheme::new(),
+ cursor_line: EvalTo::Value(Style::new()),
+ line_number: EvalTo::Value(Style::new()),
+ active_line_number: EvalTo::Value(Style::new()),
+ }
+ }
+}
+
+macro_rules! cfg {
+ () => {
+ GlobalConfig::instance().theme.editor
+ };
+}
+
+macro_rules! cfg_mut {
+ () => {
+ GlobalConfig::instance_mut().theme.editor
+ };
+}
+
+impl UserData for EditorTheme {
+ fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) {
+ fields.add_field_function_get("background", |_, _| Ok(cfg!().background.clone()));
+ fields.add_field_function_set("background", |_, _, background: EvalTo<Style, ()>| {
+ cfg_mut!().background = background;
+ Ok(())
+ });
+
+ fields.add_field_function_get("highlight", |_, _| Ok(cfg!().highlight.clone()));
+ fields.add_field_function_set("highlight", |_, _, highlight: HighlightTheme| {
+ cfg_mut!().highlight = highlight;
+ Ok(())
+ });
+
+ fields.add_field_function_get("cursor_line", |_, _| Ok(cfg!().cursor_line.clone()));
+ fields.add_field_function_set("cursor_line", |_, _, cursor_line: EvalTo<Style, ()>| {
+ cfg_mut!().cursor_line = cursor_line;
+ Ok(())
+ });
+
+ fields.add_field_function_get("line_number", |_, _| Ok(cfg!().line_number.clone()));
+ fields.add_field_function_set("line_number", |_, _, line_number: EvalTo<Style, ()>| {
+ cfg_mut!().line_number = line_number;
+ Ok(())
+ });
+
+ fields.add_field_function_get("active_line_number", |_, _| Ok(cfg!().active_line_number.clone()));
+ fields.add_field_function_set("active_line_number", |_, _, active_line_number: EvalTo<Style, ()>| {
+ cfg_mut!().active_line_number = active_line_number;
+ Ok(())
+ });
+ }
+}
diff --git a/src/config/theme/mod.rs b/src/config/theme/mod.rs
index 074a063..ca9723b 100644
--- a/src/config/theme/mod.rs
+++ b/src/config/theme/mod.rs
@@ -1,23 +1,26 @@
use mlua::UserData;
-use self::sheetview::SheetViewTheme;
+use self::{editor::EditorTheme, sheetview::SheetViewTheme};
use super::DUMMY_CONFIG;
pub mod style;
pub mod sheetview;
+pub mod editor;
mod bar;
#[derive(Clone, Debug, Default)]
pub struct Theme {
pub sheetview: SheetViewTheme,
+ pub editor: EditorTheme,
}
impl Theme {
pub const fn new() -> Self {
Self {
sheetview: SheetViewTheme::new(),
+ editor: EditorTheme::new(),
}
}
}
@@ -26,6 +29,10 @@ impl UserData for Theme {
fn add_fields<'lua, F: mlua::prelude::LuaUserDataFields<'lua, Self>>(fields: &mut F) {
fields.add_field_function_get("sheetview", |_, _| {
Ok(DUMMY_CONFIG.theme.sheetview)
+ });
+
+ fields.add_field_function_get("editor", |_, _| {
+ Ok(DUMMY_CONFIG.theme.editor)
})
}
}