diff options
| author | Tom Feist <shabble@metavore.org> | 2010-10-26 21:05:10 +0000 | 
|---|---|---|
| committer | Tom Feist <shabble@metavore.org> | 2010-10-26 21:05:10 +0000 | 
| commit | 52411c42ef00c586bce4f961b54efc38d2d60e52 (patch) | |
| tree | 112c3de9507e280ba0e75ef0ab7f92e6426d771f | |
| parent | Merge remote branch 'origin/dev' (diff) | |
| download | irssi-scripts-52411c42ef00c586bce4f961b54efc38d2d60e52.tar.gz irssi-scripts-52411c42ef00c586bce4f961b54efc38d2d60e52.zip | |
implement :servernext/prev and :itemnext/prev for switching between servers and
window items.
| -rw-r--r-- | vim-mode/vim_mode.pl | 85 | 
1 files changed, 85 insertions, 0 deletions
| diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index d61db3d..71b30b1 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -470,6 +470,23 @@ my $commands_ex                      type => C_EX },       set       => { char => ':set',       func => \&ex_set,                      type => C_EX }, +     itemnext  => { char => ':itemnext',  func => \&ex_item_next, +                    type => C_EX }, +     inext     => { char => ':itemnext',  func => \&ex_item_next, +                    type => C_EX }, +     itemprev  => { char => ':itemprev',  func => \&ex_item_prev, +                    type => C_EX }, +     iprev     => { char => ':itemprev',  func => \&ex_item_prev, +                    type => C_EX }, +     servernext  => { char => ':servernext', func => \&ex_server_next, +                    type => C_EX }, +     snext       => { char => ':servernext', func => \&ex_server_next, +                    type => C_EX }, +     serverprev  => { char => ':serverprev', func => \&ex_server_prev, +                    type => C_EX }, +     sprev       => { char => ':serverprev', func => \&ex_server_prev, +                    type => C_EX }, +      };  # MAPPINGS @@ -1501,6 +1518,7 @@ sub cmd_undo {      }      return (undef, undef);  } +  sub cmd_redo {      print "Redo!" if DEBUG; @@ -1639,6 +1657,7 @@ sub ex_bdelete {      }      Irssi::command('window close');  } +  sub ex_buffer {      my ($arg_str, $count) = @_; @@ -1683,6 +1702,72 @@ sub ex_buffer {      }  } +sub ex_item_next { +    my ($arg_str, $count) = @_; +    my $win = Irssi::active_win; +    $count = 1 unless defined $count; + +    $win->item_next for (1..$count); +} + +sub ex_item_prev { +    my ($arg_str, $count) = @_; +    my $win = Irssi::active_win; +    $count = 1 unless defined $count; + +    $win->item_prev for (1..$count); +} + +sub ex_server_next { +    my ($arg_str, $count) = @_; + +    my @server_ids = map { $_->{tag} . '/' . $_->{nick} } Irssi::servers; +    my $server = Irssi::active_server; +    my $current_id = $server->{tag} . '/' . $server->{nick}; +    my $next = 0; +    my $server_count = scalar @server_ids; +    for my $i (0..$server_count - 1) { +        my $s_id = $server_ids[$i]; +        if (defined($s_id) and ($s_id eq $current_id)) { +            print "Found match at $i" if DEBUG; +            $next = ($i + 1) % $server_count; +            last; +        } +    } + +    my $next_server = $server_ids[$next]; +    $next_server =~ s|^([^/]+)/.*$|$1|; + +    print "Changing to server: $next: $next_server" if DEBUG; +    Irssi::command("window server $next_server"); +} + +sub ex_server_prev { +    my ($arg_str, $count) = @_; + +    my @server_ids = map { $_->{tag} . '/' . $_->{nick} } Irssi::servers; +    my $server = Irssi::active_server; +    my $current_id = $server->{tag} . '/' . $server->{nick}; +    my $prev = 0; +    my $server_count = scalar @server_ids; + +    for my $i (0..$server_count - 1) { +        my $s_id = $server_ids[$i]; +        if (defined($s_id) and ($s_id eq $current_id)) { +            print "Found match at $i" if DEBUG; +            $prev = ($i - 1) % $server_count; +            last; +        } +    } + +    my $prev_server = $server_ids[$prev]; +    $prev_server =~ s|^([^/]+)/.*$|$1|; + +    print "Changing to server: $prev: $prev_server" if DEBUG; +    Irssi::command("window server $prev_server"); + +} +  sub ex_registers {      my ($arg_str, $count) = @_; | 
