diff options
| -rw-r--r-- | incdec.pm | 24 | 
1 files changed, 22 insertions, 2 deletions
| @@ -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; | 
