Completion using codic-vim
inoremap <silent> <C-x><C-t> <C-R>=<SID>codic_complete()<CR>
function! s:codic_complete()
let line = getline('.')
let start = match(line, '\k\+$')
let cand = s:codic_candidates(line[start :])
call complete(start +1, cand)
return ''
endfunction
function! s:codic_candidates(arglead)
let cand = codic#search(a:arglead, 30)
" error
if type(cand) == type(0)
return []
endif
" english -> english terms
if a:arglead =~# '^\w\+$'
return map(cand, '{"word": v:val["label"], "menu": join(map(copy(v:val["values"]), "v:val.word"), ",")}')
endif
" japanese -> english terms
return s:reverse_candidates(cand)
endfunction
function! s:reverse_candidates(cand)
let _ = []
for c in a:cand
for v in c.values
call add(_, {"word": v.word, "menu": !empty(v.desc) ? v.desc : c.label })
endfor
endfor
return _
endfunction