summaryrefslogtreecommitdiff
path: root/degesch.c
diff options
context:
space:
mode:
Diffstat (limited to 'degesch.c')
-rw-r--r--degesch.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/degesch.c b/degesch.c
index cfa44a6..7aa9649 100644
--- a/degesch.c
+++ b/degesch.c
@@ -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 **