diff options
| author | Tom Feist <shabble@metavore.org> | 2011-10-11 12:03:31 +0000 | 
|---|---|---|
| committer | Tom Feist <shabble@metavore.org> | 2011-10-11 12:03:31 +0000 | 
| commit | 58ae90a086d57033d3d0940516bba900234c326f (patch) | |
| tree | ffe1fe208d8adfa2883f2e836c3f458a7a82be58 | |
| parent | nicklist: more formatting cleanup, mostly line-wrapping (diff) | |
| download | irssi-scripts-58ae90a086d57033d3d0940516bba900234c326f.tar.gz irssi-scripts-58ae90a086d57033d3d0940516bba900234c326f.zip | |
nicklist: more cleanup - converted logic to use more symbolic constants, fixed a
bunch of formatting stuff.
| -rw-r--r-- | fixery/nicklist.pl | 117 | 
1 files changed, 50 insertions, 67 deletions
| diff --git a/fixery/nicklist.pl b/fixery/nicklist.pl index 363322e..38a2aae 100644 --- a/fixery/nicklist.pl +++ b/fixery/nicklist.pl @@ -49,12 +49,15 @@ in short:  EOF            );  } +sub MODE_OFF    () { 0 } +sub MODE_SCREEN () { 1 } +sub MODE_FIFO   () { 2 }  my $prev_lines = 0;             # number of lines in previous written nicklist  my $scroll_pos = 0;             # scrolling position  my $cursor_line;                # line the cursor is currently on  my ($OFF, $SCREEN, $FIFO) = (0,1,2); # modes -my $mode = $OFF;                     # current mode +my $mode = MODE_OFF;                     # current mode  my $need_redraw = 0;                 # nicklist needs redrawing  my $screen_resizing = 0;             # terminal is being resized  my $active_channel;                  # (REC) @@ -72,7 +75,7 @@ my $server_prefix_mapping      }; -# order the sigils by priority (lowest = first) from the table above.  +# order the sigils by priority (lowest = first) from the table above.  my @sigil_priorities = map  { $_->{sigil} }                         sort { $a->{priority} <=> $b->{priority} }                         values %$server_prefix_mapping; @@ -144,11 +147,11 @@ sub read_settings {          $sigil_cache->{$umode_name} = $value;      } -	if ($mode != $SCREEN) { +	if ($mode != MODE_SCREEN) {  		$height = Irssi::settings_get_int('nicklist_height');  	}  	my $new_nicklist_width = Irssi::settings_get_int('nicklist_width'); -	if ($new_nicklist_width != $nicklist_width && $mode == $SCREEN) { +	if ($new_nicklist_width != $nicklist_width && $mode == MODE_SCREEN) {  		sig_terminal_resized();  	}  	$nicklist_width = $new_nicklist_width; @@ -166,9 +169,9 @@ sub update {  ### off ###  sub cmd_off { -	if ($mode == $SCREEN) { +	if ($mode == MODE_SCREEN) {  		screen_stop(); -	} elsif ($mode == $FIFO) { +	} elsif ($mode == MODE_FIFO) {  		fifo_stop();  	}  } @@ -195,34 +198,34 @@ sub cmd_fifo_start {  	FIFO->autoflush(1);  	print FIFO "\033[2J\033[1;1H"; # erase screen & jump to 0,0  	$cursor_line = 0; -	if ($mode == $SCREEN) { +	if ($mode == MODE_SCREEN) {  		screen_stop();  	} -	$mode = $FIFO; +	$mode = MODE_FIFO;  	make_nicklist();  }  sub fifo_stop {  	close FIFO; -	$mode = $OFF; +	$mode = MODE_OFF;  	Irssi::print("Fifo closed.");  }  ### screen ###  sub cmd_screen_start { -	if (!defined($ENV{'STY'})) { +	if (!defined($ENV{STY})) {  		Irssi::print 'screen not detected, screen mode only works inside screen';  		return;  	}  	read_settings(); -	if ($mode == $SCREEN) { +	if ($mode == MODE_SCREEN) {          return;      } -	if ($mode == $FIFO) { +	if ($mode == MODE_FIFO) {  		fifo_stop();  	} -	$mode = $SCREEN; +	$mode = MODE_SCREEN;  	Irssi::signal_add_last('gui print text finished', 'sig_gui_print_text_finished');  	Irssi::signal_add_last('gui page scrolled',       'sig_page_scrolled');  	Irssi::signal_add('terminal resized',             'sig_terminal_resized'); @@ -231,20 +234,20 @@ sub cmd_screen_start {  }  sub screen_stop { -	$mode = $OFF; +	$mode = MODE_OFF;  	Irssi::signal_remove('gui print text finished', 'sig_gui_print_text_finished');  	Irssi::signal_remove('gui page scrolled',       'sig_page_scrolled');  	Irssi::signal_remove('terminal resized',        'sig_terminal_resized'); -	system 'screen -x '.$ENV{'STY'}.' -X fit'; +	system 'screen -x '.$ENV{STY}.' -X fit';  }  sub screen_size { -	if ($mode != $SCREEN) { +	if ($mode != MODE_SCREEN) {  		return;  	}  	$screen_resizing = 1;  	# fit screen -	system 'screen -x '.$ENV{'STY'}.' -X fit'; +	system 'screen -x '.$ENV{STY}.' -X fit';  	# get size (from perldoc -q size)  	my ($winsize, $row, $col, $xpixel, $ypixel);  	eval 'use Term::ReadKey; ($col, $row, $xpixel, $ypixel) = GetTerminalSize'; @@ -287,7 +290,7 @@ sub screen_size {  	Irssi::timeout_add_once        (1000, sub {             my ($new_irssi_width) = @_; -           system 'screen -x '.$ENV{'STY'}.' -X width -w ' . $new_irssi_width; +           system 'screen -x '.$ENV{STY}.' -X width -w ' . $new_irssi_width;             # and then we wait another second for the resizing, and then redraw.             Irssi::timeout_add_once(1000, sub {$screen_resizing = 0; redraw()}, []);         }, $irssi_width); @@ -305,13 +308,13 @@ sub sig_terminal_resized {  ### both ###  sub nicklist_write_start { -	if ($mode == $SCREEN) { +	if ($mode == MODE_SCREEN) {  		print STDERR "\033P\033[s\033\\"; # save cursor  	}  }  sub nicklist_write_end { -	if ($mode == $SCREEN) { +	if ($mode == MODE_SCREEN) {  		print STDERR "\033P\033[u\033\\"; # restore cursor  	}  } @@ -319,9 +322,9 @@ sub nicklist_write_end {  sub nicklist_write_line {  	my ($line, $data) = @_; -	if ($mode == $SCREEN) { +	if ($mode == MODE_SCREEN) {  		print STDERR "\033P\033[" . ($line+1) . ';'. ($irssi_width+1) .'H'. $screen_prefix . $data . "\033\\"; -	} elsif ($mode == $FIFO) { +	} elsif ($mode == MODE_FIFO) {  		$data = "\033[m$data";  # reset color  		if ($line == $cursor_line+1) {  			$data = "\n$data";  # next line @@ -358,7 +361,7 @@ sub redraw_nick_nr {  	my ($nr) = @_;  	my $line = $nr - $scroll_pos;  	if ($line >= 0 && $line < $height) { -		nicklist_write_line($line, $nicklist[$nr]->{'text'}); +		nicklist_write_line($line, $nicklist[$nr]->{text});  	}  } @@ -369,10 +372,11 @@ sub draw_insert_nick_nr {  	if ($line < 0) {            # nick is inserted above visible area  		$scroll_pos++;          # 'scroll' down :)  	} elsif ($line < $height) { # line is visible -		if ($mode == $SCREEN) { +		if ($mode == MODE_SCREEN) {  			need_redraw(); -		} elsif ($mode == $FIFO) { -			my $data = "\033[m\033[L". $nicklist[$nr]->{'text'}; # reset color & insert line & write nick +		} elsif ($mode == MODE_FIFO) { +            # reset color & insert line & write nick +			my $data = "\033[m\033[L". $nicklist[$nr]->{text};  			if ($line == $cursor_line) {  				$data = "\033[1G".$data; # back to beginning of line  			} else { @@ -393,10 +397,10 @@ sub draw_remove_nick_nr {  	if ($line < 0) {            # nick removed above visible area  		$scroll_pos--;          # 'scroll' up :)  	} elsif ($line < $height) { # line is visible -		if ($mode == $SCREEN) { +		if ($mode == MODE_SCREEN) {  			need_redraw(); -		} elsif ($mode == $FIFO) { -			#my $data = "\033[m\033[L[i$line]". $nicklist[$nr]->{'text'}; # reset color & insert line & write nick +		} elsif ($mode == MODE_FIFO) { +			#my $data = "\033[m\033[L[i$line]". $nicklist[$nr]->{text}; # reset color & insert line & write nick  			my $data = "\033[M"; # delete line  			if ($line != $cursor_line) {  				$data = "\033[".($line+1)."d".$data; # jump @@ -418,7 +422,7 @@ sub redraw {  	my $line = 0;  	### draw nicklist ###  	for (my $i=$scroll_pos;$line < $height && $i < @nicklist; $i++) { -		nicklist_write_line($line++, $nicklist[$i]->{'text'}); +		nicklist_write_line($line++, $nicklist[$i]->{text});  	}  	### clean up other lines ### @@ -434,7 +438,7 @@ sub redraw {  sub need_redraw {  	if (!$need_redraw) {  		$need_redraw = 1; -		Irssi::timeout_add_once(10,\&redraw,[]); +		Irssi::timeout_add_once(10, \&redraw, []);  	}  } @@ -449,12 +453,12 @@ sub sig_gui_print_text_finished {  		return;  	}  	my $window = @_[0]; -	if ($window->{'refnum'} == Irssi::active_win->{'refnum'} || Irssi::settings_get_str('nicklist_screen_split_windows') eq '*') { +	if ($window->{refnum} == Irssi::active_win->{refnum} || Irssi::settings_get_str('nicklist_screen_split_windows') eq '*') {  		need_redraw;  		return;  	}  	foreach my $win (split(/[ ,]/, Irssi::settings_get_str('nicklist_screen_split_windows'))) { -		if ($window->{'refnum'} == $win || $window->{'name'} eq $win) { +		if ($window->{refnum} == $win || $window->{name} eq $win) {  			need_redraw;  			return;  		} @@ -469,7 +473,7 @@ sub sig_gui_print_text_finished {  sub find_nick {  	my ($nick) = @_;  	for (my $i=0;$i < @nicklist; $i++) { -		if ($nicklist[$i]->{'nick'} eq $nick) { +		if ($nicklist[$i]->{nick} eq $nick) {  			return $i;  		}  	} @@ -480,7 +484,7 @@ sub find_nick {  sub find_insert_pos {  	my ($cmp)= @_;  	for (my $i=0;$i < @nicklist; $i++) { -		if ($nicklist[$i]->{'cmp'} gt $cmp) { +		if ($nicklist[$i]->{cmp} gt $cmp) {  			return $i;  		}  	} @@ -496,8 +500,8 @@ sub make_nicklist {  	my $channel = Irssi::active_win->{active};  	if (!$channel || (ref($channel) ne 'Irssi::Irc::Channel' && ref($channel) ne -                      'Irssi::Silc::Channel') || $channel->{'type'} ne 'CHANNEL' || -        ($channel->{chat_type} ne 'SILC' && !$channel->{'names_got'}) ) { +                      'Irssi::Silc::Channel') || $channel->{type} ne 'CHANNEL' || +        ($channel->{chat_type} ne 'SILC' && !$channel->{names_got}) ) {  		$active_channel = undef;  		# no nicklist @@ -536,32 +540,11 @@ sub sort_prefixed_nicks {      ($b->[0]->{priority} . lc $b->[1]->{nick});  } -sub blahblah { -    ( -     ($a->{'op'} -      ? '1' -      : $a->{'halfop'} -      ? '2' -      : $a->{'voice'} -      ? '3' -      : '4') . -     lc($a->{'nick'}) -    ) cmp ( -           ($b->{'op'} -            ?'1' -            :$b->{'halfop'} -            ?'2' -            :$b->{'voice'} -            ?'3' -            :'4') . -           lc($b->{'nick'}) -          ) -}  # insert nick(as hash) into nicklist  # pre: cmp has to be calculated  sub insert_nick {  	my ($nick) = @_; -	my $nr = find_insert_pos($nick->{'cmp'}); +	my $nr = find_insert_pos($nick->{cmp});  	splice @nicklist, $nr, 0, $nick;  	draw_insert_nick_nr($nr);  } @@ -601,12 +584,12 @@ sub cmd_scroll {  sub is_active_channel {  	my ($server,$channel) = @_; # (channel as string) -	return ($server && $server->{'tag'} eq $active_channel->{'server'}->{'tag'} && $server->channel_find($channel) && $active_channel && $server->channel_find($channel)->{'name'} eq $active_channel->{'name'}); +	return ($server && $server->{tag} eq $active_channel->{server}->{tag} && $server->channel_find($channel) && $active_channel && $server->channel_find($channel)->{name} eq $active_channel->{name});  }  sub sig_channel_wholist { # this is actualy a little late, when the names are received would be better  	my ($channel) = @_; -	if (Irssi::active_win->{'active'} && Irssi::active_win->{'active'}->{'name'} eq $channel->{'name'}) { # the channel joined is active +	if (Irssi::active_win->{active} && Irssi::active_win->{active}->{name} eq $channel->{name}) { # the channel joined is active  		make_nicklist                                                                                                        }  } @@ -653,7 +636,7 @@ sub sig_part {  sub sig_quit {  	my ($server,$nick,$address, $reason) = @_; -	if ($server->{'tag'} ne $active_channel->{'server'}->{'tag'}) { +	if ($server->{tag} ne $active_channel->{server}->{tag}) {  		return;  	}  	my $nr = find_nick($nick); @@ -664,7 +647,7 @@ sub sig_quit {  sub sig_nick {  	my ($server, $newnick, $oldnick, $address) = @_; -	if ($server->{'tag'} ne $active_channel->{'server'}->{'tag'}) { +	if ($server->{tag} ne $active_channel->{server}->{tag}) {  		return;  	}  	my $nr = find_nick($oldnick); @@ -681,20 +664,20 @@ sub sig_nick {  sub sig_mode {  	my ($channel, $nick, $setby, $mode, $type) = @_; # (nick and channel as rec) -	if ($channel->{'server'}->{'tag'} ne $active_channel->{'server'}->{'tag'} || $channel->{'name'} ne $active_channel->{'name'}) { +	if ($channel->{server}->{tag} ne $active_channel->{server}->{tag} || $channel->{name} ne $active_channel->{name}) {  		return;  	}  	my $nr = find_nick($nick->{nick});  	if ($nr == -1) { -		Irssi::print("nicklist warning: $nick->{'nick'} had mode set on " . -                     "$channel->{'name'}, but was not found in nicklist"); +		Irssi::print("nicklist warning: $nick->{nick} had mode set on " . +                     "$channel->{name}, but was not found in nicklist");  	} else {  		my $nicklist_item = $nicklist[$nr];  		remove_nick($nr);          $nicklist_item->{mode} = _select_prefix_umode($nick); -#		$nicklist_item->{'mode'} = ($nick->{'op'}?$MODE_OP:$nick->{'halfop'}?$MODE_HALFOP:$nick->{'voice'}?$MODE_VOICE:$MODE_NORMAL); +#		$nicklist_item->{mode} = ($nick->{op}?$MODE_OP:$nick->{halfop}?$MODE_HALFOP:$nick->{voice}?$MODE_VOICE:$MODE_NORMAL);  		calc_text($nicklist_item);  		insert_nick($nicklist_item); | 
