codecompanion

This commit is contained in:
2025-02-13 15:05:43 -08:00
parent 239756d583
commit 97110bcaad
7 changed files with 245 additions and 252 deletions

View File

@@ -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 (" .. 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 .. ")")
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

View File

@@ -90,167 +90,19 @@ require('packer').startup(function(use)
use { "zbirenbaum/copilot-cmp" }
-- }}}
-- CHATGPT {{{
use({
"jackMort/ChatGPT.nvim",
commit = "24bcca7",
config = function()
require("chatgpt").setup({
api_key_cmd = "cat /home/sudacode/.openaikey",
yank_register = "+",
edit_with_instructions = {
diff = false,
keymaps = {
close = "<C-c>",
accept = "<C-y>",
toggle_diff = "<C-d>",
toggle_settings = "<C-o>",
toggle_help = "<C-h>",
cycle_windows = "<Tab>",
use_output_as_input = "<C-i>"
}
},
chat = {
welcome_message = WELCOME_MESSAGE,
loading_text = "Loading, please wait ...",
question_sign = "", -- 🙂
answer_sign = "", -- 🤖
border_left_sign = "",
border_right_sign = "",
max_line_length = 120,
sessions_window = {
active_sign = "",
inactive_sign = "",
current_line_sign = "",
border = {
style = "rounded",
text = { top = " Sessions " }
},
win_options = {
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
}
},
keymaps = {
close = "<C-c>",
yank_last = "<C-y>",
yank_last_code = "<C-k>",
scroll_up = "<C-u>",
scroll_down = "<C-d>",
new_session = "<C-n>",
cycle_windows = "<Tab>",
cycle_modes = "<C-f>",
next_message = "<C-j>",
prev_message = "<C-k>",
select_session = "<Space>",
rename_session = "r",
delete_session = "d",
draft_message = "<C-r>",
edit_message = "e",
delete_message = "d",
toggle_settings = "<C-o>",
toggle_sessions = "<C-p>",
toggle_help = "<C-h>",
toggle_message_role = "<C-r>",
toggle_system_role_open = "<C-s>",
stop_generating = "<C-x>"
}
},
popup_layout = {
default = "center",
center = { width = "80%", height = "80%" },
right = { width = "30%", width_settings_open = "50%" }
},
popup_window = {
border = {
highlight = "FloatBorder",
style = "rounded",
text = { top = " ChatGPT " }
},
win_options = {
wrap = true,
linebreak = true,
foldcolumn = "1",
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
},
buf_options = { filetype = "markdown" }
},
system_window = {
border = {
highlight = "FloatBorder",
style = "rounded",
text = { top = " SYSTEM " }
},
win_options = {
wrap = true,
linebreak = true,
foldcolumn = "2",
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
}
},
popup_input = {
prompt = "",
border = {
highlight = "FloatBorder",
style = "rounded",
text = { top_align = "center", top = " Prompt " }
},
win_options = {
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
},
submit = "<C-Enter>",
submit_n = "<Enter>",
max_visible_lines = 20
},
settings_window = {
setting_sign = "",
border = { style = "rounded", text = { top = " Settings " } },
win_options = {
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
}
},
help_window = {
setting_sign = "",
border = { style = "rounded", text = { top = " Help " } },
win_options = {
winhighlight = "Normal:Normal,FloatBorder:FloatBorder"
}
},
openai_params = {
model = "gpt-3.5-turbo",
frequency_penalty = 0,
presence_penalty = 0,
max_tokens = 300,
temperature = 0,
top_p = 1,
n = 1
},
openai_edit_params = {
model = "gpt-3.5-turbo",
frequency_penalty = 0,
presence_penalty = 0,
temperature = 0,
top_p = 1,
n = 1
},
use_openai_functions_for_edits = false,
actions_paths = {},
show_quickfixes_cmd = "Trouble quickfix",
predefined_chat_gpt_prompts =
"https://raw.githubusercontent.com/f/awesome-chatgpt-prompts/main/prompts.csv",
highlights = {
help_key = "@symbol",
help_description = "@comment"
}
})
end,
"olimorris/codecompanion.nvim",
requires = {
"MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim"
}
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"j-hui/fidget.nvim"
},
init = function()
require("plugins.codecompanion.fidget-spinner"):init()
end,
})
-- }}}
use({
"iamcco/markdown-preview.nvim",
run = function() vim.fn["mkdp#util#install"]() end
@@ -290,9 +142,9 @@ require('packer').startup(function(use)
-- DADBOD {{{
use { 'tpope/vim-dadbod' }
use { 'kristijanhusak/vim-dadbod-ui' }
use { 'kristijanhusak/vim-dadbod-completion' }
-- use { 'tpope/vim-dadbod' }
-- use { 'kristijanhusak/vim-dadbod-ui' }
-- use { 'kristijanhusak/vim-dadbod-completion' }
-- }}}