]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
Remove existing binds before loading and recreating them
authormartin f. krafft <redacted>
Sun, 19 Sep 2021 22:49:03 +0000 (00:49 +0200)
committermartin f. krafft <redacted>
Sun, 19 Sep 2021 22:49:03 +0000 (00:49 +0200)
Signed-off-by: martin f. krafft <redacted>
scripts/chankeys.pl

index f1abfc30537b18d1bf4cd63f0d269aef327ac40a..5d4e27d125cf7d98f45756260d2fda266333fea7 100644 (file)
@@ -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;
git clone https://git.99rst.org/PROJECT