From 168e01100ed7b4a16ccbe7da94a1378fb4edf6f8 Mon Sep 17 00:00:00 2001 From: Jonas Widen Date: Mon, 17 Mar 2025 07:34:06 +0100 Subject: [PATCH] debug completion --- lua/gemini/completion.lua | 11 +++++++++++ lua/gemini/init.lua | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/lua/gemini/completion.lua b/lua/gemini/completion.lua index 3870804..cfb638f 100644 --- a/lua/gemini/completion.lua +++ b/lua/gemini/completion.lua @@ -183,6 +183,8 @@ function M.accept_suggestion() end function M.trigger_completion() + debug_print("Triggering completion...") + -- Clear any existing timer if current_suggestion.timer then vim.fn.timer_stop(current_suggestion.timer) @@ -190,6 +192,8 @@ function M.trigger_completion() -- Set up debounce timer current_suggestion.timer = vim.fn.timer_start(300, function() + debug_print("Timer fired, checking conditions...") + -- Get current buffer and cursor info local cursor = vim.api.nvim_win_get_cursor(0) local line = cursor[1] @@ -199,8 +203,11 @@ function M.trigger_completion() local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false) local current_line = lines[line] + debug_print("Current line: %s, col: %d", current_line or "nil", col) + -- Don't trigger completion if line is empty or cursor is at the start if not current_line or col == 0 or current_line:match("^%s*$") then + debug_print("Skipping: empty line or cursor at start") clear_suggestion() return end @@ -208,14 +215,18 @@ function M.trigger_completion() -- Get text before cursor on current line local prefix = string.sub(current_line, 1, col) + debug_print("Prefix: %s", prefix) + -- Don't trigger on certain conditions if prefix:match("^%s*$") or -- empty or whitespace prefix:match("[%s%-]$") or -- ends with space or dash #prefix < 3 then -- too short + debug_print("Skipping: prefix conditions not met") clear_suggestion() return end + debug_print("Preparing context...") -- Construct context with line numbers and cursor position local context = {} local cursor_line = line diff --git a/lua/gemini/init.lua b/lua/gemini/init.lua index 5f382ca..afff112 100644 --- a/lua/gemini/init.lua +++ b/lua/gemini/init.lua @@ -41,10 +41,27 @@ end function M.setup(opts) config.setup(opts) - pcall(vim.treesitter.language.require_language, "markdown") - + -- Set up completion completion.setup() + + -- Enable completion by default for all buffers + vim.api.nvim_create_autocmd("BufEnter", { + pattern = "*", + callback = function() + vim.b.gemini_completion_enabled = true + end + }) + + -- Completion keymaps + vim.keymap.set('i', 'gg', function() + debug_print("Keymap triggered") + -- Enable completion for current buffer + vim.b.gemini_completion_enabled = true + completion.trigger_completion() + end, { desc = 'Trigger Gemini completion' }) + + pcall(vim.treesitter.language.require_language, "markdown") -- Set up commands vim.api.nvim_create_user_command("Gemini", function(opts) @@ -82,10 +99,17 @@ function M.setup(opts) vim.notify("Chat history cleared", vim.log.levels.INFO) end, { desc = "Clear Gemini chat history" }) - -- Completion keymaps - vim.keymap.set('i', 'gg', function() - completion.trigger_completion() - end, { desc = 'Trigger Gemini completion' }) + -- Add a command to toggle completion + vim.api.nvim_create_user_command("GeminiToggleCompletion", function() + vim.b.gemini_completion_enabled = not vim.b.gemini_completion_enabled + vim.notify( + string.format("Gemini completion %s", + vim.b.gemini_completion_enabled and "enabled" or "disabled"), + vim.log.levels.INFO + ) + end, { + desc = "Toggle Gemini completion" + }) end function M.complete(findstart, base)