int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { struct t_plugin_script_init init; #ifdef PERL_SYS_INIT3 int a; char **perl_args_local; char *perl_env[] = {}; a = perl_args_count; perl_args_local = perl_args; (void) perl_env; PERL_SYS_INIT3 (&a, (char ***)&perl_args_local, (char ***)&perl_env); #endif /* PERL_SYS_INIT3 */ weechat_perl_plugin = plugin; #ifndef MULTIPLICITY perl_main = perl_alloc (); if (!perl_main) { weechat_printf (NULL, weechat_gettext ("%s%s: unable to initialize %s"), weechat_prefix ("error"), PERL_PLUGIN_NAME, PERL_PLUGIN_NAME); return WEECHAT_RC_ERROR; } perl_construct (perl_main); perl_parse (perl_main, weechat_perl_api_init, perl_args_count, perl_args, NULL); #endif /* MULTIPLICITY */ init.callback_command = &weechat_perl_command_cb; init.callback_completion = &weechat_perl_completion_cb; init.callback_hdata = &weechat_perl_hdata_cb; init.callback_infolist = &weechat_perl_infolist_cb; init.callback_signal_debug_dump = &weechat_perl_signal_debug_dump_cb; init.callback_signal_debug_libs = &weechat_perl_signal_debug_libs_cb; init.callback_signal_script_action = &weechat_perl_signal_script_action_cb; init.callback_load_file = &weechat_perl_load_cb; perl_quiet = 1; plugin_script_init (weechat_perl_plugin, argc, argv, &init); perl_quiet = 0; plugin_script_display_short_list (weechat_perl_plugin, perl_scripts); weechat_hook_signal ("quit", &weechat_perl_signal_quit_upgrade_cb, NULL, NULL); weechat_hook_signal ("upgrade", &weechat_perl_signal_quit_upgrade_cb, NULL, NULL); /* init OK */ return WEECHAT_RC_OK; }
void relay_weechat_hook_signals (struct t_relay_client *client) { RELAY_WEECHAT_DATA(client, hook_signal_buffer) = weechat_hook_signal ("buffer_*", &relay_weechat_protocol_signal_buffer_cb, client); RELAY_WEECHAT_DATA(client, hook_signal_nicklist) = weechat_hook_signal ("nicklist_*", &relay_weechat_protocol_signal_nicklist_cb, client); }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { /* make C compiler happy */ (void) argc; (void) argv; weechat_plugin = plugin; #ifdef USE_ENCHANT /* acquire enchant broker */ broker = enchant_broker_init (); if (!broker) return WEECHAT_RC_ERROR; #endif /* USE_ENCHANT */ if (!weechat_aspell_speller_init ()) return WEECHAT_RC_ERROR; if (!weechat_aspell_config_init ()) return WEECHAT_RC_ERROR; weechat_aspell_config_read (); weechat_aspell_command_init (); weechat_aspell_completion_init (); /* * callback for spell checking input text * we use a low priority here, so that other modifiers "input_text_display" * (from other plugins) will be called before this one */ weechat_hook_modifier ("500|input_text_display", &weechat_aspell_modifier_cb, NULL, NULL); weechat_aspell_bar_item_init (); weechat_aspell_info_init (); weechat_hook_signal ("buffer_switch", &weechat_aspell_buffer_switch_cb, NULL, NULL); weechat_hook_signal ("window_switch", &weechat_aspell_window_switch_cb, NULL, NULL); weechat_hook_signal ("buffer_closed", &weechat_aspell_buffer_closed_cb, NULL, NULL); weechat_hook_signal ("debug_libs", &weechat_aspell_debug_libs_cb, NULL, NULL); return WEECHAT_RC_OK; }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { int i, upgrading; weechat_plugin = plugin; exec_command_init (); if (!exec_config_init ()) return WEECHAT_RC_ERROR; exec_config_read (); /* hook some signals */ weechat_hook_signal ("debug_dump", &exec_debug_dump_cb, NULL, NULL); /* hook completions */ exec_completion_init (); /* look at arguments */ upgrading = 0; for (i = 0; i < argc; i++) { if (weechat_strcasecmp (argv[i], "--upgrade") == 0) { upgrading = 1; } } if (upgrading) exec_buffer_set_callbacks (); return WEECHAT_RC_OK; }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { int i, upgrading; /* make C compiler happy */ (void) argc; (void) argv; weechat_plugin = plugin; if (!relay_config_init ()) return WEECHAT_RC_ERROR; relay_config_read (); relay_network_init (); relay_command_init (); /* hook completions */ relay_completion_init (); weechat_hook_signal ("upgrade", &relay_signal_upgrade_cb, NULL, NULL); weechat_hook_signal ("debug_dump", &relay_debug_dump_cb, NULL, NULL); relay_info_init (); /* look at arguments */ upgrading = 0; for (i = 0; i < argc; i++) { if (weechat_strcasecmp (argv[i], "--upgrade") == 0) { upgrading = 1; } } if (upgrading) relay_upgrade_load (); relay_hook_timer = weechat_hook_timer (1 * 1000, 0, 0, &relay_client_timer_cb, NULL, NULL); return WEECHAT_RC_OK; }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { /* make C compiler happy */ (void) argc; (void) argv; weechat_plugin = plugin; if (!weechat_aspell_config_init ()) return WEECHAT_RC_ERROR; if (weechat_aspell_config_read () < 0) return WEECHAT_RC_ERROR; /* command /aspell */ weechat_hook_command ("aspell", N_("aspell plugin configuration"), N_("dictlist | enable lang | disable | " "addword [lang] word"), N_("dictlist: show installed dictionaries\n" " enable: enable aspell on current buffer\n" " disable: disable aspell on current buffer\n" " addword: add a word in your personal aspell " "dictionary\n" "\n" "Input line beginning with a '/' is not checked, " "except for some commands."), "dictlist" " || enable %(aspell_langs)" " || disable" " || addword", &weechat_aspell_command_cb, NULL); weechat_hook_completion ("aspell_langs", N_("list of supported langs for aspell"), &weechat_aspell_completion_langs_cb, NULL); /* callback for buffer_switch */ weechat_hook_signal ("buffer_switch", &weechat_aspell_buffer_switch_cb, NULL); /* callback for spell checking input text */ weechat_hook_modifier ("input_text_display", &weechat_aspell_modifier_cb, NULL); weechat_aspell_create_spellers (weechat_current_buffer ()); return WEECHAT_RC_OK; }
void irc_bar_item_init () { weechat_bar_item_new ("away", &irc_bar_item_away, NULL); weechat_bar_item_new ("buffer_title", &irc_bar_item_buffer_title, NULL); weechat_bar_item_new ("buffer_plugin", &irc_bar_item_buffer_plugin, NULL); weechat_bar_item_new ("buffer_name", &irc_bar_item_buffer_name, NULL); weechat_bar_item_new ("buffer_modes", &irc_bar_item_buffer_modes, NULL); weechat_bar_item_new ("irc_channel", &irc_bar_item_channel, NULL); weechat_bar_item_new ("lag", &irc_bar_item_lag, NULL); weechat_bar_item_new ("input_prompt", &irc_bar_item_input_prompt, NULL); weechat_hook_focus ("buffer_nicklist", &irc_bar_item_focus_buffer_nicklist, NULL); weechat_hook_signal ("buffer_switch", &irc_bar_item_buffer_switch, NULL); }
void trigger_hook (struct t_trigger *trigger) { char **argv, **argv_eol, *tags, *message, *error1, *error2, *error3; int i, argc, strip_colors; long interval, align_second, max_calls; trigger_unhook (trigger); argv = weechat_string_split (weechat_config_string (trigger->options[TRIGGER_OPTION_ARGUMENTS]), ";", 0, 0, &argc); argv_eol = weechat_string_split (weechat_config_string (trigger->options[TRIGGER_OPTION_ARGUMENTS]), ";", 1, 0, NULL); switch (weechat_config_integer (trigger->options[TRIGGER_OPTION_HOOK])) { case TRIGGER_HOOK_SIGNAL: if (argv && (argc >= 1)) { trigger->hooks = malloc (argc * sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = argc; for (i = 0; i < argc; i++) { trigger->hooks[i] = weechat_hook_signal ( argv[i], &trigger_callback_signal_cb, trigger); } } } break; case TRIGGER_HOOK_HSIGNAL: if (argv && (argc >= 1)) { trigger->hooks = malloc (argc * sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = argc; for (i = 0; i < argc; i++) { trigger->hooks[i] = weechat_hook_hsignal ( argv[i], &trigger_callback_hsignal_cb, trigger); } } } break; case TRIGGER_HOOK_MODIFIER: if (argv && (argc >= 1)) { trigger->hooks = malloc (argc * sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = argc; for (i = 0; i < argc; i++) { trigger->hooks[i] = weechat_hook_modifier ( argv[i], &trigger_callback_modifier_cb, trigger); } } } break; case TRIGGER_HOOK_PRINT: tags = NULL; message = NULL; strip_colors = 0; if (argv && (argc >= 1)) { if (strcmp (argv[0], "*") != 0) trigger->hook_print_buffers = strdup (argv[0]); if ((argc >= 2) && (strcmp (argv[1], "*") != 0)) tags = argv[1]; if ((argc >= 3) && (strcmp (argv[2], "*") != 0)) message = argv[2]; if (argc >= 4) strip_colors = (strcmp (argv[3], "0") != 0) ? 1 : 0; } trigger->hooks = malloc (sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = 1; trigger->hooks[0] = weechat_hook_print ( NULL, tags, message, strip_colors, &trigger_callback_print_cb, trigger); } break; case TRIGGER_HOOK_COMMAND: if (argv && (argc >= 1)) { trigger->hooks = malloc (sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = 1; trigger->hooks[0] = weechat_hook_command ( argv[0], /* command */ (argc > 1) ? argv[1] : "", /* description */ (argc > 2) ? argv[2] : "", /* arguments */ (argc > 3) ? argv[3] : "", /* description of args */ (argc > 4) ? argv[4] : "", /* completion */ &trigger_callback_command_cb, trigger); } } break; case TRIGGER_HOOK_COMMAND_RUN: if (argv && (argc >= 1)) { trigger->hooks = malloc (argc * sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = argc; for (i = 0; i < argc; i++) { trigger->hooks[i] = weechat_hook_command_run ( argv[i], &trigger_callback_command_run_cb, trigger); } } } break; case TRIGGER_HOOK_TIMER: if (argv && (argc >= 1)) { error1 = NULL; error2 = NULL; error3 = NULL; interval = strtol (argv[0], &error1, 10); align_second = strtol ((argc >= 2) ? argv[1] : "0", &error2, 10); max_calls = strtol ((argc >= 3) ? argv[2] : "0", &error3, 10); if (error1 && !error1[0] && error2 && !error2[0] && error3 && !error3[0] && (interval > 0) && (align_second >= 0) && (max_calls >= 0)) { trigger->hooks = malloc (sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = 1; trigger->hooks[0] = weechat_hook_timer ( interval, (int)align_second, (int)max_calls, &trigger_callback_timer_cb, trigger); } } } break; case TRIGGER_HOOK_CONFIG: if (argv && (argc >= 1)) { trigger->hooks = malloc (argc * sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = argc; for (i = 0; i < argc; i++) { trigger->hooks[i] = weechat_hook_config ( argv[i], &trigger_callback_config_cb, trigger); } } } break; case TRIGGER_HOOK_FOCUS: if (argv && (argc >= 1)) { trigger->hooks = malloc (argc * sizeof (trigger->hooks[0])); if (trigger->hooks) { trigger->hooks_count = argc; for (i = 0; i < argc; i++) { trigger->hooks[i] = weechat_hook_focus ( argv[i], &trigger_callback_focus_cb, trigger); } } } break; } if (!trigger->hooks) { weechat_printf (NULL, _("%s%s: unable to create hook for trigger \"%s\" " "(bad arguments)"), weechat_prefix ("error"), TRIGGER_PLUGIN_NAME, trigger->name); } if (argv) weechat_string_free_split (argv); if (argv_eol) weechat_string_free_split (argv_eol); }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { /* make C compiler happy */ (void) argc; (void) argv; weechat_plugin = plugin; if (!logger_config_init ()) return WEECHAT_RC_ERROR; logger_config_read (); /* command /logger */ weechat_hook_command ( "logger", N_("logger plugin configuration"), N_("list" " || set <level>" " || flush" " || disable"), N_(" list: show logging status for opened buffers\n" " set: set logging level on current buffer\n" " level: level for messages to be logged (0 = logging disabled, " "1 = a few messages (most important) .. 9 = all messages)\n" " flush: write all log files now\n" "disable: disable logging on current buffer (set level to 0)\n" "\n" "Options \"logger.level.*\" and \"logger.mask.*\" can be used to set " "level or mask for a buffer, or buffers beginning with name.\n" "\n" "Log levels used by IRC plugin:\n" " 1: user message, notice, private\n" " 2: nick change\n" " 3: server message\n" " 4: join/part/quit\n" " 9: all other messages\n" "\n" "Examples:\n" " set level to 5 for current buffer:\n" " /logger set 5\n" " disable logging for current buffer:\n" " /logger disable\n" " set level to 3 for all IRC buffers:\n" " /set logger.level.irc 3\n" " disable logging for main WeeChat buffer:\n" " /set logger.level.core.weechat 0\n" " use a directory per IRC server and a file per channel inside:\n" " /set logger.mask.irc \"$server/$channel.weechatlog\""), "list" " || set 1|2|3|4|5|6|7|8|9" " || flush" " || disable", &logger_command_cb, NULL); logger_start_buffer_all (1); weechat_hook_signal ("buffer_opened", &logger_buffer_opened_signal_cb, NULL); weechat_hook_signal ("buffer_closing", &logger_buffer_closing_signal_cb, NULL); weechat_hook_signal ("buffer_renamed", &logger_buffer_renamed_signal_cb, NULL); weechat_hook_signal ("logger_backlog", &logger_backlog_signal_cb, NULL); weechat_hook_signal ("logger_start", &logger_start_signal_cb, NULL); weechat_hook_signal ("logger_stop", &logger_stop_signal_cb, NULL); weechat_hook_signal ("day_changed", &logger_day_changed_signal_cb, NULL); weechat_hook_print (NULL, NULL, NULL, 1, &logger_print_cb, NULL); logger_info_init (); return WEECHAT_RC_OK; }
void irc_debug_init () { weechat_hook_signal ("debug_dump", &irc_debug_signal_debug_dump_cb, NULL); }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { #ifdef PERL_SYS_INIT3 int a; char **perl_args_local; char *perl_env[] = {}; a = perl_args_count; perl_args_local = perl_args; (void) perl_env; PERL_SYS_INIT3 (&a, (char ***)&perl_args_local, (char ***)&perl_env); #endif /* PERL_SYS_INIT3 */ weechat_perl_plugin = plugin; /* set interpreter name and version */ weechat_hashtable_set (plugin->variables, "interpreter_name", plugin->name); #ifdef PERL_VERSION_STRING weechat_hashtable_set (plugin->variables, "interpreter_version", PERL_VERSION_STRING); #else weechat_hashtable_set (plugin->variables, "interpreter_version", ""); #endif /* PERL_VERSION_STRING */ /* init stdout/stderr buffer */ perl_buffer_output = weechat_string_dyn_alloc (256); if (!perl_buffer_output) return WEECHAT_RC_ERROR; #ifndef MULTIPLICITY perl_main = perl_alloc (); if (!perl_main) { weechat_printf (NULL, weechat_gettext ("%s%s: unable to initialize %s"), weechat_prefix ("error"), PERL_PLUGIN_NAME, PERL_PLUGIN_NAME); return WEECHAT_RC_ERROR; } perl_construct (perl_main); perl_parse (perl_main, weechat_perl_api_init, perl_args_count, perl_args, NULL); #endif /* MULTIPLICITY */ perl_data.config_file = &perl_config_file; perl_data.config_look_check_license = &perl_config_look_check_license; perl_data.config_look_eval_keep_context = &perl_config_look_eval_keep_context; perl_data.scripts = &perl_scripts; perl_data.last_script = &last_perl_script; perl_data.callback_command = &weechat_perl_command_cb; perl_data.callback_completion = &weechat_perl_completion_cb; perl_data.callback_hdata = &weechat_perl_hdata_cb; perl_data.callback_info_eval = &weechat_perl_info_eval_cb; perl_data.callback_infolist = &weechat_perl_infolist_cb; perl_data.callback_signal_debug_dump = &weechat_perl_signal_debug_dump_cb; perl_data.callback_signal_script_action = &weechat_perl_signal_script_action_cb; perl_data.callback_load_file = &weechat_perl_load_cb; perl_data.unload_all = &weechat_perl_unload_all; perl_quiet = 1; plugin_script_init (weechat_perl_plugin, argc, argv, &perl_data); perl_quiet = 0; plugin_script_display_short_list (weechat_perl_plugin, perl_scripts); weechat_hook_signal ("quit", &weechat_perl_signal_quit_upgrade_cb, NULL, NULL); weechat_hook_signal ("upgrade", &weechat_perl_signal_quit_upgrade_cb, NULL, NULL); /* init OK */ return WEECHAT_RC_OK; }
void buflist_config_hook_signals_refresh () { char **all_signals, **signals; const char *ptr_signals_refresh; struct t_arraylist *signals_list; int count, list_size, i; all_signals = weechat_string_dyn_alloc (256); if (!all_signals) return; ptr_signals_refresh = weechat_config_string ( buflist_config_look_signals_refresh); weechat_string_dyn_concat (all_signals, BUFLIST_CONFIG_SIGNALS_REFRESH); if (ptr_signals_refresh && ptr_signals_refresh[0]) { weechat_string_dyn_concat (all_signals, ","); weechat_string_dyn_concat (all_signals, ptr_signals_refresh); } if (weechat_config_boolean (buflist_config_look_nick_prefix)) { weechat_string_dyn_concat (all_signals, ","); weechat_string_dyn_concat ( all_signals, BUFLIST_CONFIG_SIGNALS_REFRESH_NICK_PREFIX); } signals = weechat_string_split (*all_signals, ",", WEECHAT_STRING_SPLIT_STRIP_LEFT | WEECHAT_STRING_SPLIT_STRIP_RIGHT | WEECHAT_STRING_SPLIT_COLLAPSE_SEPS, 0, &count); if (signals) { signals_list = weechat_arraylist_new ( 32, 1, 0, &buflist_config_compare_signals, NULL, NULL, NULL); if (signals_list) { for (i = 0; i < count; i++) { weechat_arraylist_add (signals_list, signals[i]); } list_size = weechat_arraylist_size (signals_list); buflist_config_signals_refresh = malloc ( list_size * sizeof (*buflist_config_signals_refresh)); if (buflist_config_signals_refresh) { buflist_config_num_signals_refresh = list_size; for (i = 0; i < list_size; i++) { buflist_config_signals_refresh[i] = weechat_hook_signal ( weechat_arraylist_get (signals_list, i), &buflist_config_signal_buffer_cb, NULL, NULL); } if (weechat_buflist_plugin->debug >= 1) { weechat_printf (NULL, _("%s: %d signals hooked"), BUFLIST_PLUGIN_NAME, list_size); } } weechat_arraylist_free (signals_list); } weechat_string_free_split (signals); } weechat_string_dyn_free (all_signals, 1); }