Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/compl.c @ 284:f879b17ecb8e
Add compl_del_category_word()
This will allow us to remove an alias completion when it is unset.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Thu, 07 Jul 2005 22:12:29 +0100 |
parents | d5ae42cbe1fa |
children | f8f3c7493457 |
comparison
equal
deleted
inserted
replaced
283:00b2377539ac | 284:f879b17ecb8e |
---|---|
154 | 154 |
155 // TODO Check word does not already exist | 155 // TODO Check word does not already exist |
156 cat->words = g_slist_append(cat->words, nword); // TODO sort | 156 cat->words = g_slist_append(cat->words, nword); // TODO sort |
157 } | 157 } |
158 | 158 |
159 // compl_del_category_word(categ, command) | |
160 // Removes a keyword from category categ in completion list. | |
161 void compl_del_category_word(guint categ, const char *word) | |
162 { | |
163 GSList *sl_cat, *sl_elt; | |
164 category *cat; | |
165 char *nword; | |
166 // Look for category | |
167 for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) { | |
168 if (categ == ((category*)sl_cat->data)->flag) | |
169 break; | |
170 } | |
171 if (!sl_cat) return; // Category not found, finished! | |
172 | |
173 cat = (category*)sl_cat->data; | |
174 | |
175 // If word is not space-terminated, we add one trailing space | |
176 for (nword = (char*)word; *nword; nword++) | |
177 ; | |
178 if (nword > word) nword--; | |
179 if (*nword != ' ') { // Add a space | |
180 nword = g_new(char, strlen(word)+2); | |
181 strcpy(nword, word); | |
182 strcat(nword, " "); | |
183 } else { // word is fine | |
184 nword = g_strdup(word); | |
185 } | |
186 | |
187 sl_elt = cat->words; | |
188 while (sl_elt) { | |
189 if (!strcasecmp((char*)sl_elt->data, nword)) { | |
190 g_free(sl_elt->data); | |
191 cat->words = g_slist_delete_link(cat->words, sl_elt); | |
192 break; // Only remove first occurence | |
193 } | |
194 sl_elt = g_slist_next(sl_elt); | |
195 } | |
196 } | |
197 | |
159 // compl_get_category_list() | 198 // compl_get_category_list() |
160 // Returns a slist of all words in the categories specified by the given flags | 199 // Returns a slist of all words in the categories specified by the given flags |
161 GSList *compl_get_category_list(guint cat_flags) | 200 GSList *compl_get_category_list(guint cat_flags) |
162 { | 201 { |
163 GSList *sl_cat; | 202 GSList *sl_cat; |