diff --git a/crates/but/src/command/legacy/status/tui/app/command_mode.rs b/crates/but/src/command/legacy/status/tui/app/command_mode.rs index 7de02eeae86..cf3942fcc3b 100644 --- a/crates/but/src/command/legacy/status/tui/app/command_mode.rs +++ b/crates/but/src/command/legacy/status/tui/app/command_mode.rs @@ -1,5 +1,6 @@ use std::{ffi::OsString, process::Command}; +use but_ctx::Context; use crossterm::event::Event; use ratatui::backend::Backend; use ratatui_textarea::{CursorMove, TextArea}; @@ -35,6 +36,7 @@ impl App { pub fn handle_command( &mut self, message: CommandMessage, + ctx: &Context, terminal_guard: &mut T, out: &mut dyn TuiInputOutputChannel, messages: &mut Vec, @@ -47,7 +49,7 @@ impl App { CommandMessage::Start(kind) => self.handle_command_start(kind), CommandMessage::Input(ev) => self.handle_command_input(ev), CommandMessage::Confirm => { - self.handle_command_confirm(terminal_guard, out, messages)? + self.handle_command_confirm(ctx, terminal_guard, out, messages)? } } @@ -79,6 +81,7 @@ impl App { fn handle_command_confirm( &mut self, + ctx: &Context, terminal_guard: &mut T, out: &mut dyn TuiInputOutputChannel, messages: &mut Vec, @@ -123,6 +126,8 @@ impl App { } }; + cmd.current_dir(ctx.workdir_or_fail()?); + let status = cmd.spawn()?.wait()?; if !IN_TEST { diff --git a/crates/but/src/command/legacy/status/tui/app/mod.rs b/crates/but/src/command/legacy/status/tui/app/mod.rs index f071e8d7193..424f3f32059 100644 --- a/crates/but/src/command/legacy/status/tui/app/mod.rs +++ b/crates/but/src/command/legacy/status/tui/app/mod.rs @@ -365,7 +365,7 @@ impl App { self.handle_reword(reword_message, ctx, terminal_guard, messages)? } Message::Command(command_message) => { - self.handle_command(command_message, terminal_guard, out, messages)? + self.handle_command(command_message, ctx, terminal_guard, out, messages)? } Message::Move(move_message) => self.handle_move(move_message, ctx, messages)?, Message::NewBranch => {