This file is indexed.

/usr/share/irssi/scripts/go.pl is in irssi-scripts 20131030.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
use strict;
use vars qw($VERSION %IRSSI);
use Irssi;
use Irssi::Irc;

# Usage:
# /script load go.pl
# If you are in #irssi you can type /go #irssi or /go irssi or even /go ir ...
# also try /go ir<tab> and /go  <tab> (that's two spaces)

$VERSION = '1.00';

%IRSSI = (
    authors     => 'nohar',
    contact     => 'nohar@freenode',
    name        => 'go to window',
    description => 'Implements /go command that activates a window given a name/partial name. It features a nice completion.',
    license     => 'GPLv2 or later',
    changed     => '08-17-04'
);

sub generate_the_list {
  my $foo = {};
  foreach(Irssi::windows) {
    $foo->{get_channel_name($_)} ||= 0;
    $foo->{get_channel_name($_)} += 1;
  }
  return $foo;
}

sub get_server_tag {
  my $w = shift;
  if(defined($w->items()) && defined($w->items()->{server}) && defined($w->items()->{server}->{tag})) {
    return $w->items()->{server}->{tag};
  } else {
    return "";
  }
}

sub get_channel_name {
  my $w = shift;
  return $w->get_active_name();
}

sub get_channel_and_tag {
  my $w = shift;
  if(length(get_server_tag($w)) > 0) {
    return get_channel_name($w) . '@' . get_server_tag($w);
  } else {
    return get_channel_name($w); # dunno how to handle this correctly...hopefully it will never come up.
  }
}

sub name_of_this_window {
  my $w = shift;
  my $list = generate_the_list();
  if($list->{get_channel_name($w)} > 1){
    return get_channel_and_tag($w);
  } else {
    return get_channel_name($w);
  }
}

sub signal_complete_go {
	my ($complist, $window, $word, $linestart, $want_space) = @_;
	my $channel = $window->get_active_name();
	my $k = Irssi::parse_special('$k');

        return unless ($linestart =~ /^\Q${k}\Ego/i);

	@$complist = ();
	foreach my $w (Irssi::windows) {
		my $name = name_of_this_window($w);
		if ($word ne "") {
			if ($name =~ /\Q${word}\E/i) {
				push(@$complist, $name)
			}
		} else {
			push(@$complist, $name);
		}
	}
	Irssi::signal_stop();
};

sub cmd_go
{
	my($chan,$server,$witem) = @_;

	$chan =~ s/ *//g;
        # try an exact match first ... this fixes when there are cases
        # like a channel called #foo and #foobar, #foobar is above
        # #foo in irssi's list, and the user types in #foo. before
        # they would have ended up at #foobar instead of #foo. now
        # they will end up at #foo.
	foreach my $w (Irssi::windows) {
		my $name = name_of_this_window($w);
		if ($name =~ /^#?\Q${chan}\E$/) {
			$w->set_active();
			return;
		}
	}
	foreach my $w (Irssi::windows) {
		my $name = name_of_this_window($w);
		if ($name =~ /^#?\Q${chan}\E/) {
			$w->set_active();
			return;
		}
	}
}

Irssi::command_bind("go", "cmd_go");
Irssi::signal_add_first('complete word', 'signal_complete_go');