diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2009-04-01 23:30:57 +0200 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2009-04-01 23:30:57 +0200 |
commit | ca7bcf880b6dffe87976ef40801c8f65ea541b54 (patch) | |
tree | b6ad158f2c4516080af6628c4e51abe93a8953f5 /src/gui | |
parent | ff83985ef4f4073f9430ee065b1d8982fb7c6318 (diff) | |
download | weechat-ca7bcf880b6dffe87976ef40801c8f65ea541b54.zip |
Fix bug with partial completions
Option "weechat.completion.partial_completion_nick" has been renamed to
"weechat.completion.partial_completion_other".
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/gui-completion.c | 56 | ||||
-rw-r--r-- | src/gui/gui-completion.h | 8 |
2 files changed, 17 insertions, 47 deletions
diff --git a/src/gui/gui-completion.c b/src/gui/gui-completion.c index fe1d05545..462569cd5 100644 --- a/src/gui/gui-completion.c +++ b/src/gui/gui-completion.c @@ -65,7 +65,6 @@ gui_completion_init (struct t_gui_completion *completion, completion->context = GUI_COMPLETION_NULL; completion->base_command = NULL; completion->base_command_arg = 0; - completion->arg_is_nick = 0; completion->base_word = NULL; completion->base_word_pos = 0; completion->position = -1; @@ -605,8 +604,6 @@ gui_completion_list_add_nicks (struct t_gui_completion *completion) &ptr_group, &ptr_nick); } } - - completion->arg_is_nick = 1; } /* @@ -1430,8 +1427,7 @@ gui_completion_partial_build_list (struct t_gui_completion *completion, */ void -gui_completion_complete (struct t_gui_completion *completion, - int nick_completion) +gui_completion_complete (struct t_gui_completion *completion) { int length, word_found_seen, other_completion, partial_completion; int common_prefix_size, item_is_nick; @@ -1442,26 +1438,21 @@ gui_completion_complete (struct t_gui_completion *completion, other_completion = 0; partial_completion = completion->force_partial_completion; - + if (!partial_completion) { - if (nick_completion) + if (completion->context == GUI_COMPLETION_COMMAND) { - partial_completion = CONFIG_BOOLEAN(config_completion_partial_completion_nick); + partial_completion = CONFIG_BOOLEAN(config_completion_partial_completion_command); } - else + else if (completion->context == GUI_COMPLETION_COMMAND_ARG) { - if (completion->context == GUI_COMPLETION_COMMAND) - { - partial_completion = CONFIG_BOOLEAN(config_completion_partial_completion_command); - } - else - { - partial_completion = CONFIG_BOOLEAN(config_completion_partial_completion_command_arg); - } + partial_completion = CONFIG_BOOLEAN(config_completion_partial_completion_command_arg); } + else + partial_completion = CONFIG_BOOLEAN(config_completion_partial_completion_other); } - + common_prefix_size = 0; if (partial_completion && completion->completion_list && completion->completion_list->items) @@ -1585,7 +1576,7 @@ gui_completion_complete (struct t_gui_completion *completion, free (completion->word_found); completion->word_found = NULL; completion->word_found_is_nick = 0; - gui_completion_complete (completion, nick_completion); + gui_completion_complete (completion); } } @@ -1614,22 +1605,7 @@ gui_completion_command (struct t_gui_completion *completion) } } - gui_completion_complete (completion, 0); -} - -/* - * gui_completion_nick: complete a nick - */ - -void -gui_completion_nick (struct t_gui_completion *completion) -{ - if (!completion->completion_list->items) - gui_completion_list_add_nicks (completion); - - completion->context = GUI_COMPLETION_NICK; - - gui_completion_complete (completion, 1); + gui_completion_complete (completion); } /* @@ -1645,7 +1621,7 @@ gui_completion_auto (struct t_gui_completion *completion) { if (!completion->completion_list->items) gui_completion_list_add_filename (completion); - gui_completion_complete (completion, 0); + gui_completion_complete (completion); return; } @@ -1656,7 +1632,7 @@ gui_completion_auto (struct t_gui_completion *completion) CONFIG_STRING(config_completion_default_template), NULL); } - gui_completion_complete (completion, 0); + gui_completion_complete (completion); } /* @@ -1690,15 +1666,12 @@ gui_completion_search (struct t_gui_completion *completion, int direction, case GUI_COMPLETION_NULL: /* should never be executed */ return; - case GUI_COMPLETION_NICK: - gui_completion_nick (completion); - break; case GUI_COMPLETION_COMMAND: gui_completion_command (completion); break; case GUI_COMPLETION_COMMAND_ARG: if (completion->completion_list->items) - gui_completion_complete (completion, completion->arg_is_nick); + gui_completion_complete (completion); else { completion->context = GUI_COMPLETION_AUTO; @@ -1742,7 +1715,6 @@ gui_completion_print_log (struct t_gui_completion *completion) log_printf (" context . . . . . . . . : %d", completion->context); log_printf (" base_command. . . . . . : '%s'", completion->base_command); log_printf (" base_command_arg. . . . : %d", completion->base_command_arg); - log_printf (" arg_is_nick . . . . . . : %d", completion->arg_is_nick); log_printf (" base_word . . . . . . . : '%s'", completion->base_word); log_printf (" base_word_pos . . . . . : %d", completion->base_word_pos); log_printf (" position. . . . . . . . : %d", completion->position); diff --git a/src/gui/gui-completion.h b/src/gui/gui-completion.h index 324534e1b..072ecbde3 100644 --- a/src/gui/gui-completion.h +++ b/src/gui/gui-completion.h @@ -21,10 +21,9 @@ #define __WEECHAT_GUI_COMPLETION_H 1 #define GUI_COMPLETION_NULL 0 -#define GUI_COMPLETION_NICK 1 -#define GUI_COMPLETION_COMMAND 2 -#define GUI_COMPLETION_COMMAND_ARG 3 -#define GUI_COMPLETION_AUTO 4 +#define GUI_COMPLETION_COMMAND 1 +#define GUI_COMPLETION_COMMAND_ARG 2 +#define GUI_COMPLETION_AUTO 3 struct t_gui_completion { @@ -33,7 +32,6 @@ struct t_gui_completion int context; /* context: null, nick, command, cmd arg */ char *base_command; /* cmd with arg to complete (can be NULL) */ int base_command_arg; /* # arg to complete (if context=cmd arg) */ - int arg_is_nick; /* argument is nick */ char *base_word; /* word to complete (when Tab was pressed) */ int base_word_pos; /* beggining of base word */ int position; /* position where Tab was pressed */ |