An example for Vim w/ CLPUM
scriptencoding utf-8
function! EchoComplete(arglead, cmdline, cursorpos) abort "{{{
return ['a', 'b', 'c']
endfunction "}}}
function! EchoTest() abort "{{{
let name = input(':echo ', '', 'customlist,EchoComplete')
redraw
execute "echo" string(name)
endfunction "}}}
set wildmenu wildmode=popup
nnoremap <C-k> :call EchoTest()<CR>