From: Shougo Matsushita Date: Wed, 27 Jul 2022 13:40:00 +0000 (+0100) Subject: patch 9.0.0092: plugins cannot change v:completed_item X-Git-Tag: v9.0.0092 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=61021aa318ca4c4a6b0182ee93388b2e9b5eefba;p=vim patch 9.0.0092: plugins cannot change v:completed_item Problem: Plugins cannot change v:completed_item. Solution: Make v:completed_item writeable. (Shougo Matsushita, closes #10801) --- diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 290f03ff2..3dfacf729 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2005,6 +2005,8 @@ v:completed_item |Dictionary| containing the |complete-items| for the most recently completed word after |CompleteDone|. The |Dictionary| is empty if the completion failed. + Note: Plugins can modify the value to emulate the builtin + |CompleteDone| event behavior. *v:count* *count-variable* v:count The count given for the last Normal mode command. Can be used diff --git a/src/evalvars.c b/src/evalvars.c index 7e6bf7a92..16dfd0d12 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -111,7 +111,7 @@ static struct vimvar {VV_NAME("oldfiles", VAR_LIST), &t_list_string, 0}, {VV_NAME("windowid", VAR_NUMBER), NULL, VV_RO}, {VV_NAME("progpath", VAR_STRING), NULL, VV_RO}, - {VV_NAME("completed_item", VAR_DICT), &t_dict_string, VV_RO}, + {VV_NAME("completed_item", VAR_DICT), &t_dict_string, 0}, {VV_NAME("option_new", VAR_STRING), NULL, VV_RO}, {VV_NAME("option_old", VAR_STRING), NULL, VV_RO}, {VV_NAME("option_oldlocal", VAR_STRING), NULL, VV_RO}, diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 7bebc5d8a..35c5785d3 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -387,6 +387,19 @@ func Test_CompleteDone_undo() au! CompleteDone endfunc +func Test_CompleteDone_modify() + let value = { + \ 'word': '', + \ 'abbr': '', + \ 'menu': '', + \ 'info': '', + \ 'kind': '', + \ 'user_data': '', + \ } + let v:completed_item = value + call assert_equal(v:completed_item, value) +endfunc + func CompleteTest(findstart, query) if a:findstart return col('.') diff --git a/src/version.c b/src/version.c index 5adb215d1..4d97dcdda 100644 --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 92, /**/ 91, /**/