47 |
completion->base_command_arg = 0; |
completion->base_command_arg = 0; |
48 |
completion->position = -1; |
completion->position = -1; |
49 |
completion->base_word = NULL; |
completion->base_word = NULL; |
50 |
|
completion->args = NULL; |
51 |
|
|
52 |
completion->completion_list = NULL; |
completion->completion_list = NULL; |
53 |
completion->last_completion = NULL; |
completion->last_completion = NULL; |
68 |
free (completion->base_word); |
free (completion->base_word); |
69 |
completion->base_word = NULL; |
completion->base_word = NULL; |
70 |
|
|
71 |
|
if (completion->args) |
72 |
|
free (completion->args); |
73 |
|
completion->args = NULL; |
74 |
|
|
75 |
while (completion->completion_list) |
while (completion->completion_list) |
76 |
weelist_remove (&completion->completion_list, |
weelist_remove (&completion->completion_list, |
77 |
&completion->last_completion, |
&completion->last_completion, |
102 |
int i, j; |
int i, j; |
103 |
t_irc_server *ptr_server; |
t_irc_server *ptr_server; |
104 |
t_irc_channel *ptr_channel; |
t_irc_channel *ptr_channel; |
105 |
char option_name[256]; |
char *pos, option_name[256]; |
106 |
t_weechat_alias *ptr_alias; |
t_weechat_alias *ptr_alias; |
107 |
|
t_config_option *option; |
108 |
|
void *option_value; |
109 |
|
char option_string[2048]; |
110 |
|
|
111 |
/* WeeChat internal commands */ |
/* WeeChat internal commands */ |
112 |
|
|
219 |
"unload"); |
"unload"); |
220 |
return; |
return; |
221 |
} |
} |
222 |
if ((strcasecmp (completion->base_command, "set") == 0) |
if (strcasecmp (completion->base_command, "set") == 0) |
|
&& (completion->base_command_arg == 1)) |
|
223 |
{ |
{ |
224 |
for (i = 0; i < CONFIG_NUMBER_SECTIONS; i++) |
if (completion->base_command_arg == 1) |
225 |
{ |
{ |
226 |
if ((i != CONFIG_SECTION_ALIAS) && (i != CONFIG_SECTION_SERVER)) |
for (i = 0; i < CONFIG_NUMBER_SECTIONS; i++) |
227 |
{ |
{ |
228 |
for (j = 0; weechat_options[i][j].option_name; j++) |
if ((i != CONFIG_SECTION_ALIAS) && (i != CONFIG_SECTION_SERVER)) |
229 |
{ |
{ |
230 |
|
for (j = 0; weechat_options[i][j].option_name; j++) |
231 |
|
{ |
232 |
|
weelist_add (&completion->completion_list, |
233 |
|
&completion->last_completion, |
234 |
|
weechat_options[i][j].option_name); |
235 |
|
} |
236 |
|
} |
237 |
|
} |
238 |
|
for (ptr_server = irc_servers; ptr_server; |
239 |
|
ptr_server = ptr_server->next_server) |
240 |
|
{ |
241 |
|
for (i = 0; weechat_options[CONFIG_SECTION_SERVER][i].option_name; i++) |
242 |
|
{ |
243 |
|
snprintf (option_name, sizeof (option_name), "%s.%s", |
244 |
|
ptr_server->name, |
245 |
|
weechat_options[CONFIG_SECTION_SERVER][i].option_name); |
246 |
weelist_add (&completion->completion_list, |
weelist_add (&completion->completion_list, |
247 |
&completion->last_completion, |
&completion->last_completion, |
248 |
weechat_options[i][j].option_name); |
option_name); |
249 |
} |
} |
250 |
} |
} |
251 |
} |
} |
252 |
for (ptr_server = irc_servers; ptr_server; |
else if (completion->base_command_arg == 3) |
|
ptr_server = ptr_server->next_server) |
|
253 |
{ |
{ |
254 |
for (i = 0; weechat_options[CONFIG_SECTION_SERVER][i].option_name; i++) |
if (completion->args) |
255 |
{ |
{ |
256 |
snprintf (option_name, sizeof (option_name), "%s.%s", |
pos = strchr (completion->args, ' '); |
257 |
ptr_server->name, |
if (pos) |
258 |
weechat_options[CONFIG_SECTION_SERVER][i].option_name); |
pos[0] = '\0'; |
259 |
weelist_add (&completion->completion_list, |
option = NULL; |
260 |
&completion->last_completion, |
option_value = NULL; |
261 |
option_name); |
config_option_search_option_value (completion->args, &option, &option_value); |
262 |
|
if (option && option_value) |
263 |
|
{ |
264 |
|
switch (option->option_type) |
265 |
|
{ |
266 |
|
case OPTION_TYPE_BOOLEAN: |
267 |
|
if (option_value && (*((int *)(option_value)))) |
268 |
|
weelist_add (&completion->completion_list, |
269 |
|
&completion->last_completion, |
270 |
|
"on"); |
271 |
|
else |
272 |
|
weelist_add (&completion->completion_list, |
273 |
|
&completion->last_completion, |
274 |
|
"off"); |
275 |
|
break; |
276 |
|
case OPTION_TYPE_INT: |
277 |
|
snprintf (option_string, sizeof (option_string) - 1, |
278 |
|
"%d", (option_value) ? *((int *)(option_value)) : option->default_int); |
279 |
|
weelist_add (&completion->completion_list, |
280 |
|
&completion->last_completion, |
281 |
|
option_string); |
282 |
|
break; |
283 |
|
case OPTION_TYPE_INT_WITH_STRING: |
284 |
|
weelist_add (&completion->completion_list, |
285 |
|
&completion->last_completion, |
286 |
|
(option_value) ? |
287 |
|
option->array_values[*((int *)(option_value))] : |
288 |
|
option->array_values[option->default_int]); |
289 |
|
break; |
290 |
|
case OPTION_TYPE_COLOR: |
291 |
|
weelist_add (&completion->completion_list, |
292 |
|
&completion->last_completion, |
293 |
|
(option_value) ? |
294 |
|
gui_get_color_by_value (*((int *)(option_value))) : |
295 |
|
option->default_string); |
296 |
|
break; |
297 |
|
case OPTION_TYPE_STRING: |
298 |
|
weelist_add (&completion->completion_list, |
299 |
|
&completion->last_completion, |
300 |
|
(option_value) ? |
301 |
|
*((char **)(option_value)) : |
302 |
|
option->default_string); |
303 |
|
break; |
304 |
|
} |
305 |
|
} |
306 |
|
if (pos) |
307 |
|
pos[0] = ' '; |
308 |
} |
} |
309 |
} |
} |
310 |
return; |
return; |
539 |
command_arg++; |
command_arg++; |
540 |
i++; |
i++; |
541 |
while ((i < pos) && (buffer[i] == ' ')) i++; |
while ((i < pos) && (buffer[i] == ' ')) i++; |
542 |
|
if (!completion->args) |
543 |
|
completion->args = strdup (buffer + i); |
544 |
} |
} |
545 |
else |
else |
546 |
i++; |
i++; |