codecompanion
This commit is contained in:
71
lua/codecompanion/fidget-spinner.lua
Normal file
71
lua/codecompanion/fidget-spinner.lua
Normal 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
|
||||
170
lua/plugins.lua
170
lua/plugins.lua
@@ -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' }
|
||||
|
||||
-- }}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user