| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 | #!/usr/bin/perl -w
# resets window activity status
#  by c0ffee 
#    - http://www.penguin-breeder.org/irssi/
#<scriptinfo>
use strict;
use vars qw($VERSION %IRSSI);
use Irssi 20020120;
$VERSION = "0.13";
%IRSSI = (
    authors	=> "c0ffee",
    contact	=> "c0ffee\@penguin-breeder.org",
    name	=> "Reset window activity status",
    description	=> "Reset window activity status. defines command /act",
    license	=> "Public Domain",
    url		=> "http://www.penguin-breeder.org/irssi/",
    changed	=> "Wed Jun 23 08:34:53 CEST 2004",
);
#</scriptinfo>
#
# /ACT [PUBLIC|ALL]
#
# /ACT without parameters marks windows as non-active where no
# public talk occured.
#
# /ACT PUBLIC also removes those where no nick hilight was triggered
#
# /ACT ALL sets all windows as non-active
sub cmd_act {
    my ($data, $server, $channel) = @_;
    my $level;
    if ($data eq "") {
      $level = 1;
    } elsif ($data =~ /^public$/i) {
      $level = 2;
    } elsif ($data =~ /^all$/i) {
      $level = 3;
    } else {
      Irssi::signal_emit("error command", -3, $data);
      return;
    }
    foreach (Irssi::windows()) {
      if ($_->{data_level} <= $level) {
        Irssi::signal_emit("window dehilight", $_);
      }
    }
}
my @arguments = ('public', 'all');
sub sig_complete {
    my ($list, $window, $word, $linestart, $want_space) = @_;
    return unless $linestart =~ /^.act/;
    foreach my $arg (@arguments) {
      if ($arg =~ /^$word/i) {
        $$want_space = 0;
        push @$list, $arg;
      }
    }
    Irssi::signal_stop();
}
Irssi::command_bind("act", "cmd_act");
Irssi::signal_add_first('complete word', \&sig_complete);
 |