Created SILC Runtime Toolkit git repository Part I.
[runtime.git] / apps / irssi / docs / perl.txt
diff --git a/apps/irssi/docs/perl.txt b/apps/irssi/docs/perl.txt
deleted file mode 100644 (file)
index 611af9f..0000000
+++ /dev/null
@@ -1,1135 +0,0 @@
- Installation problems
- ---------------------
-
-You'll need to have perl support compiled with irssi. If "/LOAD"
-doesn't show perl in list of loaded modules, you have a problem. See
-INSTALL file for information about perl problems.
-
-
- Running scripts
- ---------------
-
-Scripts are run with /SCRIPT LOAD command, or the default /RUN alias.
-"/SCRIPT" shows list of running script, and /SCRIPT UNLOAD can unload
-scripts.
-
-Scripts should be placed to ~/.irssi/scripts/ or
-/usr/local/lib/irssi/scripts/ (or depending on where irssi was
-installed) directories. After that /RUN script_name should work, you
-don't need to add the .pl prefix.
-
-
- Irssi's signals
- ---------------
-
-Irssi is pretty much based on sending and handling different signals.
-Like when you receive a message from server, say
-
-  :nick!user@there.org PRIVMSG you :blahblah
-
-Irssi will first send a signal:
-
-  "server incoming", SERVER_REC, "nick!user@there PRIVMSG ..."
-
-You probably don't want to use this signal. Default handler for this
-signal interprets the header and sends a signal:
-
-  "server event", SERVER_REC, "PRIVMSG ...", "nick", "user@there.org"
-
-You probably don't want to use this either, since this signal's default
-handler parses the event string and sends a signal:
-
-  "event privmsg", SERVER_REC, "you :blahblah", "nick", "user@there.org"
-
-You can at any point grab the signal, do whatever you want to do with
-it and optionally stop it from going any further by calling
-Irssi::signal_stop();
-
-For example:
-
-  sub event_privmsg {
-    # $data = "nick/#channel :text"
-    my ($server, $data, $nick, $address) = @_;
-    my ($target, $text) = split(/ :/, $data, 2);
-
-    Irssi::signal_stop() if ($text =~ /free.*porn/ || $nick =~ /idiot/);
-  }
-
-Irssi::signal_add("event privmsg", "event_privmsg")
-
-This will hide all public or private messages that match the regexp
-"free.*porn" or the sender's nick contain the word "idiot". Yes, you
-could use /IGNORE instead for both of these :)
-
-You can also use signal_add_last() if you wish to let the Irssi's internal
-functions be run before yours.
-
-A list of signals that irssi sends can be found from signals.txt file.
-
-
- Creating/replacing /COMMANDS
- ----------------------------
-
-You can create your own commands, or replace existing ones with
-Irssi::command_bind(). The command handling work internally pretty much
-the same as signal handlers, so if you replace existing command and don't
-wish to let it run, call Irssi::signal_stop().
-
-Here's an example:
-
-  # Usage: /HELLO [<nick>]
-  sub cmd_hello {
-    # data - contains the parameters for /HELLO
-    # server - the active server in window
-    # witem - the active window item (eg. channel, query)
-    #         or undef if the window is empty
-    my ($data, $server, $witem) = @_;
-
-    if (!$server || !$server->{connected}) {
-      Irssi::print("Not connected to server");
-      return;
-    }
-
-    if ($data) {
-      $server->command("MSG $data Hello!");
-    } elsif ($witem && ($witem->{type} eq "CHANNEL" ||
-                        $witem->{type} eq "QUERY")) {
-      # there's query/channel active in window
-      $witem->command("MSG ".$witem->{name}." Hello!");
-    } else {
-      Irssi::print("Nick not given, and no active channel/query in window");
-    }
-  }
-
-  Irssi::command_bind('hello', 'cmd_hello');
-
-
- Message levels
- --------------
-
-Several functions expect message levels. They're used to roughly
-classify messages. They're used by a lot of things including logging,
-ignoring, highlighting, etc. so you should use as good level as
-possible. It's possible to have several levels in one message, like
-ACTIONS+PUBLIC or ACTIONS+MSGS.
-
-Here's all the levels that irssi supports currently:
-
-  CRAP, MSGS, PUBLIC, NOTICES, SNOTES, CTCPS, ACTIONS, JOINS, PARTS
-  QUITS, KICKS, MODES, TOPICS, WALLOPS, INVITES, NICKS, DCC, DCCMSGS,
-  CLIENTNOTICE, CLIENTCRAP, CLIENTERROR
-
-And a few special ones that could be included with the levels above:
-
-  HILIGHT - text is highlighted
-  NOHILIGHT - don't check highlighting for this message
-  NO_ACT - don't trigger channel activity when printing this message
-  NEVER - never ignore or log this message (not a good idea usually)
-
-You can use them with a MSGLEVEL_ prefix, for example:
-
-  $server->print("#channel", 'Hello, world', MSGLEVEL_CLIENTCRAP);
-
-Writes text to #channel window with CLIENTCRAP level.
-
-
- Window items
- ------------
-
-Meaning of "window" should be pretty clear, but "window item" is
-something I couldn't really figure out a better name for :) They're
-simply something that's inside a window, a channel or a query usually.
-Windows can have multiple items inside them. It's possible to create
-non-channel/query window items too, currently the third possible window
-item is created by /EXEC -interactive.
-
-In scripts, I think you can quite safely assume that the window item is
-query or channel if the script is intended to be run in one of them.
-Stupid users won't probably have other window items, and smart users
-know where to run the script, or at least later figure out why it
-didn't work :)
-
-
- Functions that you can use in Irssi's Perl scripts
- --------------------------------------------------
-
-If there's a "Xxxx::" text before the command, it means that it belongs to
-that package. Like "Server::command" means that you should either call it as
-  Irssi::Server::command($server, $cmd);
-or more easily:
-  $server->command($cmd);
-
-Commands that don't have the Xxxx prefix are called as Irssi::command();
-
-Information from most objects can be fetched with $object->{data}, for
-example current nick in server could be read with $server->{nick}. List
-of all the information that are in objects are in "Object->{}" sections
-below.
-
-Commands are split in two groups, generic ones that could be used with
-any chat protocol, and IRC specific commands. If you want to use IRC
-specific commands, or use IRC specific ->{data} in your scripts, you'll
-need to add "use Irssi::Irc" to your scripts. IRC specific commands are
-listed after the generic ones.
-
-
- *** General
-
-Window active_win() - return active window
-Server active_server() - return server in active window
-
-windows() - return list of all windows
-servers() - return list of all servers
-reconnects() - return list of all server reconnections
-channels() - return list of all channels
-queries() - return list of all queries
-commands() - return list of all commands
-logs() - return list of all log files
-ignores() - returns list of all ignores
-
-Server::channels() - return list of channels in server
-Server::queries() - return list of queries in server
-
-print(str[, level])
-Server::print(channel, str[, level])
-Window::print(str[, level])
-Windowitem::print(str[, level])
-  Print `str'. Default level is MSGLEVEL_CLIENTNOTICE.
-
-command(cmd)
-Server::command(cmd)
-Window::command(cmd)
-Windowitem::command(cmd)
-  Send a command `cmd' (in current channel). The '/' char isn't needed.
-
-
- *** Themes
-
-You can have user configurable texts in scripts that work just like
-irssi's internal texts that can be changed in themes.
-
-First you'll have to register the formats:
-
-Irssi::theme_register([
-  'format_name', '{hilight my perl format!}',
-  'format2', 'testing.. nick = $0, channel = $1'
-]);
-
-Printing happens with one of the functions:
-
-printformat(level, format, ...)
-Window::printformat(level, format, ...)
-Server::printformat(target, level, format, ...)
-Windowitem::printformat(level, format, ...)
-
-For example:
-
-  $channel->printformat(MSGLEVEL_CRAP, 'format2',
-                       'nick', $channel->{name});
-
-
- *** Settings
-
-settings_get_str(key)
-settings_get_int(key)
-settings_get_bool(key)
-settings_get_time(key)
-settings_get_level(key)
-settings_get_size(key)
-  Return value for setting.
-
-settings_set_str(key, value)
-settings_set_int(key, value)
-settings_set_bool(key, value)
-settings_set_time(key, value)
-settings_set_level(key, value)
-settings_set_size(key, value)
-  Set value for setting.
-  If you change the settings of another module/script with one of these, you
-  must emit a "setup changed" signal afterwards.
-
-settings_add_str(section, key, def)
-settings_add_int(section, key, def)
-settings_add_bool(section, key, def)
-settings_add_time(section, key, def)
-settings_add_level(section, key, def)
-settings_add_size(section, key, def)
-  Create new setting.
-
-settings_remove(key)
-  Remove a setting.
-
-
- *** Signals
-
-signal_emit(signal, ...)
-  Send signal `signal'. You can give 6 parameters at maximum.
-
-signal_add(signal, func)
-  Bind `signal' to function `func'.
-
-signal_add_first(signal, func)
-  Bind `signal' to function `func'. Call `func' as soon as possible.
-
-signal_add_last(signal, func)
-  Bind `signal' to function `func'. Call `func' as late as possible.
-
-signal_remove(signal, func)
-  Unbind `signal' from function `func'.
-
-signal_stop()
-  Stop the signal that's currently being emitted.
-
-signal_stop_by_name(signal)
-  Stop the signal with name `signal' that's currently being emitted.
-
-
-  *** timeouts / IO listener
-
-timeout_add(msecs, func, data)
-  Call `func' every `msecs' milliseconds (1000 = 1 second) with
-  parameter `data'. Returns tag which can be used to stop the timeout.
-
-timeout_add_once(msecs, func, data);
-  Call 'func' once after `msecs' milliseconds (1000 = 1 second)
-  with parameter `data'. Returns tag which can be used to stop the timeout.
-
-timeout_remove(tag)
-  Remove timeout with tag.
-
-input_add(source, condition, func, data)
-  Call `func' with parameter `data' when specified IO happens.
-  `source' is the file handle that is being listened. `condition' can
-  be INPUT_READ, INPUT_WRITE or both. Returns tag which can be used to
-  remove the listener.
-
-input_remove(tag)
-  Remove listener with tag.
-
-
- *** Message levels
-
-level2bits(level)
-  Level string -> number
-
-bits2level(bits)
-  Level number -> string
-
-combine_level(level, str)
-  Combine level number to level string ("+level -level").
-  Return new level number.
-
-
- *** Commands
-
-Command->{}
-  cmd - Command name
-  category - Category
-
-command_bind(cmd, func[, category])
-  Bind command `cmd' to call function `func'. `category' is the
-  category where the command is displayed in /HELP.
-
-command_runsub(cms, data, server, item)
-  Run subcommands for `cmd'. First word in `data' is parsed as
-  subcommand. `server' is Irssi::Server rec for current
-  Irssi::Windowitem `item'.
-  
-  Call command_runsub in handler function for `cmd' and bind
-  with command_bind("`cmd' `subcmd'", subcmdfunc[, category]);
-
-command_unbind(cmd, func)
-  Unbind command `cmd' from function 'func.
-
-
- *** Windows
-
-UI::Window->{}
-  refnum - Reference number
-  name - Name
-
-  width - Width
-  height - Height
-
-  history_name - Name of named historylist for this window
-
-  active - Active window item
-  active_server - Active server
-
-  servertag - active_server must be either undef or have this same tag
-              (unless there's items in this window). This is used by
-             /WINDOW SERVER -sticky
-  level - Current window level
-
-  sticky_refnum - 1 if reference number is sticky
-
-  data_level - Current data level
-  hilight_color - Current activity hilight color
-
-  last_timestamp - Last time timestamp was written in window
-  last_line - Last time text was written in window
-
-  theme_name - Active theme in window, undef = default
-
-UI::TextDest->{}
-  window - Window where the text will be written
-  server - Target server
-  target - Target channel/query/etc name
-  level - Text level
-
-  hilight_priority - Priority for the hilighted text
-  hilight_color - Color for the hilighted text
-
-
-Window::items()
-  Return a list of items in window.
-
-Window
-window_create(automatic)
-Windowitem::window_create(automatic)
-  Create a new window.
-
-Window::destroy()
-  Destroy the window.
-
-Irssi::Window
-Windowitem::window()
-  Returns parent window for window item.
-
-Window
-window_find_name(name)
-  Find window with name.
-
-Window
-window_find_refnum(refnum)
-  Find window with reference number.
-
-Window
-window_find_level(level)
-Server::window_find_level(level)
-  Find window with level.
-
-Window
-window_find_closest(name, level)
-Server::window_find_closest(name, level)
-  Find window that matches best to given arguments. `name' can be either
-  window name or name of one of the window items.
-
-Window
-window_find_item(name)
-Server::window_find_item(name)
-  Find window which contains window item with specified name/server.
-
-Windowitem
-window_item_find(name)
-Server::window_item_find(name)
-Window::item_find(server, name)
-  Find window item that matches best to given arguments.
-
-window_refnum_prev(refnum, wrap)
-window_refnum_next(refnum, wrap)
-  Return refnum for window that's previous/next in windows list.
-
-windows_refnum_last()
-  Return refnum for last window.
-
-Window::item_add(item, automatic)
-Window::item_remove(item)
-Window::item_destroy(item)
-  Add/remove/destroy window item
-
-Window::set_active()
-  Set window active.
-
-Window::change_server(server)
-Window::set_refnum(refnum)
-Window::set_name(name)
-Window::set_history(name)
-Window::set_level(level)
-  Change server/refnum/name/history/level in window.
-
-Windowitem::set_active()
-  Change window item active in parent window.
-
-Window::item_prev()
-Window::item_next()
-  Change to previous/next window item.
-
-Windowitem::change_server(server)
-  Change server in window item.
-
-Windowitem::is_active()
-  Returns 1 if window item is the active item in parent window.
-
-Window::get_active_name()
-  Return active item's name, or if none is active, window's name
-
-
- *** Server Connects
-
-Connect->{}
-  type - "SERVER CONNECT" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  address - Address where we connected (irc.blah.org)
-  port - Port where we connected
-  chatnet - Chat network
-
-  password - Password we used in connection.
-  wanted_nick - Nick which we would prefer to use
-  username - User name
-  realname - Real name
-
-Connect
-server_create_conn(address[, port=6667[, password=''[, nick=''[, channels='']]]])
-  Create new server connection.
-
-
- *** Server functions
-
-Server->{}
-  type - "SERVER" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  (..contains all the same data as Connect above..)
-
-  connect_time - Time when connect() to server finished
-  real_connect_time - Time when server sent "connected" message
-
-  tag - Unique server tag
-  nick - Current nick
-
-  connected - Is connection finished? 1|0
-  connection_lost - Did we lose the connection (1) or was
-                    the connection just /DISCONNECTed (0)
-
-  rawlog - Rawlog object for the server
-
-  version - Server version
-  last_invite - Last channel we were invited to
-  server_operator - Are we server operator (IRC op) 1|0
-  usermode_away - Are we marked as away? 1|0
-  away_reason - Away reason message
-  banned - Were we banned from this server? 1|0
-  lag - Current lag to server in milliseconds
-
-Server
-Connect::connect()
-  Connect to server.
-
-Server::disconnect()
-  Disconnect from server.
-
-Server
-server_find_tag(tag)
-  Find server with tag
-
-Server
-server_find_chatnet(chatnet)
-  Find first server that is in `chatnet'
-
-Server::isnickflag(flag)
-  Returns 1 if flag is a nick mode flag (@, + or % in IRC)
-
-Server::ischannel(data)
-  Returns 1 if start of `data' seems to mean channel.
-
-Server::get_nick_flags()
-  Returns nick flag characters in order: op, voice, halfop ("@+%" in IRC).
-
-Server::send_message(target, msg, target_type)
-  Sends a message to nick/channel. target_type 0 = channel, 1 = nick
-
-
- *** Server reconnections
-
-Reconnect->{}
-  type - "RECONNECT" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  (..contains all the same data as Connect above..)
-
-  tag - Unique numeric tag
-  next_connect - Unix time stamp when the next connection occurs
-
-
- *** Chat networks
-
-Chatnet->{}
-  type - "CHATNET" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  name - name of chat network
-
-  nick - if not empty, nick preferred in this network
-  username - if not empty, username preferred in this network
-  realname - if not empty, realname preferred in this network
-
-  own_host - address to use when connecting this network
-  autosendcmd - command to send after connecting to this network
-
-chatnet_find(name)
-  Find chat network with name.
-
-
- *** Server redirections
-
-This is a powerful feature of Irssi that I haven't seen in other IRC
-clients. You can EASILY grab the server's reply for a command you send
-to server without any horrible kludges.
-
-redirect_register(command, remote, timeout, start, stop, opt)
-   Register new redirection command. By default irssi has already
-   registered at least: whois, whowas, who, list, ison, userhost, ping,
-   "mode channel" (/MODE #channel), "mode b" (/MODE #channel b), "mode e"
-   and "mode I".
-
-   `command' specifies the name of the command to register, it doesn't
-   have to be a real command name, but something you just specify to
-   redirect_event() when using this redirection.
-
-   `remote' specifies if the command is by default a remote command
-   (eg. sent to another server). redirect_event() may override this.
-
-   `timeout' - If remote is TRUE, specifies how many seconds to wait for
-   reply before aborting.
-
-   `start', `stop', `opt' - hash references with "event" => argpos entries.
-   List of events that start and stop this redirection.
-   Start event list may be empty, but there must be at least one
-   stop event. Optional events are checked only if they are received
-   immediately after one of the stop-events. `argpos' specifies the
-   word number in event string which is compared to wanted argument,
-   -1 = don't compare, TRUE always.
-
-  Example (already done by irssi):
-
-  Irssi::redirect_register('mode channel', 0, 0,
-       undef, # no start events
-       { # stop events
-         "event 324" => 1, # MODE-reply
-         "event 403" => 1, # no such channel
-         "event 442" => 1, # "you're not on that channel"
-         "event 479" => 1  # "Cannot join channel (illegal name)"
-       }, { # optional events
-         "event 329", 1 # Channel create time
-       } );
-
-Server::redirect_event(command, count, arg, remote, failure_signal, signals)
-   Specify that the next command sent to server will be redirected.
-   NOTE: This command MUST be called before sending the command to server.
-
-   `command' - Name of the registered redirection that we're using.
-
-   `count' - How many times to execute the redirection. Some commands may
-   send multiple stop events, like MODE #a,#b.
-
-   `arg' - The argument to be compared in event strings. You can give multiple
-   arguments separated with space.
-
-   `remote' - Specifies if the command is a remote command, -1 = use default.
-
-   `failure_signal' - If irssi can't find the stop signal for the redirection,
-   this signal is called.
-
-   `signals' - hash reference with "event" => "redir signal" entries.
-   If the event is "", all the events belonging to the redirection but not
-   specified here, will be sent there.
-
-  Example:
-
-  # ignore all events generated by whois query, except 311.
-  $server->redirect_event("whois", 1, "cras", 0, undef, {
-                         "event 311" => "redir whois",
-                         "" => "event empty" });
-  $server->send_raw("WHOIS :cras");
-
-
- *** Window items
-
-Windowitem->{}
-  type - Type of the window item, for example "CHANNEL" or "QUERY"
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  server - Active server for item
-  name - Name of the item
-
-  createtime - Time the window item was created
-  data_level - 0=no new data, 1=text, 2=msg, 3=highlighted text
-  hilight_color - Color of the last highlighted text
-
-
- *** Channels
-
-Channel->{}
-  type - "CHANNEL" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  (..contains all the same data as Windowitem above..)
-
-  topic - Channel topic
-  topic_by - Nick who set the topic
-  topic_time - Timestamp when the topic was set
-
-  no_modes - Channel is modeless
-  mode - Channel mode
-  limit - Max. users in channel (+l mode)
-  key - Channel key (password)
-
-  chanop - You are channel operator
-  names_got - /NAMES list has been received
-  wholist - /WHO list has been received
-  synced - Channel is fully synchronized
-
-  joined - JOIN event for this channel has been received
-  left - You just left the channel (for "channel destroyed" event)
-  kicked - You was just kicked out of the channel (for
-           "channel destroyed" event)
-
-Server::channels_join(channels, automatic)
-  Join to channels in server. `channels' may also contain keys for
-  channels just like with /JOIN command. `automatic' specifies if this
-  channel was joined "automatically" or if it was joined because join
-  was requested by user. If channel join is "automatic", irssi doesn't
-  jump to the window where the channel was joined.
-
-
-Channel::destroy()
-  Destroy channel.
-
-Channel
-channel_find(channel)
-  Find channel from any server.
-
-Channel
-Server::channel_find(channel)
-  Find channel from specified server.
-
-
- *** Nick list
-
-Nick->{}
-  type - "NICK" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  nick - Plain nick
-  host - Host address
-  realname - Real name
-  hops - Hop count to the server the nick is using
-
-  gone, serverop - User status, 1 or 0
-  op, voice, halfop - Channel status, 1 or 0
-
-  last_check - timestamp when last checked gone/ircop status.
-  send_massjoin - Waiting to be sent in a "massjoin" signal, 1 or 0
-
-Nick
-Channel::nick_insert(nick, op, voice, send_massjoin)
-  Add nick to nicklist.
-
-Channel::nick_remove(nick)
-  Remove nick from nicklist.
-
-Nick
-Channel::nick_find(nick)
-  Find nick from nicklist.
-
-Nick
-Channel::nick_find_mask(mask)
-  Find nick mask from nicklist, wildcards allowed.
-
-Channel::nicks()
-  Return a list of all nicks in channel.
-
-Server::nicks_get_same(nick)
-  Return all nick objects in all channels in server. List is in format:
-  Channel, Nick, Channel, ...
-
-
- *** Queries
-
-Query->{}
-  type - "QUERY" text
-  chat_type - String ID of chat protocol, for example "IRC"
-
-  (..contains all the same data as Windowitem above..)
-
-  address - Host address of the queries nick
-  server_tag - Server tag used for this nick (doesn't get erased if
-               server gets disconnected)
-  unwanted - 1 if the other side closed or some error occured (DCC chats)
-
-Query
-query_create(chat_type, server_tag, nick, automatic)
-  Create a new query.
-
-Query::destroy()
-  Destroy the query.
-
-Query::query_change_server(server)
-  Change the active server of the query.
-
-Query
-query_find(nick)
-  Find query from any server.
-
-Query
-Server::query_find(nick)
-  Find query from specified server.
-
-
- *** Masks
-
-You should use the Server version of the function if possible, since
-with different chat protocols the mask matching could be different.
-
-mask_match(mask, nick, user, host)
-Server::mask_match(mask, nick, user, host)
-  Return 1 if `mask' matches nick!user@host.
-
-mask_match_address(mask, nick, address)
-Server::mask_match_address(mask, nick, address)
-  Return 1 if `mask' matches nick!address.
-
-masks_match(masks, nick, address)
-Server::masks_match(masks, nick, address)
-  Return 1 if any mask in the `masks' (string separated with spaces)
-  matches nick!address.
-
-
- *** Rawlog
-
-Rawlog->{}
-  logging - The rawlog is being written to file currently
-  nlines - Number of lines in rawlog
-
-Rawlog
-rawlog_create()
-  Create a new rawlog.
-
-Rawlog::destroy()
-  Destroy the rawlog.
-
-Rawlog::get_lines()
-  Returns all lines in rawlog.
-
-rawlog_set_size(lines)
-  Set the default rawlog size for new rawlogs.
-
-Rawlog::open(filename)
-  Start logging new messages in rawlog to specified file.
-
-Rawlog::close()
-  Stop logging to file.
-
-Rawlog::save(filename)
-  Save the current rawlog history to specified file.
-
-Rawlog::input(str)
-  Send `str' to raw log as input text.
-
-Rawlog::output(str)
-  Send `str' to raw log as output text.
-
-Rawlog::redirect(str)
-  Send `str' to raw log as redirection text.
-
-
- *** Logging
-
-Log->{}
-  fname - Log file name
-  real_fname - The actual opened log file (after %d.%m.Y etc. are expanded)
-  opened - Log file is open
-  level - Log only these levels
-  last - Timestamp when last message was written
-  autoopen - Automatically open log at startup
-  failed - Opening log failed last time
-  temp - Log isn't saved to config file
-  items - List of log items
-
-Logitem->{}
-  type - 0=target, 1=window refnum
-  name - Name
-  servertag - Server tag
-
-Log
-log_create_rec(fname, level)
-  Create log file.
-
-Log::update()
-  Add log to list of logs / save changes to config file.
-
-Log
-log_find(fname)
-  Find log with file name.
-
-Log::close()
-  Destroy log file.
-
-Log::start_logging()
-  Open log file and start logging.
-
-Log::stop_logging()
-  Close log file.
-
-Log::item_add(type, name, server)
-  Add log item to log.
-
-Log::item_destroy(item)
-  Remove log item from log.
-
-Logitem
-Log::item_find(type, item, server)
-  Find item from log.
-
-
- *** Ignores
-
-Ignore->{}
-  mask - Ignore mask
-  servertag - Ignore only in server
-  channels - Ignore only in channels (list of names)
-  pattern - Ignore text pattern
-
-  level - Ignore level
-
-  exception - This is an exception ignore
-  regexp - Regexp pattern matching
-  fullword - Pattern matches only full words
-
-ignore_add_rec(ignore)
-  Add ignore record.
-
-ignore_update_rec(ignore)
-  Update ignore record in configuration
-
-ignore_check(nick, host, channel, text, level)
-Server::ignore_check(nick, host, channel, text, level)
-  Return 1 if ignoring matched.
-
-
- ***
- *** IRC specific functions. All objects below this are prefixed with Irc::
- ***
-
- *** IRC servers
-
-Irc::Server->{}
-  (..contains all the same data as core Server object..)
-  real_address - Address the IRC server gives
-  usermode - User mode in server
-  userhost - Your user host in server
-
-Irc::Connect->{}
-  (..contains all the same data as core Connect object..)
-  alternate_nick - Alternate nick to use if default nick is taken.
-
-Connect::connect()
-  Connect to IRC server.
-
-Server::get_channels(server)
-  Return a string of all channels (and keys, if any have them) in server,
-  like "#a,#b,#c,#d x,b_chan_key,x,x" or just "#e,#f,#g"
-
-Server::send_raw(cmd)
-  Send raw message to server, it will be flood protected so you
-  don't need to worry about it.
-
-Server::send_raw_now(cmd)
-  Send raw message to server immediately without flood protection.
-
-Server::send_raw_split(cmd, nickarg, max_nicks)
-  Split the `cmd' into several commands so `nickarg' argument has only
-  `max_nicks' number of nicks.
-
-  Example:
-    $server->send_raw_split("KICK #channel nick1,nick2,nick3 :byebye", 3, 2);
-
-  Irssi will send commands "KICK #channel nick1,nick2 :byebye" and
-  "KICK #channel nick3 :byebye" to server.
-
-Server::ctcp_send_reply(data)
-  Send CTCP reply. This will be "CTCP flood protected" so if there's too
-  many CTCP requests in buffer, this reply might not get sent. The data
-  is the full raw command to be sent to server, like
-    "NOTICE nick :\001VERSION irssi\001"
-
-Server::isupport(name)
-  Returns the value of the named item in the ISUPPORT (005) numeric to the
-  script. If the item is not present returns undef, if the item has no value
-  then "" is returned use defined $server->isupport("name") if you need to
-  check whether a property is present.
-  See http://www.ietf.org/internet-drafts/draft-brocklesby-irc-isupport-01.txt
-  for more information on the ISUPPORT numeric.
-
- *** IRC channels
-
-Ban->{}
-  ban - The ban
-  setby - Nick of who set the ban
-  time - Timestamp when ban was set
-
-Channel::bans()
-  Return a list of bans in channel.
-
-Channel::ban_get_mask(nick)
-  Get ban mask for `nick'.
-
-Channel::banlist_add(ban, nick, time)
-   Add a new ban to channel.
-
-Channel::banlist_remove(ban)
-   Remove a ban from channel.
-
-
- *** DCC
-
-Dcc->{}
-  type - Type of the DCC: chat, send, get
-  orig_type - Original DCC type that was sent to us - same as type except
-              GET and SEND are swapped
-  created - Time stamp when the DCC record was created
-
-  server - Server record where the DCC was initiated.
-  servertag - Tag of the server where the DCC was initiated.
-  mynick - Our nick to use in DCC chat.
-  nick - Other side's nick name.
-
-  chat - Dcc chat record if the request came through DCC chat
-  target - Who the request was sent to - your nick, channel or empty
-           if you sent the request
-  arg - Given argument .. file name usually
-
-  addr - Other side's IP address.
-  port - Port we're connecting in.
-
-  starttime - Unix time stamp when the DCC transfer was started
-  transfd - Bytes transferred
-
-Dcc::Chat->{}
-  id - Unique identifier - usually same as nick
-  mirc_ctcp - Send CTCPs without the CTCP_MESSAGE prefix
-  connection_lost - Other side closed connection
-
-Dcc::Get->{}
-  (..contains all the same data as core Dcc object..)
-  size - File size
-  skipped - Bytes skipped from start (resuming file)
-
-  get_type - What to do if file exists? 0=default, 1=rename, 2=overwrite,
-             3=resume
-  file - The real file name which we use.
-  file_quoted - 1 if file name was received quoted ("file name")
-
-Dcc::Send->{}
-  (..contains all the same data as core Dcc object..)
-  size - File size
-  skipped - Bytes skipped from start (resuming file)
-
-  file_quoted - 1 if file name was received quoted ("file name")
-  waitforend - File is sent, just wait for the replies from the other side
-  gotalldata - Got all acks from the other end
-
-
-dccs() - return list of all dcc connections
-
-Dcc::destroy()
-  Destroy DCC connection.
-
-Dcc
-dcc_find_item(type, nick, arg)
-  Find DCC connection.
-
-Dcc
-dcc_find_by_port(nick, port)
-  Find DCC connection by port.
-
-Dcc
-Windowitem::get_dcc(item)
-  If `item' is a query of a =nick, return DCC chat record of nick.
-
-Dcc::chat_send(data)
-  Send `data' to dcc chat.
-
-Server::dcc_ctcp_message(target, notice, msg)
-Dcc::ctcp_message(target, notice, msg)
-  Send a CTCP message/notify to target.
-
-
- *** Netsplits
-
-Netsplit->{}
-  nick - Nick
-  address - Nick's host
-  destroy - Timestamp when this record should be destroyed
-  server - Netsplitserver object
-  channels - list of channels (Netsplitchannel objects) the nick was in
-
-Netsplitserver->{}
-  server - The server nick was in
-  destserver - The other server where split occured.
-  count - Number of splits in server
-
-Netsplitchannel->{}
-  name - Channel name
-  nick - Nick object
-
-Netsplit
-Server::netsplit_find(nick, address)
-  Check if nick!address is on the other side of netsplit. Netsplit records
-  are automatically removed after 30 minutes (current default)..
-
-Nick
-Server::netsplit_find_channel(nick, address, channel)
-  Find nick record for nick!address in channel `channel'.
-
-
- *** Notify list
-
-Notifylist->{}
-  mask - Notify nick mask
-  away_check - Notify away status changes
-  idle_check_time - Notify when idle time is reset and idle was bigger
-                    than this (seconds)
-  ircnets - List of ircnets (strings) the notify is checked
-
-notifies() - Return list of all notifies
-
-Notifylist
-notifylist_add(mask, ircnets, away_check, idle_check_time)
-  Add new item to notify list.
-
-notifylist_remove(mask)
-  Remove item from notify list.
-
-Notifylist
-notifylist_find(mask, ircnet)
-  Find notify.
-
-Server
-notifylist_ison(nick, serverlist)
-  Check if `nick' is in IRC. `serverlist' is a space separated
-  list of server tags. If it's empty string, all servers will be checked.
-
-Server::notifylist_ison_server(nick)
-  Check if `nick' is on IRC server.
-
-Notifylist::ircnets_match(ircnet)
-  Returns 1 if notify is checked in `ircnet'.
-
-
- *** /EXEC processes
-
-Process->{}
-  id - ID for the process
-  name - Name for the process (if given)
-  args - The command that is being executed
-
-  pid - PID for the executed command
-  target - send text with /msg <target> ...
-  target_win - print text to this window
-
-  shell - start the program via /bin/sh
-  notice - send text with /notice, not /msg if target is set
-  silent - don't print "process exited with level xx"