diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/fset/fset-config.c | 46 | ||||
-rw-r--r-- | src/plugins/fset/fset-config.h | 2 | ||||
-rw-r--r-- | src/plugins/fset/fset-option.c | 6 |
3 files changed, 54 insertions, 0 deletions
diff --git a/src/plugins/fset/fset-config.c b/src/plugins/fset/fset-config.c index b5bcfbab1..e1dc47b25 100644 --- a/src/plugins/fset/fset-config.c +++ b/src/plugins/fset/fset-config.c @@ -34,6 +34,7 @@ struct t_config_file *fset_config_file = NULL; /* fset config, look section */ +struct t_config_option *fset_config_look_auto_refresh; struct t_config_option *fset_config_look_auto_unmark; struct t_config_option *fset_config_look_condition_catch_set; struct t_config_option *fset_config_look_export_help_default; @@ -93,12 +94,40 @@ struct t_config_option *fset_config_color_value[2]; struct t_config_option *fset_config_color_value_changed[2]; struct t_config_option *fset_config_color_value_undef[2]; +char **fset_config_auto_refresh = NULL; char **fset_config_sort_fields = NULL; int fset_config_sort_fields_count = 0; int fset_config_format_option_num_lines[2] = { 1, 1 }; /* + * Callback for changes on option "fset.look.auto_refresh". + */ + +void +fset_config_change_auto_refresh_cb (const void *pointer, void *data, + struct t_config_option *option) +{ + /* make C compiler happy */ + (void) pointer; + (void) data; + (void) option; + + if (fset_config_auto_refresh) + weechat_string_free_split (fset_config_auto_refresh); + + fset_config_auto_refresh = weechat_string_split ( + weechat_config_string (fset_config_look_auto_refresh), + ",", + NULL, + WEECHAT_STRING_SPLIT_STRIP_LEFT + | WEECHAT_STRING_SPLIT_STRIP_RIGHT + | WEECHAT_STRING_SPLIT_COLLAPSE_SEPS, + 0, + NULL); +} + +/* * Callback for changes on option "fset.look.format_number". */ @@ -335,6 +364,18 @@ fset_config_init () return 0; } + fset_config_look_auto_refresh = weechat_config_new_option ( + fset_config_file, ptr_section, + "auto_refresh", "string", + N_("comma separated list of options to automatically refresh on the " + "fset buffer (if opened); \"*\" means all options (recommended), " + "a name beginning with \"!\" is a negative value to prevent an " + "option to be refreshed, wildcard \"*\" is allowed in names " + "(example: \"*,!plugin.section.*\")"), + NULL, 0, 0, "*", NULL, 0, + NULL, NULL, NULL, + &fset_config_change_auto_refresh_cb, NULL, NULL, + NULL, NULL, NULL); fset_config_look_auto_unmark = weechat_config_new_option ( fset_config_file, ptr_section, "auto_unmark", "boolean", @@ -1093,6 +1134,11 @@ fset_config_free () { weechat_config_free (fset_config_file); + if (fset_config_auto_refresh) + { + weechat_string_free_split (fset_config_auto_refresh); + fset_config_auto_refresh = NULL; + } if (fset_config_sort_fields) { weechat_string_free_split (fset_config_sort_fields); diff --git a/src/plugins/fset/fset-config.h b/src/plugins/fset/fset-config.h index 763363ca0..3149ebc12 100644 --- a/src/plugins/fset/fset-config.h +++ b/src/plugins/fset/fset-config.h @@ -24,6 +24,7 @@ extern struct t_config_file *fset_config_file; +extern struct t_config_option *fset_config_look_auto_refresh; extern struct t_config_option *fset_config_look_auto_unmark; extern struct t_config_option *fset_config_look_condition_catch_set; extern struct t_config_option *fset_config_look_export_help_default; @@ -79,6 +80,7 @@ extern struct t_config_option *fset_config_color_value[2]; extern struct t_config_option *fset_config_color_value_changed[2]; extern struct t_config_option *fset_config_color_value_undef[2]; +extern char **fset_config_auto_refresh; extern char **fset_config_sort_fields; extern int fset_config_sort_fields_count; extern int fset_config_format_option_num_lines[2]; diff --git a/src/plugins/fset/fset-option.c b/src/plugins/fset/fset-option.c index f6ff80942..0325b12a4 100644 --- a/src/plugins/fset/fset-option.c +++ b/src/plugins/fset/fset-option.c @@ -1550,6 +1550,12 @@ fset_option_config_cb (const void *pointer, if (!fset_buffer) return WEECHAT_RC_OK; + /* do nothing if auto-refresh is disabled for this option */ + if (!weechat_string_match_list (option, + (const char **)fset_config_auto_refresh, + 0)) + return WEECHAT_RC_OK; + /* do nothing if WeeChat is upgrading */ info = weechat_info_get ("weechat_upgrading", NULL); if (info && (strcmp (info, "1") == 0)) |