diff options
Diffstat (limited to 'vim-mode/vim_mode.pl')
-rw-r--r-- | vim-mode/vim_mode.pl | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index 58f402b..a8e1cbb 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -1100,13 +1100,36 @@ sub _commit_line { return unless length $line; # ignore empty lines + my $server = Irssi::active_server(); + my $win = Irssi::active_win(); + my $witem = ref $win ? $win->{active} : undef; + + my $context; + if (defined $witem) { + $context = $witem; + } elsif (defined $win) { + $context = $win; + } elsif (defined $server) { + $context = $server; + } else { + $context = undef; + } + if ($line =~ /^[\Q$cmdchars\E]/) { print "Committing line as command" if DEBUG; - Irssi::command($line); + if (defined $context) { + $context->command($line); + } else { + Irssi::command($line); + } } else { print "Committing line as text" if DEBUG; - Irssi::command("/say $line"); + if (defined $context) { + $context->command("/say $line"); + } else { + Irssi::command("/say $line"); + } } } |