@@ -117,6 +117,126 @@ func Test_omni_dash()
117117 set omnifunc =
118118endfunc
119119
120+ function ! s: CompleteDone_CompleteFuncDict ( findstart, base )
121+ if a: findstart
122+ return 0
123+ endif
124+
125+ return {
126+ \ ' words' : [
127+ \ {
128+ \ ' word' : ' aword' ,
129+ \ ' abbr' : ' wrd' ,
130+ \ ' menu' : ' extra text' ,
131+ \ ' info' : ' words are cool' ,
132+ \ ' kind' : ' W' ,
133+ \ ' user_data' : ' test'
134+ \ }
135+ \ ]
136+ \ }
137+ endfunction
138+
139+ function ! s: CompleteDone_CheckCompletedItemDict ()
140+ call assert_equal ( ' aword' , v: completed_item [ ' word' ] )
141+ call assert_equal ( ' wrd' , v: completed_item [ ' abbr' ] )
142+ call assert_equal ( ' extra text' , v: completed_item [ ' menu' ] )
143+ call assert_equal ( ' words are cool' , v: completed_item [ ' info' ] )
144+ call assert_equal ( ' W' , v: completed_item [ ' kind' ] )
145+ call assert_equal ( ' test' , v: completed_item [ ' user_data' ] )
146+
147+ let s: called_completedone = 1
148+ endfunction
149+
150+ function Test_CompleteDoneDict ()
151+ au CompleteDone * :call <SID> CompleteDone_CheckCompletedItemDict ()
152+
153+ set completefunc = <SID> CompleteDone_CompleteFuncDict
154+ execute " normal a\<C-X>\<C-U>\<C-Y> "
155+ set completefunc &
156+
157+ call assert_equal ( ' test' , v: completed_item [ ' user_data' ] )
158+ call assert_true ( s: called_completedone )
159+
160+ let s: called_completedone = 0
161+ au ! CompleteDone
162+ endfunc
163+
164+ function ! s: CompleteDone_CompleteFuncDictNoUserData ( findstart, base )
165+ if a: findstart
166+ return 0
167+ endif
168+
169+ return {
170+ \ ' words' : [
171+ \ {
172+ \ ' word' : ' aword' ,
173+ \ ' abbr' : ' wrd' ,
174+ \ ' menu' : ' extra text' ,
175+ \ ' info' : ' words are cool' ,
176+ \ ' kind' : ' W'
177+ \ }
178+ \ ]
179+ \ }
180+ endfunction
181+
182+ function ! s: CompleteDone_CheckCompletedItemDictNoUserData ()
183+ call assert_equal ( ' aword' , v: completed_item [ ' word' ] )
184+ call assert_equal ( ' wrd' , v: completed_item [ ' abbr' ] )
185+ call assert_equal ( ' extra text' , v: completed_item [ ' menu' ] )
186+ call assert_equal ( ' words are cool' , v: completed_item [ ' info' ] )
187+ call assert_equal ( ' W' , v: completed_item [ ' kind' ] )
188+ call assert_equal ( ' ' , v: completed_item [ ' user_data' ] )
189+
190+ let s: called_completedone = 1
191+ endfunction
192+
193+ function Test_CompleteDoneDictNoUserData ()
194+ au CompleteDone * :call <SID> CompleteDone_CheckCompletedItemDictNoUserData ()
195+
196+ set completefunc = <SID> CompleteDone_CompleteFuncDictNoUserData
197+ execute " normal a\<C-X>\<C-U>\<C-Y> "
198+ set completefunc &
199+
200+ call assert_equal ( ' ' , v: completed_item [ ' user_data' ] )
201+ call assert_true ( s: called_completedone )
202+
203+ let s: called_completedone = 0
204+ au ! CompleteDone
205+ endfunc
206+
207+ function ! s: CompleteDone_CompleteFuncList ( findstart, base )
208+ if a: findstart
209+ return 0
210+ endif
211+
212+ return [ ' aword' ]
213+ endfunction
214+
215+ function ! s: CompleteDone_CheckCompletedItemList ()
216+ call assert_equal ( ' aword' , v: completed_item [ ' word' ] )
217+ call assert_equal ( ' ' , v: completed_item [ ' abbr' ] )
218+ call assert_equal ( ' ' , v: completed_item [ ' menu' ] )
219+ call assert_equal ( ' ' , v: completed_item [ ' info' ] )
220+ call assert_equal ( ' ' , v: completed_item [ ' kind' ] )
221+ call assert_equal ( ' ' , v: completed_item [ ' user_data' ] )
222+
223+ let s: called_completedone = 1
224+ endfunction
225+
226+ function Test_CompleteDoneList ()
227+ au CompleteDone * :call <SID> CompleteDone_CheckCompletedItemList ()
228+
229+ set completefunc = <SID> CompleteDone_CompleteFuncList
230+ execute " normal a\<C-X>\<C-U>\<C-Y> "
231+ set completefunc &
232+
233+ call assert_equal ( ' ' , v: completed_item [ ' user_data' ] )
234+ call assert_true ( s: called_completedone )
235+
236+ let s: called_completedone = 0
237+ au ! CompleteDone
238+ endfunc
239+
120240" Check that when using feedkeys() typeahead does not interrupt searching for
121241" completions.
122242func Test_compl_feedkeys ()
0 commit comments