Skip to content

Commit 816503e

Browse files
committed
Add and implement manual_render
1 parent 27d2b1c commit 816503e

2 files changed

Lines changed: 26 additions & 9 deletions

File tree

lua/codeium/config.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ function M.defaults()
2929
filetypes = {},
3030
default_filetype_enabled = true,
3131
manual = false,
32+
manual_render = false,
3233
idle_delay = 75,
3334
virtual_text_priority = 65535,
3435
map_keys = true,

lua/codeium/virtual_text.lua

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2324
local 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
177178
end
178179

179180
function 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)
386389
end
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
}
464471
end
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
474484
end
475485

476486
function M.filetype_enabled(bufnr)
@@ -494,10 +504,16 @@ function M.debounced_complete()
494504
end
495505

496506
function 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
502518
end
503519

0 commit comments

Comments
 (0)