refactor: Remove normal mode and make search the default
This commit is contained in:
parent
38f2600281
commit
083c66aacb
40
src/tui.rs
40
src/tui.rs
@ -21,17 +21,15 @@ enum Message {
|
||||
SelectPrevious,
|
||||
SelectNext,
|
||||
Confirm,
|
||||
Search,
|
||||
SearchUpdate,
|
||||
ExitSearch,
|
||||
}
|
||||
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
enum Mode {
|
||||
#[default]
|
||||
Normal,
|
||||
Search,
|
||||
Rename,
|
||||
}
|
||||
|
||||
|
||||
@ -88,6 +86,12 @@ pub fn run(projects: Projects) -> Result<()> {
|
||||
ratatui::restore();
|
||||
|
||||
if let Some(selected_project) = state.selected_project {
|
||||
// hacky stderr abuse
|
||||
eprintln!(
|
||||
"{}cd:{}",
|
||||
env!("CARGO_BIN_NAME"),
|
||||
selected_project.display()
|
||||
);
|
||||
write_selected_project_file(selected_project)?
|
||||
}
|
||||
|
||||
@ -97,18 +101,13 @@ pub fn run(projects: Projects) -> Result<()> {
|
||||
|
||||
fn handle_key_event(state: &mut State, tx: &mut mpsc::Sender<Message>, event: KeyEvent) {
|
||||
let msg = match (&state.mode, event.modifiers, event.code) {
|
||||
(Mode::Normal, KeyModifiers::NONE, KeyCode::Char('q') | KeyCode::Esc) => Message::Exit,
|
||||
(Mode::Normal, KeyModifiers::NONE, KeyCode::Char('k') | KeyCode::Up) => {
|
||||
(Mode::Search, KeyModifiers::CONTROL, KeyCode::Char('k') | KeyCode::Up) => {
|
||||
Message::SelectPrevious
|
||||
}
|
||||
(Mode::Normal, KeyModifiers::NONE, KeyCode::Char('j') | KeyCode::Down) => {
|
||||
(Mode::Search, KeyModifiers::CONTROL, KeyCode::Char('j') | KeyCode::Down) => {
|
||||
Message::SelectNext
|
||||
}
|
||||
(Mode::Normal, KeyModifiers::NONE, KeyCode::Char('/')) => Message::Search,
|
||||
|
||||
(Mode::Search, KeyModifiers::NONE, KeyCode::Esc) => Message::ExitSearch,
|
||||
(Mode::Search, KeyModifiers::CONTROL, KeyCode::Char('k')) => Message::SelectPrevious,
|
||||
(Mode::Search, KeyModifiers::CONTROL, KeyCode::Char('j')) => Message::SelectNext,
|
||||
(Mode::Search, KeyModifiers::NONE, KeyCode::Esc) => Message::Exit,
|
||||
(Mode::Search, KeyModifiers::NONE | KeyModifiers::SHIFT, KeyCode::Char(c)) => {
|
||||
state.search.handle(InputRequest::InsertChar(c));
|
||||
Message::SearchUpdate
|
||||
@ -157,13 +156,6 @@ fn handle_messages(state: &mut State, rx: &mut mpsc::Receiver<Message>) -> Resul
|
||||
};
|
||||
}
|
||||
}
|
||||
Message::Search => {
|
||||
state.mode = Mode::Search;
|
||||
}
|
||||
Message::ExitSearch => {
|
||||
state.search = Input::default();
|
||||
state.mode = Mode::Normal;
|
||||
}
|
||||
Message::SearchUpdate => {
|
||||
state.project_table.select_first();
|
||||
}
|
||||
@ -179,12 +171,6 @@ fn draw(state: &mut State, frame: &mut Frame) {
|
||||
frame.render_widget(&block, frame.area());
|
||||
|
||||
match state.mode {
|
||||
Mode::Normal => {
|
||||
let layout = Layout::vertical([Constraint::Fill(1)]);
|
||||
let inner_area = block.inner(frame.area());
|
||||
let layout_rects = layout.split(inner_area);
|
||||
draw_list(state, frame, layout_rects[0]);
|
||||
}
|
||||
Mode::Search => {
|
||||
let layout = Layout::vertical([Constraint::Fill(1), Constraint::Max(2)]);
|
||||
let inner_area = block.inner(frame.area());
|
||||
@ -192,6 +178,12 @@ fn draw(state: &mut State, frame: &mut Frame) {
|
||||
draw_list(state, frame, layout_rects[0]);
|
||||
draw_search(state, frame, layout_rects[1]);
|
||||
}
|
||||
Mode::Rename => {
|
||||
let layout = Layout::vertical([Constraint::Fill(1)]);
|
||||
let inner_area = block.inner(frame.area());
|
||||
let layout_rects = layout.split(inner_area);
|
||||
draw_list(state, frame, layout_rects[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user