aboutsummaryrefslogtreecommitdiffstats
path: root/docs/General
diff options
context:
space:
mode:
Diffstat (limited to 'docs/General')
-rw-r--r--docs/General/Formats.pod147
-rw-r--r--docs/General/Guide.pod346
-rw-r--r--docs/General/Signals.pod2458
3 files changed, 2951 insertions, 0 deletions
diff --git a/docs/General/Formats.pod b/docs/General/Formats.pod
new file mode 100644
index 0000000..0aaca37
--- /dev/null
+++ b/docs/General/Formats.pod
@@ -0,0 +1,147 @@
+__END__
+
+=head1 NAME
+
+Formats
+
+=head1 DESCRIPTION
+
+I<Stuff>
+
+=head1 COLOURS
+
+Irssi's colors that you can use in text formats, hilights, etc:
+
+ C1 C2 C3 Text Colour (C1) Text Colour (C2) Background (C3)
+ --------------------------------------------------------------------------
+ %k %K %0 black dark grey black
+ %r %R %1 red bold red red
+ %g %G %2 green bold green green
+ %y %Y %3 yellow bold yellow yellow
+ %b %B %4 blue bold blue blue
+ %m %M %5 magenta bold magenta magenta
+ %p %P magenta (think: purple)
+ %c %C %6 cyan bold cyan cyan
+ %w %W %7 white bold white white
+
+ %n %N Changes the color to "default color", removing
+ all other coloring and formatting. %N is always
+ the terminal's default color. %n is usually too,
+ except in themes it changes to "previous color",
+ ie. hello = "%Rhello%n" and "%G{hello} world"
+ would print hello in red, and %n would turn back
+ into %G making world green.
+
+ %F Blinking on/off (think: flash)
+ %U Underline on/off
+ %8 Reverse on/off
+ %9 %_ Bold on/off
+ %: Insert newline
+ %| Marks the indentation position
+ %# Monospace font on/off (useful with lists and GUI)
+ %% A single %
+
+
+=head1 VARIABLE SYNTAX
+
+Irssi supports a number of reserved, dynamic variables, sometimes
+referred to as I<expandos>. They are special in that the client is
+constantly updating their values automatically. There are also
+numerous variable modifiers available.
+
+ Modifier Description
+ ------------------------------------------------------------------------
+ $variable A normal variable, expanding to the first match of:
+ | 1) an internal SET variable
+ | 2) an environment variable
+ $[num]variable Expands to the variables value, with 'num' width. If
+ | the number is negative, the value is right-aligned.
+ | The value is padded to meet the width with the
+ | character given after number (default is space).
+ | The value is truncated to specified width unless
+ | '!' character precedes the number. If '.' character
+ | precedes the number the value isn't padded, just
+ | truncated.
+ $#variable Expands to the number of words in $variable. If $variable
+ | is omitted, it assumes $*
+ $@variable Expands to the number of characters in $variable. if
+ | $variable is omitted, it assumes $*
+ $($subvariable) This is somewhat similar to a pointer, in that the
+ | value of $subvar is taken as the name of the
+ | variable to expand to. Nesting is allowed.
+ ${expression} Permits the value to be embedded in another string
+ | unambiguously.
+ $!history! Expands to a matching entry in the client's command
+ | history, wildcards allowed.
+
+B<TODO: provide some examples of the various forms of truncation/padding, etc>
+
+=head1 ALIAS AND FORMAT TEMPLATE ARGUMENTS
+
+Whenever an alias is called, these expandos are set to the arguments passed
+to it. If none of these expandos are used in the alias, or the C<$()> form
+shown above, any arguments passed will automatically be appended to the last
+command in the alias.
+
+ Expando Description
+ ------------------------------------------------------------------------
+ $* expands to all arguments passed to an alias
+ $n expands to argument 'n' passed to an alias (counting from zero)
+ $n-m expands to arguments 'n' through 'm' passed to an alias
+ $n- expands to all arguments from 'n' on passed to an alias
+ $-m expands to all arguments up to 'm' passed to an alias
+ $~ expands to the last argument passed to an alias
+
+=head1 EXPANDOS (SPECIAL VARIABLES)
+
+These variables are set and updated dynamically by the client. The case of
+C<$A .. $Z> is important.
+
+ Variable Description
+ ------------------------------------------------------------------------
+ $, last person who sent you a MSG
+ $. last person to whom you sent a MSG
+ $: last person to join a channel you are on
+ $; last person to send a public message to a channel you are on
+ $A text of your AWAY message, if any
+ $B body of last MSG you sent
+ $C current channel
+ $D last person that NOTIFY detected a signon for
+ $E idle time
+ $F time client was started, $time() format
+ $H current server numeric being processed
+ $I channel you were last INVITEd to
+ $J client version text string
+ $K current value of CMDCHARS
+ $k first character in CMDCHARS
+ $L current contents of the input line
+ $M modes of current channel, if any
+ $N current nickname
+ $O value of STATUS_OPER if you are an irc operator
+ $P if you are a channel operator in $C, expands to a '@'
+ $Q nickname of whomever you are QUERYing
+ $R version of current server
+ $S current server name
+ $T target of current input (channel or nick of query)
+ $U value of cutbuffer
+ $V client release date (format YYYYMMDD)
+ $W current working directory
+ $X your /userhost $N address (user@host)
+ $Y value of REALNAME
+ $Z time of day (hh:mm, can be changed with /SET timestamp_format)
+ $$ a literal '$'
+
+ $versiontime prints time of the irssi version in HHMM format
+ $sysname system name (eg. Linux)
+ $sysrelease system release (eg. 2.2.18)
+ $sysarch system architecture (eg. i686)
+ $topic channel topic
+ $usermode user mode
+ $cumode own channel user mode
+ $cumode_space like $cumode, but gives space if there's no mode.
+ $tag server tag
+ $chatnet chat network of server
+ $winref window reference number
+ $winname window name
+ $itemname like $T, but use item's visible_name which may be
+ different (eg. $T = !12345chan, $itemname = !chan)
diff --git a/docs/General/Guide.pod b/docs/General/Guide.pod
new file mode 100644
index 0000000..3a9f43f
--- /dev/null
+++ b/docs/General/Guide.pod
@@ -0,0 +1,346 @@
+__END__
+
+=head1 NAME
+
+Guide To Irssi Scripting.
+
+=head1 DESCRIPTION
+
+=head1 LOADING AND UNLOADING SCRIPTS
+
+=head2 File Locations
+
+Packaged Irssi script files are usually placed in F</usr/share/irssi/scripts/>,
+but custom scripts or those required by a single user can be placed in
+F<~/.irssi/scripts/>.
+
+=head3 Autorunning Scripts
+
+If you require a script be run when Irssi starts, you can place the file (or
+better, create a symlink to it) into F<~/.irssi/scripts/autorun/>.
+
+=head2 Testing
+
+=for comment B<TODO: Forgotten what was going to go here>
+
+=head3 C</SCRIPT EXEC>
+
+B<TODO: Using it for testing stuff out>
+
+B<TODO: Also for very short scripts (with -permanent?)>
+
+B<TODO: Quoting rules for vars and things?>
+
+=head2 Loading
+
+Scripts are loaded via C</SCRIPT LOAD I<filename>>. A default Irssi
+configuration also provides the C</RUN> alias as an alternative to C</SCRIPT
+LOAD>.
+
+Loaded scripts will exist in the Irssi namespace as:
+C<Irssi::Script::I<E<lt>nameE<gt>>>, where I<name> is the filename stripped of its
+F<.pl> extension.
+
+=head2 Unloading
+
+A script can be unloaded via the C</SCRIPT UNLOAD I<name>> command. The name is
+typically the script filename without the F<.pl> extension, so F<nickcolor.pl>
+becomes C</SCRIPT UNLOAD nickcolor>.
+
+As part of the unloading process, if the script contains a
+
+ sub UNLOAD {
+ ...
+ }
+
+function, it will be run just before the script is unloaded and all variables
+destroyed. This can be used to clean up any temporary files, shut down any
+network connections or processes, and restore any Irssi modifications made.
+
+=head1 ANATOMY OF A SCRIPT
+
+In this section, we develop a very simplistic script and look at the
+necessary code.
+
+B<Note:> This section has considerable overlap with L<Juerd's Scripting
+Tutorial|http://juerd.nl/site.plp/irssiscripttut>, which you may also
+wish to read.
+
+B<TODO: Figure out a basic script to use as an example>
+
+=head2 Preamble
+
+All scripts should contain a header as follows:
+
+ use strict;
+ use warnings;
+
+ use vars qw($VERSION %IRSSI);
+ use Irssi;
+
+ $VERSION = '1.00';
+ %IRSSI = (
+ authors => 'Author Name(s)',
+ contact => 'author_email@example.com',
+ name => 'Script Title',
+ description => 'Longer script description ',
+ license => 'Public Domain',
+ );
+
+The first two lines should be used in B<all> perl scripts, not just Irssi. They
+provide far greater error checking and diagnostics should you make a mistake in your
+code.
+
+The C<use vars qw($VERSION %IRSSI)> defines two global variables, which are then
+set below to the appropriate values.
+
+C<use Irssi> tells the script to make the various L<Irssi> support functions available.
+Additional parameters passed here with C<qw/.../> can be used to import functions into
+the current script namespace.
+
+
+=head1 COMMONLY SCRIPTED TASKS
+
+=head2 Modifying an input line before sending
+
+B<TODO: catch "send text", modify it if necessary, signal_emit it>
+
+=head2 Responding to a public message
+
+B<TODO: catch "messsage public", check params, generate response>
+
+=head2 Responding to a private message
+
+B<TODO: catch "messsage private", check params, generate response>
+
+=head1 USEFUL THINGS
+
+
+=head2 Dealing with Blocking IO
+
+B<TODO: see F<hddtemp.pl> on SIO> - fork and use pipes to communicate. Also
+remember to pidwait the child>
+
+
+=head2 Getting the Response Value of a Remote Command
+
+B<TODO: Add bazerka's snippet here>
+
+=head2 Getting the Response Value of a Local Command
+
+B<TODO: How?!??>
+
+There is no simple way to achieve this. The data backing most common activities
+can be extracted through other API calls, but there are some exceptions.
+
+Maybe, look up the format, intercept gui print text, try to match it against
+what you're expecting?
+
+Can this be generalised at all?
+
+=head2 Sharing Code Between Scripts
+
+There are 2 main ways for scripts to communicate, either via emitting and
+handling Irssi signals, or by calling functions from one another directly.
+
+=head3 Using Signals
+
+In order to use custom signals, they must first be registered with Irssi.
+During registration, a list of the parameters must also be specified. Once specified,
+it cannot be changed without restarting Irssi, so be warned.
+
+After registration, your script can simply listen for signals with
+L<Irssi::signal_add|Irssi/signal_add $sig_name, $func>, or generate them for
+others to handle with L<Irssi::signal_emit|Irssi/signal_emit $sig_name, @params>
+
+For example:
+
+B<TODO: Example here>
+
+=head3 Using Functions
+
+Because scripts exist in a well-defined namespace of C<Irssi::Script::SOMEPACKAGE>,
+it is possible to manipulate the perl symbol table to call functions directly on them,
+assuming they are loaded.
+
+Because the following code depends on I<symbolic references>, it is necessary to
+tell Perl to allow them, despite normally being prohibited by C<use strict>.
+The C<no strict 'refs';> line takes care of this, and reenables them at the end
+of the snippet.
+
+ no strict 'refs';
+ if (defined %{ 'Irssi::Script::SOMEPACKAGE::' }) {
+ if (defined &{'Irssi::Script::SOMEPACKAGE::SOME_FUNC'} ) {
+ (&{'Irssi::Script::SOMEPAKAGE::SOME_FUNC'}(@args));
+ } else {
+ print("Err: can't find Irssi::Script::SOMEPACKAGE::SOME_FUNC");
+ }
+ }
+ use strict 'refs';
+
+Here, C<SOMEPACKAGE> is the name of the script package which contains the
+function you want to call, and C<SOME_FUNC> is the name of the function within
+it you wish to call. The first 2 C<defined(..)> lines take care of ensuring
+that the package and function exist, and generate an error otherwise. Other
+error handling is possible, including executing a C</SCRIPT LOAD> to load the
+necessary script and retry, but is not shown here.
+
+I<This snippet was provided by C<Bazerka> on Freenode/#irssi>.
+
+=head2 If In Doubt, Dump!
+
+C<Data::Dumper> is an extremely good way to inspect Irssi internals if you're
+looking for an undocumented feature.
+
+The C<DUMP> alias by L<Wouter
+Coekaerts|http://wouter.coekaerts.be/site/irssi/aliases> provides an easy way to
+check object fields.
+
+Dump perl object (e.g. C</dump Irssi::active_win>):
+
+ /alias DUMP script exec use Data::Dumper\; print Data::Dumper->new([\\$0-])->Dump
+
+=head2 Making Scripts Act Native
+
+An important part of creating a good script is to make it behave as though it
+were a part of Irssi. Adhering to some of the standard conventions can make this
+easier.
+
+=head3 Provide Help
+
+Scripts commonly store information about how to use them in comments at the top
+of their file. Whilst better than no documentation at all, a preferable approach
+is to allow that help to be accessed from within Irssi itself, using the C</HELP>
+command.
+
+ my $help = "this is help for b";
+
+ Irssi::command_bind('help', sub {
+ if ($_[0] eq 'test_b') {
+ Irssi::print($help, MSGLEVEL_CLIENTCRAP);
+ Irssi::signal_stop;
+ }
+ }
+ );
+
+This example demonstrates overriding the C</HELP> command, and if the argument
+matches our command, print some custom help and prevent the internal Irssi help
+function from being called. Otherwise, it falls back to the default help.
+
+
+I<This snippet was provided by C<culb> on Freenode/#irssi>.
+
+=head3 Use Tab Completion
+
+One of the great features of Irssi is the ability to complete commands,
+subcommands and even certain arguments. Using the subcommands processing feature
+described below automatically allows those subcommands to be tab-completed, but
+for more complex tasks, you can hook into the autocompletion system itself.
+
+In order to create your own completions, you must intercept the C<"complete
+word"> signal and return a list of completion candidates.
+
+ sub do_complete {
+ my ($strings, $window, $word, $linestart, $want_space) = @_;
+
+ # only provide these completions if the input line is otherwise empty.
+ return unless ($linestart eq '' && $word eq '');
+
+ # add the completion candidates
+ push @$strings, qw/foo bar baz bacon/;
+
+ # indicate that we want to include a space after the completion
+ $$want_space = 1;
+
+ # prevent internal Irssi completion from responding
+ Irssi::signal_stop;
+ }
+
+ Irssi::signal_add_first('complete word', \&do_complete);
+
+I<This snippet taken from
+L<F<complete_lastspoke.pl>|http://scripts.irssi.org/scripts/complete_lastspoke.pl>
+by Daenyth>
+
+=head3 Use Settings for Customisation
+
+Many scripts require the setting of various parameters to affect how they behave.
+One approach is to require the user to directly edit the script file, but this
+is less than ideal for a number of reasons. Firstly, it is easy to introduce
+errors into a script by accidentally deleting closing quotes or semicolons.
+Secondly, it has no effect until the script is reloaded, leading to confusion.
+
+A much better alternative is to use Irssi's inbuilt settings mechanism to allow
+users to set these parameters from within Irssi, as well as to C</SAVE> their
+settings for subsequent invocations.
+
+B<TODO: different types of settings>
+
+B<TODO: register/set/get>
+
+B<TODO: Listening for changes and acting accordingly>
+
+=head3 Use Subcommands to Group Script Functionality
+
+A common theme in Irssi scripts is to define commands with a prefix, such as
+C</myscript_foo>, C<myscript_bar>, etc. This helps to avoid accidentally clobbering
+native commands and those defined by other scripts, but is a problem better solved
+with I<subcommands>.
+
+Subcommands allow you to bind commands such as C</myscript foo> and C</myscript bar>.
+Completions are automatically handled for both the primary command, and any
+subcommands contained within it.
+
+The following example demonstrates how to use subcommands from within a script:
+
+ Irssi::command_bind("foo bar", \&subcmd_bar);
+ Irssi::command_bind("foo", \&subcmd_handler);
+
+ sub subcmd_handler {
+ my ($data, $server, $item) = @_;
+ $data =~ s/\s+$//g; # strip trailing whitespace.
+ Irssi::command_runsub('foo', $data, $server, $item);
+ }
+
+ sub subcmd_bar {
+ my ($args) = @_;
+ print "subcommand called with: $args";
+ }
+
+=head1 AUTHOR & THANKS
+
+This page was written by Tom Feist C<shabble+irssi@metavore.org>, but draws
+on the help of many many people.
+
+The denizens of Freenode/#irssi have been particularly helpful, especially
+C<Bazerka> and C<culb>.
+
+To report bugs or suggestions, email me at the address before, or come talk to
+me in C<#irssi> on C<irc.freenode.net>.
+
+=head1 OTHER RESOURCES
+
+The documentation assembled here and elsewhere on this site has been drawn from
+many different places, and a lot of valuable information is available from the
+following sites.
+
+
+=over
+
+=item L<http://irssi.org/documentation/perl>
+
+=item L<http://irssi.org/documentation/signals>
+
+=item L<http://irssi.org/documentation/special_vars>
+
+=item L<http://irssi.org/documentation/formats>
+
+=item L<http://irssi.org/documentation/settings>
+
+=item L<http://juerd.nl/site.plp/irssiscripttut>
+
+=item L<http://irchelp.org/irchelp/rfc/rfc.html>
+
+=item L<http://wouter.coekaerts.be/site/irssi/irssi>
+
+=back
diff --git a/docs/General/Signals.pod b/docs/General/Signals.pod
new file mode 100644
index 0000000..f12dd7f
--- /dev/null
+++ b/docs/General/Signals.pod
@@ -0,0 +1,2458 @@
+__END__
+
+=head1 NAME
+
+Irssi Signal Documentation
+
+=head1 DESCRIPTION
+
+Perl POD documentation based on the doc/signals.txt documentation supplied with
+Irssi.
+
+=head1 USING SIGNALS
+
+See L<Irssi/"Signals">
+
+=begin irssi_signal_types
+
+START OF SIGNAL TYPES
+
+=over
+
+=item C<GList \* of ([^,]*)> C<glistptr_$1>
+
+=item C<GSList \* of (\w+)s> C<gslist_$1>
+
+=item C<char \*> C<string>
+
+=item C<ulong \*> C<ulongptr>
+
+=item C<int \*> C<intptr>
+
+=item C<int> C<int>
+
+
+
+=item C<CHATNET_REC> C<iobject>
+
+=item C<SERVER_REC> C<iobject>
+
+=item C<RECONNECT_REC> C<iobject>
+
+=item C<CHANNEL_REC> C<iobject>
+
+=item C<QUERY_REC> C<iobject>
+
+=item C<COMMAND_REC> C<iobject>
+
+=item C<NICK_REC> C<iobject>
+
+=item C<LOG_REC> C<Irssi::Log>
+
+=item C<RAWLOG_REC> C<Irssi::Rawlog>
+
+=item C<IGNORE_REC> C<Irssi::Ignore>
+
+=item C<MODULE_REC> C<Irssi::Module>
+
+
+=item C<BAN_REC> C<Irssi::Irc::Ban>
+
+=item C<NETSPLIT_REC> C<Irssi::Irc::Netsplit>
+
+=item C<NETSPLIT_SERVER__REC> C<Irssi::Irc::Netsplitserver>
+
+
+=item C<DCC_REC> C<siobject>
+
+=item C<AUTOIGNORE_REC> C<Irssi::Irc::Autoignore>
+
+=item C<AUTOIGNORE_REC> C<Irssi::Irc::Autoignore>
+
+=item C<NOTIFYLIST_REC> C<Irssi::Irc::Notifylist>
+
+=item C<CLIENT_REC> C<Irssi::Irc::Client>
+
+
+=item C<THEME_REC> C<Irssi::UI::Theme>
+
+=item C<KEYINFO_REC> C<Irssi::UI::Keyinfo>
+
+=item C<PROCESS_REC> C<Irssi::UI::Process>
+
+=item C<TEXT_DEST_REC> C<Irssi::UI::TextDest>
+
+=item C<WINDOW_REC> C<Irssi::UI::Window>
+
+=item C<WI_ITEM_REC> C<iobject>
+
+
+
+=item C<PERL_SCRIPT_REC> C<Irssi::Script>
+
+=back
+
+END OF SIGNAL TYPES
+
+=end irssi_signal_types
+
+=head1 SIGNAL DEFINITIONS
+
+The following signals are categorised as in the original documentation, but
+have been revised to note Perl variable types and class names.
+
+Arguments are passed to signal handlers in the usual way, via C<@_>.
+
+=for irssi_signal_defs START OF SIGNAL DEFINITIONS
+
+=head2 Core
+
+=over 4
+
+=item C<"gui exit">
+
+=over
+
+=item I<None>
+
+=back
+
+=item C<"gui dialog">
+
+=over
+
+=item string C<$type>
+
+=item string C<$text>
+
+=back
+
+=item C<"send command">
+
+=over
+
+=item C<string $command>,
+
+=item L<Irssi::Server> C<$server>,
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=back
+
+This is sent when a command is entered via the GUI, or by scripts via L<Irssi::command>.
+
+=back
+
+=head3 F<chat-protocols.c>:
+
+B<TODO: What are CHAT_PROTOCOL_REC types?>
+
+=over 4
+
+=item C<"chat protocol created">
+
+=over
+
+=item CHAT_PROTOCOL_REC C<$protocol>
+
+=back
+
+=item C<"chat protocol updated">
+
+=over
+
+=item CHAT_PROTOCOL_REC C<$protocol>
+
+=back
+
+=item C<"chat protocol destroyed">
+
+=over
+
+=item CHAT_PROTOCOL_REC C<$protocol>
+
+=back
+
+=back
+
+=head3 F<channels.c>:
+
+=over 4
+
+=item C<"channel created">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item int C<$automatic>
+
+=back
+
+=item C<"channel destroyed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=back
+
+=back
+
+=head3 F<chatnets.c>:
+
+=over 4
+
+=item C<"chatnet created">
+
+=over
+
+=item CHATNET_REC C<$chatnet>
+
+=back
+
+=item C<"chatnet destroyed">
+
+=over
+
+=item CHATNET_REC C<$chatnet>
+
+=back
+
+=back
+
+=head3 F<commands.c>:
+
+=over 4
+
+=item C<"commandlist new">
+
+=over
+
+=item L<Irssi::Command> C<$cmd>
+
+=back
+
+=item C<"commandlist remove">
+
+=over
+
+=item L<Irssi::Command> C<$cmd>
+
+=back
+
+=item C<"error command">
+
+=over
+
+=item int C<$err>
+
+=item string C<$cmd>
+
+=back
+
+=item C<"send command">
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Windowitem> C<$witem>
+
+=back
+
+=item C<"send text">
+
+=over
+
+=item string C<$line>
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Windowitem> C<$witem>
+
+=back
+
+=item C<"command "<cmd>>
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Windowitem> C<$witem>
+
+=back
+
+B<TODO: check this "cmd" out?>
+
+=item C<"default command">
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Windowitem> C<$witem>
+
+=back
+
+=back
+
+=head3 F<ignore.c>:
+
+=over 4
+
+=item C<"ignore created">
+
+=over
+
+=item L<Irssi::Ignore> C<$ignore>
+
+=back
+
+=item C<"ignore destroyed">
+
+=over
+
+=item L<Irssi::Ignore> C<$ignore>
+
+=back
+
+=item C<"ignore changed">
+
+=over
+
+=item L<Irssi::Ignore> C<$ignore>
+
+=back
+
+=back
+
+=head3 F<log.c>:
+
+=over 4
+
+=item C<"log new">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log remove">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log create failed">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log locked">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log started">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log stopped">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log rotated">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=back
+
+=item C<"log written">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=item string C<$line>
+
+=back
+
+=back
+
+=head3 F<modules.c>:
+
+B<TODO: what are these types?>
+
+=over 4
+
+=item C<"module loaded">
+
+=over
+
+=item MODULE_REC C<$module>
+
+=item MODULE_FILE_REC C<$module_file>
+
+=back
+
+=item C<"module unloaded">
+
+=over
+
+=item MODULE_REC C<$module>
+
+=item MODULE_FILE_REC C<$module_file>
+
+=back
+
+=item C<"module error">
+
+=over
+
+=item int C<$error>
+
+=item string C<$text>
+
+=item string C<$root_module>
+
+=item string C<$sub_module>
+
+=back
+
+=back
+
+=head3 F<nicklist.c>:
+
+=over 4
+
+=item C<"nicklist new">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=back
+
+=item C<"nicklist remove">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=back
+
+=item C<"nicklist changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=item string C<$old_nick>
+
+=back
+
+=item C<"nicklist host changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=back
+
+=item C<"nicklist gone changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=back
+
+=item C<"nicklist serverop changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=back
+
+=back
+
+=head3 F<pidwait.c>:
+
+=over 4
+
+=item C<"pidwait">
+
+=over
+
+=item int C<$pid>
+
+=item int C<$status>
+
+=back
+
+=back
+
+=head3 F<queries.c>:
+
+=over 4
+
+=item C<"query created">
+
+=over
+
+=item L<Irssi::Query> C<$query>
+
+=item int C<$automatic>
+
+=back
+
+=item C<"query destroyed">
+
+=over
+
+=item L<Irssi::Query> C<$query>
+
+=back
+
+=item C<"query nick changed">
+
+=over
+
+=item L<Irssi::Query> C<$query>
+
+=item string C<$original_nick>
+
+=back
+
+=item C<"window item name changed">
+
+=over
+
+=item L<Irssi::Windowitem> C<$witem>
+
+=back
+
+=item C<"query address changed">
+
+=over
+
+=item L<Irssi::Query> C<$query>
+
+=back
+
+=item C<"query server changed">
+
+=over
+
+=item L<Irssi::Query> C<$query>
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=back
+
+
+=head3 F<rawlog.c>:
+
+=over 4
+
+=item C<"rawlog">
+
+=over
+
+=item L<Irssi::Rawlog> C<$raw_log>
+
+=item string C<$data>
+
+=back
+
+=back
+
+=head3 F<server.c>:
+
+=over 4
+
+=item C<"server looking">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=item C<"server connected">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+
+=item C<"server connecting">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item ulongptr C<$ip>
+
+=back
+
+=item C<"server connect failed">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=item C<"server disconnected">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=item C<"server quit">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$message>
+
+=back
+
+=item C<"server sendmsg">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$target>
+
+=item string C<$message>
+
+=item int C<$target_type>
+
+=back
+
+=back
+
+=head3 F<settings.c>:
+
+=over 4
+
+=item C<"setup changed">
+
+=over
+
+=item I<None>
+
+=back
+
+=item C<"setup reread">
+
+=over
+
+=item string C<$fname>
+
+=back
+
+=item C<"setup saved">
+
+=over
+
+=item string C<$fname>
+
+=item int C<$autosaved>
+
+=back
+
+=back
+
+=head2 IRC Core
+
+=head3 F<bans.c>:
+
+=over 4
+
+=item C<"ban type changed">
+
+=over
+
+=item string C<$bantype>
+
+=back
+
+=back
+
+=head3 F<channels>, F<nicklist>:
+
+B<TODO: are these actual files? .c?>
+
+=over 4
+
+=item C<"channel joined">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=back
+
+=item C<"channel wholist">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=back
+
+=item C<"channel sync">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=back
+
+=item C<"channel topic changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=back
+
+=back
+
+=head3 F<ctcp.c>:
+
+=over
+
+=item C<"ctcp msg">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=item C<"ctcp msg "<cmd>>
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=item C<"default ctcp msg">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=item C<"ctcp reply">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=item C<"ctcp reply "<cmd>>
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=item C<"default ctcp reply">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=item C<"ctcp action">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$nick>
+
+=item string C<$addr>
+
+=item string C<$target>
+
+=back
+
+=back
+
+=head3 F<irc-log.c>:
+
+=over
+
+=item C<"awaylog show">
+
+=over
+
+=item L<Irssi::Log> C<$log>
+
+=item int C<$away_msgs>
+
+=item int C<$filepos>
+
+=back
+
+=back
+
+=head3 F<irc-nicklist.c>:
+
+=over
+
+=item C<"server nick changed">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=back
+
+=head3 F<irc-servers.c>:
+
+=over
+
+=item C<"event connected">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=back
+
+=head3 F<irc.c>:
+
+=over
+
+=item C<"server event">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$data>
+
+=item string C<$sender_nick>
+
+=item string C<$sender_addr>
+
+=back
+
+=item C<"event "<cmd>>
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$sender_nick>
+
+=item string C<$sender_addr>
+
+=back
+
+=item C<"default event">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$data>
+
+=item string C<$sender_nick>
+
+=item string C<$sender_addr>
+
+=back
+
+=item C<"whois default event">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$data>
+
+=item string C<$sender_nick>
+
+=item string C<$sender_addr>
+
+=back
+
+=item C<"server incoming">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$data>
+
+=back
+
+=item C<"redir "<cmd>>
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$args>
+
+=item string C<$sender_nick>
+
+=item string C<$sender_addr>
+
+=back
+
+=back
+
+=head3 F<lag.c>:
+
+=over
+
+=item C<"server lag">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=item C<"server lag disconnect">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=back
+
+=head3 F<massjoin.c>:
+
+=over
+
+=item C<"massjoin">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item List of L<Irssi::Nick> C<@nicks>
+
+B<TODO: Check this is actually a perl list (array)>
+
+=back
+
+=back
+
+=head3 F<mode-lists.c>:
+
+=over
+
+=item C<"ban new">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Irc::Ban> C<$ban>
+
+=back
+
+=item C<"ban remove">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Irc::Ban> C<$ban>
+
+=item string C<$set_by>
+
+=back
+
+=back
+
+=head3 F<modes.c>:
+
+=over
+
+=item C<"channel mode changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item string C<$set_by>
+
+=back
+
+=item C<"nick mode changed">
+
+=over
+
+=item L<Irssi::Channel> C<$channel>
+
+=item L<Irssi::Nick> C<$nick>
+
+=item string C<$set_by>
+
+=item string C<$mode>
+
+=item string C<$type>
+
+=back
+
+=item C<"user mode changed">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$old_mode>
+
+=back
+
+=item C<"away mode changed">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=back
+
+=head3 F<netsplit.c>:
+
+=over
+
+=item C<"netsplit server new">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Irc::Netsplitserver> C<$netsplit_server>
+
+=back
+
+=item C<"netsplit server remove">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Irc::Netsplitserver> C<$netsplit_server>
+
+=back
+
+=item C<"netsplit new">
+
+=over
+
+=item L<Irssi::Irc::Netsplit> C<$netsplit>
+
+=back
+
+=item C<"netsplit remove">
+
+=over
+
+=item L<Irssi::Irc::Netsplit> C<$netsplit>
+
+=back
+
+=back
+
+=head2 IRC Modules
+
+
+=head3 F<dcc*.c>:
+
+=over
+
+=item C<"dcc ctcp "<cmd>>
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"default dcc ctcp">
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc unknown ctcp">
+
+=over
+
+=item string C<$args>
+
+=item string C<$sender>
+
+=item string C<$send_addr>
+
+=back
+
+=item C<"dcc reply "<cmd>>
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"default dcc reply">
+
+=over
+
+=item string C<$args>
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc unknown reply">
+
+=over
+
+=item string C<$args>
+
+=item string C<$sender>
+
+=item string C<$send_addr>
+
+=back
+
+=item C<"dcc chat message">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$msg>
+
+=back
+
+=item C<"dcc created">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc destroyed">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc connected">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc rejecting">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc closed">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc request">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$send_addr>
+
+=back
+
+=item C<"dcc request send">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc chat message">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$msg>
+
+=back
+
+=item C<"dcc transfer update">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc get receive">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc error connect">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=back
+
+=item C<"dcc error file create">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$filename>
+
+=back
+
+=item C<"dcc error file open">
+
+=over
+
+=item string C<$nick>
+
+=item string C<$filename>
+
+=item int C<$errno>
+
+=back
+
+=item C<"dcc error get not found">
+
+=over
+
+=item string C<$nick>
+
+=back
+
+=item C<"dcc error send exists">
+
+=over
+
+=item string C<$nick>
+
+=item string C<$filename>
+
+=back
+
+=item C<"dcc error unknown type">
+
+=over
+
+=item string C<$type>
+
+=back
+
+=item C<"dcc error close not found">
+
+=over
+
+=item string C<$type>
+
+=item string C<$nick>
+
+=item string C<$filename>
+
+=back
+
+=back
+
+=head3 F<autoignore.c>:
+
+=over
+
+=item C<"autoignore new">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Irc::Autoignore> C<$autoignore>
+
+=back
+
+=item C<"autoignore remove">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item L<Irssi::Irc::Autoignore> C<$autoignore>
+
+=back
+
+=back
+
+=head3 F<flood.c>:
+
+=over
+
+=item C<"flood">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$nick>
+
+=item string C<$host>
+
+=item int C<$level>
+
+=item string C<$target>
+
+=back
+
+=back
+
+=head3 F<notifylist.c>:
+
+=over
+
+=item C<"notifylist new">
+
+=over
+
+=item L<Irssi::Irc::Notifylist> C<$notify_list>
+
+=back
+
+=item C<"notifylist remove">
+
+=over
+
+=item L<Irssi::Irc::Notifylist> C<$notify_list>
+
+=back
+
+=item C<"notifylist joined">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$nick>
+
+=item string C<$user>
+
+=item string C<$host>
+
+=item string C<$real_name>
+
+=item string C<$away_message>
+
+=back
+
+=item C<"notifylist away changed">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$nick>
+
+=item string C<$user>
+
+=item string C<$host>
+
+=item string C<$real_name>
+
+=item string C<$away_message>
+
+=back
+
+=item C<"notifylist left">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$nick>
+
+=item string C<$user>
+
+=item string C<$host>
+
+=item string C<$real_name>
+
+=item string C<$away_message>
+
+=back
+
+=back
+
+=head3 F<proxy/listen.c>:
+
+=over
+
+=item C<"proxy client connected">
+
+=over
+
+=item L<Irssi::Irc::Client> C<$client>
+
+=back
+
+=item C<"proxy client disconnected">
+
+=over
+
+=item L<Irssi::Irc::Client> C<$client>
+
+=back
+
+=item C<"proxy client command">
+
+=over
+
+=item L<Irssi::Irc::Client> C<$client>
+
+=item string C<$args>
+
+=item string C<$data>
+
+=back
+
+=item C<"proxy client dump">
+
+=over
+
+=item L<Irssi::Irc::Client> C<$client>
+
+=item string C<$data>
+
+=back
+
+=back
+
+=head2 Display (FE) Common
+
+B<Requires to work properly:>
+
+=over
+
+=item C<"gui print text">
+
+=over
+
+=item L<Irssi::Window> C<$window>
+
+=item int C<$fg>
+
+=item int C<$bg>
+
+=item int C<$flags>
+
+=item string C<$text>
+
+=item L<Irssi::UI::TextDest> C<$text_dest>
+
+=back
+
+=item C<"gui print text finished">
+
+=over
+
+=item L<Irssi::Window> C<$window>
+
+=back
+
+(Can be used to determine when all C<"gui print text">s are sent (not required))
+
+=back
+
+
+B<Provides signals:>
+
+=head3 F<completion.c>:
+
+=over
+
+=item C<"complete word">
+
+=over
+
+=item arrayref of strings C<$strings_ref>
+
+An arrayref which can be modified to add additional completion candidates.
+
+For example:
+
+ push @$strings_ref, "another_candidate";
+
+=item L<Irssi::Window> C<$window>
+
+=item string C<$word>
+
+The prefix of the word currently being typed.
+
+=item string C<$linestart>
+
+The contents of the input line up to (but not including) the current
+word prefix C<$word>.
+
+=item int C<$want_space>
+
+A scalar reference which can be set to indicate if tab completion of these
+candidates should be appended with a space.
+
+=back
+
+=back
+
+=head3 F<fe-common-core.c>:
+
+=over
+
+=item C<"irssi init read settings">
+
+=over
+
+=item I<None>
+
+=back
+
+=back
+
+=head3 F<fe-exec.c>:
+
+=over
+
+=item C<"exec new">
+
+=over
+
+=item L<Irssi::UI::Process> C<$process>
+
+=back
+
+=item C<"exec remove">
+
+=over
+
+=item L<Irssi::UI::Process> C<$process>
+
+=item int C<$status>
+
+=back
+
+=item C<"exec input">
+
+=over
+
+=item L<Irssi::UI::Process> C<$process>
+
+=item string C<$text>
+
+=back
+
+=back
+
+=head3 F<fe-messages.c>:
+
+=over
+
+=item C<"message public">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$target>
+
+=back
+
+=item C<"message private">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=back
+
+=item C<"message own_public">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$target>
+
+=back
+
+=item C<"message own_private">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$target>
+
+=item string C<$original_target>
+
+=back
+
+=item C<"message join">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$channel>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=back
+
+=item C<"message part">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$channel>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$reason>
+
+=back
+
+=item C<"message quit">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$reason>
+
+=back
+
+=item C<"message kick">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$channel>
+
+=item string C<$nick>
+
+=item string C<$kicker>
+
+=item string C<$address>
+
+=item string C<$reason>
+
+=back
+
+=item C<"message nick">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$new_nick>
+
+=item string C<$old_nick>
+
+=item string C<$address>
+
+=back
+
+=item C<"message own_nick">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$new_nick>
+
+=item string C<$old_nick>
+
+=item string C<$address>
+
+=back
+
+=item C<"message invite">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$channel>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=back
+
+=item C<"message topic">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$channel>
+
+=item string C<$topic>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=back
+
+=back
+
+=head3 F<keyboard.c>:
+
+=over
+
+=item C<"keyinfo created">
+
+=over
+
+=item L<Irssi::UI::Keyinfo> C<$key_info>
+
+=back
+
+=item C<"keyinfo destroyed">
+
+=over
+
+=item L<Irssi::UI::Keyinfo> C<$key_info>
+
+=back
+
+=back
+
+=head3 F<printtext.c>:
+
+=over
+
+=item C<"print text">
+
+=over
+
+=item L<Irssi::UI::TextDest> C<$text_dest>
+
+=item string C<$text>
+
+=item string C<$stripped_text>
+
+=back
+
+=back
+
+=head3 F<themes.c>:
+
+=over
+
+=item C<"theme created">
+
+=over
+
+=item L<Irssi::UI::Theme> C<$theme>
+
+=back
+
+=item C<"theme destroyed">
+
+=over
+
+=item L<Irssi::UI::Theme> C<$theme>
+
+=back
+
+=back
+
+=head3 F<window-activity.c>:
+
+=over
+
+=item C<"window hilight">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=item C<"window dehilight">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=item C<"window activity">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item int C<$old_level>
+
+=back
+
+=item C<"window item hilight">
+
+=over
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=back
+
+=item C<"window item activity">
+
+=over
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=item int C<$old_level>
+
+=back
+
+=back
+
+=head3 F<window-items.c>:
+
+=over
+
+=item C<"window item new">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=back
+
+=item C<"window item remove">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=back
+
+=item C<"window item moved">
+
+B<TODO: Check ordering of arguments from/to here>
+
+=over
+
+=item L<Irssi::UI::Window> C<$window_from>
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=item L<Irssi::UI::Window> C<$window_to>
+
+=back
+
+=item C<"window item changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=back
+
+=item C<"window item server changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item L<Irssi::Windowitem> C<$window_item>
+
+=back
+
+=back
+
+=head3 F<windows.c>:
+
+=over
+
+=item C<"window created">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=item C<"window destroyed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=item C<"window changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item L<Irssi::UI::Window> C<$old_window>
+
+=back
+
+B<TODO: does this fire if you dont' change windows? (eg: send a switch commandf
+for the window you're already on)
+
+=item C<"window changed automatic">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=item C<"window server changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item L<Irssi::Server> C<$server>
+
+=back
+
+=item C<"window refnum changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item int C<$old_refnum>
+
+=back
+
+=item C<"window name changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=item C<"window history changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=item string C<$old_name>
+
+=back
+
+=item C<"window level changed">
+
+=over
+
+=item L<Irssi::UI::Window> C<$window>
+
+=back
+
+=back
+
+=head2 Display (FE) IRC
+
+=head3 F<fe-events.c>:
+
+=over
+
+=item C<"default event numeric">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$data>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=back
+
+=back
+
+=head3 F<fe-irc-messages.c>:
+
+=over
+
+=item C<"message irc op_public">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc own_wall">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc own_action">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc action">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc own_notice">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc notice">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$msg>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc own_ctcp">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$cmd>
+
+=item string C<$data>
+
+=item string C<$target>
+
+=back
+
+=item C<"message irc ctcp">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$cmd>
+
+=item string C<$data>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$target>
+
+=back
+
+=back
+
+=head3 F<fe-modes.c>:
+
+=over
+
+=item C<"message irc mode">
+
+=over
+
+=item L<Irssi::Server> C<$server>
+
+=item string C<$channel>
+
+=item string C<$nick>
+
+=item string C<$address>
+
+=item string C<$mode>
+
+=back
+
+=back
+
+=head3 F<dcc/fe-dcc-chat-messages.c>:
+
+=over
+
+=item C<"message dcc own">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$msg>
+
+=back
+
+=item C<"message dcc own_action">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$msg>
+
+=back
+
+=item C<"message dcc own_ctcp">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$cmd>
+
+=item string C<$data>
+
+=back
+
+=item C<"message dcc">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$msg>
+
+=back
+
+=item C<"message dcc action">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$msg>
+
+=back
+
+=item C<"message dcc ctcp">
+
+=over
+
+=item L<Irssi::Dcc> C<$dcc>
+
+=item string C<$cmd>
+
+=item string C<$data>
+
+=back
+
+=back
+
+=head2 Display (FE) Text
+
+=head3 F<gui-readline.c>:
+
+=over 4
+
+=item C<"gui key pressed">
+
+=over
+
+=item int C<$key>
+
+=back
+
+Notes:
+
+Ordinary keys C<a-zA-Z> are their ordinal (ascii) equivalents.
+
+Ctrl-key begins at 1 (C<C-a>), but skips 13?, C<C-j> and C<C-m> both give the same
+as C<RET> (10). Tab and C<C-i> are equivalent (9). C<C-o> does not appear to send
+an observable sequence.
+
+C<BS> sends 127.
+
+C<meta-E<lt>keyE<gt>> sends a 27 (ESC) followed by the original key value.
+
+Arrow keys send usual meta-stuff (C<\e[I<ABCD>>).
+
+B<TODO: Turn this into some sort of list>
+
+=back
+
+=head3 F<gui-printtext.c>:
+
+=over 4
+
+=item C<"beep">
+
+=over
+
+=item I<None>
+
+=back
+
+=back
+
+=head2 Perl Scripting
+
+=over 4
+
+=item C<"script error">
+
+=over
+
+=item L<Irssi::Script> C<$script>
+
+=item string C<$error_msg>
+
+=back
+
+=back
+
+=for irssi_signal_defs END OF SIGNAL DEFINITIONS
+
+=head1 SIGNAL AUTO-GENERATION
+
+This file is used to auto-generate the signal definitions used by Irssi, and hence
+must be edited in order to add new signals.
+
+=head2 Format
+
+