fix config loading

This commit is contained in:
i do not exist 2026-08-23 06:12:01 +03:00
parent a126d98f3c
commit 9e25564abb
4 changed files with 116 additions and 123 deletions

View file

@ -856,7 +856,7 @@ mod device {
}
}
pub fn view_device (state: &App) -> impl Draw<'_, Tui> {
pub fn view_device <'a> (state: &'a App) -> impl Draw<'a, Tui> {
let selected = state.dialog.device_kind().unwrap();
south(
bold(true, "Add device"),
@ -917,7 +917,7 @@ mod draw {
if let Some(mode) = self.mode.as_ref().and_then(|m|self.config.get_mode(m)) {
let mut error = false;
for (index, dsl) in mode.view.iter().enumerate() {
match self.draw_mode(to, dsl) {
match self.interpret(to, dsl) {
Ok(None) => {},
Ok(Some(XYWH(.., w, h))) => {
self.size.0.store(w as usize, Relaxed);
@ -942,11 +942,7 @@ mod draw {
Ok(())
}
fn draw_mode <'a, L: Language + 'a> (&'a self, to: &mut Tui, dsl: L) -> Drawn<'a, u16> {
self.interpret(to, dsl)
}
fn draw_debug (&self, to: &mut Tui) -> Drawn<u16> {
#[allow(unused)] fn draw_debug (&self, to: &mut Tui) -> Drawn<'_, u16> {
east(
format!("{}x{} ", self.size.0.load(Relaxed), self.size.1.load(Relaxed)),
format!("{}% {} ", self.perf.percentage().unwrap_or_default(), self.perf.clock.raw() / 1000000000),
@ -957,7 +953,7 @@ mod draw {
impl<'a> Interpret<'a, Tui, Option<XYWH<u16>>> for App {
fn interpret <L: Language + 'a> (&'a self, to: &mut Tui, dsl: L) -> Drawn<'a, u16> {
if let Some(expr) = dsl.expr()? {
interpret_keyword!(self, to, expr, [
interpret_keyword!(self, to, &expr, [
kw_when, kw_either, kw_split, kw_align, kw_exact, kw_min, kw_max, kw_push, kw_full,
kw_tui_text, kw_tui_fg, kw_tui_bg
]);
@ -993,15 +989,10 @@ mod draw {
Some(":editor") => "TODO Editor".draw(to),
Some(":transport") => view_transport(true, "", "", "").draw(to),
Some(":debug") => format!("[{:?}]", to.area()).exact_h(1).draw(to),
Some(_) => {
let views = self.config.views.read().unwrap();
if let Some(lang) = views.get(word.src()?.unwrap()) {
let lang = lang.clone();
std::mem::drop(views);
self.draw_mode(to, lang)
} else {
fg(Color::Rgb(128, 32, 32), format!("undefined: {word:?}")).draw(to)
}
Some(_) => if let Some(lang) = self.config.get_view(word) {
self.interpret(to, lang)
} else {
fg(Color::Rgb(128, 32, 32), format!("undefined: {word:?}")).draw(to)
},
_ => unreachable!()
}