annotate irssi/scripts/nm.pl @ 148:4e92ca6c779a

add irssi conf
author zegervdv <zegervdv@me.com>
date Sat, 18 Oct 2014 10:06:58 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
148
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
1 use Irssi;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
2 use strict;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
3
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
4 use vars qw($VERSION %IRSSI);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
5
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
6 $VERSION="0.3.10";
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
7 %IRSSI = (
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
8 authors=> 'BC-bd',
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
9 contact=> '[email protected]',
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
10 name=> 'nm',
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
11 description=> 'right aligned nicks depending on longest nick',
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
12 license=> 'GPL v2',
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
13 url=> 'http://bc-bd.org/blog/irssi/',
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
14 );
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
15
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
16 # $Id: 9cb009e8b7e6f5ce60294334faf88715ef01413e $
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
17 # nm.pl
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
18 # for irssi 0.8.4 by [email protected]
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
19 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
20 # right aligned nicks depending on longest nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
21 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
22 # inspired by neatmsg.pl from kodgehopper <[email protected]
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
23 # formats taken from www.irssi.de
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
24 # thanks to adrianel <[email protected]> for some hints
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
25 # thanks to Eric Wald <[email protected]> for the left alignment patch
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
26 # inspired by nickcolor.pl by Timo Sirainen and Ian Peters
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
27 # thanks to And1 <[email protected]> for a small patch
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
28 # thanks to [email protected] for the save/load patch
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
29 # thanks to Dennis Heimbert <[email protected]> for a bug report/patch
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
30 # thanks to Roy Sigurd Karlsbakk <[email protected]> for an autosave patch
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
31 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
32 #########
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
33 # USAGE
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
34 ###
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
35 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
36 # use
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
37 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
38 # /neatcolor help
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
39 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
40 # for help on available commands
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
41 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
42 #########
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
43 # OPTIONS
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
44 #########
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
45
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
46 my $help = "
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
47 /set neat_colorize <ON|OFF>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
48 * ON : colorize nicks
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
49 * OFF : do not colorize nicks
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
50
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
51 /set neat_colors <string>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
52 Use these colors when colorizing nicks, eg:
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
53
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
54 /set neat_colors yYrR
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
55
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
56 See the file formats.txt on an explanation of what colors are
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
57 available.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
58
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
59 /set neat_left_actions <ON|OFF>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
60 * ON : print nicks left-aligned on actions
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
61 * OFF : print nicks right-aligned on actions
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
62
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
63 /set neat_left_messages <ON|OFF>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
64 * ON : print nicks left-aligned on messages
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
65 * OFF : print nicks right-aligned on messages
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
66
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
67 /set neat_right_mode <ON|OFF>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
68 * ON : print the mode of the nick e.g @%+ after the nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
69 * OFF : print it left of the nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
70
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
71 /set neat_maxlength <number>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
72 * number : Maximum length of Nicks to display. Longer nicks are truncated.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
73 * 0 : Do not truncate nicks.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
74
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
75 /set neat_melength <number>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
76 * number : number of spaces to substract from /me padding
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
77
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
78 /set neat_ignorechars <str>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
79 * str : regular expression used to filter out unwanted characters in
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
80 nicks. this can be used to assign the same color for similar
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
81 nicks, e.g. foo and foo_:
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
82
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
83 /set neat_ignorechars [_]
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
84
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
85 /set neat_allow_shrinking <ON|OFF>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
86 * ON : shrink padding when longest nick disappears
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
87 * OFF : do not shrink, only allow growing
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
88
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
89 /set neat_autosave <number>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
90 * number : autosave after <number> seconds, defaults to 60. Set to 0 to
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
91 disable.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
92 ";
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
93
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
94 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
95 ###
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
96 ################
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
97 ###
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
98 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
99 # Changelog
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
100 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
101 # Version 0.3.11
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
102 # - added autosave, idea from Roy Sigurd Karlsbakk
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
103 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
104 # Version 0.3.10
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
105 # - fix losing of saved color when changing nick shares more than one channel
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
106 # with you
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
107 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
108 # Version 0.3.9
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
109 # - fix longest nick calculation for nicks shorter than the current longest
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
110 # nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
111 # - updated url
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
112 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
113 # Version 0.3.8
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
114 # - fixed error in the nickchange tracking code, reported by Kevin Ballard
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
115 # - added --all switch to reset command
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
116 # - skip broken lines in saved_colors
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
117 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
118 # Version 0.3.7
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
119 # - fixed crash when calling /neatcolor without parameters
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
120 # - fixed url
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
121 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
122 # Version 0.3.6
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
123 # - added option to ignore certain characters from color hash building, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
124 # https://bc-bd.org/trac/irssi/ticket/22
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
125 # - added option to save and specify colors for nicks, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
126 # https://bc-bd.org/trac/irssi/ticket/23
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
127 # - added option to disallow shrinking, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
128 # https://bc-bd.org/trac/irssi/ticket/12
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
129 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
130 # Version 0.3.5
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
131 # - now also aligning own messages in queries
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
132 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
133 # Version 0.3.4
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
134 # - fxed off by one error in nick_to_color, patch by jrib, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
135 # https://bc-bd.org/trac/irssi/ticket/24
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
136 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
137 # Version 0.3.3
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
138 # - added support for alignment in queries, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
139 # https://bc-bd.org/trac/irssi/ticket/21
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
140 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
141 # Version 0.3.2
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
142 # - integrated left alignment patch from Eric Wald <[email protected]>, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
143 # https://bc-bd.org/trac/irssi/ticket/18
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
144 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
145 # Version 0.3.1
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
146 # - /me padding, see https://bc-bd.org/trac/irssi/ticket/17
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
147 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
148 # Version 0.3.0
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
149 # - integrate nick coloring support
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
150 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
151 # Version 0.2.1
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
152 # - moved neat_maxlength check to reformat() (thx to Jerome De Greef <[email protected]>)
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
153 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
154 # Version 0.2.0
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
155 # - by adrianel <[email protected]>
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
156 # * reformat after setup reload
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
157 # * maximum length of nicks
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
158 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
159 # Version 0.1.0
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
160 # - got lost somewhere
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
161 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
162 # Version 0.0.2
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
163 # - ugly typo fixed
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
164 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
165 # Version 0.0.1
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
166 # - initial release
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
167 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
168 ###
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
169 ################
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
170 ###
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
171 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
172 # BUGS
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
173 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
174 # Empty nicks, eg "<> message"
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
175 # This seems to be triggered by some themes. As of now there is no known
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
176 # fix other than changing themes, see
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
177 # https://bc-bd.org/trac/irssi/ticket/19
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
178 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
179 # Well, it's a feature: due to the lacking support of extendable themes
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
180 # from irssi it is not possible to just change some formats per window.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
181 # This means that right now all windows are aligned with the same nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
182 # length, which can be somewhat annoying.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
183 # If irssi supports extendable themes, I will include per-server indenting
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
184 # and a setting where you can specify servers you don't want to be indented
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
185 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
186 ###
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
187 ################
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
188
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
189 my ($longestNick, %saved_colors, @colors, $alignment, $sign, %commands,);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
190 my ($pending_save);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
191
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
192 my $colorize = -1;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
193
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
194 sub reformat() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
195 my $max = Irssi::settings_get_int('neat_maxlength');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
196 my $actsign = Irssi::settings_get_bool('neat_left_actions')? '': '-';
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
197 $sign = Irssi::settings_get_bool('neat_left_messages')? '': '-';
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
198
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
199 if ($max && $max < $longestNick) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
200 $longestNick = $max;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
201 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
202
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
203 my $me = $longestNick - Irssi::settings_get_int('neat_melength');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
204 $me = 0 if ($me < 0);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
205
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
206 Irssi::command('^format own_action {ownaction $['.$actsign.$me.']0} $1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
207 Irssi::command('^format action_public {pubaction $['.$actsign.$me.']0}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
208 Irssi::command('^format action_private {pvtaction $['.$actsign.$me.']0}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
209 Irssi::command('^format action_private_query {pvtaction_query $['.$actsign.$me.']0} $2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
210
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
211 my $length = $sign . $longestNick;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
212 if (Irssi::settings_get_bool('neat_right_mode') == 0) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
213 Irssi::command('^format own_msg {ownmsgnick $2 {ownnick $['.$length.']0}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
214 Irssi::command('^format own_msg_channel {ownmsgnick $3 {ownnick $['.$length.']0}{msgchannel $1}}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
215 Irssi::command('^format pubmsg_me {pubmsgmenick $2 {menick $['.$length.']0}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
216 Irssi::command('^format pubmsg_me_channel {pubmsgmenick $3 {menick $['.$length.']0}{msgchannel $1}}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
217 Irssi::command('^format pubmsg_hilight {pubmsghinick $0 $3 $['.$length.']1%n}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
218 Irssi::command('^format pubmsg_hilight_channel {pubmsghinick $0 $4 $['.$length.']1{msgchannel $2}}$3');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
219 Irssi::command('^format pubmsg {pubmsgnick $2 {pubnick $['.$length.']0}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
220 Irssi::command('^format pubmsg_channel {pubmsgnick $2 {pubnick $['.$length.']0}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
221 } else {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
222 Irssi::command('^format own_msg {ownmsgnick {ownnick $['.$length.']0$2}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
223 Irssi::command('^format own_msg_channel {ownmsgnick {ownnick $['.$length.']0$3}{msgchannel $1}}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
224 Irssi::command('^format pubmsg_me {pubmsgmenick {menick $['.$length.']0}$2}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
225 Irssi::command('^format pubmsg_me_channel {pubmsgmenick {menick $['.$length.']0$3}{msgchannel $1}}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
226 Irssi::command('^format pubmsg_hilight {pubmsghinick $0 $0 $['.$length.']1$3%n}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
227 Irssi::command('^format pubmsg_hilight_channel {pubmsghinick $0 $['.$length.']1$4{msgchannel $2}}$3');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
228 Irssi::command('^format pubmsg {pubmsgnick {pubnick $['.$length.']0$2}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
229 Irssi::command('^format pubmsg_channel {pubmsgnick {pubnick $['.$length.']0$2}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
230 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
231
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
232 # format queries
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
233 Irssi::command('^format own_msg_private_query {ownprivmsgnick {ownprivnick $['.$length.']2}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
234 Irssi::command('^format msg_private_query {privmsgnick $['.$length.']0}$2');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
235 };
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
236
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
237 sub findLongestNick {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
238 $longestNick = 0;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
239
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
240 # get own nick length
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
241 map {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
242 my $len = length($_->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
243
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
244 $longestNick = $len if ($len > $longestNick);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
245 } Irssi::servers();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
246
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
247 # find longest other nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
248 foreach (Irssi::channels()) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
249 foreach ($_->nicks()) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
250 my $len = length($_->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
251
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
252 $longestNick = $len if ($len > $longestNick);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
253 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
254 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
255
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
256 reformat();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
257 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
258
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
259 sub delayed_save
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
260 {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
261 # skip if we have already a save pending. we don't reset the timeout
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
262 # here, else you could end up with changes never being automatically
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
263 # saved if they happen more often than <neat_autosave> seconds
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
264 return if $pending_save;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
265
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
266 return unless Irssi::settings_get_int('neat_autosave');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
267
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
268 Irssi::timeout_add_once(Irssi::settings_get_int('neat_autosave') * 1000,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
269 \&save_colors, undef);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
270 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
271
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
272 # a new nick was created
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
273 sub sig_newNick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
274 {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
275 my ($channel, $nick) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
276
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
277 my $len = length($nick->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
278
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
279 if ($len > $longestNick) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
280 $longestNick = $len;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
281 reformat();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
282 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
283
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
284 return if (exists($saved_colors{$nick->{nick}}));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
285
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
286 $saved_colors{$nick->{nick}} = "%".nick_to_color($nick->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
287 delayed_save();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
288 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
289
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
290 # something changed
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
291 sub sig_changeNick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
292 {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
293 my ($channel, $nick, $old_nick) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
294
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
295 # if no saved color exists, we already handled this nickchange. irssi
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
296 # generates one signal per channel the nick is in, so if you share more
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
297 # than one channel with this nick, you'd lose the coloring.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
298 return unless exists($saved_colors{$old_nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
299
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
300 # we need to update the saved colorors hash independent of nick lenght
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
301 $saved_colors{$nick->{nick}} = $saved_colors{$old_nick};
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
302 delete $saved_colors{$old_nick};
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
303 delayed_save();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
304
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
305 my $new = length($nick->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
306
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
307 # in case the new nick is longer than the old one, simply remember this
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
308 # as the new longest nick and reformat.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
309 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
310 # if the new nick is as long as the known longest nick nothing has to be
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
311 # done
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
312 #
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
313 # if the new nick is shorter than the current longest one and if the
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
314 # user allows us to shrink, find new longest nick and reformat.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
315 if ($new > $longestNick) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
316 $longestNick = $new;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
317 } elsif ($new == $longestNick) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
318 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
319 } else {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
320 return unless Irssi::settings_get_bool('neat_allow_shrinking');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
321 findLongestNick();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
322 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
323
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
324 reformat();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
325 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
326
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
327 sub sig_removeNick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
328 {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
329 my ($channel, $nick) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
330
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
331 my $thisLen = length($nick->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
332
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
333 # we only need to recalculate if this was the longest nick and we are
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
334 # allowed to shrink
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
335 if ($thisLen == $longestNick && Irssi::settings_get_bool('neat_allow_shrinking')) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
336 findLongestNick();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
337 reformat();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
338 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
339
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
340 # we do not remove a known color for a gone nick, as they may return
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
341 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
342
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
343 # based on simple_hash from nickcolor.pl
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
344 sub nick_to_color($) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
345 my ($string) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
346 chomp $string;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
347
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
348 my $ignore = Irssi::settings_get_str("neat_ignorechars");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
349 $string =~ s/$ignore//g;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
350
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
351 my $counter;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
352 foreach my $char (split(//, $string)) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
353 $counter += ord $char;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
354 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
355
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
356 return $colors[$counter % ($#colors + 1)];
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
357 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
358
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
359 sub color_left($) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
360 Irssi::command('^format pubmsg {pubmsgnick $2 {pubnick '.$_[0].'$['.$sign.$longestNick.']0}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
361 Irssi::command('^format pubmsg_channel {pubmsgnick $2 {pubnick '.$_[0].'$['.$sign.$longestNick.']0}}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
362 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
363
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
364 sub color_right($) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
365 Irssi::command('^format pubmsg {pubmsgnick {pubnick '.$_[0].'$['.$sign.$longestNick.']0}$2}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
366 Irssi::command('^format pubmsg_channel {pubmsgnick {pubnick '.$_[0].'$['.$sign.$longestNick.']0}$2}$1');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
367 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
368
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
369 sub sig_public {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
370 my ($server, $msg, $nick, $address, $target) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
371
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
372 &$alignment($saved_colors{$nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
373 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
374
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
375 sub sig_setup {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
376 @colors = split(//, Irssi::settings_get_str('neat_colors'));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
377
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
378 # check left or right alignment
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
379 if (Irssi::settings_get_bool('neat_right_mode') == 0) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
380 $alignment = \&color_left;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
381 } else {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
382 $alignment = \&color_right;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
383 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
384
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
385 # check if we switched coloring on or off
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
386 my $new = Irssi::settings_get_bool('neat_colorize');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
387 if ($new != $colorize) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
388 if ($new) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
389 Irssi::signal_add('message public', 'sig_public');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
390 } else {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
391 if ($colorize >= 0) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
392 Irssi::signal_remove('message public', 'sig_public');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
393 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
394 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
395 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
396 $colorize = $new;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
397
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
398 reformat();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
399 &$alignment('%w');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
400 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
401
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
402 # make sure that every nick has an assigned color
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
403 sub assert_colors() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
404 foreach (Irssi::channels()) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
405 foreach ($_->nicks()) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
406 next if (exists($saved_colors{$_->{nick}}));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
407
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
408 $saved_colors{$_->{nick}} = "%".nick_to_color($_->{nick});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
409 delayed_save();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
410 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
411 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
412 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
413
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
414 # load colors from file
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
415 sub load_colors() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
416 open(FID, "<".$ENV{HOME}."/.irssi/saved_colors") || return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
417
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
418 while (<FID>) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
419 chomp;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
420 my ($k, $v) = split(/:/);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
421
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
422 # skip broken lines, those may have been introduced by nm.pl
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
423 # version 0.3.7 and earlier
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
424 if ($k eq '' || $v eq '') {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
425 neat_log(Irssi::active_win(), "Warning, broken line in saved_colors file, skipping '$k:$v'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
426 next;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
427 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
428
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
429 $saved_colors{$k} = $v;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
430 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
431
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
432 close(FID);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
433 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
434
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
435 # save colors to file
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
436 sub save_colors() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
437 open(FID, ">".$ENV{HOME}."/.irssi/saved_colors");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
438
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
439 print FID $_.":".$saved_colors{$_}."\n" foreach (keys(%saved_colors));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
440
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
441 close(FID);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
442
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
443 # clear possible pending save.
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
444 Irssi::timeout_remove($pending_save) if $pending_save;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
445 $pending_save = undef;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
446 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
447
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
448 # log a line to a window item
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
449 sub neat_log($@) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
450 my ($witem, @text) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
451
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
452 $witem->print("nm.pl: ".$_) foreach(@text);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
453 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
454
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
455 # show available colors
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
456 sub cmd_neatcolor_colors($) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
457 my ($witem, undef, undef) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
458
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
459 neat_log($witem, "Available colors: ".join("", map { "%".$_.$_ } @colors));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
460 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
461
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
462 # display the configured color for a nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
463 sub cmd_neatcolor_get() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
464 my ($witem, $nick, undef) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
465
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
466 if (!exists($saved_colors{$nick})) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
467 neat_log($witem, "Error: no such nick '$nick'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
468 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
469 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
470
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
471 neat_log($witem, "Color for ".$saved_colors{$nick}.$nick);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
472 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
473
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
474 # display help
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
475 sub cmd_neatcolor_help() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
476 my ($witem, $cmd, undef) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
477
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
478 if ($cmd) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
479 if (!exists($commands{$cmd})) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
480 neat_log($witem, "Error: no such command '$cmd'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
481 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
482 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
483
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
484 if (!exists($commands{$cmd}{verbose})) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
485 neat_log($witem, "No additional help for '$cmd' available");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
486 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
487 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
488
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
489 neat_log($witem, ( "", "Help for ".uc($cmd), "" ) );
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
490 neat_log($witem, @{$commands{$cmd}{verbose}});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
491 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
492 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
493
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
494 neat_log($witem, split(/\n/, $help));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
495 neat_log($witem, "Available options for /neatcolor");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
496 neat_log($witem, " ".$_.": ".$commands{$_}{text}) foreach(sort(keys(%commands)));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
497
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
498 my @verbose;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
499 foreach (sort(keys(%commands))) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
500 push(@verbose, $_) if exists($commands{$_}{verbose});
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
501 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
502
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
503 neat_log($witem, "Verbose help available for: '".join(", ", @verbose)."'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
504 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
505
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
506 # list configured nicks
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
507 sub cmd_neatcolor_list() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
508 my ($witem, undef, undef) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
509
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
510 neat_log($witem, "Configured nicks: ".join(", ", map { $saved_colors{$_}.$_ } sort(keys(%saved_colors))));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
511 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
512
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
513 # reset a nick to its default color
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
514 sub cmd_neatcolor_reset() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
515 my ($witem, $nick, undef) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
516
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
517 if ($nick eq '--all') {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
518 %saved_colors = ();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
519 assert_colors();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
520 neat_log($witem, "Reset all colors");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
521 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
522 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
523
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
524 if (!exists($saved_colors{$nick})) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
525 neat_log($witem, "Error: no such nick '$nick'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
526 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
527 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
528
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
529 $saved_colors{$nick} = "%".nick_to_color($nick);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
530 delayed_save();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
531 neat_log($witem, "Reset color for ".$saved_colors{$nick}.$nick);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
532 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
533
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
534 # save configured colors to disk
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
535 sub cmd_neatcolor_save() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
536 my ($witem, undef, undef) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
537
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
538 save_colors();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
539
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
540 neat_log($witem, "color information saved");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
541 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
542
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
543 # set a color for a nick
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
544 sub cmd_neatcolor_set() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
545 my ($witem, $nick, $color) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
546
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
547 my @found = grep(/$color/, @colors);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
548 if ($#found) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
549 neat_log($witem, "Error: trying to set unknown color '%$color$color%n'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
550 cmd_neatcolor_colors($witem);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
551 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
552 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
553
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
554 if ($witem->{type} ne "CHANNEL" && $witem->{type} ne "QUERY") {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
555 neat_log($witem, "Warning: not a Channel/Query, can not check nick!");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
556 neat_log($witem, "Remember, nicks are case sensitive to nm.pl");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
557 } else {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
558 my @nicks = grep(/^$nick$/i, map { $_->{nick} } ($witem->nicks()));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
559
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
560 if ($#nicks < 0) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
561 neat_log($witem, "Warning: could not find nick '$nick' here");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
562 } else {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
563 if ($nicks[0] ne $nick) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
564 neat_log($witem, "Warning: using '$nicks[0]' instead of '$nick'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
565 $nick = $nicks[0];
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
566 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
567 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
568 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
569
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
570 $saved_colors{$nick} = "%".$color;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
571 delayed_save();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
572 neat_log($witem, "Set color for $saved_colors{$nick}$nick");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
573 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
574
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
575 %commands = (
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
576 colors => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
577 text => "show available colors",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
578 verbose => [
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
579 "COLORS",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
580 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
581 "displays all available colors",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
582 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
583 "You can restrict/define the list of available colors ".
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
584 "with the help of the neat_colors setting"
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
585 ],
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
586 func => \&cmd_neatcolor_colors,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
587 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
588 get => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
589 text => "retrieve color for a nick",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
590 verbose => [
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
591 "GET <nick>",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
592 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
593 "displays color used for <nick>"
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
594 ],
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
595 func => \&cmd_neatcolor_get,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
596 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
597 help => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
598 text => "print this help message",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
599 func => \&cmd_neatcolor_help,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
600 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
601 list => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
602 text => "list configured nick/color pairs",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
603 func => \&cmd_neatcolor_list,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
604 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
605 reset => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
606 text => "reset color to default",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
607 verbose => [
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
608 "RESET --all|<nick>",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
609 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
610 "resets the color used for all nicks or for <nick> to ",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
611 "its internal default",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
612 ],
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
613 func => \&cmd_neatcolor_reset,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
614 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
615 save => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
616 text => "save color information to disk",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
617 verbose => [
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
618 "SAVE",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
619 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
620 "saves color information to disk, so that it survives ".
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
621 "an irssi restart.",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
622 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
623 "Color information will be automatically saved on /quit",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
624 ],
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
625 func => \&cmd_neatcolor_save,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
626 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
627 set => {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
628 text => "set a specific color for a nick",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
629 verbose => [
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
630 "SET <nick> <color>",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
631 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
632 "use <color> for <nick>",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
633 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
634 "This command will perform a couple of sanity checks, ".
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
635 "when called from a CHANNEL/QUERY window",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
636 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
637 "EXAMPLE:",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
638 " /neatcolor set bc-bd r",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
639 "",
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
640 "use /neatcolor COLORS to see available colors"
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
641 ],
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
642 func => \&cmd_neatcolor_set,
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
643 },
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
644 );
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
645
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
646 # the main command callback that gets called for all neatcolor commands
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
647 sub cmd_neatcolor() {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
648 my ($data, $server, $witem) = @_;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
649 my ($cmd, $nick, $color) = split (/ /, $data);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
650
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
651 $cmd = lc($cmd);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
652
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
653 # make sure we have a valid witem to print text to
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
654 $witem = Irssi::active_win() unless ($witem);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
655
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
656 if (!exists($commands{$cmd})) {
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
657 neat_log($witem, "Error: unknown command '$cmd'");
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
658 &{$commands{"help"}{"func"}}($witem) if (exists($commands{"help"}));
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
659 return;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
660 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
661
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
662 &{$commands{$cmd}{"func"}}($witem, $nick, $color);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
663 }
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
664
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
665 Irssi::settings_add_bool('misc', 'neat_left_messages', 0);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
666 Irssi::settings_add_bool('misc', 'neat_left_actions', 0);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
667 Irssi::settings_add_bool('misc', 'neat_right_mode', 1);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
668 Irssi::settings_add_int('misc', 'neat_maxlength', 0);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
669 Irssi::settings_add_int('misc', 'neat_melength', 2);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
670 Irssi::settings_add_bool('misc', 'neat_colorize', 1);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
671 Irssi::settings_add_str('misc', 'neat_colors', 'rRgGyYbBmMcC');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
672 Irssi::settings_add_str('misc', 'neat_ignorechars', '');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
673 Irssi::settings_add_bool('misc', 'neat_allow_shrinking', 1);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
674 Irssi::settings_add_int('misc', 'neat_autosave', 60);
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
675
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
676 Irssi::command_bind('neatcolor', 'cmd_neatcolor');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
677
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
678 Irssi::signal_add('nicklist new', 'sig_newNick');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
679 Irssi::signal_add('nicklist changed', 'sig_changeNick');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
680 Irssi::signal_add('nicklist remove', 'sig_removeNick');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
681
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
682 Irssi::signal_add('setup changed', 'sig_setup');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
683 Irssi::signal_add_last('setup reread', 'sig_setup');
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
684
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
685 findLongestNick();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
686 sig_setup;
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
687
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
688 load_colors();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
689 assert_colors();
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
690
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
691 # we need to add this signal _after_ the colors have been loaded, to make sure
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
692 # no race condition exists wrt color saving
4e92ca6c779a add irssi conf
zegervdv <zegervdv@me.com>
parents:
diff changeset
693 Irssi::signal_add('gui exit', 'save_colors');