aboutsummaryrefslogtreecommitdiffstats
path: root/incdec
diff options
context:
space:
mode:
Diffstat (limited to 'incdec')
-rw-r--r--incdec28
1 files changed, 10 insertions, 18 deletions
diff --git a/incdec b/incdec
index c253028..aa3f372 100644
--- a/incdec
+++ b/incdec
@@ -57,6 +57,9 @@ function __readline_incdec {
# print "$line, ${"increment-by"}, ${"point-position"}, $backward";
line=$(perl -s -e '
+use strict;
+use warnings;
+
sub incdec {
my ($line, $increment_by, $point_position, $is_backward) = @_;
@@ -64,33 +67,23 @@ 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) {
- # 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]) {
-
- # TODO: document, last number handline
+ # Set start position to the current match start. This gives us the
+ # correct start position when incrementing the last number in a
+ # line.
$start_position = $-[0];
+ # If point is not at the end, set start position to the number
+ # closest to the point position.
if ($point_position < $-[0]) {
- # print "match at [$previous_match_start]";
$start_position = $previous_match_start;
last;
}
$previous_match_start = $-[0];
- # $previous_match_end = $+[0];
-
- # my @range = ($-[0], $+[0]);
- # push @match_ranges, \@range;
}
else {
if ($point_position < $+[0]) {
@@ -107,9 +100,8 @@ sub incdec {
return $line;
}
- # print "$line, ${\"increment-by\"}, ${\"point-position\"}, $backward";
- my $output = incdec($line, $increment_by, $point_position, $backward);
- print $output;
+my $output = incdec($line, $increment_by, $point_position, $backward);
+print $output;
' \
-- \
-line="$READLINE_LINE" \