diff --git a/src/plugins/trigger/trigger-command.c b/src/plugins/trigger/trigger-command.c index 6435e973e..293a1d8f5 100644 --- a/src/plugins/trigger/trigger-command.c +++ b/src/plugins/trigger/trigger-command.c @@ -36,23 +36,35 @@ * -1: toggle trigger * 0: disable trigger * 1: enable trigger + * 2: restart trigger (recreate hook(s)) */ void trigger_command_set_enabled (struct t_trigger *trigger, int enable) { - if (enable < 0) + if (enable == 2) { - enable = weechat_config_boolean (trigger->options[TRIGGER_OPTION_ENABLED]) ? - 0 : 1; + trigger_unhook (trigger); + trigger_hook (trigger); + weechat_printf_tags (NULL, "no_trigger", + _("Trigger \"%s\" restarted"), + trigger->name); + } + else + { + if (enable < 0) + { + enable = weechat_config_boolean (trigger->options[TRIGGER_OPTION_ENABLED]) ? + 0 : 1; + } + weechat_config_option_set (trigger->options[TRIGGER_OPTION_ENABLED], + (enable) ? "on" : "off", 1); + weechat_printf_tags (NULL, "no_trigger", + (enable) ? + _("Trigger \"%s\" enabled") : + _("Trigger \"%s\" disabled"), + trigger->name); } - weechat_config_option_set (trigger->options[TRIGGER_OPTION_ENABLED], - (enable) ? "on" : "off", 1); - weechat_printf_tags (NULL, "no_trigger", - (enable) ? - _("Trigger \"%s\" enabled") : - _("Trigger \"%s\" disabled"), - trigger->name); } /* @@ -327,10 +339,11 @@ trigger_command_trigger (void *data, struct t_gui_buffer *buffer, int argc, goto end; } - /* enable/disable/toggle trigger(s) */ + /* enable/disable/toggle/restart trigger(s) */ if ((weechat_strcasecmp (argv[1], "enable") == 0) || (weechat_strcasecmp (argv[1], "disable") == 0) - || (weechat_strcasecmp (argv[1], "toggle") == 0)) + || (weechat_strcasecmp (argv[1], "toggle") == 0) + || (weechat_strcasecmp (argv[1], "restart") == 0)) { if (argc < 3) { @@ -345,6 +358,8 @@ trigger_command_trigger (void *data, struct t_gui_buffer *buffer, int argc, enable = 1; else if (weechat_strcasecmp (argv[1], "disable") == 0) enable = 0; + else if (weechat_strcasecmp (argv[1], "restart") == 0) + enable = 2; if (weechat_strcasecmp (argv[2], "-all") == 0) { for (ptr_trigger = triggers; ptr_trigger; @@ -441,7 +456,7 @@ trigger_command_init () "[\"\" [\"\" [\"\"]]]]]" " || set