1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 06:16:40 +02:00

fset: add a second format for options, new key ctrl-X and input "x" to switch the format used

This commit is contained in:
Sébastien Helleu
2017-06-16 21:03:56 +02:00
parent fdf7a5f13d
commit 850922ff92
4 changed files with 122 additions and 29 deletions
+10 -3
View File
@@ -79,6 +79,7 @@ fset_buffer_set_title ()
"($)=refresh, "
"($$)=unmark/refresh, "
"alt+v(v)=toggle help bar, "
"ctrl+X(x)=switch format, "
"(q)=close buffer"),
weechat_color (weechat_config_string (fset_config_color_title_filter)),
(fset_option_filter) ? fset_option_filter : "*",
@@ -137,7 +138,7 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
const char *ptr_field, *ptr_parent_value;
int selected_line;
int default_value_undef, value_undef, value_changed;
int type, marked, add_quotes, add_quotes_parent;
int type, marked, add_quotes, add_quotes_parent, format_number;
if (!fset_option)
return;
@@ -647,8 +648,11 @@ fset_buffer_display_line (int y, struct t_fset_option *fset_option)
(value_changed) ? "1" : "0");
/* build string for line */
format_number = weechat_config_integer (fset_config_look_format_number);
line = weechat_string_eval_expression (
(selected_line) ? fset_config_eval_format_option_current : weechat_config_string (fset_config_format_option),
(selected_line) ?
fset_config_eval_format_option_current[format_number - 1] :
weechat_config_string (fset_config_format_option[format_number - 1]),
fset_buffer_hashtable_pointers,
fset_buffer_hashtable_extra_vars,
NULL);
@@ -854,7 +858,9 @@ fset_buffer_input_cb (const void *pointer, void *data,
{ ",", "/fset -mark 1" },
{ "p", "/mute /set fset.look.show_plugins_desc toggle", },
{ "v", "/mute /set fset.look.show_help_bar toggle" },
{ NULL, NULL } };
{ "x", "/fset -format" },
{ NULL, NULL },
};
const char *ptr_input;
int i;
@@ -1014,6 +1020,7 @@ fset_buffer_set_keys ()
{ "ctrl-L", "/fset -refresh" },
{ "meta-p", "/mute /set fset.look.show_plugins_desc toggle", },
{ "meta-v", "/mute /set fset.look.show_help_bar toggle" },
{ "ctrl-X", "/fset -format" },
{ NULL, NULL },
};
char str_key[64];
+23 -2
View File
@@ -81,8 +81,8 @@ fset_command_fset (const void *pointer, void *data,
struct t_gui_buffer *buffer, int argc,
char **argv, char **argv_eol)
{
int num_options, line, value, i, with_help;
char str_command[512];
int num_options, line, value, i, with_help, min, max, format_number;
char str_command[512], str_number[64];
const char *ptr_filename;
struct t_fset_option *ptr_fset_option;
struct t_config_option *ptr_option;
@@ -373,6 +373,23 @@ fset_command_fset (const void *pointer, void *data,
return WEECHAT_RC_OK;
}
if (weechat_strcasecmp (argv[1], "-format") == 0)
{
min = weechat_hdata_integer (fset_hdata_config_option,
fset_config_look_format_number,
"min");
max = weechat_hdata_integer (fset_hdata_config_option,
fset_config_look_format_number,
"max");
format_number = weechat_config_integer (fset_config_look_format_number) + 1;
if (format_number > max)
format_number = min;
snprintf (str_number, sizeof (str_number), "%d", format_number);
weechat_config_option_set (fset_config_look_format_number,
str_number, 1);
return WEECHAT_RC_OK;
}
if (weechat_strcasecmp (argv[1], "-export") == 0)
{
if (argc < 3)
@@ -573,6 +590,7 @@ fset_command_init ()
" || -set"
" || -append"
" || -mark [<number>]"
" || -format"
" || -export [-help|-nohelp] <filename>"
" || filter"),
N_(" -bar: add the help bar\n"
@@ -597,6 +615,7 @@ fset_command_init ()
"of option (move the cursor at the end of value)\n"
" -mark: toggle mark on the option and move \"number\" lines "
"(up/down, default is 1: one line down)\n"
" -format: switch to the next available format\n"
" -export: export the options and values displayed in a file "
"(each line has format: \"/set name value\" or \"/unset name\")\n"
" -help: force writing of help on options in exported file "
@@ -711,6 +730,7 @@ fset_command_init ()
" w:xxx export options in file \"xxx\"\n"
" w-:xxx export options in file \"xxx\" without help\n"
" w+:xxx export options in file \"xxx\" with help\n"
" ctrl+X x switch the format used to display options\n"
" q close fset buffer\n"
"\n"
"Mouse actions on fset buffer:\n"
@@ -750,6 +770,7 @@ fset_command_init ()
" || -set"
" || -append"
" || -mark"
" || -format"
" || -export -help|-nohelp|%(filename) %(filename)"
" || *|c:|f:|s:|d|d:|d=|d==|=|==|%(fset_options)",
&fset_command_fset, NULL, NULL);
+85 -21
View File
@@ -37,6 +37,7 @@ struct t_config_file *fset_config_file = NULL;
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;
struct t_config_option *fset_config_look_format_number;
struct t_config_option *fset_config_look_marked_string;
struct t_config_option *fset_config_look_scroll_horizontal;
struct t_config_option *fset_config_look_show_help_bar;
@@ -49,8 +50,8 @@ struct t_config_option *fset_config_look_use_mute;
/* fset config, format section */
struct t_config_option *fset_config_format_option;
struct t_config_option *fset_config_format_option_current;
struct t_config_option *fset_config_format_option[2];
struct t_config_option *fset_config_format_option_current[2];
struct t_config_option *fset_config_format_export_help;
struct t_config_option *fset_config_format_export_option;
struct t_config_option *fset_config_format_export_option_null;
@@ -93,9 +94,25 @@ struct t_config_option *fset_config_color_value_undef[2];
char **fset_config_sort_fields = NULL;
int fset_config_sort_fields_count = 0;
char *fset_config_eval_format_option_current = NULL;
char *fset_config_eval_format_option_current[2] = { NULL, NULL };
/*
* Callback for changes on option "fset.look.format_number".
*/
void
fset_config_change_format_number_cb (const void *pointer, void *data,
struct t_config_option *option)
{
/* make C compiler happy */
(void) pointer;
(void) data;
(void) option;
fset_buffer_refresh (0);
}
/*
* Callback for changes on option "fset.look.show_help_bar".
*/
@@ -201,18 +218,22 @@ void
fset_config_change_format_cb (const void *pointer, void *data,
struct t_config_option *option)
{
int i;
/* make C compiler happy */
(void) pointer;
(void) data;
(void) option;
if (fset_config_eval_format_option_current)
free (fset_config_eval_format_option_current);
fset_config_eval_format_option_current = weechat_string_replace (
weechat_config_string (fset_config_format_option_current),
"${format_option}",
weechat_config_string (fset_config_format_option));
for (i = 0; i < 2; i++)
{
if (fset_config_eval_format_option_current[i])
free (fset_config_eval_format_option_current[i]);
fset_config_eval_format_option_current[i] = weechat_string_replace (
weechat_config_string (fset_config_format_option_current[i]),
"${format_option}",
weechat_config_string (fset_config_format_option[i]));
}
fset_buffer_refresh (0);
}
@@ -329,6 +350,15 @@ fset_config_init ()
NULL, NULL, NULL,
NULL, NULL, NULL,
NULL, NULL, NULL);
fset_config_look_format_number = weechat_config_new_option (
fset_config_file, ptr_section,
"format_number", "integer",
N_("number of format used to display options; this is dynamically "
"changed by the key ctrl-X on the fset buffer"),
NULL, 1, 2, "1", NULL, 0,
NULL, NULL, NULL,
&fset_config_change_format_number_cb, NULL, NULL,
NULL, NULL, NULL);
fset_config_look_marked_string = weechat_config_new_option (
fset_config_file, ptr_section,
"marked_string", "string",
@@ -423,26 +453,55 @@ fset_config_init ()
return 0;
}
fset_config_format_option = weechat_config_new_option (
fset_config_format_option[0] = weechat_config_new_option (
fset_config_file, ptr_section,
"option", "string",
N_("format of each line with an option "
"(note: content is evaluated, see /help fset)"),
"option1", "string",
N_("first format of each line with an option "
"(note: content is evaluated, see /help fset); formats can be "
"switched with key ctrl+X"),
NULL, 0, 0,
"${marked} ${name} ${type} ${value2}",
NULL, 0,
NULL, NULL, NULL,
&fset_config_change_format_cb, NULL, NULL,
NULL, NULL, NULL);
fset_config_format_option_current = weechat_config_new_option (
fset_config_format_option[1] = weechat_config_new_option (
fset_config_file, ptr_section,
"option_current", "string",
N_("format for the line with current option "
"(note: content is evaluated, see /help fset)"),
"option2", "string",
N_("second format of each line with an option "
"(note: content is evaluated, see /help fset); "
"formats can be switched with key ctrl+X"),
NULL, 0, 0,
"${marked} ${name} ${type_short} ${min} ${max} ${default_value} "
"${value2} ${description}",
NULL, 0,
NULL, NULL, NULL,
&fset_config_change_format_cb, NULL, NULL,
NULL, NULL, NULL);
fset_config_format_option_current[0] = weechat_config_new_option (
fset_config_file, ptr_section,
"option_current1", "string",
N_("first format for the line with current option "
"(note: content is evaluated, see /help fset, "
"${format_option} is replaced by the content of option "
"fset.format.option1 before evaluation); "
"formats can be switched with key ctrl+X"),
NULL, 0, 0, "${color:,blue}${format_option}", NULL, 0,
NULL, NULL, NULL,
&fset_config_change_format_cb, NULL, NULL,
NULL, NULL, NULL);
fset_config_format_option_current[1] = weechat_config_new_option (
fset_config_file, ptr_section,
"option_current2", "string",
N_("second format for the line with current option "
"(note: content is evaluated, see /help fset, "
"${format_option} is replaced by the content of option "
"fset.format.option2 before evaluation); "
"formats can be switched with key ctrl+X"),
NULL, 0, 0, "${color:,red}${format_option}", NULL, 0,
NULL, NULL, NULL,
&fset_config_change_format_cb, NULL, NULL,
NULL, NULL, NULL);
fset_config_format_export_help = weechat_config_new_option (
fset_config_file, ptr_section,
"export_help", "string",
@@ -983,6 +1042,8 @@ fset_config_write ()
void
fset_config_free ()
{
int i;
weechat_config_free (fset_config_file);
if (fset_config_sort_fields)
@@ -992,9 +1053,12 @@ fset_config_free ()
fset_config_sort_fields_count = 0;
}
if (fset_config_eval_format_option_current)
for (i = 0; i < 2; i++)
{
free (fset_config_eval_format_option_current);
fset_config_eval_format_option_current = NULL;
if (fset_config_eval_format_option_current[i])
{
free (fset_config_eval_format_option_current[i]);
fset_config_eval_format_option_current[i] = NULL;
}
}
}
+4 -3
View File
@@ -27,6 +27,7 @@ extern struct t_config_file *fset_config_file;
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;
extern struct t_config_option *fset_config_look_format_number;
extern struct t_config_option *fset_config_look_marked_string;
extern struct t_config_option *fset_config_look_scroll_horizontal;
extern struct t_config_option *fset_config_look_show_help_bar;
@@ -37,8 +38,8 @@ extern struct t_config_option *fset_config_look_use_color_value;
extern struct t_config_option *fset_config_look_use_keys;
extern struct t_config_option *fset_config_look_use_mute;
extern struct t_config_option *fset_config_format_option;
extern struct t_config_option *fset_config_format_option_current;
extern struct t_config_option *fset_config_format_option[2];
extern struct t_config_option *fset_config_format_option_current[2];
extern struct t_config_option *fset_config_format_export_help;
extern struct t_config_option *fset_config_format_export_option;
extern struct t_config_option *fset_config_format_export_option_null;
@@ -79,7 +80,7 @@ extern struct t_config_option *fset_config_color_value_undef[2];
extern char **fset_config_sort_fields;
extern int fset_config_sort_fields_count;
extern char *fset_config_eval_format_option_current;
extern char *fset_config_eval_format_option_current[2];
extern int fset_config_init ();
extern int fset_config_read ();