]> git.vpit.fr Git - perl/scripts/xchat.git/blob - hl.pl
Add an ignore highlight filter
[perl/scripts/xchat.git] / hl.pl
1 package Xchat::VPIT::Highlight;
2
3 use strict;
4 use warnings;
5
6 use Xchat qw/:all/;
7
8 use lib get_info 'xchatdir';
9 use Xchat::XPI;
10 use Xchat::XPI::Events qw/filter/;
11
12 our $VERSION = '0.02';
13
14 my $ph;
15
16 sub guihl {
17  command 'GUI FLASH';
18  command 'GUI COLOR 3';
19 }
20
21 sub guiclear {
22  command 'GUI COLOR 0';
23 }
24
25 hook_print 'Private Message to Dialog', sub { guihl; return EAT_NONE };
26
27 my %hl = (
28  '#cpantesters' => [ qw/
29     Acme-CPANAuthors-You-re_using
30     B-RecDeparse
31     CPANPLUS-Dist-Gentoo
32     Lexical-Types
33     Linux-SysInfo
34     MorseSignals
35     Perl-Critic-Policy-Dynamic-NoIndirect
36     Regexp-Wildcards
37     Scalar-Vec-Util
38     Scope-Upper
39     Sub-Nary
40     Sub-Prototype-Util
41     Test-Valgrind
42     Thread-Cleanup
43     Variable-Magic
44     indirect-
45     rgit-
46     subs-auto
47     with-
48   / ],
49 );
50
51 for (keys %hl) {
52  my $rx = '(?:' . join('|', @{$hl{$_}}) . ')';
53  $hl{$_} =  qr/$rx/;
54 }
55
56 filter 'Channel Action' => sub {
57  my $chan = lc get_info 'channel';
58  if ($hl{$chan} and $_[1] =~ /$hl{$chan}/) {
59   guihl;
60   1;
61  } else {
62   0;
63  }
64 } => 'Channel Action Hilight';
65
66 my %skip = (
67  '#p5p' => [
68    '(?i:jesse.vincent)',
69  ],
70 );
71
72 for (keys %skip) {
73  my $rx = '(?:' . join('|', @{$skip{$_}}) . ')';
74  $skip{$_} =  qr/$rx/;
75 }
76
77 filter 'Channel Action Hilight' => sub {
78  my $chan = lc get_info 'channel';
79  if ($skip{$chan} and $_[1] =~ /$skip{$chan}/) {
80   guiclear;
81   1;
82  } else {
83   0;
84  }
85 } => 'Channel Action';
86
87 $ph = new Xchat::XPI name   => 'Smart highlighting',
88                      tag    => 'HL',
89                      desc   => 'Highlight on private messages',
90                      author => 'Vincent Pit (VPIT)',
91                      email  => 'perl@profvince.com',
92                      url    => 'http://www.profvince.com';
93  
94 1;
95