From dcef95df3a5fe54b50b50f6edd48fbfa55825f51 Mon Sep 17 00:00:00 2001 From: Steven Crawford Date: Thu, 8 Jan 2026 11:04:01 -0600 Subject: [PATCH] updates for codecompanion --- lua/shelbybark/plugins/codecompanion.lua | 29 ++++---- .../plugins/codecompanion/fidget-spinner.lua | 71 +++++++++++++++++++ 2 files changed, 87 insertions(+), 13 deletions(-) create mode 100644 lua/shelbybark/plugins/codecompanion/fidget-spinner.lua diff --git a/lua/shelbybark/plugins/codecompanion.lua b/lua/shelbybark/plugins/codecompanion.lua index daa1548..6fde3c2 100644 --- a/lua/shelbybark/plugins/codecompanion.lua +++ b/lua/shelbybark/plugins/codecompanion.lua @@ -11,17 +11,20 @@ return { -- "nvim-lualine/lualine.nvim", }, event = "VeryLazy", -- Lazy load the plugin + init = function() + require("shelbybark.plugins.codecompanion.fidget-spinner"):init() + end, config = function() require("codecompanion").setup({ ignore_warnings = true, - strategies = { - chat = { - adapter = "anthropic", - }, - inline = { - adapter = "anthropic", - }, + strategies = { + chat = { + adapter = "anthropic_haiku", }, + inline = { + adapter = "anthropic_haiku", + }, + }, adapters = { http = { anthropic = function() @@ -82,15 +85,15 @@ return { -- Optional: Set up keymaps vim.api.nvim_set_keymap( "n", - "cc", - "CodeCompanionChat anthropic_haiku Toggle", - { noremap = true, silent = true, desc = "Chat with Claude Haiku" } + "cc", + "CodeCompanionChat anthropic_haiku Toggle", + { noremap = true, silent = true, desc = "Chat with Claude Haiku" } ) vim.api.nvim_set_keymap( "v", - "cc", - "CodeCompanionChat anthropic_haiku Toggle", - { noremap = true, silent = true, desc = "Chat with Claude Haiku" } + "cc", + "CodeCompanionChat anthropic_haiku Toggle", + { noremap = true, silent = true, desc = "Chat with Claude Haiku" } ) vim.api.nvim_set_keymap("n", "ca", "CodeCompanionActions", { noremap = true, silent = true }) vim.api.nvim_set_keymap("v", "ca", "CodeCompanionActions", { noremap = true, silent = true }) diff --git a/lua/shelbybark/plugins/codecompanion/fidget-spinner.lua b/lua/shelbybark/plugins/codecompanion/fidget-spinner.lua new file mode 100644 index 0000000..c277722 --- /dev/null +++ b/lua/shelbybark/plugins/codecompanion/fidget-spinner.lua @@ -0,0 +1,71 @@ +local progress = require("fidget.progress") + +local M = {} + +function M:init() + local group = vim.api.nvim_create_augroup("CodeCompanionFidgetHooks", {}) + + vim.api.nvim_create_autocmd({ "User" }, { + pattern = "CodeCompanionRequestStarted", + group = group, + callback = function(request) + local handle = M:create_progress_handle(request) + M:store_progress_handle(request.data.id, handle) + end, + }) + + vim.api.nvim_create_autocmd({ "User" }, { + pattern = "CodeCompanionRequestFinished", + group = group, + callback = function(request) + local handle = M:pop_progress_handle(request.data.id) + if handle then + M:report_exit_status(handle, request) + handle:finish() + end + end, + }) +end + +M.handles = {} + +function M:store_progress_handle(id, handle) + M.handles[id] = handle +end + +function M:pop_progress_handle(id) + local handle = M.handles[id] + M.handles[id] = nil + return handle +end + +function M:create_progress_handle(request) + return progress.handle.create({ + title = " Requesting assistance", + message = "In progress...", + lsp_client = { + name = M:llm_role_title(request.data.adapter), + }, + }) +end + +function M:llm_role_title(adapter) + local parts = {} + table.insert(parts, adapter.formatted_name) + if adapter.model and adapter.model ~= "" then + table.insert(parts, "(" .. adapter.model .. ")") + end + return table.concat(parts, " ") +end + +function M:report_exit_status(handle, request) + if request.data.status == "success" then + handle.message = "Completed" + elseif request.data.status == "error" then + handle.message = " Error" + else + handle.message = "󰜺 Cancelled" + end +end + +return M \ No newline at end of file