1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-08 10:43:13 +02:00

- Added options for /plugin command: autoload, reload, unload

- Added new plugin functions, for C plugins and scripts: set_config, get_plugin_config, set_plugin_config
- Added new script function: remove_handler
This commit is contained in:
Sebastien Helleu
2005-10-25 17:37:13 +00:00
parent 0e531f5e6a
commit 0f055b087a
42 changed files with 5638 additions and 2100 deletions
+41 -48
View File
@@ -52,40 +52,39 @@ typedef int (t_plugin_handler_func) (t_weechat_plugin *, char *, char *, char *,
/* message handler, called when an IRC messages is received */
typedef struct t_plugin_msg_handler t_plugin_msg_handler;
typedef enum t_handler_type t_handler_type;
struct t_plugin_msg_handler
enum t_handler_type
{
char *irc_command; /* name of IRC command (PRIVMSG, ..) */
t_plugin_handler_func *msg_handler; /* pointer to message handler */
char *msg_handler_args; /* arguments sent to message handler */
void *msg_handler_pointer; /* pointer sent to message handler */
int running; /* 1 if currently running */
/* (used to prevent circular call) */
t_plugin_msg_handler *prev_handler; /* link to previous handler */
t_plugin_msg_handler *next_handler; /* link to next handler */
HANDLER_MESSAGE,
HANDLER_COMMAND
};
/* command handler, to add new commands to WeeChat */
typedef struct t_plugin_handler t_plugin_handler;
typedef struct t_plugin_cmd_handler t_plugin_cmd_handler;
struct t_plugin_cmd_handler
struct t_plugin_handler
{
t_handler_type type; /* handler type */
/* data for message handler */
char *irc_command; /* name of IRC command (PRIVMSG, ..) */
/* data for command handler */
char *command; /* name of command (without first '/') */
char *description; /* (for /help) short cmd description */
char *arguments; /* (for /help) command arguments */
char *arguments_description; /* (for /help) args long description */
/* command handler */
t_plugin_handler_func *cmd_handler; /* pointer to command handler */
char *cmd_handler_args; /* arguments sent to command handler */
void *cmd_handler_pointer; /* pointer sent to command handler */
/* data common to all handlers */
t_plugin_handler_func *handler; /* pointer to handler */
char *handler_args; /* arguments sent to handler */
void *handler_pointer; /* pointer sent to handler */
/* for internal use */
int running; /* 1 if currently running */
/* (used to prevent circular call) */
t_plugin_cmd_handler *prev_handler; /* link to previous handler */
t_plugin_cmd_handler *next_handler; /* link to next handler */
t_plugin_handler *prev_handler; /* link to previous handler */
t_plugin_handler *next_handler; /* link to next handler */
};
/* plugin, a WeeChat plugin, which is a dynamic library */
@@ -100,11 +99,9 @@ struct t_weechat_plugin
char *version; /* plugin version */
/* plugin handlers */
t_plugin_msg_handler *msg_handlers; /* IRC message handlers */
t_plugin_msg_handler *last_msg_handler;
t_plugin_cmd_handler *cmd_handlers; /* command handlers */
t_plugin_cmd_handler *last_cmd_handler;
t_plugin_handler *handlers; /* pointer to first handler */
t_plugin_handler *last_handler; /* pointer to last handler */
/* links to previous/next plugins */
t_weechat_plugin *prev_plugin; /* link to previous plugin */
t_weechat_plugin *next_plugin; /* link to next plugin */
@@ -127,17 +124,15 @@ struct t_weechat_plugin
void (*printf_server) (t_weechat_plugin *, char *, ...);
void (*infobar_printf) (t_weechat_plugin *, int, char *, ...);
t_plugin_msg_handler *(*msg_handler_add) (t_weechat_plugin *, char *,
t_plugin_handler_func *,
char *, void *);
void (*msg_handler_remove) (t_weechat_plugin *, t_plugin_msg_handler *);
void (*msg_handler_remove_all) (t_weechat_plugin *);
t_plugin_cmd_handler *(*cmd_handler_add) (t_weechat_plugin *, char *,
char *, char *, char *,
t_plugin_handler_func *,
char *, void *);
void (*cmd_handler_remove) (t_weechat_plugin *, t_plugin_cmd_handler *);
void (*cmd_handler_remove_all) (t_weechat_plugin *);
t_plugin_handler *(*msg_handler_add) (t_weechat_plugin *, char *,
t_plugin_handler_func *,
char *, void *);
t_plugin_handler *(*cmd_handler_add) (t_weechat_plugin *, char *,
char *, char *, char *,
t_plugin_handler_func *,
char *, void *);
void (*handler_remove) (t_weechat_plugin *, t_plugin_handler *);
void (*handler_remove_all) (t_weechat_plugin *);
void (*exec_command) (t_weechat_plugin *, char *, char *, char *);
char *(*get_info) (t_weechat_plugin *, char *, char *, char *);
@@ -166,17 +161,15 @@ extern void weechat_plugin_printf_server (t_weechat_plugin *, char *, ...);
extern void weechat_plugin_infobar_printf (t_weechat_plugin *, int, char *, ...);
/* handler functions */
extern t_plugin_msg_handler *weechat_plugin_msg_handler_add (t_weechat_plugin *, char *,
t_plugin_handler_func *,
char *, void *);
extern void weechat_plugin_msg_handler_remove (t_weechat_plugin *, t_plugin_msg_handler *);
extern void weechat_plugin_msg_handler_remove_all (t_weechat_plugin *);
extern t_plugin_cmd_handler *weechat_plugin_cmd_handler_add (t_weechat_plugin *, char *,
char *, char *, char *,
t_plugin_handler_func *,
char *, void *);
extern void weechat_plugin_cmd_handler_remove (t_weechat_plugin *, t_plugin_cmd_handler *);
extern void weechat_plugin_cmd_handler_remove_all (t_weechat_plugin *);
extern t_plugin_handler *weechat_plugin_msg_handler_add (t_weechat_plugin *, char *,
t_plugin_handler_func *,
char *, void *);
extern t_plugin_handler *weechat_plugin_cmd_handler_add (t_weechat_plugin *, char *,
char *, char *, char *,
t_plugin_handler_func *,
char *, void *);
extern void weechat_plugin_handler_remove (t_weechat_plugin *, t_plugin_handler *);
extern void weechat_plugin_handler_remove_all (t_weechat_plugin *);
/* other functions */
extern void weechat_plugin_exec_command (t_weechat_plugin *, char *, char *, char *);