
## Description
CopilotChat upgraded to gpt-4o early in August
2c4d2954f9
but the LazyVim plugin is still running with opts of gpt-4. I thought
about changing model to the latest here, but I feel this means more
maintainability for an option which generally is expected to point to
the latest model, and the upstream opts of CopilotChat seem to keep up
with that already.
## Related Issue(s)
None
## Screenshots
None
## Checklist
- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
104 lines
2.8 KiB
Lua
104 lines
2.8 KiB
Lua
local M = {}
|
|
|
|
---@param kind string
|
|
function M.pick(kind)
|
|
return function()
|
|
local actions = require("CopilotChat.actions")
|
|
local items = actions[kind .. "_actions"]()
|
|
if not items then
|
|
LazyVim.warn("No " .. kind .. " found on the current line")
|
|
return
|
|
end
|
|
local ok = pcall(require, "fzf-lua")
|
|
require("CopilotChat.integrations." .. (ok and "fzflua" or "telescope")).pick(items)
|
|
end
|
|
end
|
|
|
|
return {
|
|
{
|
|
"CopilotC-Nvim/CopilotChat.nvim",
|
|
branch = "canary",
|
|
cmd = "CopilotChat",
|
|
opts = function()
|
|
local user = vim.env.USER or "User"
|
|
user = user:sub(1, 1):upper() .. user:sub(2)
|
|
return {
|
|
auto_insert_mode = true,
|
|
show_help = true,
|
|
question_header = " " .. user .. " ",
|
|
answer_header = " Copilot ",
|
|
window = {
|
|
width = 0.4,
|
|
},
|
|
selection = function(source)
|
|
local select = require("CopilotChat.select")
|
|
return select.visual(source) or select.buffer(source)
|
|
end,
|
|
}
|
|
end,
|
|
keys = {
|
|
{ "<c-s>", "<CR>", ft = "copilot-chat", desc = "Submit Prompt", remap = true },
|
|
{ "<leader>a", "", desc = "+ai", mode = { "n", "v" } },
|
|
{
|
|
"<leader>aa",
|
|
function()
|
|
return require("CopilotChat").toggle()
|
|
end,
|
|
desc = "Toggle (CopilotChat)",
|
|
mode = { "n", "v" },
|
|
},
|
|
{
|
|
"<leader>ax",
|
|
function()
|
|
return require("CopilotChat").reset()
|
|
end,
|
|
desc = "Clear (CopilotChat)",
|
|
mode = { "n", "v" },
|
|
},
|
|
{
|
|
"<leader>aq",
|
|
function()
|
|
local input = vim.fn.input("Quick Chat: ")
|
|
if input ~= "" then
|
|
require("CopilotChat").ask(input)
|
|
end
|
|
end,
|
|
desc = "Quick Chat (CopilotChat)",
|
|
mode = { "n", "v" },
|
|
},
|
|
-- Show help actions with telescope
|
|
{ "<leader>ad", M.pick("help"), desc = "Diagnostic Help (CopilotChat)", mode = { "n", "v" } },
|
|
-- Show prompts actions with telescope
|
|
{ "<leader>ap", M.pick("prompt"), desc = "Prompt Actions (CopilotChat)", mode = { "n", "v" } },
|
|
},
|
|
config = function(_, opts)
|
|
local chat = require("CopilotChat")
|
|
require("CopilotChat.integrations.cmp").setup()
|
|
|
|
vim.api.nvim_create_autocmd("BufEnter", {
|
|
pattern = "copilot-chat",
|
|
callback = function()
|
|
vim.opt_local.relativenumber = false
|
|
vim.opt_local.number = false
|
|
end,
|
|
})
|
|
|
|
chat.setup(opts)
|
|
end,
|
|
},
|
|
|
|
-- Edgy integration
|
|
{
|
|
"folke/edgy.nvim",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
opts.right = opts.right or {}
|
|
table.insert(opts.right, {
|
|
ft = "copilot-chat",
|
|
title = "Copilot Chat",
|
|
size = { width = 50 },
|
|
})
|
|
end,
|
|
},
|
|
}
|