From 554a304e5189fb35c2986ca8b47aad5a90bf5e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Guimar=C3=A3es?= Date: Tue, 6 Aug 2024 18:35:48 -0300 Subject: [PATCH] feat(ai): add `codecompanion.nvim` as alternative to `copilotchat.nvim` --- .../plugins/extras/coding/codecompanion.lua | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/coding/codecompanion.lua diff --git a/lua/lazyvim/plugins/extras/coding/codecompanion.lua b/lua/lazyvim/plugins/extras/coding/codecompanion.lua new file mode 100644 index 00000000..f0a9e3a4 --- /dev/null +++ b/lua/lazyvim/plugins/extras/coding/codecompanion.lua @@ -0,0 +1,47 @@ +return { + { + "olimorris/codecompanion.nvim", + cmd = { "CodeCompanion", "CodeCompanionActions", "CodeCompanionToggle", "CodeCompanionAdd", "CodeCompanionChat" }, + + opts = function() + local options = require("codecompanion.config") + local user = vim.env.USER or "User" + + options.strategies.chat.roles = { + llm = " CodeCompanion", + user = " " .. user:sub(1, 1):upper() .. user:sub(2), + } + + options.strategies.chat.keymaps.close.modes = { + n = "q", + i = "", + } + options.strategies.chat.keymaps.stop.modes.n = "" + options.strategies.chat.keymaps.send.modes.n = "gS" + + return options + end, + + keys = { + { "a", "", desc = "+ai", mode = { "n", "v" } }, + { "aA", "CodeCompanionActions", mode = { "n", "v" }, desc = "Prompt Actions (CodeCompanion)" }, + { "aa", "CodeCompanionToggle", mode = { "n", "v" }, desc = "Toggle (CodeCompanion)" }, + { "ac", "CodeCompanionAdd", mode = "v", desc = "Add code to CodeCompanion" }, + { "ap", "CodeCompanion", mode = "n", desc = "Inline prompt (CodeCompanion)" }, + }, + }, + + -- Edgy integration + { + "folke/edgy.nvim", + optional = true, + opts = function(_, opts) + opts.right = opts.right or {} + table.insert(opts.right, { + ft = "codecompanion", + title = "CodeCompanion Chat", + size = { width = 50 }, + }) + end, + }, +}