From 39042d55764fd5d13c9bab0557ed541935e48357 Mon Sep 17 00:00:00 2001
From: Tom Feist <shabble@metavore.org>
Date: Tue, 26 Oct 2010 22:41:12 +0100
Subject: replace server id separator with \x1d to avoid unintended matches
 make :map'ed irssi commands use hte current server context $server->cmd(..)

---
 vim-mode/vim_mode.pl | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

(limited to 'vim-mode')

diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl
index 71b30b1..a18d6db 100644
--- a/vim-mode/vim_mode.pl
+++ b/vim-mode/vim_mode.pl
@@ -1718,12 +1718,13 @@ sub ex_item_prev {
     $win->item_prev for (1..$count);
 }
 
+# TODO: factor out the shared search code for server next/prev.
 sub ex_server_next {
     my ($arg_str, $count) = @_;
 
-    my @server_ids = map { $_->{tag} . '/' . $_->{nick} } Irssi::servers;
+    my @server_ids = map { $_->{tag} . "\x1d" . $_->{nick} } Irssi::servers;
     my $server = Irssi::active_server;
-    my $current_id = $server->{tag} . '/' . $server->{nick};
+    my $current_id = $server->{tag} . "\x1d" . $server->{nick};
     my $next = 0;
     my $server_count = scalar @server_ids;
     for my $i (0..$server_count - 1) {
@@ -1736,7 +1737,7 @@ sub ex_server_next {
     }
 
     my $next_server = $server_ids[$next];
-    $next_server =~ s|^([^/]+)/.*$|$1|;
+    $next_server =~ s|^([^\x1d]+)\x1d.*$|$1|;
 
     print "Changing to server: $next: $next_server" if DEBUG;
     Irssi::command("window server $next_server");
@@ -1745,9 +1746,9 @@ sub ex_server_next {
 sub ex_server_prev {
     my ($arg_str, $count) = @_;
 
-    my @server_ids = map { $_->{tag} . '/' . $_->{nick} } Irssi::servers;
+    my @server_ids = map { $_->{tag} . "\x1d" . $_->{nick} } Irssi::servers;
     my $server = Irssi::active_server;
-    my $current_id = $server->{tag} . '/' . $server->{nick};
+    my $current_id = $server->{tag} . "\x1d" . $server->{nick};
     my $prev = 0;
     my $server_count = scalar @server_ids;
 
@@ -1761,7 +1762,7 @@ sub ex_server_prev {
     }
 
     my $prev_server = $server_ids[$prev];
-    $prev_server =~ s|^([^/]+)/.*$|$1|;
+    $prev_server =~ s|^([^\x1d]+)\x1d.*$|$1|;
 
     print "Changing to server: $prev: $prev_server" if DEBUG;
     Irssi::command("window server $prev_server");
@@ -2451,7 +2452,7 @@ sub handle_command_cmd {
     # As can irssi commands.
     } elsif ($cmd->{type} == C_IRSSI) {
         print "Processing irssi-command: $map->{char} ($cmd->{char})" if DEBUG;
-        Irssi::command($cmd->{func});
+        Irssi::active_server->command($cmd->{func});
 
         $numeric_prefix = undef;
         return 1; # call _stop();
-- 
cgit v1.2.3