diff options
-rw-r--r-- | lib/Language/TECO.pm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/Language/TECO.pm b/lib/Language/TECO.pm index 587d641..9c39886 100644 --- a/lib/Language/TECO.pm +++ b/lib/Language/TECO.pm @@ -175,6 +175,31 @@ sub execute { $self->push_cmd('c'); redo; } + elsif (/t/i) { + $self->cmd(sub { + my $self = shift; + if (defined $self->{n2}) { + $self->{buffer}->print(($self->num)); + } + else { + my $num = $self->num; + if ($num > 0) { + my $regex = "(?:.*\n){$num}"; + pos $self->{buffer}->{buffer} = $self->{buffer}->{pointer}; + $self->{buffer}->{buffer} =~ /$regex/g; + $self->{buffer}->print($self->{buffer}->{pointer}, + $+[0]); + } + else { + my $rev = reverse $self->{buffer}->{buffer}; + my $regex = ".*?(?:\n.*?){$num}(?=\n|\$)"; + pos $rev = length($self->{buffer}->{buffer}) - $self->{buffer}->{pointer}; + $rev =~ /$regex/sg; + $self->{buffer}->print(length($self->{buffer}->{buffer}) - $+[0], $self->{buffer}->{pointer}); + } + } + }); + } } } |