[tui] Clean up logger and editor.

Filter some noisy system logs in the Logger by default.
Use LLD for linking to silence warning for deprecated gold linker.
This commit is contained in:
Shaun Reed 2026-01-25 09:44:37 -05:00
parent 01eeb9f0ac
commit a3d850acd9
6 changed files with 17 additions and 10 deletions

3
.cargo/config.toml Normal file
View File

@ -0,0 +1,3 @@
[build]
rustflags = [ "-C", "link-arg=-fuse-ld=lld", ]

View File

@ -6,7 +6,7 @@ use crate::tui::logger::Logger;
use crate::tui::menu_bar::MenuBar;
use AppComponent::AppMenuBar;
use anyhow::{Context, Result};
use log::{error, info, trace, warn};
use log::{error, info, trace};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::crossterm::event;

View File

@ -24,13 +24,12 @@ impl Editor {
"Editor"
}
// TODO: You shouldnt be able to construct the editor without a path?
pub fn new() -> Self {
pub fn new(path: &std::path::PathBuf) -> Self {
trace!(target:Self::id(), "Building {}", Self::id());
Editor {
state: EditorState::default(),
event_handler: EditorEventHandler::default(),
file_path: None,
file_path: Some(path.to_owned()),
syntax_set: SyntaxSet::load_defaults_nonewlines(),
component_state: ComponentState::default().with_help_text(concat!(
"CTRL+S: Save file | ALT+(←/h): Previous tab | ALT+(l/→): Next tab |",

View File

@ -27,7 +27,7 @@ impl EditorTab {
trace!(target:Self::id(), "Building EditorTab with path {path:?}");
let tab_order = vec![path.to_string_lossy().to_string()];
Self {
editors: HashMap::from([(tab_order.first().unwrap().to_owned(), Editor::new())]),
editors: HashMap::from([(tab_order.first().unwrap().to_owned(), Editor::new(path))]),
tab_order,
current_editor: 0,
}
@ -68,7 +68,7 @@ impl EditorTab {
let path_str = path.to_string_lossy().to_string();
self.tab_order.push(path_str.clone());
let mut editor = Editor::new();
let mut editor = Editor::new(path);
editor.set_contents(path).context("Failed to open tab")?;
self.editors.insert(path_str, editor);
self.current_editor = self.tab_order.len() - 1;

View File

@ -32,7 +32,7 @@ impl<'a> Explorer<'a> {
tree_state: TreeState::default(),
component_state: ComponentState::default().with_help_text(concat!(
"(↑/k)/(↓/j): Select item | ←/h: Close folder | →/l: Open folder |",
" Enter: Open editor tab"
" Space: Open / close folder | Enter: Open file in new editor tab"
)),
};
Ok(explorer)
@ -149,7 +149,7 @@ impl<'a> Component for Explorer<'a> {
return Ok(Action::OpenTab);
}
}
return Ok(Action::Noop);
// Otherwise fall through and handle Enter in the next match case.
}
let changed = match key.code {
@ -160,6 +160,9 @@ impl<'a> Component for Explorer<'a> {
let key = self.tree_state.selected().to_owned();
self.tree_state.close(key.as_ref())
}
KeyCode::Char(' ') | KeyCode::Enter => self
.tree_state
.toggle(self.tree_state.selected().to_owned()),
KeyCode::Right | KeyCode::Char('l') => self.tree_state.key_right(),
_ => false,
};

View File

@ -1,5 +1,5 @@
use crate::tui::component::{Action, Component, ComponentState, Focus};
use log::trace;
use log::{LevelFilter, trace};
use ratatui::buffer::Buffer;
use ratatui::crossterm::event::{Event, KeyCode, KeyEvent};
use ratatui::layout::Rect;
@ -24,7 +24,9 @@ impl Logger {
let state = TuiWidgetState::new();
state.transition(TuiWidgetEvent::HideKey);
Self {
state,
state: state
.set_level_for_target("arboard::platform::linux::x11", LevelFilter::Off)
.set_level_for_target("mio::poll", LevelFilter::Off),
component_state: ComponentState::default().with_help_text(concat!(
"Space: Hide/show logging target selector panel | (↑/k)/(↓/j): Select target |",
" (←/h)/(→/l): Display level | f: Focus target | +/-: Filter level |",