diff options
author | jluehrs2 <jluehrs2@uiuc.edu> | 2008-05-22 00:19:59 -0500 |
---|---|---|
committer | jluehrs2 <jluehrs2@uiuc.edu> | 2008-05-22 00:19:59 -0500 |
commit | c854f6ad447a5a21e0b3c739bdfbf307c2f2a184 (patch) | |
tree | b1f5c2b3315e0fafc0392c1d2342d8caf97c4f24 | |
parent | 1bae28e66cf4f57f359798c8e0e252cb7d7e60c9 (diff) | |
download | language-teco-c854f6ad447a5a21e0b3c739bdfbf307c2f2a184.tar.gz language-teco-c854f6ad447a5a21e0b3c739bdfbf307c2f2a184.zip |
implement the 't' command, or try, at least
-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}); + } + } + }); + } } } |