@@ -9,6 +9,9 @@ let s:has_ghost_text = has('nvim-0.6') && exists('*nvim_buf_get_mark')
99
1010let s: hlgroup = ' CopilotSuggestion'
1111
12+ let b: _current_copilot_suggestion_index = 0
13+ let b: _current_copilot_suggestions = {}
14+
1215if len ($XDG_CONFIG_HOME )
1316 let s: config_root = $XDG_CONFIG_HOME
1417elseif has (' win32' )
@@ -207,7 +210,7 @@ function! copilot#Complete(...) abort
207210 let doc = copilot#doc#Get ()
208211 if ! exists (' g:_copilot_completion.params.doc' ) || g: _copilot_completion .params.doc !=# doc
209212 let g: _copilot_completion =
210- \ copilot#agent#Request (' getCompletions ' , {' doc' : doc, ' options' : {}})
213+ \ copilot#agent#Request (' getCompletionsCycling ' , {' doc' : doc, ' options' : {}})
211214 let g: _copilot_last_completion = g: _copilot_completion
212215 endif
213216 let completion = g: _copilot_completion
@@ -337,14 +340,35 @@ endfunction
337340
338341function ! s: HandleTriggerResult (result) abort
339342 if exists (' a:result.completions' )
343+ if g: copilot_echo_num_completions
344+ echo ' copilot:' . len (a: result .completions) . ' completions'
345+ endif
346+ let b: _current_copilot_suggestions = a: result .completions
347+ let b: _current_copilot_suggestion_index = 0
340348 let b: _copilot_suggestion = get (a: result .completions, 0 , {})
341349 else
342350 let b: _copilot_suggestion = {}
351+ let b: _current_copilot_suggestion_index = 0
352+ let b: _current_copilot_suggestions = {}
343353 endif
344354 let b: _copilot_completion = b: _copilot_suggestion
345355 call s: UpdatePreview ()
346356endfunction
347357
358+ function ! copilot#NextResult (direction)
359+ let index = b: _current_copilot_suggestion_index + a: direction
360+ if index < 0
361+ let b: _current_copilot_suggestion_index = len (b: _current_copilot_suggestions ) - 1
362+ elseif index >= len (b: _current_copilot_suggestions )
363+ let b: _current_copilot_suggestion_index = 0
364+ else
365+ let b: _current_copilot_suggestion_index = index
366+ endif
367+ let b: _copilot_suggestion = get (b: _current_copilot_suggestions , b: _current_copilot_suggestion_index , {})
368+ call s: UpdatePreview ()
369+ return " "
370+ endfunction
371+
348372function ! s: Trigger (bufnr , timer) abort
349373 let timer = get (g: , ' _copilot_timer' , -1 )
350374 unlet ! g: _copilot_timer
0 commit comments