mirror of
https://github.com/LazyVim/LazyVim.git
synced 2025-07-16 12:24:36 +02:00
The copilot-chat filetype is added to the global list of filetypes that should ignore LSP keymaps, preventing keymap conflicts in the chat interface.
98 lines
2.6 KiB
Lua
98 lines
2.6 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 = "main",
|
|
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,
|
|
question_header = " " .. user .. " ",
|
|
answer_header = " Copilot ",
|
|
window = {
|
|
width = 0.4,
|
|
},
|
|
}
|
|
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 prompts actions with telescope
|
|
{ "<leader>ap", M.pick("prompt"), desc = "Prompt Actions (CopilotChat)", mode = { "n", "v" } },
|
|
},
|
|
config = function(_, opts)
|
|
local chat = require("CopilotChat")
|
|
|
|
vim.api.nvim_create_autocmd("BufEnter", {
|
|
pattern = "copilot-chat",
|
|
callback = function()
|
|
vim.opt_local.relativenumber = false
|
|
vim.opt_local.number = false
|
|
end,
|
|
})
|
|
|
|
-- Add copilot-chat to the list of filetypes that should ignore LSP keymaps
|
|
vim.g.keymaps_lsp_ignore_ft = vim.list_extend(vim.g.keymaps_lsp_ignore_ft or {}, { "copilot-chat" })
|
|
|
|
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,
|
|
},
|
|
}
|