From 9a8d296904d7e48f89f21f5e52265104ba274af1 Mon Sep 17 00:00:00 2001 From: handlename Date: Tue, 19 Mar 2013 16:51:24 +0900 Subject: [PATCH] align server tags --- channel-socket.pl | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/channel-socket.pl b/channel-socket.pl index 0b68a0b..7b693a3 100644 --- a/channel-socket.pl +++ b/channel-socket.pl @@ -34,11 +34,28 @@ }, ); + my @window_params_list; + my $max_length = 0; + for my $window (Irssi::windows()) { - my $name = $window->{active} ? $window->{active}{name} : $window->{name}; - my $server_tag = $window->{active} ? ' - '$window->{active}{server}{tag} : ''; - $h->push_write("$name$server_tag\n") if $h; + my $name = $window->{active} ? $window->{active}{name} : $window->{name}; + my $server_tag = $window->{active} ? $window->{active}{server}{tag} : ''; + my $length = length $name; + + push @window_params_list, { + name => $name, + server_tag => $server_tag, + length => length $name, + }; + + $max_length = $length if $max_length < $length; } + + for my $params (@window_params_list) { + my $padding = $params->{server_tag} ? ' ' x ($max_length - $params->{length} + 1) : ''; + $h->push_write("${$params}{name}$padding${$params}{server_tag}\n") if $h; + } + $h->on_drain(sub { undef $h }) if $h; };