]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
Populate $windows hash with better error checking
authorJari Matilainen <redacted>
Fri, 16 Mar 2018 10:00:27 +0000 (11:00 +0100)
committerJari Matilainen <redacted>
Fri, 16 Mar 2018 10:00:27 +0000 (11:00 +0100)
scripts/toggle_winlevels.pl

index 5d6544f7b3f0478858647bed9082a89a79dc78d5..2f8bf9c2d8703eae089d2ce380f052e1ab977bea 100644 (file)
@@ -12,7 +12,7 @@ use Irssi::TextUI;
 use Data::Dumper;
 use vars qw($VERSION %IRSSI);
 
-$VERSION = "0.3";
+$VERSION = "0.3.1";
 %IRSSI = (
           authors       => 'Jari Matilainen',
           contact       => 'vague!#irssi@freenode on irc',
@@ -34,7 +34,7 @@ sub set_mode_all {
 
 sub set_mode {
   my ($win, $mode) = @_;
-  my $lvlbits = ($win->view->{hidden_level} - Irssi::level2bits('HIDDEN')) || $windows->{$win->{refnum}}{levels} - Irssi::level2bits('HIDDEN');
+  my $lvlbits = ($win->view->{hidden_level} - Irssi::level2bits('HIDDEN')) || ($windows->{$win->{refnum}}{levels} ? $windows->{$win->{refnum}}{levels} - Irssi::level2bits('HIDDEN') : 0);
   my $levels = Irssi::bits2level($lvlbits);
   my $val;
 
@@ -107,11 +107,17 @@ Irssi::command_bind_last('window hidelevel' => sub {
   }
 });
 
+Irssi::command_bind('dump_window_hash' => sub {
+  for my $key (keys %$windows) {
+    warn Dumper($key, Irssi::bits2level($windows->{$key}{levels}), $windows->{$key}{mode});
+  }
+});
+
 Irssi::settings_add_level('lookandfeel', 'window_default_hidden_level', 'HIDDEN');
 
 for my $win (Irssi::windows) {
   my $view = $win->view();
-  my $levels = $win->view->{hidden_level};
-  $windows->{$win->{refnum}}{levels} = $levels - Irssi::level2bits('HIDDEN') ? $levels : Irssi::settings_get_level('window_default_hidden_level');
-  $windows->{$win->{refnum}}{mode}   = $levels - Irssi::level2bits('HIDDEN') ? 1 : 0;
+  my $levels = ($view->{hidden_level} ? $view->{hidden_level} - Irssi::level2bits('HIDDEN') : 0) || ($windows->{$win->{refnum}}{levels} ? $windows->{$win->{refnum}}{levels} - Irssi::level2bits('HIDDEN') : 0);
+  $windows->{$win->{refnum}}{levels} = $levels // Irssi::settings_get_level('window_default_hidden_level');
+  $windows->{$win->{refnum}}{mode}   = $levels ? 1 : 0;
 }
git clone https://git.99rst.org/PROJECT