comparison mcabber/mcabber/commands.c @ 1760:106bbf7e97da

Sort and pretty-format options list
author Myhailo Danylenko <isbear@ukrpost.net>
date Sat, 13 Mar 2010 16:19:46 +0200
parents 7ee390513463
children 61f0482d3993
comparison
equal deleted inserted replaced
1759:921429804e20 1760:106bbf7e97da
2082 g_free(group_utf8); 2082 g_free(group_utf8);
2083 g_free(newgroupname); 2083 g_free(newgroupname);
2084 update_roster = TRUE; 2084 update_roster = TRUE;
2085 } 2085 }
2086 2086
2087 static void print_option_cb(char *k, char *v, void *f) 2087 static void list_option_cb(char *k, char *v, void *f)
2088 { 2088 {
2089 char *format = (char *)f; 2089 GSList **list = f;
2090 scr_LogPrint (LPRINT_NORMAL, format, k, v); 2090 *list = g_slist_insert_sorted(*list, k, (GCompareFunc)strcmp);
2091 } 2091 }
2092 2092
2093 static void do_set(char *arg) 2093 static void do_set(char *arg)
2094 { 2094 {
2095 guint assign; 2095 guint assign;
2096 gchar *option, *value; 2096 gchar *option, *value;
2097 gchar *option_utf8; 2097 gchar *option_utf8;
2098 2098
2099 if (!*arg) { 2099 if (!*arg) {
2100 // list all set options 2100 // list all set options
2101 settings_foreach(SETTINGS_TYPE_OPTION, print_option_cb, "%s = [%s]"); 2101 GSList *list = NULL;
2102 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); 2102 // Get sorted list of keys
2103 update_roster = TRUE; 2103 settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list);
2104 if (list) {
2105 gsize max = 0;
2106 GSList *lel;
2107 gchar *format;
2108 // Find out maximum key length
2109 for (lel = list; lel; lel = lel->next) {
2110 const gchar *key = lel->data;
2111 gsize len = strlen(key);
2112 if (len > max)
2113 max = len;
2114 }
2115 // Print out list of options
2116 format = g_strdup_printf("%%-%us = [%%s]", max);
2117 for (lel = list; lel; lel = lel->next) {
2118 const gchar *key = lel->data;
2119 scr_LogPrint(LPRINT_NORMAL, format, key, settings_opt_get(key));
2120 }
2121 g_free(format);
2122 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
2123 update_roster = TRUE;
2124 } else
2125 scr_LogPrint(LPRINT_NORMAL, "No options found.");
2104 return; 2126 return;
2105 } 2127 }
2106 2128
2107 assign = parse_assigment(arg, &option, &value); 2129 assign = parse_assigment(arg, &option, &value);
2108 if (!option) { 2130 if (!option) {