aboutsummaryrefslogtreecommitdiffstats
path: root/vim-mode
diff options
context:
space:
mode:
Diffstat (limited to 'vim-mode')
-rw-r--r--vim-mode/vim_mode.pl136
1 files changed, 68 insertions, 68 deletions
diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl
index a6244c1..9d78677 100644
--- a/vim-mode/vim_mode.pl
+++ b/vim-mode/vim_mode.pl
@@ -817,88 +817,88 @@ sub cmd_movement_a_ {
# aw and aW
if ($char eq 'w' or $char eq 'W') {
- while ($count-- > 0 and length($input) > $pos) {
- if (substr($input, $pos, 1) =~ /\s/) {
- # Any whitespace before the word/WORD must be removed.
- if (not defined $cur_pos) {
- $cur_pos = _find_regex_before($input, '\S', $pos, 0);
- if ($cur_pos < 0) {
- $cur_pos = 0;
- } else {
- $cur_pos++;
- }
+ while ($count-- > 0 and length($input) > $pos) {
+ if (substr($input, $pos, 1) =~ /\s/) {
+ # Any whitespace before the word/WORD must be removed.
+ if (not defined $cur_pos) {
+ $cur_pos = _find_regex_before($input, '\S', $pos, 0);
+ if ($cur_pos < 0) {
+ $cur_pos = 0;
+ } else {
+ $cur_pos++;
}
- # Move before the word/WORD.
- if (substr($input, $pos + 1) =~ /^\s+/) {
+ }
+ # Move before the word/WORD.
+ if (substr($input, $pos + 1) =~ /^\s+/) {
+ $pos += $+[0];
+ }
+ # And delete the word.
+ if ($char eq 'w') {
+ if (substr($input, $pos) =~ /^\s($word+|$non_word+)/) {
$pos += $+[0];
- }
- # And delete the word.
- if ($char eq 'w') {
- if (substr($input, $pos) =~ /^\s($word+|$non_word+)/) {
- $pos += $+[0];
- } else {
- $pos = length($input);
- }
- # WORD
} else {
- if (substr($input, $pos + 1) =~ /\s/) {
- $pos += $-[0] + 1;
- } else {
- $pos = length($input);
- }
- }
-
- # word
- } elsif ($char eq 'w') {
- # Start at the beginning of this WORD.
- if (not defined $cur_pos and $pos > 0 and substr($input, $pos - 1, 2) !~ /(\s.|$word$non_word|$non_word$word)/) {
-
- $cur_pos = _find_regex_before($input, "^($word+$non_word|$non_word+$word|$word+\\s|$non_word+\\s)", $pos, 1);
- if ($cur_pos < 0) {
- $cur_pos = 0;
- } else {
- $cur_pos += 2;
- }
+ $pos = length($input);
}
- # Delete to the end of the word.
- if (substr($input, $pos) =~ /^($word+$non_word|$non_word+$word|$word+\s+\S|$non_word+\s+\S)/) {
- $pos += $+[0] - 1;
+ # WORD
+ } else {
+ if (substr($input, $pos + 1) =~ /\s/) {
+ $pos += $-[0] + 1;
} else {
$pos = length($input);
- # If we are at the end of the line, whitespace before
- # the word is also deleted.
- my $new_pos = _find_regex_before($input, "^($word+\\s+|$non_word+\\s+)", $pos, 1);
- if ($new_pos != -1 and (not defined $cur_pos or $cur_pos > $new_pos + 1)) {
- $cur_pos = $new_pos + 1;
- }
}
+ }
- # WORD
+ # word
+ } elsif ($char eq 'w') {
+ # Start at the beginning of this WORD.
+ if (not defined $cur_pos and $pos > 0 and substr($input, $pos - 1, 2) !~ /(\s.|$word$non_word|$non_word$word)/) {
+
+ $cur_pos = _find_regex_before($input, "^($word+$non_word|$non_word+$word|$word+\\s|$non_word+\\s)", $pos, 1);
+ if ($cur_pos < 0) {
+ $cur_pos = 0;
+ } else {
+ $cur_pos += 2;
+ }
+ }
+ # Delete to the end of the word.
+ if (substr($input, $pos) =~ /^($word+$non_word|$non_word+$word|$word+\s+\S|$non_word+\s+\S)/) {
+ $pos += $+[0] - 1;
} else {
- # Start at the beginning of this WORD.
- if (not defined $cur_pos and $pos > 0 and
- substr($input, $pos - 1, 1) !~ /\s/) {
- $cur_pos = _find_regex_before($input, '\s', $pos - 1, 0);
- if ($cur_pos < 0) {
- $cur_pos = 0;
- } else {
- $cur_pos++;
- }
+ $pos = length($input);
+ # If we are at the end of the line, whitespace before
+ # the word is also deleted.
+ my $new_pos = _find_regex_before($input, "^($word+\\s+|$non_word+\\s+)", $pos, 1);
+ if ($new_pos != -1 and (not defined $cur_pos or $cur_pos > $new_pos + 1)) {
+ $cur_pos = $new_pos + 1;
}
- # Delete to the end of the word.
- if (substr($input, $pos + 1) =~ /^\S*\s+\S/) {
- $pos += $+[0];
+ }
+
+ # WORD
+ } else {
+ # Start at the beginning of this WORD.
+ if (not defined $cur_pos and $pos > 0 and
+ substr($input, $pos - 1, 1) !~ /\s/) {
+ $cur_pos = _find_regex_before($input, '\s', $pos - 1, 0);
+ if ($cur_pos < 0) {
+ $cur_pos = 0;
} else {
- $pos = length($input);
- # If we are at the end of the line, whitespace before
- # the WORD is also deleted.
- my $new_pos = _find_regex_before($input, '\s+', $pos, 1);
- if (not defined $cur_pos or $cur_pos > $new_pos + 1) {
- $cur_pos = $new_pos + 1;
- }
+ $cur_pos++;
+ }
+ }
+ # Delete to the end of the word.
+ if (substr($input, $pos + 1) =~ /^\S*\s+\S/) {
+ $pos += $+[0];
+ } else {
+ $pos = length($input);
+ # If we are at the end of the line, whitespace before
+ # the WORD is also deleted.
+ my $new_pos = _find_regex_before($input, '\s+', $pos, 1);
+ if (not defined $cur_pos or $cur_pos > $new_pos + 1) {
+ $cur_pos = $new_pos + 1;
}
}
}
+ }
}
return ($cur_pos, $pos);