summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/te3
-rw-r--r--lib/Language/TECO.pm5
-rw-r--r--lib/Language/TECO/Buffer.pm6
3 files changed, 11 insertions, 3 deletions
diff --git a/bin/te b/bin/te
index d9a8489..d50aed4 100644
--- a/bin/te
+++ b/bin/te
@@ -33,8 +33,9 @@ COMMAND: while (1) {
print "\n";
ReadMode 3;
local $SIG{INT} = sub { die "Execution interrupted" };
- eval { $te->execute($command) };
+ my $result = eval { $te->execute($command) };
print "? $@\n" if $@;
+ print $result if defined $result;
ReadMode 4;
last KEY;
}
diff --git a/lib/Language/TECO.pm b/lib/Language/TECO.pm
index 7d2d63e..4aee5a3 100644
--- a/lib/Language/TECO.pm
+++ b/lib/Language/TECO.pm
@@ -90,6 +90,7 @@ sub push_cmd {
sub execute {
my $self = shift;
$self->{command} = shift;
+ my $ret = '';
while ($self->{command}) {
$_ = substr($self->{command}, 0, 1, '');
@@ -215,11 +216,13 @@ sub execute {
$self->num(1);
}
my $num = $self->num;
- $self->{buffer}->print($self->{buffer}->get_line_offset($num));
+ $ret .= $self->{buffer}->print($self->{buffer}->get_line_offset($num));
}
});
}
}
+
+ return $ret;
}
=head1 NAME
diff --git a/lib/Language/TECO/Buffer.pm b/lib/Language/TECO/Buffer.pm
index 66440f9..7ba2923 100644
--- a/lib/Language/TECO/Buffer.pm
+++ b/lib/Language/TECO/Buffer.pm
@@ -15,11 +15,13 @@ sub set {
my $pointer = shift;
die 'Pointer off page' if $pointer < 0 || $pointer > length $self->{buffer};
$self->{pointer} = $pointer;
+ return;
}
sub offset {
my $self = shift;
$self->set($self->{pointer} + shift);
+ return;
}
sub insert {
@@ -27,6 +29,7 @@ sub insert {
my $text = shift;
substr($self->{buffer}, $self->{pointer}, 0) = $text;
$self->offset(length $text);
+ return;
}
sub delete {
@@ -48,6 +51,7 @@ sub delete {
die "Pointer off page"
if $self->{pointer} + $length > length $self->{buffer};
substr($self->{buffer}, $self->{pointer}, $length) = '';
+ return;
}
sub endpos { length shift->{buffer} }
@@ -57,7 +61,7 @@ sub curpos { shift->{pointer} }
sub print {
my $self = shift;
my ($start, $end) = @_;
- print substr $self->{buffer}, $start, $end - $start;
+ return substr $self->{buffer}, $start, $end - $start;
}
sub get_line_offset {