mirror of
https://github.com/neovim/neovim.git
synced 2026-08-26 09:01:57 +00:00
vim-patch:9.2.1009: duplicate dict code in ins_compl_dict_alloc() (#41497)
Problem: ins_compl_dict_alloc() builds the same dict as
fill_complete_info_dict().
Solution: Call fill_complete_info_dict() instead (glepnir).
closes: vim/vim#21140
303a153694
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -65,10 +65,16 @@ describe('completion', function()
|
||||
it('returns expected dict in normal completion', function()
|
||||
feed('ifoo<ESC>o<C-x><C-n>')
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user