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" on the type or field. } -- 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", "t" }, "", function() require("opencode").toggle() end, { desc = "Toggle opencode" }) vim.keymap.set({ "n", "x" }, "go", function() return require("opencode").operator("@this ") end, { desc = "Add range to opencode", expr = true }) vim.keymap.set("n", "goo", function() return require("opencode").operator("@this ") .. "_" end, { desc = "Add line to opencode", expr = true }) vim.keymap.set("n", "", function() require("opencode").command("session.half.page.up") end, { desc = "Scroll opencode up" }) vim.keymap.set("n", "", function() require("opencode").command("session.half.page.down") end, { desc = "Scroll opencode down" }) -- You may want these if you stick with the opinionated "" and "" above — otherwise consider "o…". vim.keymap.set("n", "+", "", { desc = "Increment under cursor", noremap = true }) vim.keymap.set("n", "-", "", { desc = "Decrement under cursor", noremap = true }) end, }