1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-05 17:05:42 +02:00

Added "modifier" in plugins API, improved /plugin command

This commit is contained in:
Sebastien Helleu
2006-10-24 11:23:31 +00:00
parent 1e81591803
commit dfa9ed31d4
68 changed files with 11080 additions and 5962 deletions
+412 -8
View File
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -128,13 +128,19 @@ functions: list internal functions for key bindings
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
</programlisting>
<command>plugin [load Dateiname] | [autoload] | [reload] | [unload]</command>
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
<programlisting>
auflisten/laden/entladen von Plugins
Dateiname: zu ladendes Plugin
list: list loaded plugins
listfull: list loaded plugins with detailed info for each plugin
mask: part of name of a loaded plugin
load: load a plugin
autoload: autoload plugins in system or user directory
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
unload: unload one or all plugins
Ohne Argumente werden alle geladenen Plugins aufgelistet.
Without argument, /plugin command lists loaded plugins.
</programlisting>
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
+413 -9
View File
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -127,13 +127,19 @@ functions: list internal functions for key bindings
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
</programlisting>
<command>plugin [load filename] | [autoload] | [reload] | [unload]</command>
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
<programlisting>
list/load/unload plugins
filename: WeeChat plugin (file) to load
list: list loaded plugins
listfull: list loaded plugins with detailed info for each plugin
mask: part of name of a loaded plugin
load: load a plugin
autoload: autoload plugins in system or user directory
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
unload: unload one or all plugins
Without argument, /plugin command lists all loaded plugins.
Without argument, /plugin command lists loaded plugins.
</programlisting>
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
+426 -12
View File
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -127,13 +127,19 @@ functions: lister la liste des fonctions internes pour les associations de touch
reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !)
</programlisting>
<command>plugin [load fichier] | [autoload] | [reload] | [unload]</command>
<command>plugin [list [masque]] | [listfull [masque]] | [load fichier] | [autoload] | [reload [nom]] | [unload [nom]]</command>
<programlisting>
liste/charge/décharge des extensions
fichier: extension WeeChat (fichier) à charger
list: lister les extensions chargées
listfull: lister les extensions chargées avec de l'info détaillée pour chaque extension
masque: morceau de nom d'une extension chargée
load: charger une extension
autoload: charger automatiquement les extensions dans un répertoire système ou utilisateur
reload: recharger une extension (si pas de nom donné, décharger toutes les extensions, puis puis recharger automatiquement les extensions)
unload: décharger une ou plusieurs exteneions
Sans paramètre, la commande /plugin liste toutes les extensions chargées.
Sans paramètre, la commande /plugin liste les extensions chargées.
</programlisting>
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
+405 -364
View File
File diff suppressed because it is too large Load Diff
+405 -364
View File
File diff suppressed because it is too large Load Diff
+407 -364
View File
File diff suppressed because it is too large Load Diff
+417 -365
View File
File diff suppressed because it is too large Load Diff
+405 -364
View File
File diff suppressed because it is too large Load Diff
+406 -365
View File
File diff suppressed because it is too large Load Diff
+395 -364
View File
File diff suppressed because it is too large Load Diff
+184 -111
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -154,7 +154,7 @@ completion_get_command_infos (t_completion *completion,
for (ptr_handler = ptr_plugin->handlers;
ptr_handler; ptr_handler = ptr_handler->next_handler)
{
if ((ptr_handler->type == HANDLER_COMMAND)
if ((ptr_handler->type == PLUGIN_HANDLER_COMMAND)
&& (ascii_strcasecmp (ptr_handler->command,
ptr_command2) == 0))
{
@@ -304,7 +304,7 @@ completion_list_add_plugin_cmd (t_completion *completion)
for (ptr_handler = ptr_plugin->handlers;
ptr_handler; ptr_handler = ptr_handler->next_handler)
{
if (ptr_handler->type == HANDLER_COMMAND)
if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
completion_list_add (completion, ptr_handler->command);
}
}
+1 -1
View File
@@ -217,7 +217,7 @@ gui_main_loop ()
if ((ptr_server->lag_check_time.tv_sec == 0)
&& (new_time >= ptr_server->lag_next_check))
{
server_sendf (ptr_server, "PING %s\r\n", ptr_server->address);
server_sendf (ptr_server, "PING %s", ptr_server->address);
gettimeofday (&(ptr_server->lag_check_time), NULL);
}
+4 -2
View File
@@ -360,10 +360,11 @@ gui_printf_internal (t_gui_buffer *buffer, int display_time, int type, char *nic
/*
* gui_printf_raw_data: display raw IRC data (only if raw IRC data buffer exists)
* type: 0 = recv, 1 = send, -1 = recv, modified by a modifier (plugin)
*/
void
gui_printf_raw_data (void *server, int send, char *message)
gui_printf_raw_data (void *server, int send, int modified, char *message)
{
char *pos;
@@ -381,7 +382,8 @@ gui_printf_raw_data (void *server, int send, char *message)
((t_irc_server *)server)->name,
GUI_COLOR(COLOR_WIN_CHAT_DARK),
GUI_COLOR((send) ? COLOR_WIN_CHAT_PART : COLOR_WIN_CHAT_JOIN),
(send) ? PREFIX_PART : PREFIX_JOIN,
(send) ? ((modified) ? PREFIX_SEND_MOD : PREFIX_PART) :
((modified) ? PREFIX_RECV_MOD : PREFIX_JOIN),
GUI_COLOR(COLOR_WIN_CHAT),
message);
if (pos)
+1 -1
View File
@@ -184,7 +184,7 @@ extern void gui_infobar_remove_all ();
extern int gui_word_strlen (t_gui_window *, char *);
extern int gui_word_real_pos (t_gui_window *, char *, int);
extern void gui_printf_internal (t_gui_buffer *, int, int, char *, char *, ...);
extern void gui_printf_raw_data (void *, int, char *);
extern void gui_printf_raw_data (void *, int, int, char *);
extern void gui_input_optimize_size (t_gui_buffer *);
extern void gui_input_init_color_mask (t_gui_buffer *);
extern void gui_input_move (t_gui_buffer *, char *, char *, int );
+1 -1
View File
@@ -427,7 +427,7 @@ channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
(channel->nicks_count <= cfg_irc_away_check_max_nicks))
{
channel->checking_away++;
server_sendf (server, "WHO %s\r\n", channel->name);
server_sendf (server, "WHO %s", channel->name);
}
else
channel_remove_away (channel);
+7 -7
View File
@@ -632,8 +632,8 @@ dcc_accept (t_irc_dcc *ptr_dcc)
ptr_dcc->status = DCC_CONNECTING;
server_sendf (ptr_dcc->server,
(strchr (ptr_dcc->filename, ' ')) ?
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\r\n" :
"PRIVMSG %s :\01DCC RESUME %s %d %u\01\r\n",
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\n" :
"PRIVMSG %s :\01DCC RESUME %s %d %u\01",
ptr_dcc->nick, ptr_dcc->filename,
ptr_dcc->port, ptr_dcc->start_resume);
dcc_redraw (HOTLIST_MSG);
@@ -661,8 +661,8 @@ dcc_accept_resume (t_irc_server *server, char *filename, int port,
ptr_dcc->last_check_pos = pos_start;
server_sendf (ptr_dcc->server,
(strchr (ptr_dcc->filename, ' ')) ?
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\r\n" :
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01\r\n",
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\n" :
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01",
ptr_dcc->nick, ptr_dcc->filename,
ptr_dcc->port, ptr_dcc->start_resume);
@@ -1158,13 +1158,13 @@ dcc_send_request (t_irc_server *server, int type, char *nick, char *filename)
/* send DCC request to nick */
if (type == DCC_CHAT_SEND)
server_sendf (server,
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01\r\n",
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01",
nick, local_addr, port);
else
server_sendf (server,
(spaces) ?
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\n" :
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01",
nick, short_filename, local_addr, port,
(unsigned long) st.st_size);
+11 -11
View File
@@ -725,7 +725,7 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *nick, char *arguments
nick);
}
irc_mode_channel_set (ptr_channel, pos_modes);
server_sendf (server, "MODE %s\r\n", ptr_channel->name);
server_sendf (server, "MODE %s", ptr_channel->name);
}
else
{
@@ -1180,7 +1180,7 @@ irc_cmd_recv_ping (t_irc_server *server, char *host, char *nick, char *arguments
pos = strrchr (arguments, ' ');
if (pos)
pos[0] = '\0';
server_sendf (server, "PONG :%s\r\n", arguments);
server_sendf (server, "PONG :%s", arguments);
return 0;
}
@@ -1253,7 +1253,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
"%s %s / %s%s",
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
&buf->sysname,
&buf->release, &buf->machine, "\01\r\n");
&buf->release, &buf->machine, "\01");
free (buf);
}
else
@@ -1261,7 +1261,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
"NOTICE %s :%sVERSION %s v%s"
" compiled on %s%s",
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
"\01\r\n");
"\01");
irc_display_prefix (server, ptr_buffer, PREFIX_SERVER);
gui_printf (ptr_buffer,
_("CTCP %sVERSION%s received from %s%s"),
@@ -1408,10 +1408,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
if (pos && !pos[0])
pos = NULL;
if (pos)
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
server_sendf (server, "NOTICE %s :\01PING %s\01",
nick, pos);
else
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
server_sendf (server, "NOTICE %s :\01PING\01",
nick);
irc_display_prefix (server, ptr_channel->buffer, PREFIX_SERVER);
gui_printf (ptr_channel->buffer,
@@ -1549,10 +1549,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
if (pos && !pos[0])
pos = NULL;
if (pos)
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
server_sendf (server, "NOTICE %s :\01PING %s\01",
nick, pos);
else
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
server_sendf (server, "NOTICE %s :\01PING\01",
nick);
irc_display_prefix (server, server->buffer, PREFIX_SERVER);
gui_printf (server->buffer,
@@ -2414,10 +2414,10 @@ irc_cmd_recv_001 (t_irc_server *server, char *host, char *nick, char *arguments)
if (ptr_channel->type == CHANNEL_TYPE_CHANNEL)
{
if (ptr_channel->key)
server_sendf (server, "JOIN %s %s\r\n",
server_sendf (server, "JOIN %s %s",
ptr_channel->name, ptr_channel->key);
else
server_sendf (server, "JOIN %s\r\n",
server_sendf (server, "JOIN %s",
ptr_channel->name);
}
}
@@ -4811,7 +4811,7 @@ irc_cmd_recv_433 (t_irc_server *server, char *host, char *nick, char *arguments)
if (!hostname[0])
strcpy (hostname, _("unknown"));
server_sendf (server,
"NICK %s\r\n",
"NICK %s",
server->nick);
}
else
+94 -94
View File
File diff suppressed because it is too large Load Diff
+215 -86
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -50,6 +50,8 @@
#define PREFIX_QUIT "<--"
#define PREFIX_ERROR "=!="
#define PREFIX_PLUGIN "-P-"
#define PREFIX_RECV_MOD "==>"
#define PREFIX_SEND_MOD "<=="
#define DEFAULT_IRC_PORT 6667
@@ -345,6 +347,7 @@ extern char *server_get_charset_decode_utf (t_irc_server *);
extern char *server_get_charset_encode (t_irc_server *);
extern int server_send (t_irc_server *, char *, int);
extern void server_sendf (t_irc_server *, char *, ...);
extern void server_parse_message (char *, char **, char **, char **);
extern void server_recv (t_irc_server *);
extern void server_child_read (t_irc_server *);
extern int server_connect (t_irc_server *);
+40
View File
@@ -356,6 +356,46 @@ weechat_plugin_handler_remove_all (t_weechat_plugin *plugin)
plugin_handler_remove_all (plugin);
}
/*
* weechat_plugin_modifier_add: add a IRC message modifier
*/
t_plugin_modifier *
weechat_plugin_modifier_add (t_weechat_plugin *plugin,
char *type, char *message,
t_plugin_modifier_func *modifier_func,
char *modifier_args, void *modifier_pointer)
{
if (plugin && type && modifier_func)
return plugin_modifier_add (plugin, type, message, modifier_func,
modifier_args, modifier_pointer);
return NULL;
}
/*
* weechat_plugin_modifier_remove: remove a WeeChat modifier
*/
void
weechat_plugin_modifier_remove (t_weechat_plugin *plugin,
t_plugin_modifier *modifier)
{
if (plugin && modifier)
plugin_modifier_remove (plugin, modifier);
}
/*
* weechat_plugin_modifier_remove_all: remove all WeeChat modifiers
*/
void
weechat_plugin_modifier_remove_all (t_weechat_plugin *plugin)
{
if (plugin)
plugin_modifier_remove_all (plugin);
}
/*
* weechat_plugin_exec_command: execute a command (simulate user entry)
*/
+251 -14
View File
File diff suppressed because it is too large Load Diff
+9
View File
@@ -68,12 +68,21 @@ extern int plugin_keyboard_handler_exec (char *, char *, char *);
extern void plugin_handler_remove (t_weechat_plugin *,
t_plugin_handler *);
extern void plugin_handler_remove_all (t_weechat_plugin *);
extern t_plugin_modifier *plugin_modifier_add (t_weechat_plugin *,
char *, char *,
t_plugin_modifier_func *,
char *, void *);
extern char *plugin_modifier_exec (t_plugin_modifier_type, char *, char *);
extern void plugin_modifier_remove (t_weechat_plugin *,
t_plugin_modifier *);
extern void plugin_modifier_remove_all (t_weechat_plugin *);
extern t_weechat_plugin *plugin_load (char *);
extern void plugin_auto_load ();
extern void plugin_remove (t_weechat_plugin *);
extern void plugin_unload (t_weechat_plugin *);
extern void plugin_unload_name (char *);
extern void plugin_unload_all ();
extern void plugin_reload_name (char *);
extern void plugin_init (int);
extern void plugin_end ();
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+49 -4
View File
@@ -293,9 +293,9 @@ weechat_script_remove_handler (t_weechat_plugin *plugin,
while (ptr_handler)
{
ptr_arg1 = NULL;
if (ptr_handler->type == HANDLER_MESSAGE)
if (ptr_handler->type == PLUGIN_HANDLER_MESSAGE)
ptr_arg1 = ptr_handler->irc_command;
else if (ptr_handler->type == HANDLER_COMMAND)
else if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
ptr_arg1 = ptr_handler->command;
if ((ptr_arg1)
@@ -327,7 +327,7 @@ weechat_script_remove_timer_handler (t_weechat_plugin *plugin,
ptr_handler = plugin->handlers;
while (ptr_handler)
{
if ((ptr_handler->type == HANDLER_TIMER)
if ((ptr_handler->type == PLUGIN_HANDLER_TIMER)
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
{
@@ -355,7 +355,7 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
ptr_handler = plugin->handlers;
while (ptr_handler)
{
if ((ptr_handler->type == HANDLER_KEYBOARD)
if ((ptr_handler->type == PLUGIN_HANDLER_KEYBOARD)
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
{
@@ -368,6 +368,51 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
}
}
/*
* weechat_script_remove_modifier: remove a modifier
* arg1=type, arg2=command, arg3=function
*/
void
weechat_script_remove_modifier (t_weechat_plugin *plugin,
t_plugin_script *script,
char *arg1, char *arg2, char *arg3)
{
t_plugin_modifier *ptr_modifier, *next_modifier;
t_plugin_modifier_type type;
char *ptr_arg2;
if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_IN_STR) == 0)
type = PLUGIN_MODIFIER_IRC_IN;
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_USER_STR) == 0)
type = PLUGIN_MODIFIER_IRC_USER;
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_OUT_STR) == 0)
type = PLUGIN_MODIFIER_IRC_OUT;
else
return;
/* search and remove modifiers */
ptr_modifier = plugin->modifiers;
while (ptr_modifier)
{
ptr_arg2 = NULL;
if (ptr_modifier->type == type)
ptr_arg2 = ptr_modifier->command;
if ((ptr_arg2)
&& ((t_plugin_script *)ptr_modifier->modifier_pointer == script)
&& (plugin->ascii_strcasecmp (plugin, ptr_arg2, arg2) == 0)
&& (plugin->ascii_strcasecmp (plugin, ptr_modifier->modifier_args, arg3) == 0))
{
next_modifier = ptr_modifier->next_modifier;
plugin->modifier_remove (plugin, ptr_modifier);
ptr_modifier = next_modifier;
}
else
ptr_modifier = ptr_modifier->next_modifier;
}
}
/*
* weechat_script_get_plugin_config: get a value of a script option
* format in file is: plugin.script.option=value
+3
View File
@@ -59,6 +59,9 @@ extern void weechat_script_remove_timer_handler (t_weechat_plugin *,
extern void weechat_script_remove_keyboard_handler (t_weechat_plugin *,
t_plugin_script *,
char *);
extern void weechat_script_remove_modifier (t_weechat_plugin *,
t_plugin_script *,
char *, char *, char *);
extern char *weechat_script_get_plugin_config (t_weechat_plugin *,
t_plugin_script *,
char *);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -128,13 +128,19 @@ functions: list internal functions for key bindings
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
</programlisting>
<command>plugin [load Dateiname] | [autoload] | [reload] | [unload]</command>
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
<programlisting>
auflisten/laden/entladen von Plugins
Dateiname: zu ladendes Plugin
list: list loaded plugins
listfull: list loaded plugins with detailed info for each plugin
mask: part of name of a loaded plugin
load: load a plugin
autoload: autoload plugins in system or user directory
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
unload: unload one or all plugins
Ohne Argumente werden alle geladenen Plugins aufgelistet.
Without argument, /plugin command lists loaded plugins.
</programlisting>
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -127,13 +127,19 @@ functions: list internal functions for key bindings
reset: restore bindings to the default values and delete ALL personal bindings (use carefully!)
</programlisting>
<command>plugin [load filename] | [autoload] | [reload] | [unload]</command>
<command>plugin [list [mask]] | [listfull [mask]] | [load filename] | [autoload] | [reload [name]] | [unload [name]]</command>
<programlisting>
list/load/unload plugins
filename: WeeChat plugin (file) to load
list: list loaded plugins
listfull: list loaded plugins with detailed info for each plugin
mask: part of name of a loaded plugin
load: load a plugin
autoload: autoload plugins in system or user directory
reload: reload one plugin (if no name given, unload all plugins, then autoload plugins)
unload: unload one or all plugins
Without argument, /plugin command lists all loaded plugins.
Without argument, /plugin command lists loaded plugins.
</programlisting>
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -127,13 +127,19 @@ functions: lister la liste des fonctions internes pour les associations de touch
reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !)
</programlisting>
<command>plugin [load fichier] | [autoload] | [reload] | [unload]</command>
<command>plugin [list [masque]] | [listfull [masque]] | [load fichier] | [autoload] | [reload [nom]] | [unload [nom]]</command>
<programlisting>
liste/charge/décharge des extensions
fichier: extension WeeChat (fichier) à charger
list: lister les extensions chargées
listfull: lister les extensions chargées avec de l'info détaillée pour chaque extension
masque: morceau de nom d'une extension chargée
load: charger une extension
autoload: charger automatiquement les extensions dans un répertoire système ou utilisateur
reload: recharger une extension (si pas de nom donné, décharger toutes les extensions, puis puis recharger automatiquement les extensions)
unload: décharger une ou plusieurs exteneions
Sans paramètre, la commande /plugin liste toutes les extensions chargées.
Sans paramètre, la commande /plugin liste les extensions chargées.
</programlisting>
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
+405 -364
View File
File diff suppressed because it is too large Load Diff
+405 -364
View File
File diff suppressed because it is too large Load Diff
+407 -364
View File
File diff suppressed because it is too large Load Diff
+417 -365
View File
File diff suppressed because it is too large Load Diff
+405 -364
View File
File diff suppressed because it is too large Load Diff
+406 -365
View File
File diff suppressed because it is too large Load Diff
+395 -364
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -154,7 +154,7 @@ completion_get_command_infos (t_completion *completion,
for (ptr_handler = ptr_plugin->handlers;
ptr_handler; ptr_handler = ptr_handler->next_handler)
{
if ((ptr_handler->type == HANDLER_COMMAND)
if ((ptr_handler->type == PLUGIN_HANDLER_COMMAND)
&& (ascii_strcasecmp (ptr_handler->command,
ptr_command2) == 0))
{
@@ -304,7 +304,7 @@ completion_list_add_plugin_cmd (t_completion *completion)
for (ptr_handler = ptr_plugin->handlers;
ptr_handler; ptr_handler = ptr_handler->next_handler)
{
if (ptr_handler->type == HANDLER_COMMAND)
if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
completion_list_add (completion, ptr_handler->command);
}
}
+1 -1
View File
@@ -217,7 +217,7 @@ gui_main_loop ()
if ((ptr_server->lag_check_time.tv_sec == 0)
&& (new_time >= ptr_server->lag_next_check))
{
server_sendf (ptr_server, "PING %s\r\n", ptr_server->address);
server_sendf (ptr_server, "PING %s", ptr_server->address);
gettimeofday (&(ptr_server->lag_check_time), NULL);
}
+4 -2
View File
@@ -360,10 +360,11 @@ gui_printf_internal (t_gui_buffer *buffer, int display_time, int type, char *nic
/*
* gui_printf_raw_data: display raw IRC data (only if raw IRC data buffer exists)
* type: 0 = recv, 1 = send, -1 = recv, modified by a modifier (plugin)
*/
void
gui_printf_raw_data (void *server, int send, char *message)
gui_printf_raw_data (void *server, int send, int modified, char *message)
{
char *pos;
@@ -381,7 +382,8 @@ gui_printf_raw_data (void *server, int send, char *message)
((t_irc_server *)server)->name,
GUI_COLOR(COLOR_WIN_CHAT_DARK),
GUI_COLOR((send) ? COLOR_WIN_CHAT_PART : COLOR_WIN_CHAT_JOIN),
(send) ? PREFIX_PART : PREFIX_JOIN,
(send) ? ((modified) ? PREFIX_SEND_MOD : PREFIX_PART) :
((modified) ? PREFIX_RECV_MOD : PREFIX_JOIN),
GUI_COLOR(COLOR_WIN_CHAT),
message);
if (pos)
+1 -1
View File
@@ -184,7 +184,7 @@ extern void gui_infobar_remove_all ();
extern int gui_word_strlen (t_gui_window *, char *);
extern int gui_word_real_pos (t_gui_window *, char *, int);
extern void gui_printf_internal (t_gui_buffer *, int, int, char *, char *, ...);
extern void gui_printf_raw_data (void *, int, char *);
extern void gui_printf_raw_data (void *, int, int, char *);
extern void gui_input_optimize_size (t_gui_buffer *);
extern void gui_input_init_color_mask (t_gui_buffer *);
extern void gui_input_move (t_gui_buffer *, char *, char *, int );
+1 -1
View File
@@ -427,7 +427,7 @@ channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
(channel->nicks_count <= cfg_irc_away_check_max_nicks))
{
channel->checking_away++;
server_sendf (server, "WHO %s\r\n", channel->name);
server_sendf (server, "WHO %s", channel->name);
}
else
channel_remove_away (channel);
+7 -7
View File
@@ -632,8 +632,8 @@ dcc_accept (t_irc_dcc *ptr_dcc)
ptr_dcc->status = DCC_CONNECTING;
server_sendf (ptr_dcc->server,
(strchr (ptr_dcc->filename, ' ')) ?
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\r\n" :
"PRIVMSG %s :\01DCC RESUME %s %d %u\01\r\n",
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\n" :
"PRIVMSG %s :\01DCC RESUME %s %d %u\01",
ptr_dcc->nick, ptr_dcc->filename,
ptr_dcc->port, ptr_dcc->start_resume);
dcc_redraw (HOTLIST_MSG);
@@ -661,8 +661,8 @@ dcc_accept_resume (t_irc_server *server, char *filename, int port,
ptr_dcc->last_check_pos = pos_start;
server_sendf (ptr_dcc->server,
(strchr (ptr_dcc->filename, ' ')) ?
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\r\n" :
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01\r\n",
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\n" :
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01",
ptr_dcc->nick, ptr_dcc->filename,
ptr_dcc->port, ptr_dcc->start_resume);
@@ -1158,13 +1158,13 @@ dcc_send_request (t_irc_server *server, int type, char *nick, char *filename)
/* send DCC request to nick */
if (type == DCC_CHAT_SEND)
server_sendf (server,
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01\r\n",
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01",
nick, local_addr, port);
else
server_sendf (server,
(spaces) ?
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\n" :
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01",
nick, short_filename, local_addr, port,
(unsigned long) st.st_size);
+11 -11
View File
@@ -725,7 +725,7 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *nick, char *arguments
nick);
}
irc_mode_channel_set (ptr_channel, pos_modes);
server_sendf (server, "MODE %s\r\n", ptr_channel->name);
server_sendf (server, "MODE %s", ptr_channel->name);
}
else
{
@@ -1180,7 +1180,7 @@ irc_cmd_recv_ping (t_irc_server *server, char *host, char *nick, char *arguments
pos = strrchr (arguments, ' ');
if (pos)
pos[0] = '\0';
server_sendf (server, "PONG :%s\r\n", arguments);
server_sendf (server, "PONG :%s", arguments);
return 0;
}
@@ -1253,7 +1253,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
"%s %s / %s%s",
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
&buf->sysname,
&buf->release, &buf->machine, "\01\r\n");
&buf->release, &buf->machine, "\01");
free (buf);
}
else
@@ -1261,7 +1261,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
"NOTICE %s :%sVERSION %s v%s"
" compiled on %s%s",
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
"\01\r\n");
"\01");
irc_display_prefix (server, ptr_buffer, PREFIX_SERVER);
gui_printf (ptr_buffer,
_("CTCP %sVERSION%s received from %s%s"),
@@ -1408,10 +1408,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
if (pos && !pos[0])
pos = NULL;
if (pos)
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
server_sendf (server, "NOTICE %s :\01PING %s\01",
nick, pos);
else
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
server_sendf (server, "NOTICE %s :\01PING\01",
nick);
irc_display_prefix (server, ptr_channel->buffer, PREFIX_SERVER);
gui_printf (ptr_channel->buffer,
@@ -1549,10 +1549,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
if (pos && !pos[0])
pos = NULL;
if (pos)
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
server_sendf (server, "NOTICE %s :\01PING %s\01",
nick, pos);
else
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
server_sendf (server, "NOTICE %s :\01PING\01",
nick);
irc_display_prefix (server, server->buffer, PREFIX_SERVER);
gui_printf (server->buffer,
@@ -2414,10 +2414,10 @@ irc_cmd_recv_001 (t_irc_server *server, char *host, char *nick, char *arguments)
if (ptr_channel->type == CHANNEL_TYPE_CHANNEL)
{
if (ptr_channel->key)
server_sendf (server, "JOIN %s %s\r\n",
server_sendf (server, "JOIN %s %s",
ptr_channel->name, ptr_channel->key);
else
server_sendf (server, "JOIN %s\r\n",
server_sendf (server, "JOIN %s",
ptr_channel->name);
}
}
@@ -4811,7 +4811,7 @@ irc_cmd_recv_433 (t_irc_server *server, char *host, char *nick, char *arguments)
if (!hostname[0])
strcpy (hostname, _("unknown"));
server_sendf (server,
"NICK %s\r\n",
"NICK %s",
server->nick);
}
else
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3
View File
@@ -50,6 +50,8 @@
#define PREFIX_QUIT "<--"
#define PREFIX_ERROR "=!="
#define PREFIX_PLUGIN "-P-"
#define PREFIX_RECV_MOD "==>"
#define PREFIX_SEND_MOD "<=="
#define DEFAULT_IRC_PORT 6667
@@ -345,6 +347,7 @@ extern char *server_get_charset_decode_utf (t_irc_server *);
extern char *server_get_charset_encode (t_irc_server *);
extern int server_send (t_irc_server *, char *, int);
extern void server_sendf (t_irc_server *, char *, ...);
extern void server_parse_message (char *, char **, char **, char **);
extern void server_recv (t_irc_server *);
extern void server_child_read (t_irc_server *);
extern int server_connect (t_irc_server *);
+40
View File
@@ -356,6 +356,46 @@ weechat_plugin_handler_remove_all (t_weechat_plugin *plugin)
plugin_handler_remove_all (plugin);
}
/*
* weechat_plugin_modifier_add: add a IRC message modifier
*/
t_plugin_modifier *
weechat_plugin_modifier_add (t_weechat_plugin *plugin,
char *type, char *message,
t_plugin_modifier_func *modifier_func,
char *modifier_args, void *modifier_pointer)
{
if (plugin && type && modifier_func)
return plugin_modifier_add (plugin, type, message, modifier_func,
modifier_args, modifier_pointer);
return NULL;
}
/*
* weechat_plugin_modifier_remove: remove a WeeChat modifier
*/
void
weechat_plugin_modifier_remove (t_weechat_plugin *plugin,
t_plugin_modifier *modifier)
{
if (plugin && modifier)
plugin_modifier_remove (plugin, modifier);
}
/*
* weechat_plugin_modifier_remove_all: remove all WeeChat modifiers
*/
void
weechat_plugin_modifier_remove_all (t_weechat_plugin *plugin)
{
if (plugin)
plugin_modifier_remove_all (plugin);
}
/*
* weechat_plugin_exec_command: execute a command (simulate user entry)
*/
File diff suppressed because it is too large Load Diff
+9
View File
@@ -68,12 +68,21 @@ extern int plugin_keyboard_handler_exec (char *, char *, char *);
extern void plugin_handler_remove (t_weechat_plugin *,
t_plugin_handler *);
extern void plugin_handler_remove_all (t_weechat_plugin *);
extern t_plugin_modifier *plugin_modifier_add (t_weechat_plugin *,
char *, char *,
t_plugin_modifier_func *,
char *, void *);
extern char *plugin_modifier_exec (t_plugin_modifier_type, char *, char *);
extern void plugin_modifier_remove (t_weechat_plugin *,
t_plugin_modifier *);
extern void plugin_modifier_remove_all (t_weechat_plugin *);
extern t_weechat_plugin *plugin_load (char *);
extern void plugin_auto_load ();
extern void plugin_remove (t_weechat_plugin *);
extern void plugin_unload (t_weechat_plugin *);
extern void plugin_unload_name (char *);
extern void plugin_unload_all ();
extern void plugin_reload_name (char *);
extern void plugin_init (int);
extern void plugin_end ();
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+49 -4
View File
@@ -293,9 +293,9 @@ weechat_script_remove_handler (t_weechat_plugin *plugin,
while (ptr_handler)
{
ptr_arg1 = NULL;
if (ptr_handler->type == HANDLER_MESSAGE)
if (ptr_handler->type == PLUGIN_HANDLER_MESSAGE)
ptr_arg1 = ptr_handler->irc_command;
else if (ptr_handler->type == HANDLER_COMMAND)
else if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
ptr_arg1 = ptr_handler->command;
if ((ptr_arg1)
@@ -327,7 +327,7 @@ weechat_script_remove_timer_handler (t_weechat_plugin *plugin,
ptr_handler = plugin->handlers;
while (ptr_handler)
{
if ((ptr_handler->type == HANDLER_TIMER)
if ((ptr_handler->type == PLUGIN_HANDLER_TIMER)
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
{
@@ -355,7 +355,7 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
ptr_handler = plugin->handlers;
while (ptr_handler)
{
if ((ptr_handler->type == HANDLER_KEYBOARD)
if ((ptr_handler->type == PLUGIN_HANDLER_KEYBOARD)
&& ((t_plugin_script *)ptr_handler->handler_pointer == script)
&& (plugin->ascii_strcasecmp (plugin, ptr_handler->handler_args, function) == 0))
{
@@ -368,6 +368,51 @@ weechat_script_remove_keyboard_handler (t_weechat_plugin *plugin,
}
}
/*
* weechat_script_remove_modifier: remove a modifier
* arg1=type, arg2=command, arg3=function
*/
void
weechat_script_remove_modifier (t_weechat_plugin *plugin,
t_plugin_script *script,
char *arg1, char *arg2, char *arg3)
{
t_plugin_modifier *ptr_modifier, *next_modifier;
t_plugin_modifier_type type;
char *ptr_arg2;
if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_IN_STR) == 0)
type = PLUGIN_MODIFIER_IRC_IN;
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_USER_STR) == 0)
type = PLUGIN_MODIFIER_IRC_USER;
else if (strcasecmp (arg1, PLUGIN_MODIFIER_IRC_OUT_STR) == 0)
type = PLUGIN_MODIFIER_IRC_OUT;
else
return;
/* search and remove modifiers */
ptr_modifier = plugin->modifiers;
while (ptr_modifier)
{
ptr_arg2 = NULL;
if (ptr_modifier->type == type)
ptr_arg2 = ptr_modifier->command;
if ((ptr_arg2)
&& ((t_plugin_script *)ptr_modifier->modifier_pointer == script)
&& (plugin->ascii_strcasecmp (plugin, ptr_arg2, arg2) == 0)
&& (plugin->ascii_strcasecmp (plugin, ptr_modifier->modifier_args, arg3) == 0))
{
next_modifier = ptr_modifier->next_modifier;
plugin->modifier_remove (plugin, ptr_modifier);
ptr_modifier = next_modifier;
}
else
ptr_modifier = ptr_modifier->next_modifier;
}
}
/*
* weechat_script_get_plugin_config: get a value of a script option
* format in file is: plugin.script.option=value
@@ -59,6 +59,9 @@ extern void weechat_script_remove_timer_handler (t_weechat_plugin *,
extern void weechat_script_remove_keyboard_handler (t_weechat_plugin *,
t_plugin_script *,
char *);
extern void weechat_script_remove_modifier (t_weechat_plugin *,
t_plugin_script *,
char *, char *, char *);
extern char *weechat_script_get_plugin_config (t_weechat_plugin *,
t_plugin_script *,
char *);
File diff suppressed because it is too large Load Diff