diff options
-rw-r--r-- | src/core/wee-command.c | 113 | ||||
-rw-r--r-- | src/gui/gui-filter.c | 27 | ||||
-rw-r--r-- | src/gui/gui-filter.h | 2 |
3 files changed, 87 insertions, 55 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c index 114d985ac..8f8d078ef 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -790,37 +790,42 @@ command_filter (void *data, struct t_gui_buffer *buffer, || ((argc == 2) && (string_strcasecmp (argv[1], "list") == 0))) { /* display all key bindings */ - gui_chat_printf (NULL, ""); - gui_chat_printf (NULL, "%s", - (gui_filters_enabled) ? - _("Filters are enabled") : _("Filters are disabled")); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, ""); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + "%s", + (gui_filters_enabled) ? + _("Filters are enabled") : _("Filters are disabled")); if (gui_filters) { - gui_chat_printf (NULL, _("Message filters:")); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Message filters:")); i = 0; for (ptr_filter = gui_filters; ptr_filter; ptr_filter = ptr_filter->next_filter) { i++; - gui_chat_printf (NULL, - _(" %s[%s%d%s]%s buffer: %s%s%s / tags: %s / " - "regex: %s"), - GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), - GUI_COLOR(GUI_COLOR_CHAT), - i, - GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), - GUI_COLOR(GUI_COLOR_CHAT), - GUI_COLOR(GUI_COLOR_CHAT_BUFFER), - ptr_filter->buffer, - GUI_COLOR(GUI_COLOR_CHAT), - ptr_filter->tags, - ptr_filter->regex); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _(" %s[%s%d%s]%s buffer: %s%s%s " + "/ tags: %s / regex: %s"), + GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), + GUI_COLOR(GUI_COLOR_CHAT), + i, + GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS), + GUI_COLOR(GUI_COLOR_CHAT), + GUI_COLOR(GUI_COLOR_CHAT_BUFFER), + ptr_filter->buffer, + GUI_COLOR(GUI_COLOR_CHAT), + ptr_filter->tags, + ptr_filter->regex); } } else - gui_chat_printf (NULL, _("No message filter defined")); - + { + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("No message filter defined")); + } + return WEECHAT_RC_OK; } @@ -830,7 +835,8 @@ command_filter (void *data, struct t_gui_buffer *buffer, if (!gui_filters_enabled) { gui_filter_enable (); - gui_chat_printf (NULL, _("Filters enabled")); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Filters enabled")); } return WEECHAT_RC_OK; } @@ -841,7 +847,8 @@ command_filter (void *data, struct t_gui_buffer *buffer, if (gui_filters_enabled) { gui_filter_disable (); - gui_chat_printf (NULL, _("Filters disabled")); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Filters disabled")); } return WEECHAT_RC_OK; } @@ -861,31 +868,32 @@ command_filter (void *data, struct t_gui_buffer *buffer, { if (argc < 5) { - gui_chat_printf (NULL, - _("%sError: missing arguments for \"%s\" " - "command"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - "filter add"); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: missing arguments for \"%s\" " + "command"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + "filter add"); return WEECHAT_RC_ERROR; } if (gui_filter_search (argv[2], argv[3], argv_eol[4])) { - gui_chat_printf (NULL, - _("%sError: filter already exists"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: filter already exists"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); return WEECHAT_RC_ERROR; } if ((strcmp (argv[3], "*") == 0) && (strcmp (argv_eol[4], "*") == 0)) { - gui_chat_printf (NULL, - _("%sError: you must specify at least tag(s) or " - "regex for filter"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: you must specify at least tag(s) or " + "regex for filter"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); return WEECHAT_RC_ERROR; } gui_filter_new (argv[2], argv[3], argv_eol[4]); - gui_chat_printf (NULL, _("Filter added")); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Filter added")); return WEECHAT_RC_OK; } @@ -895,11 +903,11 @@ command_filter (void *data, struct t_gui_buffer *buffer, { if (argc < 3) { - gui_chat_printf (NULL, - _("%sError: missing arguments for \"%s\" " - "command"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - "filter del"); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: missing arguments for \"%s\" " + "command"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + "filter del"); return WEECHAT_RC_ERROR; } error = NULL; @@ -910,32 +918,33 @@ command_filter (void *data, struct t_gui_buffer *buffer, if (ptr_filter) { gui_filter_free (ptr_filter); - gui_chat_printf (NULL, _("Filter deleted")); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("Filter deleted")); } else { - gui_chat_printf (NULL, - _("%sError: filter not found"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: filter not found"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); return WEECHAT_RC_ERROR; } } else { - gui_chat_printf (NULL, - _("%sError: wrong filter number"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: wrong filter number"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); return WEECHAT_RC_ERROR; } return WEECHAT_RC_OK; } - gui_chat_printf (NULL, - _("%sError: unknown option for \"%s\" " - "command"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - "filter"); + gui_chat_printf_date_tags (NULL, 0, GUI_FILTER_TAG_NO_FILTER, + _("%sError: unknown option for \"%s\" " + "command"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + "filter"); return WEECHAT_RC_ERROR; } diff --git a/src/gui/gui-filter.c b/src/gui/gui-filter.c index 53070f068..6919ffc56 100644 --- a/src/gui/gui-filter.c +++ b/src/gui/gui-filter.c @@ -43,6 +43,27 @@ int gui_filters_enabled = 1; /* filters enabled? */ /* + * gui_filter_line_has_tag_no_filter: return 1 if line has tag "no_filter", + * which means that line should never + * been filtered (always displayed) + */ + +int +gui_filter_line_has_tag_no_filter (struct t_gui_line *line) +{ + int i; + + for (i = 0; i < line->tags_count; i++) + { + if (strcmp (line->tags_array[i], GUI_FILTER_TAG_NO_FILTER) == 0) + return 1; + } + + /* tag not found, line may be filtered */ + return 0; +} + +/* * gui_filter_check_line: return 1 if a line should be displayed, or * 0 if line is hidden (tag or regex found) */ @@ -52,13 +73,13 @@ gui_filter_check_line (struct t_gui_buffer *buffer, struct t_gui_line *line) { struct t_gui_filter *ptr_filter; - /* make C compiler happy */ - (void) buffer; - /* line is always displayed if filters are disabled */ if (!gui_filters_enabled) return 1; + if (gui_filter_line_has_tag_no_filter (line)) + return 1; + for (ptr_filter = gui_filters; ptr_filter; ptr_filter = ptr_filter->next_filter) { diff --git a/src/gui/gui-filter.h b/src/gui/gui-filter.h index 93c3184fb..9daa65b4a 100644 --- a/src/gui/gui-filter.h +++ b/src/gui/gui-filter.h @@ -22,6 +22,8 @@ #include <regex.h> +#define GUI_FILTER_TAG_NO_FILTER "no_filter" + /* filter structures */ struct t_gui_line; |