diff --git a/lua/lazyvim/plugins/extras/ai/opencode.lua b/lua/lazyvim/plugins/extras/ai/opencode.lua new file mode 100644 index 00000000..034364b8 --- /dev/null +++ b/lua/lazyvim/plugins/extras/ai/opencode.lua @@ -0,0 +1,43 @@ +return { + { + "NickvanDyke/opencode.nvim", + dependencies = { + -- Recommended for `ask()` and `select()`. + -- Required for `snacks` provider. + ---@module 'snacks' <- Loads `snacks.nvim` types for configuration intellisense. + { "folke/snacks.nvim", opts = { input = {}, picker = {}, terminal = {} } }, + }, + config = function() + ---@type opencode.Opts + vim.g.opencode_opts = { + -- Your configuration, if any — see `lua/opencode/config.lua`, or "goto definition". + } + + -- Required for `opts.events.reload`. + vim.o.autoread = true + + -- Recommended/example keymaps. + vim.keymap.set({ "n", "x" }, "", function() + require("opencode").ask("@this: ", { submit = true }) + end, { desc = "Ask opencode" }) + vim.keymap.set({ "n", "x" }, "", function() + require("opencode").select() + end, { desc = "Execute opencode action…" }) + vim.keymap.set({ "n", "x" }, "ga", function() + require("opencode").prompt("@this") + end, { desc = "Add to opencode" }) + vim.keymap.set({ "n", "t" }, "", function() + require("opencode").toggle() + end, { desc = "Toggle opencode" }) + vim.keymap.set("n", "", function() + require("opencode").command("session.half.page.up") + end, { desc = "opencode half page up" }) + vim.keymap.set("n", "", function() + require("opencode").command("session.half.page.down") + end, { desc = "opencode half page down" }) + -- You may want these if you stick with the opinionated "" and "" above — otherwise consider "o". + vim.keymap.set("n", "+", "", { desc = "Increment", noremap = true }) + vim.keymap.set("n", "-", "", { desc = "Decrement", noremap = true }) + end, + }, +}