update codecompanion fidget spinner

This commit is contained in:
sudacode 2025-02-16 13:39:54 -08:00
parent e6e69a5d7c
commit ef124ea808
5 changed files with 322 additions and 280 deletions

View File

@ -2,7 +2,7 @@
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"any-jump.vim": { "branch": "master", "commit": "f95674d9a4251ac02f452d5f1861e4422f4652c7" },
"auto-format.nvim": { "branch": "main", "commit": "1e3c069753d4b0960b351292c1a01af1b122907c" },
"blink.cmp": { "branch": "main", "commit": "cc2f10e9d8b6420324d4743a4d9a428de427e2cf" },
"blink.cmp": { "branch": "main", "commit": "93052a80660d741a051d43dc487c8bf7a2530b11" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "0b2437bcc12b4021614dc41fcea9d0f136d94063" },
"cmp-async-path": { "branch": "main", "commit": "d6d1ffa2075039632a2d71e8fa139818e15ac757" },
@ -11,7 +11,7 @@
"cmp-nvim-lsp-document-symbol": { "branch": "main", "commit": "f94f7ba948e32cd302caba1c2ca3f7c697fb4fcf" },
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"codecompanion.nvim": { "branch": "main", "commit": "f1f05fa75dcb6016b2f2af121f1558ebcaf35ef9" },
"codecompanion.nvim": { "branch": "main", "commit": "0ec5921712a426607be0c3c9f0a54b2c86467d4f" },
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
"copilot-lualine": { "branch": "main", "commit": "dc4b8ed0f75bc2557b3158c526624bf04ad233ea" },
"copilot.lua": { "branch": "master", "commit": "30321e33b03cb924fdcd6a806a0dc6fa0b0eafb9" },
@ -19,7 +19,7 @@
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
"gitsigns.nvim": { "branch": "main", "commit": "8b00147519d6f8353867d5d0b55f587306b0cfb6" },
"goto-preview": { "branch": "main", "commit": "4972fcd01c568c2ae981f3f48182e7832ed544ec" },
"goto-preview": { "branch": "main", "commit": "4751e70a6ebce4fb78327b097cb8fdff55f38f3a" },
"image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" },
"indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" },
"lazy.nvim": { "branch": "main", "commit": "e5e9bf48211a13d9ee6c1077c88327c49c1ab4a0" },
@ -39,7 +39,7 @@
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-notify": { "branch": "master", "commit": "22f29093eae7785773ee9d543f8750348b1a195c" },
"nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" },
"nvim-treesitter": { "branch": "master", "commit": "38e46a6d7ade5c8718f77b2b9fd98a0f7ab32c1e" },
"nvim-treesitter": { "branch": "master", "commit": "2cade9e3d105732b794bc37e7cb2dc53b1cf99dc" },
"nvim-web-devicons": { "branch": "master", "commit": "1020869742ecb191f260818234517f4a1515cfe8" },
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },

View File

@ -6,6 +6,26 @@ return {
"j-hui/fidget.nvim",
},
opts = {
log_level = "DEBUG",
adapters = {
copilot = function()
return require("codecompanion.adapters").extend("copilot", {
schema = {
model = {
default = "o3-mini-2025-01-31",
choices = {
["o3-mini-2025-01-31"] = { opts = { can_reason = true } },
["o1-2024-12-17"] = { opts = { can_reason = true } },
["o1-mini-2024-09-12"] = { opts = { can_reason = true } },
"claude-3.5-sonnet",
"gpt-4o-2024-08-06",
"gemini-2.0-flash-001",
},
},
},
})
end,
},
strategies = {
chat = {
adapter = "copilot",
@ -16,13 +36,20 @@ return {
},
display = {
action_palette = {
provider = "default",
width = 150,
heigth = 85,
provider = "telescope",
width = 75,
heigth = 45,
},
chat = {
layout = "vertical",
border = "single",
intro_message = "Welcome to CodeCompanion ✨! Press ? for options",
show_header_separator = false, -- Show header separators in the chat buffer? Set this to false if you're using an external markdown formatting plugin
separator = "", -- The separator between the different messages in the chat buffer
show_references = true, -- Show references (from slash commands and variables) in the chat buffer?
show_settings = true, -- Show LLM settings at the top of the chat buffer?
show_token_count = true, -- Show the token count for each response?
start_in_insert_mode = false, -- Open the chat buffer in insert mode?
},
diff = {
enabled = true,

View File

@ -1,5 +1,5 @@
local progress = require("fidget.progress")
local notify = require("notify")
local spinner_frames = { "", "", "", "", "", "", "", "", "", "" }
local M = {}
function M:init()
@ -40,31 +40,46 @@ function M:pop_progress_handle(id)
end
function M:create_progress_handle(request)
return progress.handle.create({
title = " Requesting assistance (" .. request.data.strategy .. ")",
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 .. ")")
local title = " Requesting assistance (" .. request.data.strategy .. ")"
local idx = 1
local notification_id = notify(spinner_frames[idx] .. " In progress...", "info", { title = title, timeout = false })
local handle = { notification_id = notification_id, title = title }
local timer = vim.loop.new_timer()
if timer == nil then
return
end
return table.concat(parts, " ")
timer:start(
0,
100,
vim.schedule_wrap(function()
idx = idx % #spinner_frames + 1
local new_id = notify(
spinner_frames[idx] .. " In progress...",
"info",
{ replace = handle.notification_id, title = title, timeout = false }
)
handle.notification_id = new_id
end)
)
handle.timer = timer
handle.finish = function()
if handle.timer then
handle.timer:stop()
handle.timer:close()
handle.timer = nil
end
end
return handle
end
function M:report_exit_status(handle, request)
local title = handle.title or (" Requesting assistance (" .. request.data.strategy .. ")")
if request.data.status == "success" then
handle.message = "Completed"
notify("Completed", "info", { replace = handle.notification_id, title = title })
elseif request.data.status == "error" then
handle.message = " Error"
notify(" Error", "error", { replace = handle.notification_id, title = title })
else
handle.message = "󰜺 Cancelled"
notify("󰜺 Cancelled", "warn", { replace = handle.notification_id, title = title })
end
end

View File

@ -51,7 +51,7 @@ return {
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
require('cmp').setup({
require("cmp").setup({
snippet = {
expand = function(args)
-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
@ -193,7 +193,7 @@ return {
{ name = "lazydev", group_index = 0 },
{ name = "nvim_lsp", group_index = 1 },
{ name = "copilot", group_index = 1 },
{ name = "codecompanion", group_index = 1 },
{ name = "codecompanion", group_index = 2 },
{ name = "async_path", group_index = 2 },
-- { name = "path", group_index = 2 },
-- { name = "cmdline", option = { ignore_cmds = { "Man", "!" } } },
@ -259,5 +259,5 @@ return {
},
},
})
end
end,
}

View File

@ -93,7 +93,7 @@ return {
-- Optional, by default when you use `:ObsidianFollowLink` on a link to an image
-- file it will be ignored but you can customize this behavior here.
---@param img string
follow_img_func = function(img)
follow_img_func = function(url)
-- vim.fn.jobstart({ "qlmanage", "-p", img }) -- Mac OS quick look preview
vim.fn.jobstart({ "xdg-open", url }) -- linux
-- vim.cmd(':silent exec "!start ' .. url .. '"') -- Windows