Fix watcher prompt detection

This commit is contained in:
Petr Nyc
2026-06-05 12:13:19 +02:00
parent 657223f051
commit 4d6a76487f

View File

@@ -23,7 +23,6 @@ use IO::Select;
use POSIX qw(strftime mkfifo); use POSIX qw(strftime mkfifo);
my $SCRIPT = '/Users/jetpac/bin/watcher.pl'; my $SCRIPT = '/Users/jetpac/bin/watcher.pl';
my $LINES = 20;
my $COOLDOWN = $ENV{WATCHER_COOLDOWN} || 60; my $COOLDOWN = $ENV{WATCHER_COOLDOWN} || 60;
my $LOG_FILE = $ENV{WATCHER_LOG} || ''; my $LOG_FILE = $ENV{WATCHER_LOG} || '';
my @PROMPTS = ( my @PROMPTS = (
@@ -219,7 +218,7 @@ sub maybe_confirm {
my ($sock, $pane, $last_confirm_ref, $last_signature_ref, $source) = @_; my ($sock, $pane, $last_confirm_ref, $last_signature_ref, $source) = @_;
my $now = time; my $now = time;
my ($ok, $screen) = rendered_last_lines($sock, $pane, $LINES); my ($ok, $screen) = rendered_visible_pane($sock, $pane);
exit 0 if !$ok; exit 0 if !$ok;
return if !has_any_prompt($screen); return if !has_any_prompt($screen);
@@ -240,21 +239,18 @@ sub maybe_confirm {
} }
} }
sub rendered_last_lines { sub rendered_visible_pane {
my ($sock, $pane, $lines) = @_; my ($sock, $pane) = @_;
my @cmd = ( my @cmd = (
'tmux', '-S', $sock, 'tmux', '-S', $sock,
'capture-pane', '-p', 'capture-pane', '-p',
'-t', $pane, '-t', $pane,
'-S', '-' . ($lines * 3),
); );
my ($ok, $out) = run_capture(@cmd); my ($ok, $out) = run_capture(@cmd);
return (0, '') if !$ok; return (0, '') if !$ok;
my @lines = split /\n/, clean_text($out); return (1, clean_text($out));
@lines = @lines > $lines ? @lines[-$lines .. -1] : @lines;
return (1, join("\n", @lines));
} }
sub start_pipe { sub start_pipe {