diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-05-10 00:23:23 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-05-10 00:23:23 +0200 |
commit | 7c9a1f50da19191209b7f908bc553c98dacb1e47 (patch) | |
tree | 725bb0bcac1d42c5e77d2dfbba2cf00d35f7ac56 | |
parent | 2ef7323f265ec4b3ee186309a945b601c1e35fd7 (diff) | |
download | xK-7c9a1f50da19191209b7f908bc553c98dacb1e47.tar.gz xK-7c9a1f50da19191209b7f908bc553c98dacb1e47.tar.xz xK-7c9a1f50da19191209b7f908bc553c98dacb1e47.zip |
degesch: add nickname autocompletion
-rw-r--r-- | degesch.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -5330,7 +5330,22 @@ static void complete_nicknames (struct app_context *ctx, struct completion *data, const char *word, struct str_vector *output) { - // TODO; if (data->location == 0) --> add colons to nicknames + if (ctx->current_buffer->type != BUFFER_CHANNEL) + return; + struct channel *channel = ctx->current_buffer->channel; + + // XXX: this is a bit hackish and doesn't respect server case mapping + char *mask = xstrdup_printf ("%s*", word); + LIST_FOR_EACH (struct channel_user, iter, channel->users) + { + const char *nickname = iter->user->nickname; + if (fnmatch (mask, nickname, 0)) + continue; + str_vector_add_owned (output, data->location == 0 + ? xstrdup_printf ("%s:", nickname) + : xstrdup (nickname)); + } + free (mask); } static char ** |