/[weechat]/weechat/src/common/completion.c
ViewVC logotype

Diff of /weechat/src/common/completion.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.20 by flashcode, Thu May 5 16:26:34 2005 UTC revision 1.21 by flashcode, Thu Jun 30 12:55:37 2005 UTC
# Line 47  completion_init (t_completion *completio Line 47  completion_init (t_completion *completio
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;
# Line 67  completion_free (t_completion *completio Line 68  completion_free (t_completion *completio
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,
# Line 97  completion_build_list (t_completion *com Line 102  completion_build_list (t_completion *com
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            
# Line 211  completion_build_list (t_completion *com Line 219  completion_build_list (t_completion *com
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;
# Line 471  completion_find_context (t_completion *c Line 539  completion_find_context (t_completion *c
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++;

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26