From 46785526a63b401d812de79fbbecca26414dc8e8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 27 May 2024 08:42:30 +0200 Subject: [PATCH] feat(extras): added extra for CopilotChat.nvim --- .../plugins/extras/coding/copilot-chat.lua | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/coding/copilot-chat.lua diff --git a/lua/lazyvim/plugins/extras/coding/copilot-chat.lua b/lua/lazyvim/plugins/extras/coding/copilot-chat.lua new file mode 100644 index 00000000..7297d890 --- /dev/null +++ b/lua/lazyvim/plugins/extras/coding/copilot-chat.lua @@ -0,0 +1,91 @@ +return { + { + "CopilotC-Nvim/CopilotChat.nvim", + branch = "canary", + cmd = "CopilotChat", + opts = { + model = "gpt-4", + auto_insert_mode = true, + window = { + width = 0.4, + }, + selection = function(source) + local select = require("CopilotChat.select") + return select.visual(source) or select.buffer(source) + end, + }, + keys = { + { + "aa", + function() + return require("CopilotChat").toggle() + end, + desc = "Toggle (CopilotChat)", + }, + { + "ax", + function() + return require("CopilotChat").clear() + end, + desc = "Clear (CopilotChat)", + }, + { + "aq", + function() + local input = vim.fn.input("Quick Chat: ") + if input ~= "" then + require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer }) + end + end, + desc = "Quick Chat (CopilotChat)", + }, + }, + init = function() + LazyVim.on_load("which-key.nvim", function() + vim.schedule(function() + require("which-key").register({ a = { name = "+CopilotChat (AI)" } }, { prefix = "" }) + end) + end) + end, + config = function(_, opts) + vim.api.nvim_create_autocmd("BufEnter", { + pattern = "copilot-chat", + callback = function() + vim.opt_local.relativenumber = false + vim.opt_local.number = false + end, + }) + require("CopilotChat").setup(opts) + end, + }, + + { + "nvim-telescope/telescope.nvim", + optional = true, + keys = { + -- Show help actions with telescope + { + "ad", + function() + local actions = require("CopilotChat.actions") + local help = actions.help_actions() + if not help then + LazyVim.warn("No diagnostics found on the current line") + return + end + require("CopilotChat.integrations.telescope").pick(help) + end, + desc = "Diagnostic Help (CopilotChat)", + }, + -- Show prompts actions with telescope + { + "ap", + function() + local actions = require("CopilotChat.actions") + require("CopilotChat.integrations.telescope").pick(actions.prompt_actions()) + end, + desc = "Prompt Actions (CopilotChat)", + }, + }, + }, +}