diff options
author | Simon Ruderich <simon@ruderich.org> | 2010-10-01 14:40:52 +0000 |
---|---|---|
committer | Simon Ruderich <simon@ruderich.org> | 2010-10-01 14:40:52 +0000 |
commit | 40ef612ce45e0c8acd6e6a2183e7d4241a4b48df (patch) | |
tree | 227082909f6793afe63f126288259905c1aa57a1 /vim-mode/vim_mode.pl | |
parent | vim_mode: Update documentation. (diff) | |
download | irssi-scripts-40ef612ce45e0c8acd6e6a2183e7d4241a4b48df.tar.gz irssi-scripts-40ef612ce45e0c8acd6e6a2183e7d4241a4b48df.zip |
vim_mode: Store repeatable "movements" in hash.
Diffstat (limited to 'vim-mode/vim_mode.pl')
-rw-r--r-- | vim-mode/vim_mode.pl | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index 2b771b3..487779d 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -337,6 +337,24 @@ my $movements_multiple = "\x17" => undef, # ctrl-w }; +# "movements" which can be repeated (additional to operators of course). +my $movements_repeatable + = { + 'x' => undef, + 'X' => undef, + 'r' => undef, + 'p' => undef, + 'P' => undef, + 'C' => undef, + 'D' => undef, + '~' => undef, + '"' => undef, + 'i' => undef, + 'a' => undef, + 'I' => undef, + 'A' => undef, + }; + sub cmd_undo { print "Undo!" if DEBUG; @@ -1435,13 +1453,8 @@ sub handle_command_cmd { $repeat); } - # Store command, necessary for . But ignore movements and - # registers. - if ($operator or $char eq 'x' or $char eq 'X' or $char eq 'r' or - $char eq 'p' or $char eq 'P' or $char eq 'C' or - $char eq 'D' or $char eq '~' or $char eq '"' or - $char eq 'i' or $char eq 'I' or $char eq 'a' or - $char eq 'A') { + # Store command, necessary for . + if ($operator or exists $movements_repeatable->{$char}) { $last->{char} = $char; $last->{numeric_prefix} = $numeric_prefix; $last->{operator} = $operator; |