aboutsummaryrefslogtreecommitdiffstats
path: root/incdec.pm
diff options
context:
space:
mode:
Diffstat (limited to 'incdec.pm')
-rw-r--r--incdec.pm24
1 files changed, 22 insertions, 2 deletions
diff --git a/incdec.pm b/incdec.pm
index b810bf4..88301f2 100644
--- a/incdec.pm
+++ b/incdec.pm
@@ -10,12 +10,19 @@ sub incdec {
$is_backward ||= 0;
my $start_position = 0;
+ my @match_ranges;
my $previous_match_start = 0;
my $previous_match_end = 0;
while ($line =~ /(\d+)/g) {
if ($is_backward) {
- if ($previous_match_end - 1 <= $point_position
- && $point_position < $-[0]) {
+ print "p[$point_position] -[$-[0]] +[$+[0]]\n";
+ print "p[$point_position] -[$previous_match_start] +[$previous_match_end]\n";
+ print "last match: $^N\n";
+ print $previous_match_end - 1 . " <= $point_position < $-[0]\n";
+ # if ($previous_match_end - 1 <= $point_position
+ # && $point_position < $-[0]) {
+ if ($point_position < $-[0]) {
+ print "match at [$previous_match_start]";
$start_position = $previous_match_start;
last;
@@ -23,6 +30,9 @@ sub incdec {
$previous_match_start = $-[0];
$previous_match_end = $+[0];
+
+ my @range = ($-[0], $+[0]);
+ push @match_ranges, \@range;
}
else {
if ($point_position < $+[0]) {
@@ -32,6 +42,16 @@ sub incdec {
}
}
}
+ print "\n,$start_position\n";
+
+ # if ($is_backward) {
+ # for (my $i = $#match_ranges; $i >= 0; $i--) {
+ # print "\n$match_ranges[$i][0]\n";
+ # if ($match_ranges[$i][0] <= $point_position) {
+ # $start_position = $match_ranges[$i][0];
+ # }
+ # }
+ # }
if ($is_backward && $point_position == length $line) {
$start_position = $previous_match_start;