From: martin f. krafft Date: Sun, 19 Sep 2021 22:49:03 +0000 (+0200) Subject: Remove existing binds before loading and recreating them X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=67d1cce2aa43af742f2b1f7b8f24b6a65d43ee0a;p=irssi-scripts.irssi.org.git Remove existing binds before loading and recreating them Signed-off-by: martin f. krafft --- diff --git a/scripts/chankeys.pl b/scripts/chankeys.pl index f1abfc3..5d4e27d 100644 --- a/scripts/chankeys.pl +++ b/scripts/chankeys.pl @@ -278,6 +278,12 @@ sub lookup_item_by_keys { return $ret; } +sub remove_existing_binds { + while (my ($item, $keys) = each %itemmap) { + Irssi::command("^bind -delete $keys"); + } +} + ### SAVING AND LOADING ######################################################### sub get_mappings_fh { @@ -404,20 +410,16 @@ sub chankey_list { } sub chankey_load { + remove_existing_binds(); load_mappings($map_file); my $cnt = scalar(keys %itemmap); info("Loaded $cnt mappings from $map_file"); - my ($arg) = @_; - if ($arg) { - # only during /reload is $arg set, and only after /reload - # do we need to reinit the keybindings, so… - foreach my $channel (Irssi::channels, Irssi::queries) { - my $name = $channel->{name}; - my $chatnet = $channel->{server}->{chatnet}; - if (my @keymap = get_keymap_for_channet_pair($name, $chatnet)) { - add_keymapping(@keymap); - } + foreach my $channel (Irssi::channels, Irssi::queries) { + my $name = $channel->{name}; + my $chatnet = $channel->{server}->{chatnet}; + if (my @keymap = get_keymap_for_channet_pair($name, $chatnet)) { + add_keymapping(@keymap); } } $changed_since_last_save = 0;