mirror of
https://codeberg.org/scip/rpnc.git
synced 2025-12-18 21:11:02 +01:00
+history
This commit is contained in:
17
rpnc
17
rpnc
@@ -7,12 +7,12 @@ use Getopt::Long;
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
my (@stack, @substack, @backup, @subbackup);
|
my (@stack, @substack, @backup, @subbackup, @hist);
|
||||||
my $term = Term::ReadLine->new('rpn calc');
|
my $term = Term::ReadLine->new('rpn calc');
|
||||||
my $debug = 0;
|
my $debug = 0;
|
||||||
my $showstack = 1;
|
my $showstack = 1;
|
||||||
my $tty = 1;
|
my $tty = 1;
|
||||||
my $VERSION = '1.01';
|
my $VERSION = '1.02';
|
||||||
my $sub = 0;
|
my $sub = 0;
|
||||||
my $op;
|
my $op;
|
||||||
|
|
||||||
@@ -64,6 +64,7 @@ my %commands = (
|
|||||||
u => sub { undo(); dumpstack(); },
|
u => sub { undo(); dumpstack(); },
|
||||||
r => sub { reversestack(); },
|
r => sub { reversestack(); },
|
||||||
R => sub { rotatestack(); },
|
R => sub { rotatestack(); },
|
||||||
|
h => sub { showhist(); },
|
||||||
'(' => sub { $sub = 1 },
|
'(' => sub { $sub = 1 },
|
||||||
')' => sub { $sub = 0 },
|
')' => sub { $sub = 0 },
|
||||||
);
|
);
|
||||||
@@ -132,6 +133,12 @@ sub cmd {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub showhist {
|
||||||
|
foreach my $entry (@hist) {
|
||||||
|
printf "History: %10s = %s\n", $entry->[0], $entry->[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub clearstack {
|
sub clearstack {
|
||||||
if ($sub) {
|
if ($sub) {
|
||||||
@substack = ();
|
@substack = ();
|
||||||
@@ -257,7 +264,7 @@ sub prompt {
|
|||||||
$prompt = '%';
|
$prompt = '%';
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf "%2d %s ", $count, $prompt;
|
return sprintf "%3d %s ", $count, $prompt;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub calc {
|
sub calc {
|
||||||
@@ -294,11 +301,14 @@ sub calc {
|
|||||||
else {
|
else {
|
||||||
push @stack, $res;
|
push @stack, $res;
|
||||||
$sub = 0;
|
$sub = 0;
|
||||||
|
|
||||||
if ($debug) {
|
if ($debug) {
|
||||||
print "DEBUG: $code = $res\n";
|
print "DEBUG: $code = $res\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($tty) {
|
if ($tty) {
|
||||||
dumpstack();
|
dumpstack();
|
||||||
|
push @hist, [$res, $code];
|
||||||
return "=> $res\n\n";
|
return "=> $res\n\n";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -332,6 +342,7 @@ R rotate the stack
|
|||||||
( enter collect mode
|
( enter collect mode
|
||||||
) leave collect mode
|
) leave collect mode
|
||||||
u undo last operation
|
u undo last operation
|
||||||
|
h show history of past operations
|
||||||
q finish (C-d works as well)
|
q finish (C-d works as well)
|
||||||
? print help
|
? print help
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user