diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index 21de3d6e64..0c34426381 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -1452,16 +1452,7 @@ static dict_T *ins_compl_dict_alloc(compl_T *match) { // { word, abbr, menu, kind, info } dict_T *dict = tv_dict_alloc_lock(VAR_FIXED); - tv_dict_add_str_len(dict, S_LEN("word"), match->cp_str.data, (int)match->cp_str.size); - tv_dict_add_str(dict, S_LEN("abbr"), match->cp_text[CPT_ABBR]); - tv_dict_add_str(dict, S_LEN("menu"), match->cp_text[CPT_MENU]); - tv_dict_add_str(dict, S_LEN("kind"), match->cp_text[CPT_KIND]); - tv_dict_add_str(dict, S_LEN("info"), match->cp_text[CPT_INFO]); - if (match->cp_user_data.v_type == VAR_UNKNOWN) { - tv_dict_add_str_len(dict, S_LEN("user_data"), "", 0); - } else { - tv_dict_add_tv(dict, S_LEN("user_data"), &match->cp_user_data); - } + fill_complete_info_dict(dict, match, false); return dict; } diff --git a/test/functional/editor/completion_spec.lua b/test/functional/editor/completion_spec.lua index 86b5bca879..b9b91ec520 100644 --- a/test/functional/editor/completion_spec.lua +++ b/test/functional/editor/completion_spec.lua @@ -65,10 +65,16 @@ describe('completion', function() it('returns expected dict in normal completion', function() feed('ifooo') eq('foo', eval('getline(2)')) - eq( - { word = 'foo', abbr = '', menu = '', info = '', kind = '', user_data = '' }, - eval('v:completed_item') - ) + eq({ + word = 'foo', + abbr = '', + menu = '', + info = '', + kind = '', + user_data = '', + abbr_hlgroup = '', + kind_hlgroup = '', + }, eval('v:completed_item')) end) it('is readonly', function() screen:try_resize(80, 8) @@ -105,6 +111,8 @@ describe('completion', function() menu = 'baz', info = 'foobar', kind = 'foobaz', + abbr_hlgroup = '', + kind_hlgroup = '', user_data = '', }, eval('v:completed_item')) end)