1#include <err.h>2#include <histedit.h>3#include <locale.h>4#include <stdio.h>5#include <stdlib.h>6#include <string.h>78#include "complete.h"910#define ARRAY_SIZE(X) (sizeof(X) / sizeof(X[0]))1112static char *completions[] = {13 "föö",14 "fööbar",15 "fööbaz",16};1718static void19compfunc(const char *input, size_t inlen)20{21 size_t i;2223 for (i = 0; i < ARRAY_SIZE(completions); i++)24 if (!strncmp(input, completions[i], inlen))25 addcomp(completions[i]);26}2728int29main(void)30{31 int num;32 static EditLine *el;33 const char *line;3435 setlocale(LC_CTYPE, "");36 if (!(el = el_init("tabcomp-example", stdin, stdout, stderr)))37 errx(EXIT_FAILURE, "el_init failed");3839 /* Initialize word completions */40 initcomp(compfunc, 1);4142 /* Bind completion function to tab key */43 el_set(el, EL_ADDFN, "complete", "Complete input", complete);44 el_set(el, EL_BIND, "^I", "complete", NULL);4546 while ((line = el_gets(el, &num)) && num >= 0)47 printf("%s", line);48 if (num == -1)49 err(EXIT_FAILURE, "el_gets failed");5051 return EXIT_SUCCESS;52}