X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fconsole.pl;h=50196907829e16608af9cfc0a4f95f0132efdbcb;hb=918827ec5a9023edeb2ce0140692566591af0af8;hp=0cb15bd0fbc0171446f40fde6151ee100621f8d7;hpb=dc999e28c96ebb4589dbdda8435a548ade15a37d;p=spider.git diff --git a/perl/console.pl b/perl/console.pl index 0cb15bd0..50196907 100755 --- a/perl/console.pl +++ b/perl/console.pl @@ -159,10 +159,26 @@ sub rec_stdin # $prbuf =~ s/\n/\\n/; # print "sys: $r ($prbuf)\n"; if (defined $r) { + if ($r eq KEY_ENTER || $r eq "\n" || $r eq "\r") { # save the lines if ($inbuf) { + # check for a pling and do a search back for a command + if ($inbuf =~ /^!/o) { + my $i; + $inbuf =~ s/^!//o; + for ($i = $#khistory; $i >= 0; $i--) { + if ($khistory[$i] =~ /^$inbuf/) { + $inbuf = $khistory[$i]; + last; + } + } + if ($i < 0) { + beep(); + return; + } + } push @khistory, $inbuf if $inbuf; shift @khistory if @khistory > $maxkhist; $khistpos = @khistory; @@ -251,6 +267,13 @@ sub rec_stdin beep(); } } elsif ($r ge ' ' && $r le '~') { + # move the top screen back to the bottom if you type something + if ($spos < @shistory - 1) { + $spos = @shistory; + show_screen(); + } + + # insert the character into the keyboard buffer if ($pos < $lth) { my $a = substr($inbuf, 0, $pos); my $b = substr($inbuf, $pos);