@@ -18,6 +18,7 @@ local codeium_status = "idle"
1818--- @field cancel function
1919--- @field request_id number
2020--- @field request_data table
21+ --- @field rendered boolean | nil
2122
2223--- @type Completions | nil
2324local completions
@@ -173,7 +174,7 @@ local function completion_inserter(current_completion, insert_text)
173174
174175 server .accept_completion (current_completion .completion .completionId )
175176
176- return ' <C-g>u' .. delete_range .. insert_text .. cursor_text
177+ return " <C-g>u" .. delete_range .. insert_text .. cursor_text
177178end
178179
179180function M .accept ()
@@ -225,10 +226,12 @@ local function render_current_completion()
225226 end
226227
227228 local current_completion = M .get_current_completion_item ()
228- if current_completion == nil then
229+ if current_completion == nil or not completions then
229230 return " "
230231 end
231232
233+ completions .rendered = true
234+
232235 local parts = current_completion .completionParts or {}
233236
234237 local inline_cumulative_cols = 0
@@ -386,7 +389,7 @@ local function get_document(buf_id, cur_line, cur_col)
386389end
387390
388391--- @param opts { bufnr : number , timer : any }?
389- function M .complete (opts )
392+ function M .complete (opts , force_render )
390393 if opts then
391394 if opts .timer ~= idle_timer then
392395 return
@@ -399,6 +402,10 @@ function M.complete(opts)
399402 end
400403 end
401404
405+ if force_render == nil then
406+ force_render = false
407+ end
408+
402409 if idle_timer then
403410 vim .fn .timer_stop (idle_timer )
404411 idle_timer = nil
@@ -452,7 +459,7 @@ function M.complete(opts)
452459 end
453460
454461 if json and json .state and json .state .state == " CODEIUM_STATE_SUCCESS" and json .completionItems then
455- M .handle_completions (json .completionItems )
462+ M .handle_completions (json .completionItems , force_render )
456463 end
457464 end
458465 )
@@ -463,14 +470,17 @@ function M.complete(opts)
463470 }
464471end
465472
466- function M .handle_completions (completion_items )
473+ function M .handle_completions (completion_items , force_render )
467474 if not completions then
468475 return
469476 end
470477 completions .items = completion_items
471478 completions .index = 0
479+ completions .rendered = false
472480 codeium_status = " completions"
473- render_current_completion ()
481+ if (not config .options .virtual_text .manual_render ) or force_render then
482+ render_current_completion ()
483+ end
474484end
475485
476486function M .filetype_enabled (bufnr )
@@ -494,10 +504,16 @@ function M.debounced_complete()
494504end
495505
496506function M .cycle_or_complete ()
497- if M .get_current_completion_item () == nil then
498- M .complete ()
507+ local current_completions = M .get_current_completion_item ()
508+
509+ if current_completions == nil then
510+ M .complete (nil , true )
499511 else
500- M .cycle_completions (1 )
512+ if completions and completions .rendered then
513+ M .cycle_completions (1 )
514+ else
515+ render_current_completion ()
516+ end
501517 end
502518end
503519
0 commit comments