Merge ~hloeung/matterircd/+git/irssi-matterircd-complete:lpcraft into ~hloeung/matterircd/+git/irssi-matterircd-complete:master

Proposed by Haw Loeung
Status: Merged
Merged at revision: c55db5d1b715cf945075b2f2807615feb5692ec1
Proposed branch: ~hloeung/matterircd/+git/irssi-matterircd-complete:lpcraft
Merge into: ~hloeung/matterircd/+git/irssi-matterircd-complete:master
Diff against target: 683 lines (+138/-125)
2 files modified
.launchpad.yaml (+12/-0)
matterircd_complete.pl (+126/-125)
Reviewer Review Type Date Requested Status
Haw Loeung Pending
Review via email: mp+433327@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.launchpad.yaml b/.launchpad.yaml
2new file mode 100644
3index 0000000..5cf3b69
4--- /dev/null
5+++ b/.launchpad.yaml
6@@ -0,0 +1,12 @@
7+pipeline:
8+ - lint
9+
10+jobs:
11+ lint:
12+ architectures: amd64
13+ series: focal
14+ packages:
15+ - irssi
16+ - perl-base
17+ run: |
18+ perl -Mstrict -Mdiagnostics -cw /build/lpcraft/project/matterircd_complete.pl
19diff --git a/matterircd_complete.pl b/matterircd_complete.pl
20index 723ff16..cf5f37a 100755
21--- a/matterircd_complete.pl
22+++ b/matterircd_complete.pl
23@@ -56,23 +56,8 @@ use strict;
24 use warnings;
25 use experimental 'smartmatch';
26
27-use Irssi::TextUI;
28-use Irssi qw(
29- command_bind
30- gui_input_get_pos
31- gui_input_set
32- gui_input_set_pos
33- parse_special
34- settings_add_bool
35- settings_add_int
36- settings_add_str
37- settings_get_bool
38- settings_get_int
39- settings_get_str
40- signal_add
41- signal_add_last
42- signal_continue
43-);
44+require Irssi::TextUI;
45+require Irssi;
46
47 # Enable for debugging purposes only.
48 # use Data::Dumper;
49@@ -94,24 +79,24 @@ my $KEY_SPC = 32;
50 my $KEY_B = 66;
51 my $KEY_O = 79;
52
53-settings_add_str('matterircd_complete', 'matterircd_complete_networks', '');
54-settings_add_str('matterircd_complete', 'matterircd_complete_nick_ignore', '');
55-settings_add_str('matterircd_complete', 'matterircd_complete_channel_dont_ignore', '');
56+Irssi::settings_add_str('matterircd_complete', 'matterircd_complete_networks', '');
57+Irssi::settings_add_str('matterircd_complete', 'matterircd_complete_nick_ignore', '');
58+Irssi::settings_add_str('matterircd_complete', 'matterircd_complete_channel_dont_ignore', '');
59
60
61 #==============================================================================
62
63-settings_add_int('matterircd_complete', 'matterircd_complete_reply_msg_thread_id_color', 10);
64+Irssi::settings_add_int('matterircd_complete', 'matterircd_complete_reply_msg_thread_id_color', 10);
65
66 # Rely on message/thread IDs stored in message cache so we can shorten
67 # to save on screen real-estate.
68-settings_add_int('matterircd_complete', 'matterircd_complete_shorten_message_thread_id', 5);
69-settings_add_bool('matterircd_complete', 'matterircd_complete_shorten_message_thread_id_hide_prefix', 1);
70+Irssi::settings_add_int('matterircd_complete', 'matterircd_complete_shorten_message_thread_id', 5);
71+Irssi::settings_add_bool('matterircd_complete', 'matterircd_complete_shorten_message_thread_id_hide_prefix', 1);
72 sub update_msgthreadid {
73 my($server, $msg, $nick, $address, $target) = @_;
74
75- return unless settings_get_int('matterircd_complete_shorten_message_thread_id');
76- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
77+ return unless Irssi::settings_get_int('matterircd_complete_shorten_message_thread_id');
78+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
79 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
80
81 my $prefix = '';
82@@ -131,11 +116,11 @@ sub update_msgthreadid {
83 $prefix = '↪';
84 }
85
86- if (not settings_get_bool('matterircd_complete_shorten_message_thread_id_hide_prefix')) {
87+ if (not Irssi::settings_get_bool('matterircd_complete_shorten_message_thread_id_hide_prefix')) {
88 $prefix = "${prefix}\@\@";
89 }
90
91- my $len = settings_get_int('matterircd_complete_shorten_message_thread_id');
92+ my $len = Irssi::settings_get_int('matterircd_complete_shorten_message_thread_id');
93 if ($len < 25) {
94 # Shorten to length configured. We use unicode ellipsis (...)
95 # here to both allow word selection to just select parts of
96@@ -146,19 +131,19 @@ sub update_msgthreadid {
97 $msgpostid = substr($msgpostid, 0, $len) . '…';
98 }
99 }
100- my $thread_color = settings_get_int('matterircd_complete_reply_msg_thread_id_color');
101+ my $thread_color = Irssi::settings_get_int('matterircd_complete_reply_msg_thread_id_color');
102 if ($msgpostid eq '') {
103 $msg =~ s/\@\@PLACEHOLDER\@\@/\x03${thread_color}[${prefix}${msgthreadid}]\x0f/;
104 } else {
105 $msg =~ s/\@\@PLACEHOLDER\@\@/\x03${thread_color}[${prefix}${msgthreadid},${msgpostid}]\x0f/;
106 }
107
108- signal_continue($server, $msg, $nick, $address, $target);
109+ Irssi::signal_continue($server, $msg, $nick, $address, $target);
110 }
111-signal_add_last('message irc action', 'update_msgthreadid');
112-signal_add_last('message irc notice', 'update_msgthreadid');
113-signal_add_last('message private', 'update_msgthreadid');
114-signal_add_last('message public', 'update_msgthreadid');
115+Irssi::signal_add_last('message irc action', 'update_msgthreadid');
116+Irssi::signal_add_last('message irc notice', 'update_msgthreadid');
117+Irssi::signal_add_last('message private', 'update_msgthreadid');
118+Irssi::signal_add_last('message public', 'update_msgthreadid');
119
120 sub cache_store {
121 my ($cache_ref, $item, $cache_size) = @_;
122@@ -200,15 +185,15 @@ sub cache_store {
123
124
125 my %MSGTHREADID_CACHE;
126-settings_add_int('matterircd_complete', 'matterircd_complete_message_thread_id_cache_size', 50);
127-command_bind 'matterircd_complete_msgthreadid_cache_dump' => sub {
128+Irssi::settings_add_int('matterircd_complete', 'matterircd_complete_message_thread_id_cache_size', 50);
129+sub cmd_matterircd_complete_msgthreadid_cache_dump {
130 my ($data, $server, $wi) = @_;
131
132 if (not $data) {
133 return unless ref $wi and ($wi->{type} eq 'CHANNEL' or $wi->{type} eq 'QUERY');
134 }
135
136- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
137+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
138 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
139
140 my $channel = $data ? $data : $wi->{name};
141@@ -227,17 +212,18 @@ command_bind 'matterircd_complete_msgthreadid_cache_dump' => sub {
142 }
143 Irssi::print("${channel}: Total: " . scalar @{$MSGTHREADID_CACHE{$channel}});
144 };
145+Irssi::command_bind('matterircd_complete_msgthreadid_cache_dump', 'cmd_matterircd_complete_msgthreadid_cache_dump');
146
147 my $MSGTHREADID_CACHE_SEARCH_ENABLED = 0;
148 my $MSGTHREADID_CACHE_INDEX = 0;
149-command_bind 'message_thread_id_search' => sub {
150+sub cmd_message_thread_id_search {
151 my ($data, $server, $wi) = @_;
152
153- return unless settings_get_int('matterircd_complete_message_thread_id_cache_size');
154+ return unless Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
155 return unless ref $wi and ($wi->{type} eq 'CHANNEL' or $wi->{type} eq 'QUERY');
156 return unless exists($MSGTHREADID_CACHE{$wi->{name}});
157
158- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
159+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
160 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
161
162 $MSGTHREADID_CACHE_SEARCH_ENABLED = 1;
163@@ -250,24 +236,25 @@ command_bind 'message_thread_id_search' => sub {
164
165 if ($msgthreadid) {
166 # Save input text.
167- my $input = parse_special('$L');
168+ my $input = Irssi::parse_special('$L');
169 # Remove existing thread.
170 $input =~ s/^@@(?:[0-9a-z]{26}|[0-9a-f]{3}) //;
171 # Insert message/thread ID from cache.
172- gui_input_set_pos(0);
173- gui_input_set("\@\@${msgthreadid} ${input}");
174+ Irssi::gui_input_set_pos(0);
175+ Irssi::gui_input_set("\@\@${msgthreadid} ${input}");
176 }
177 };
178+Irssi::command_bind('message_thread_id_search', 'cmd_message_thread_id_search');
179
180 my $ESC_PRESSED = 0;
181 my $O_PRESSED = 0;
182-signal_add_last 'gui key pressed' => sub {
183+sub signal_gui_key_pressed_msgthreadid {
184 my ($key) = @_;
185
186 return unless $MSGTHREADID_CACHE_SEARCH_ENABLED;
187
188 my $server = Irssi::active_server();
189- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
190+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
191 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
192
193 if (($key == $KEY_RET) || ($key == $KEY_CTRL_U)) {
194@@ -280,14 +267,14 @@ signal_add_last 'gui key pressed' => sub {
195
196 # Cancel/abort, so remove thread stuff.
197 elsif ($key == $KEY_CTRL_C) {
198- my $input = parse_special('$L');
199+ my $input = Irssi::parse_special('$L');
200
201 # Remove the Ctrl+C character.
202 $input =~ tr///d;
203
204 my $pos = 0;
205 if ($input =~ s/^(@@(?:[0-9a-z]{26}|[0-9a-f]{3}) )//) {
206- $pos = gui_input_get_pos() - length($1);
207+ $pos = Irssi::gui_input_get_pos() - length($1);
208 }
209
210 # We also want to move the input position back one for Ctrl+C
211@@ -297,8 +284,8 @@ signal_add_last 'gui key pressed' => sub {
212 # Replace the text in the input box with our modified version,
213 # then move cursor positon to where it was without the
214 # message/thread ID.
215- gui_input_set($input);
216- gui_input_set_pos($pos);
217+ Irssi::gui_input_set($input);
218+ Irssi::gui_input_set_pos($pos);
219
220 $MSGTHREADID_CACHE_INDEX = 0;
221 $MSGTHREADID_CACHE_SEARCH_ENABLED = 0;
222@@ -327,19 +314,20 @@ signal_add_last 'gui key pressed' => sub {
223 $O_PRESSED = 0;
224 }
225 };
226+Irssi::signal_add_last('gui key pressed', 'signal_gui_key_pressed_msgthreadid');
227
228-signal_add_last 'complete word' => sub {
229+sub signal_complete_word_msgthread_id {
230 my ($complist, $window, $word, $linestart, $want_space) = @_;
231
232 # We only want to tab-complete message/thread if this is the first
233 # word on the line.
234 return if $linestart;
235- return unless settings_get_int('matterircd_complete_message_thread_id_cache_size');
236+ return unless Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
237 return if (substr($word, 0, 1) eq '@' and substr($word, 0, 2) ne '@@');
238 return unless $window->{active} and ($window->{active}->{type} eq 'CHANNEL' || $window->{active}->{type} eq 'QUERY');
239 return unless exists($MSGTHREADID_CACHE{$window->{active}->{name}});
240
241- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
242+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
243 return unless exists $chatnets{'*'} || exists $chatnets{$window->{active_server}->{chatnet}};
244
245 if (substr($word, 0, 2) eq '@@') {
246@@ -352,21 +340,22 @@ signal_add_last 'complete word' => sub {
247 }
248 }
249 };
250+Irssi::signal_add_last('complete word', 'signal_complete_word_msgthread_id');
251
252 sub cache_msgthreadid {
253 my($server, $msg, $nick, $address, $target) = @_;
254
255- return unless settings_get_int('matterircd_complete_message_thread_id_cache_size');
256- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
257+ return unless Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
258+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
259 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
260
261 my @msgids = ();
262
263- my @ignore_nicks = split(/\s+/, settings_get_str('matterircd_complete_nick_ignore'));
264+ my @ignore_nicks = split(/\s+/, Irssi::settings_get_str('matterircd_complete_nick_ignore'));
265 # Ignore nicks configured to be ignored such as bots.
266 if ($nick ~~ @ignore_nicks) {
267 # But not if the channel is in matterircd_complete_channel_dont_ignore.
268- my @channel_dont_ignore = split(/\s+/, settings_get_str('matterircd_complete_channel_dont_ignore'));
269+ my @channel_dont_ignore = split(/\s+/, Irssi::settings_get_str('matterircd_complete_channel_dont_ignore'));
270 if ($target !~ @channel_dont_ignore) {
271 return;
272 }
273@@ -409,25 +398,25 @@ sub cache_msgthreadid {
274 $key = $nick
275 }
276
277- my $cache_size = settings_get_int('matterircd_complete_message_thread_id_cache_size');
278+ my $cache_size = Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
279 for my $msgid (@msgids) {
280 if (cache_store(\@{$MSGTHREADID_CACHE{$key}}, $msgid, $cache_size)) {
281 $MSGTHREADID_CACHE_INDEX = 0;
282 }
283 }
284 }
285-signal_add('message irc action', 'cache_msgthreadid');
286-signal_add('message irc notice', 'cache_msgthreadid');
287-signal_add('message private', 'cache_msgthreadid');
288-signal_add('message public', 'cache_msgthreadid');
289+Irssi::signal_add('message irc action', 'cache_msgthreadid');
290+Irssi::signal_add('message irc notice', 'cache_msgthreadid');
291+Irssi::signal_add('message private', 'cache_msgthreadid');
292+Irssi::signal_add('message public', 'cache_msgthreadid');
293
294-settings_add_bool('matterircd_complete', 'matterircd_complete_reply_msg_thread_id_at_start', 1);
295+Irssi::settings_add_bool('matterircd_complete', 'matterircd_complete_reply_msg_thread_id_at_start', 1);
296
297-signal_add_last 'message own_public' => sub {
298+sub signal_message_own_public_msgthreadid {
299 my($server, $msg, $target) = @_;
300
301- return unless settings_get_int('matterircd_complete_message_thread_id_cache_size');
302- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
303+ return unless Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
304+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
305 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
306
307 if ($msg !~ /^@@((?:[0-9a-z]{26})|(?:[0-9a-f]{3}))/) {
308@@ -435,14 +424,14 @@ signal_add_last 'message own_public' => sub {
309 }
310 my $msgid = $1;
311
312- my $cache_size = settings_get_int('matterircd_complete_message_thread_id_cache_size');
313+ my $cache_size = Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
314 if (cache_store(\@{$MSGTHREADID_CACHE{$target}}, $msgid, $cache_size)) {
315 $MSGTHREADID_CACHE_INDEX = 0;
316 }
317
318 my $msgthreadid = $1;
319
320- my $len = settings_get_int('matterircd_complete_shorten_message_thread_id');
321+ my $len = Irssi::settings_get_int('matterircd_complete_shorten_message_thread_id');
322 if ($len < 25) {
323 # Shorten to length configured. We use unicode ellipsis (...)
324 # here to both allow word selection to just select parts of
325@@ -451,22 +440,23 @@ signal_add_last 'message own_public' => sub {
326 $msgthreadid = substr($msgid, 0, $len) . "…";
327 }
328
329- my $thread_color = settings_get_int('matterircd_complete_reply_msg_thread_id_color');
330- if (settings_get_bool('matterircd_complete_reply_msg_thread_id_at_start')) {
331+ my $thread_color = Irssi::settings_get_int('matterircd_complete_reply_msg_thread_id_color');
332+ if (Irssi::settings_get_bool('matterircd_complete_reply_msg_thread_id_at_start')) {
333 $msg =~ s/^@@[0-9a-z]{26} /\x03${thread_color}[↪${msgthreadid}]\x0f /;
334 } else {
335 $msg =~ s/^@@[0-9a-z]{26} //;
336 $msg =~ s/$/ \x03${thread_color}[↪${msgthreadid}]\x0f/;
337 }
338
339- signal_continue($server, $msg, $target);
340+ Irssi::signal_continue($server, $msg, $target);
341 };
342+Irssi::signal_add_last('message own_public', 'signal_message_own_public_msgthreadid');
343
344-signal_add_last 'message own_private' => sub {
345+sub signal_message_own_private {
346 my($server, $msg, $target, $orig_target) = @_;
347
348- return unless settings_get_int('matterircd_complete_message_thread_id_cache_size');
349- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
350+ return unless Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
351+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
352 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
353
354 if ($msg !~ /^@@((?:[0-9a-z]{26})|(?:[0-9a-f]{3}))/) {
355@@ -474,14 +464,14 @@ signal_add_last 'message own_private' => sub {
356 }
357 my $msgid = $1;
358
359- my $cache_size = settings_get_int('matterircd_complete_message_thread_id_cache_size');
360+ my $cache_size = Irssi::settings_get_int('matterircd_complete_message_thread_id_cache_size');
361 if (cache_store(\@{$MSGTHREADID_CACHE{$target}}, $msgid, $cache_size)) {
362 $MSGTHREADID_CACHE_INDEX = 0;
363 }
364
365 my $msgthreadid = $1;
366
367- my $len = settings_get_int('matterircd_complete_shorten_message_thread_id');
368+ my $len = Irssi::settings_get_int('matterircd_complete_shorten_message_thread_id');
369 if ($len < 25) {
370 # Shorten to length configured. We use unicode ellipsis (...)
371 # here to both allow word selection to just select parts of
372@@ -490,16 +480,17 @@ signal_add_last 'message own_private' => sub {
373 $msgthreadid = substr($msgid, 0, $len) . "…";
374 }
375
376- my $thread_color = settings_get_int('matterircd_complete_reply_msg_thread_id_color');
377- if (settings_get_bool('matterircd_complete_reply_msg_thread_id_at_start')) {
378+ my $thread_color = Irssi::settings_get_int('matterircd_complete_reply_msg_thread_id_color');
379+ if (Irssi::settings_get_bool('matterircd_complete_reply_msg_thread_id_at_start')) {
380 $msg =~ s/^@@[0-9a-z]{26} /\x03${thread_color}[↪${msgthreadid}]\x0f /;
381 } else {
382 $msg =~ s/^@@[0-9a-z]{26} //;
383 $msg =~ s/$/ \x03${thread_color}[↪${msgthreadid}]\x0f/;
384 }
385
386- signal_continue($server, $msg, $target, $orig_target);
387+ Irssi::signal_continue($server, $msg, $target, $orig_target);
388 };
389+Irssi::signal_add_last('message own_private', 'signal_message_own_private');
390
391
392 #==============================================================================
393@@ -510,15 +501,15 @@ signal_add_last 'message own_private' => sub {
394
395
396 my %NICKNAMES_CACHE;
397-settings_add_int('matterircd_complete', 'matterircd_complete_nick_cache_size', 20);
398-command_bind 'matterircd_complete_nick_cache_dump' => sub {
399+Irssi::settings_add_int('matterircd_complete', 'matterircd_complete_nick_cache_size', 20);
400+sub cmd_matterircd_complete_nick_cache_dump {
401 my ($data, $server, $wi) = @_;
402
403 if (not $data) {
404 return unless ref $wi and $wi->{type} eq 'CHANNEL';
405 }
406
407- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
408+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
409 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
410
411 my $channel = $data ? $data : $wi->{name};
412@@ -537,22 +528,23 @@ command_bind 'matterircd_complete_nick_cache_dump' => sub {
413 }
414 Irssi::print("${channel}: Total: " . scalar @{$NICKNAMES_CACHE{$channel}});
415 };
416+Irssi::command_bind('matterircd_complete_nick_cache_dump', 'cmd_matterircd_complete_nick_cache_dump');
417
418-signal_add 'complete word' => sub {
419+sub signal_complete_word_nicks {
420 my ($complist, $window, $word, $linestart, $want_space) = @_;
421
422 return if substr($word, 0, 2) eq '@@';
423 return unless $window->{active} and $window->{active}->{type} eq 'CHANNEL';
424
425- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
426+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
427 return unless exists $chatnets{'*'} || exists $chatnets{$window->{active_server}->{chatnet}};
428
429 if (substr($word, 0, 1) eq '@') {
430 $word = substr($word, 1);
431 }
432- my $compl_char = settings_get_str('completion_char');
433+ my $compl_char = Irssi::settings_get_str('completion_char');
434 my $own_nick = $window->{active}->{ownnick}->{nick};
435- my @ignore_nicks = split(/\s+/, settings_get_str('matterircd_complete_nick_ignore'));
436+ my @ignore_nicks = split(/\s+/, Irssi::settings_get_str('matterircd_complete_nick_ignore'));
437
438 # We need to store the results in a temporary array so we can
439 # sort.
440@@ -612,30 +604,31 @@ signal_add 'complete word' => sub {
441 }
442 }
443 };
444+Irssi::signal_add('complete word', 'signal_complete_word_nicks');
445
446 sub cache_ircnick {
447 my($server, $msg, $nick, $address, $target) = @_;
448
449- return unless settings_get_int('matterircd_complete_nick_cache_size');
450- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
451+ return unless Irssi::settings_get_int('matterircd_complete_nick_cache_size');
452+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
453 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
454
455- my $cache_size = settings_get_int('matterircd_complete_nick_cache_size');
456- my @ignore_nicks = split(/\s+/, settings_get_str('matterircd_complete_nick_ignore'));
457+ my $cache_size = Irssi::settings_get_int('matterircd_complete_nick_cache_size');
458+ my @ignore_nicks = split(/\s+/, Irssi::settings_get_str('matterircd_complete_nick_ignore'));
459 # Ignore nicks configured to be ignored such as bots.
460 if ($nick !~ @ignore_nicks) {
461 cache_store(\@{$NICKNAMES_CACHE{$target}}, $nick, $cache_size);
462 }
463 }
464-signal_add('message irc action', 'cache_ircnick');
465-signal_add('message irc notice', 'cache_ircnick');
466-signal_add('message public', 'cache_ircnick');
467+Irssi::signal_add('message irc action', 'cache_ircnick');
468+Irssi::signal_add('message irc notice', 'cache_ircnick');
469+Irssi::signal_add('message public', 'cache_ircnick');
470
471-signal_add_last 'message own_public' => sub {
472+sub signal_message_own_public_nicks {
473 my($server, $msg, $target) = @_;
474
475- return unless settings_get_int('matterircd_complete_nick_cache_size');
476- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
477+ return unless Irssi::settings_get_int('matterircd_complete_nick_cache_size');
478+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
479 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
480
481 if ($msg !~ /^@([^@ \t:,\)]+)/) {
482@@ -643,7 +636,7 @@ signal_add_last 'message own_public' => sub {
483 }
484 my $nick = $1;
485
486- my $cache_size = settings_get_int('matterircd_complete_nick_cache_size');
487+ my $cache_size = Irssi::settings_get_int('matterircd_complete_nick_cache_size');
488 # We want to make sure that the nick or user is still online and
489 # in the channel.
490 my $wi = Irssi::active_win()->{active};
491@@ -657,20 +650,21 @@ signal_add_last 'message own_public' => sub {
492 }
493 }
494 };
495+Irssi::signal_add_last('message own_public', 'signal_message_own_public_nicks');
496
497 my @NICKNAMES_CACHE_SEARCH;
498 my $NICKNAMES_CACHE_SEARCH_ENABLED = 0;
499 my $NICKNAMES_CACHE_INDEX = 0;
500-command_bind 'nicknames_search' => sub {
501+sub cmd_nicknames_search {
502 my ($data, $server, $wi) = @_;
503
504 return unless ref $wi and $wi->{type} eq 'CHANNEL';
505
506- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
507+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
508 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
509
510 my $own_nick = $wi->{ownnick}->{nick};
511- my @ignore_nicks = split(/\s+/, settings_get_str('matterircd_complete_nick_ignore'));
512+ my @ignore_nicks = split(/\s+/, Irssi::settings_get_str('matterircd_complete_nick_ignore'));
513
514 @NICKNAMES_CACHE_SEARCH = ();
515 foreach my $cur ($wi->nicks()) {
516@@ -716,26 +710,27 @@ command_bind 'nicknames_search' => sub {
517
518 if ($nickname) {
519 # Save input text.
520- my $input = parse_special('$L');
521- my $compl_char = settings_get_str('completion_char');
522+ my $input = Irssi::parse_special('$L');
523+ my $compl_char = Irssi::settings_get_str('completion_char');
524 # Remove any existing nickname and insert one from the cache.
525 my $msgid = "";
526 if ($input =~ s/^(\@\@(?:[0-9a-z]{26}|[0-9a-f]{3}) )//) {
527 $msgid = $1;
528 }
529 $input =~ s/^\@[^${compl_char}]+$compl_char //;
530- gui_input_set_pos(0);
531- gui_input_set("${msgid}\@${nickname}${compl_char} ${input}");
532+ Irssi::gui_input_set_pos(0);
533+ Irssi::gui_input_set("${msgid}\@${nickname}${compl_char} ${input}");
534 }
535 };
536+Irssi::command_bind('nicknames_search', 'cmd_nicknames_search');
537
538-signal_add_last 'gui key pressed' => sub {
539+sub signal_gui_key_pressed_nicks {
540 my ($key) = @_;
541
542 return unless $NICKNAMES_CACHE_SEARCH_ENABLED;
543
544 my $server = Irssi::active_server();
545- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
546+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
547 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
548
549 if (($key == $KEY_RET) || ($key == $KEY_CTRL_U)) {
550@@ -746,15 +741,15 @@ signal_add_last 'gui key pressed' => sub {
551
552 # Cancel/abort, so remove current nickname.
553 elsif ($key == $KEY_CTRL_C) {
554- my $input = parse_special('$L');
555+ my $input = Irssi::parse_special('$L');
556
557 # Remove the Ctrl+C character.
558 $input =~ tr///d;
559
560- my $compl_char = settings_get_str('completion_char');
561+ my $compl_char = Irssi::settings_get_str('completion_char');
562 my $pos = 0;
563 if ($input =~ s/^(\@[^${compl_char}]+$compl_char )//) {
564- $pos = gui_input_get_pos() - length($1);
565+ $pos = Irssi::gui_input_get_pos() - length($1);
566 }
567
568 # We also want to move the input position back one for Ctrl+C
569@@ -764,14 +759,15 @@ signal_add_last 'gui key pressed' => sub {
570 # Replace the text in the input box with our modified version,
571 # then move cursor positon to where it was without the
572 # current nickname.
573- gui_input_set($input);
574- gui_input_set_pos($pos);
575+ Irssi::gui_input_set($input);
576+ Irssi::gui_input_set_pos($pos);
577
578 $NICKNAMES_CACHE_INDEX = 0;
579 $NICKNAMES_CACHE_SEARCH_ENABLED = 0;
580 @NICKNAMES_CACHE_SEARCH = ();
581 }
582 };
583+Irssi::signal_add_last('gui key pressed', 'signal_gui_key_pressed_nicks');
584
585
586 #==============================================================================
587@@ -782,15 +778,15 @@ signal_add_last 'gui key pressed' => sub {
588
589
590 my %REPLIED_CACHE;
591-settings_add_int('matterircd_complete', 'matterircd_complete_replied_cache_size', 50);
592-command_bind 'matterircd_complete_replied_cache_dump' => sub {
593+Irssi::settings_add_int('matterircd_complete', 'matterircd_complete_replied_cache_size', 50);
594+sub cmd_matterircd_complete_replied_cache_dump {
595 my ($data, $server, $wi) = @_;
596
597 if (not $data) {
598 return unless ref $wi and $wi->{type} eq 'CHANNEL';
599 }
600
601- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
602+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
603 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
604
605 my $channel = $data ? $data : $wi->{name};
606@@ -809,18 +805,20 @@ command_bind 'matterircd_complete_replied_cache_dump' => sub {
607 }
608 Irssi::print("${channel}: Total: " . scalar @{$REPLIED_CACHE{$channel}});
609 };
610+Irssi::command_bind('matterircd_complete_replied_cache_dump', 'cmd_matterircd_complete_replied_cache_dump');
611
612-command_bind 'matterircd_complete_replied_cache_clear' => sub {
613+sub cmd_matterircd_complete_replied_cache_clear {
614 %REPLIED_CACHE = ();
615 Irssi::print("matterircd_complete replied cache cleared");
616 };
617+Irssi::command_bind('matterircd_complete_replied_cache_clear', 'cmd_cmd_matterircd_complete_replied_cache_clear');
618
619 my $REPLIED_CACHE_CLEARED = 0;
620-settings_add_bool('matterircd_complete', 'matterircd_complete_clear_replied_cache_on_away', 0);
621-signal_add 'away mode changed' => sub {
622+Irssi::settings_add_bool('matterircd_complete', 'matterircd_complete_clear_replied_cache_on_away', 0);
623+sub signal_away_mode_changed {
624 my ($server) = @_;
625
626- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
627+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
628 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
629
630 # When you visit the web UI when marked away, it retriggers this
631@@ -829,18 +827,19 @@ signal_add 'away mode changed' => sub {
632 $REPLIED_CACHE_CLEARED = 0;
633 }
634
635- if (settings_get_bool('matterircd_complete_clear_replied_cache_on_away') && $server->{usermode_away} && (! $REPLIED_CACHE_CLEARED)) {
636+ if (Irssi::settings_get_bool('matterircd_complete_clear_replied_cache_on_away') && $server->{usermode_away} && (! $REPLIED_CACHE_CLEARED)) {
637 %REPLIED_CACHE = ();
638 $REPLIED_CACHE_CLEARED = 1;
639 Irssi::print("matterircd_complete replied cache cleared");
640 }
641 };
642+Irssi::signal_add('away mode changed', 'signal_away_mode_changed');
643
644-signal_add 'message own_public' => sub {
645+sub signal_message_own_public_replied {
646 my($server, $msg, $target) = @_;
647
648- return unless settings_get_int('matterircd_complete_replied_cache_size');
649- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
650+ return unless Irssi::settings_get_int('matterircd_complete_replied_cache_size');
651+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
652 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
653
654 if ($msg !~ /^@@((?:[0-9a-z]{26})|(?:[0-9a-f]{3}))/) {
655@@ -848,15 +847,16 @@ signal_add 'message own_public' => sub {
656 }
657 my $msgid = $1;
658
659- my $cache_size = settings_get_int('matterircd_complete_replied_cache_size');
660+ my $cache_size = Irssi::settings_get_int('matterircd_complete_replied_cache_size');
661 cache_store(\@{$REPLIED_CACHE{$target}}, $msgid, $cache_size);
662 };
663+Irssi::signal_add('message own_public', 'signal_message_own_public_replied');
664
665-signal_add 'message public' => sub {
666+sub signal_message_public {
667 my($server, $msg, $nick, $address, $target) = @_;
668
669- return unless settings_get_int('matterircd_complete_replied_cache_size');
670- my %chatnets = map { $_ => 1 } split(/\s+/, settings_get_str('matterircd_complete_networks'));
671+ return unless Irssi::settings_get_int('matterircd_complete_replied_cache_size');
672+ my %chatnets = map { $_ => 1 } split(/\s+/, Irssi::settings_get_str('matterircd_complete_networks'));
673 return unless exists $chatnets{'*'} || exists $chatnets{$server->{chatnet}};
674
675 # For '/me' actions, it has trailing space so we need to use
676@@ -873,5 +873,6 @@ signal_add 'message public' => sub {
677 }
678 }
679
680- signal_continue($server, $msg, $nick, $address, $target);
681+ Irssi::signal_continue($server, $msg, $nick, $address, $target);
682 };
683+Irssi::signal_add('message public', 'signal_message_public');

Subscribers

People subscribed via source and target branches

to all changes: