mirror of
https://github.com/irssi/irssi.git
synced 2025-02-02 15:08:01 -05:00
53b248f6de
and this is what I've been doing a few weeks now.. :) You really shouldn't upgrade to this version without keeping a backup of the working one, since this will break everything and at least notify list is broken - probably something else too. * On the way to 0.8.0 .. Major rewriting/rearranging code. There's some changes in behaviour because I'm trying to make Irssi a bit more compatible with EPIC. * libPropList isn't needed anymore - I'm using my own configuration library. This is mostly because different proplists worked a bit differently everywhere and several people had problems with it. It's also yet another extra library that you needed to compile Irssi. New configuration library has several advantages: You can add comments to configuration file and they also stay there when it's saved. It's not nearly as vulnerable as proplist. If some error occurs, instead of just not reading anything it will try to continue if possible. Also the error messages are written to irssi's text window instead of stdout. It can be managed more easily than proplist - setting/getting the configuration is a lot more easier. * Coding style changes - I'm not using gint, gchar etc. anymore, they're just extra pain when moving code to non-glib projects and syntax hilighting doesn't work by default with most editors ;) Indentation style was also changed to K&R because of some political reasons ;) And I'm already starting to like it.. :) It forces me to split code to different functions more often and the result is that the code gets more readable. And finally I'm also using nst' all over the place. + /EVAL <commands> - Expand all the special variables from string and run it. Commands can be split with ; character. See docs/SPECIAL_VARS for more info. + Aliases are parsed just like /EVAL - arguments are in $0..$9. + Text formats are also parsed like /EVAL, arguments used to be in $1..$9, now they're in $0..$8 so it messes up existing themes.. + /SET [key [value]] - no more the '=' character. Boolean values also need to be changed with ON/OFF/TOGGLE values (not yes/no). Settings aren't saved to disk until you use /SAVE. + /TOGGLE <key> [ON/OFF] - same as /SET <key> TOGGLE git-svn-id: http://svn.irssi.org/repos/irssi/trunk@163 dbcabf3a-b0e7-0310-adc4-f8d773084564
622 lines
18 KiB
Plaintext
622 lines
18 KiB
Plaintext
Running Perl scripts
|
|
--------------------
|
|
|
|
Place new scripts to ~/.irssi/scripts/, or /usr/lib/irssi/scripts/
|
|
directory and run then with /RUN script. Or you could also run the
|
|
script from another place by specifying the whole path to it. Scripts
|
|
in ~/.irssi/scripts/autorun/ directory are automatically run at
|
|
startup.
|
|
|
|
Using /PERLFLUSH closes and reopens the perl interpreter removing all
|
|
Perl scripts from memory. There's currently no way to unload a single Perl
|
|
script. Also, Irssi doesn't check if you run the same script twice or
|
|
different scripts use signal_add() for the same named function - it will
|
|
probably crash or do some weird things then.
|
|
|
|
|
|
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
|
|
"server incoming" signal with the raw line as it's first parameter. You
|
|
probably don't want to use this signal. Next thing Irssi does is to
|
|
interpret the header and send a "server event" signal with arguments
|
|
"PRIVMSG you...", server, "nick", "user@there.org". You probably don't
|
|
want to use this either, since next irssi will send an "event privmsg"
|
|
signal with the "you :blahblah" as it's argument. 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 returning from the function with value 1.
|
|
|
|
For example:
|
|
|
|
--------------------------------------------------------
|
|
sub event_privmsg {
|
|
# $data = "nick/#channel :text"
|
|
my ($data, $server, $nick, $address) = @_;
|
|
my ($target, $text) = $data =~ /^(\S*)\s:(.*)/;
|
|
|
|
return 1 if ($text =~ /free.*porn/);
|
|
return 1 if ($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".
|
|
|
|
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 send can be found from SIGNALS file.
|
|
|
|
|
|
Message levels
|
|
--------------
|
|
|
|
Several functions expect message levels. Sometimes numeric and sometimes
|
|
alphabetic. Yes, it's stupid, will fix it :) For now you can use
|
|
Irssi::level2bits() function to convert the level string to numeric. Here's
|
|
all the levels that irssi supports currently:
|
|
|
|
CRAP, MSGS, PUBLIC, NOTICES, SNOTES, CTCPS, ACTIONS, JOINS, PARTS
|
|
QUITS, KICKS, MODES, SMODES, TOPICS, WALLOPS, INVITES, NICKS, PONGS
|
|
DCC, CLIENTNOTICE, CLIENTCRAP, CLIENTERROR, HILIGHT
|
|
(and NOHILIGHT if you don't want the message to be hilighted ever..)
|
|
|
|
For example:
|
|
|
|
$server->printtext("#channel", Irssi::level2bits('clientcrap'), 'Hello, world');
|
|
|
|
Writes text to #channel window with clientcrap level.
|
|
|
|
|
|
Functions that you can use in Irssi's Perl scripts
|
|
--------------------------------------------------
|
|
|
|
This is just my very first implementation and things will probably change.
|
|
|
|
Commands marked with (!!) mean that you shouldn't use it unless you
|
|
know what you're doing..
|
|
|
|
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();
|
|
|
|
|
|
*** General
|
|
|
|
Channel cur_channel() - return current channel
|
|
Server cur_server() - return current server
|
|
|
|
channels() - return list of all channels
|
|
servers() - return list of all servers
|
|
commands() - return list of all commands
|
|
dccs() - return list of all dcc connections
|
|
logs() - return list of all log files
|
|
plugins() - return list of all plugins
|
|
|
|
print(str)
|
|
Print `str' to current window as "Irssi notice".
|
|
|
|
command(cmd, [Server server, [Channel channel]])
|
|
Send a command `cmd' (in current channel). This will work just as if you
|
|
had typed `cmd' in command line, so you'll need to use /COMMANDS or the
|
|
text will be sent to the channel.
|
|
|
|
Server::command(cmd, [Channel channel])
|
|
Just like above, except different calling method.
|
|
|
|
Channel::command(cmd)
|
|
Just like above, except different calling method.
|
|
|
|
Server::printtext(channel, level, str)
|
|
Print `str'.
|
|
|
|
setup_get(option)
|
|
Get value of `option' from setup and return it.
|
|
|
|
|
|
*** 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.
|
|
|
|
|
|
*** Signals / timeouts
|
|
|
|
signal_emit(signal, ...)
|
|
Send signal `signal'
|
|
|
|
signal_add(signal, func)
|
|
Bind `signal' to function `func'
|
|
|
|
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'
|
|
|
|
tag 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_remove(tag)
|
|
Remove timeout with tag.
|
|
|
|
|
|
*** Commands
|
|
|
|
Command::values()
|
|
Get some information about command. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"cmd" - Command
|
|
"category" - Category
|
|
|
|
command_bind(cmd, category, func)
|
|
Bind command `cmd' to call function `func'. `category' is the
|
|
category where the command is displayed in /HELP.
|
|
|
|
command_unbind(cmd, func)
|
|
Unbind command `cmd' from function 'func.
|
|
|
|
Server::irc_send_cmd_split(cmd, arg, max_nicks)
|
|
Split the `cmd' into several commands so `arg' argument has only
|
|
`max_nicks' number of nicks.
|
|
|
|
Example: $server->irc_send_cmd_split("KICK #channel nick1,nick2,nick3 :byebye", 2, 2);
|
|
Irssi will send commands "KICK #channel nick1,nick2 :byebye" and
|
|
"KICK #channel nick3 :byebye" to server.
|
|
|
|
|
|
*** Server Connects
|
|
|
|
This is a record where we keep connection information. All Servers and
|
|
Reconnects records have pointer to one of these.
|
|
|
|
Connect::values()
|
|
Get some information about connect. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"address" - Address where we connected (irc.blah.org)
|
|
"port" - Port where we connected
|
|
"password" - Password we used in connection.
|
|
|
|
"ircnet" - IRC network
|
|
"wanted_nick" - Nick which we would prefer to use
|
|
"alternate_nick" - Alternate 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::values()
|
|
Get some information about server. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"address" - Address where we connected (irc.blah.org)
|
|
"port" - Port where we connected
|
|
"password" - Password we used in connection.
|
|
|
|
"ircnet" - IRC network
|
|
"wanted_nick" - Nick which we would prefer to use
|
|
"alternate_nick" - Alternate nick which we would prefer to use
|
|
"username" - User name
|
|
"realname" - Real name
|
|
|
|
"tag" - Unique server tag.
|
|
"real_address" - Who the server thinks it is (irc1.blah.org)
|
|
"nick" - Current nick
|
|
"usermode" - Current user mode
|
|
"usermode_away" - Are we marked as away? 1|0
|
|
"away_reason" - Away reason
|
|
"connected" - Is connection finished? 1|0
|
|
"connection_lost" - Did we lose the connection (1) or was
|
|
the connection meant to be disconnected (0)
|
|
Example:
|
|
%server_info = %{Irssi::cur_server->values()};
|
|
Irssi::print("Current server = ".$server_info{'address'});
|
|
|
|
Server Connect::connect()
|
|
Connect to server.
|
|
|
|
Server::disconnect()
|
|
Disconnect from server.
|
|
|
|
Server server_find_tag(tag)
|
|
Find server with tag
|
|
|
|
Server server_find_ircnet(ircnet)
|
|
Find first server that is in `ircnet'
|
|
|
|
Channel channel_find(channel)
|
|
Find `channel' from any server
|
|
|
|
Channel Server::channel_find_level(level)
|
|
Find channel with level `level' preferably from specified server, but
|
|
fallbacks to any channel the matching level.
|
|
|
|
Server::send_raw(cmd)
|
|
Send raw message to server, it will be flood protected so you
|
|
don't need to worry about it.
|
|
|
|
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.
|
|
|
|
|
|
*** Server redirections
|
|
|
|
WARNING: It's easy to mess up the Irssi's internal server expectations with
|
|
these commands!
|
|
|
|
This is a powerful feature of Irssi that I can'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.
|
|
|
|
Server::redirect_init(command, last, ...)
|
|
Initialize redirection for specified command. This needs to be done only
|
|
once. Irssi already initializes commands "WHOIS", "WHO", "LIST" and "ISON".
|
|
`command' is the whole name of the signal, like "command whois".
|
|
`last' specifies how many of the items in `...' is considered as the
|
|
"last event" from the command.
|
|
|
|
Example: $server->redirection_init('command who',
|
|
2, # 2 first events will finish the command
|
|
'event 401', # unknown nick (finished)
|
|
'event 315', # end of who (finished)
|
|
'event 352'); # who line (wait..)
|
|
|
|
Server::redirect_event(arg, last, ...)
|
|
Add redirection. `arg' is a space separated list of arguments that should
|
|
match before Irssi will redirect the event (think of /WHOIS nick nick and
|
|
doing another to different nick immediately after it, there's no way of
|
|
knowing which will return first. so, arg would be in this case 'nick').
|
|
|
|
`last' specifies how many of the following events are considered as
|
|
"last event" from command - just like in redirect_init().
|
|
|
|
`...' is `event, signal, argpos, ...`, where
|
|
`event' is the event we're waiting from server.
|
|
`signal' is the signal we will send after receiving the event. It should
|
|
always start with 'redir ' so that Irssi's perl handler knows to
|
|
send correct arguments to signal handler.
|
|
`argpos' is the argument position in event's data or -1 if it
|
|
should be ignored.
|
|
|
|
Example:
|
|
$server->send_raw('WHOIS :cras');
|
|
$server->redirect_event('cras', 2,
|
|
"event 318", "redir end_of_whois", -1,
|
|
"event 402", "redir no_such_server", -1,
|
|
"event 401", "redir no_such_nick", 1,
|
|
"event 311", "redir whois", 1,
|
|
"event 301", "redir whois_away", 1,
|
|
"event 312", "redir whois_server", 1,
|
|
"event 313", "redir whois_oper", 1,
|
|
"event 317", "redir whois_idle", 1,
|
|
"event 319", "redir whois_channels", 1);
|
|
In the 402-case we tried "/WHOIS nick nick" but nick didn't exist..
|
|
|
|
group Server::redirect_single_event(arg, last, group, event, signal, argpos)
|
|
Same as redirect_event() except you can set it up in pieces.
|
|
If `group' is 0, it will create new group and return it's id.
|
|
|
|
|
|
*** IRC masks
|
|
|
|
irc_mask_match(mask, nick, user, host)
|
|
Return 1 if `mask' matches nick!user@host.
|
|
|
|
irc_mask_match_address(mask, nick, address)
|
|
Return 1 if `mask' matches nick!address.
|
|
|
|
irc_masks_match(masks, nick, address)
|
|
Return 1 if any mask in the `masks' (string separated with spaces)
|
|
matches nick!address.
|
|
|
|
irc_get_mask(nick, host, flags)
|
|
Create IRC mask from nick!host.
|
|
flags = you need to combine these:
|
|
(FIXME: export the IRC_xxx defines to perl (or something))
|
|
IRC_MASK_NICK 0x01
|
|
IRC_MASK_USER 0x02
|
|
IRC_MASK_HOST 0x04
|
|
IRC_MASK_DOMAIN 0x08
|
|
|
|
|
|
*** Channels
|
|
|
|
Channel::values()
|
|
Get some information about channel. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"server" - Server of the channel
|
|
"name" - Channel name
|
|
"type" - Channel type ("channel", "query", "dcc chat", "empty")
|
|
"topic" - Channel topic
|
|
"key" - Channel key (password)
|
|
"limit" - Max. users in channel (+l mode)
|
|
"level" - Channel's level number.
|
|
"new_data" - 0=no new data, 1=text, 2=msg, 3=msg for you
|
|
"synced" - Channel is synchronized
|
|
"wholist" - Channel has received /WHO list
|
|
"names_got" - Channel has received /NAMES list
|
|
"chanop" - You are channel operator
|
|
"left" - You just left the channel (for "channel destroyed" event)
|
|
"kicked" - You was just kicked out of the channel (for
|
|
"channel destroyed" event)
|
|
|
|
Channel Server::channel_create(channel, type, automatic)
|
|
Create new channel with name `channel'. `type' is one of:
|
|
(FIXME: export these to perl somehow)
|
|
CHANNEL_TYPE_CHANNEL 0
|
|
CHANNEL_TYPE_QUERY 1
|
|
CHANNEL_TYPE_DCC_CHAT 2
|
|
CHANNEL_TYPE_EMPTY 3
|
|
`automatic' means that channel is created "automatically" and
|
|
Irssi will NOT change the active window to it.
|
|
|
|
Channel::destroy()
|
|
Destroy channel.
|
|
|
|
Channel::change_name(name)
|
|
Change channel's name
|
|
|
|
Channel::get_mode()
|
|
Return channel's mode
|
|
|
|
Channel Server::channel_find(channel)
|
|
Find `channel' in server.
|
|
|
|
Channel Server::channel_find_closest(channel, level)
|
|
Find `channel' or if not found, some other channel that has
|
|
level `level' (number).
|
|
|
|
Channel channel_find_level(level)
|
|
Find channel with level `level'.
|
|
|
|
|
|
*** Channel modes
|
|
|
|
Ban::values()
|
|
Get some information about ban. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"ban" - The ban
|
|
"setby" - Nick of who set the ban
|
|
"time" - Timestamp when ban was set
|
|
|
|
Ban Channel::ban_add(ban, nick, time)
|
|
Add new ban. (!!)
|
|
|
|
Channel::ban_remove(ban)
|
|
Remove ban. (!!)
|
|
|
|
Ban Channel::ban_exception_add(ban, nick, time)
|
|
Add ban exception (!!)
|
|
|
|
Channel::ban_exception_remove(ban)
|
|
Remove ban exception (!!)
|
|
|
|
Channel::invitelist_add(mask)
|
|
Add invite (!!)
|
|
|
|
Channel::invitelist_remove(mask)
|
|
Remove invite (!!)
|
|
|
|
Channel::modes_parse_channel(setby, modestr)
|
|
Parse mode string (!!)
|
|
|
|
Channel::ban_get_mask(nick)
|
|
Get ban mask for `nick'.
|
|
|
|
Channel::modes_set(data, mode)
|
|
Set mode `mode' ("+o", "-o", etc.) to all nicks in `data'
|
|
separated with spaces.
|
|
|
|
|
|
*** Nick list
|
|
|
|
Nick::values()
|
|
Get some information about nick. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"nick" - Plain nick
|
|
"host" - Host (blah@there.org)
|
|
"name" - Real name
|
|
"hops" - Hop count to the server nick is using
|
|
"op", "voice", "gone", "ircop" - 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::nicklist_insert(nick, op, voice, send_massjoin)
|
|
Add nick to nicklist. (!!)
|
|
|
|
Channel::nicklist_remove(nick)
|
|
Remove nick from nicklist. (!!)
|
|
|
|
Nick Channel::nicklist_find(mask)
|
|
Find nick from nicklist.
|
|
|
|
Channel::nicklist_getnicks(channel)
|
|
Return a list of all nicks (Nick packages) in channel.
|
|
|
|
|
|
*** DCC
|
|
|
|
Dcc:destroy()
|
|
Destroy DCC connection. (!!)
|
|
|
|
dcc_type2str(type)
|
|
DCC type number to string
|
|
|
|
dcc_str2type(type)
|
|
DCC type string to number
|
|
|
|
Dcc dcc_find_item(type, nick, arg)
|
|
Find DCC connection.
|
|
|
|
Dcc dcc_find_by_port(nick, port)
|
|
Find DCC connection by port.
|
|
|
|
|
|
*** Reconnects
|
|
|
|
Reconnect::values()
|
|
Get some information about reconnect. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"tag" - Unique numeric tag
|
|
"next_connect" - Unix time stamp when the next connection occurs
|
|
|
|
"address" - Address where we connected (irc.blah.org)
|
|
"port" - Port where we connected
|
|
"password" - Password we used in connection.
|
|
|
|
"ircnet" - IRC network
|
|
"wanted_nick" - Nick which we would prefer to use
|
|
"alternate_nick" - Alternate nick which we would prefer to use
|
|
"username" - User name
|
|
"realname" - Real name
|
|
|
|
|
|
*** Netsplits
|
|
|
|
Netsplit::values()
|
|
Get some information about netsplit. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"nick" - Nick
|
|
"address" - Nick's host
|
|
"server" - The server nick was in
|
|
"destserver" - The other server where split occured.
|
|
"destroy" - Timestamp when this record should be destroyed
|
|
/*FIXME: add list of channels the nick was in;*/
|
|
|
|
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_add(nick, ircnet)
|
|
Add `nick' to notify list in irc network `ircnet'
|
|
|
|
Server notifylist_ison(nick, ircnets)
|
|
Check if `nick' is in IRC. `ircnets' is a space separated
|
|
list of irc networks. If it's empty string, all servers will be checked.
|
|
|
|
Server::notifylist_ison_server(nick)
|
|
Check if `nick' is on IRC server.
|
|
|
|
|
|
*** Rawlog
|
|
|
|
Server::rawlog_input(str)
|
|
Send `str' to raw log as input text. (!!)
|
|
|
|
Server::rawlog_output(str)
|
|
Send `str' to raw log as output text. (!!)
|
|
|
|
Server::rawlog_redirect(str)
|
|
Send `str' to raw log as redirection text. (!!)
|
|
|
|
|
|
*** Ignores
|
|
|
|
Autoignore::values()
|
|
Get some information about autoignore. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"nick" - Ignored nick
|
|
"timeleft" - Seconds left to ignore
|
|
"level" - Ignoring level number
|
|
|
|
ignore_add(mask, level)
|
|
Ignore `mask' with level string
|
|
|
|
ignore_remove(mask, level)
|
|
Unignore level string from `mask'
|
|
|
|
Server::ignore_check(nick, host, type)
|
|
Return 1 if nick!host is ignored with level number `type'.
|
|
|
|
Server::autoignore_add(type, nick)
|
|
Autoignore `nick' in server with level number `type'.
|
|
|
|
Server::autoignore_remove(mask, level)
|
|
Remove autoignoring `nick' from server. `level' is a string.
|
|
|
|
|
|
*** Logging
|
|
|
|
Log::values()
|
|
Get some information about log. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"fname" - Log file name
|
|
"autoopen_log" - Automatically open log at startup
|
|
"last" - Timestamp when last write occured.
|
|
"level" - Global logging level.
|
|
/*FIXME: add list of Logitems;*/
|
|
|
|
Logitem::values()
|
|
Get some information about logitem. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"name" - Log item name.
|
|
"level" - Logging level number.
|
|
|
|
Log log_create(fname, data)
|
|
Create log file. `data' = logging level ("-all #channel +public")
|
|
|
|
Log log_create_with_level(fname, level)
|
|
Create log file with level number.
|
|
|
|
Log log_file_find(fname)
|
|
Find log file.
|
|
|
|
Log::destroy()
|
|
Destroy log file
|
|
|
|
Log::open()
|
|
Start logging
|
|
|
|
Log::close()
|
|
Stop logging
|
|
|
|
Log::append_item(name, level)
|
|
Append log item with level number `level' to log file. (!!)
|
|
|
|
Log::remove_item(log, name)
|
|
Remove log item. (!!)
|
|
|
|
|
|
*** Plugins
|
|
|
|
Plugin::values()
|
|
Get some information about plugin. This function returns a reference to
|
|
hash table. Hash table has keys:
|
|
"name" - Plugin name
|
|
"description" - Plugin description
|
|
|
|
plugin_load(name, args)
|
|
Load plugin.
|
|
|
|
plugin_get_description(name)
|
|
Get plugin description string.
|
|
|
|
Plugin plugin_find(name)
|
|
Find plugin.
|