return { "NickvanDyke/opencode.nvim", dependencies = { { "folke/snacks.nvim", opts = { input = {}, picker = {}, terminal = {} } }, }, keys = { { "aa", function() require("opencode").toggle() end, mode = { "n" }, desc = "Toggle OpenCode", }, { "as", function() require("opencode").select({ submit = true }) end, mode = { "n", "x" }, desc = "OpenCode select", }, { "ai", function() require("opencode").ask("", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode ask", }, { "aI", function() require("opencode").ask("@this: ", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode ask with context", }, { "ab", function() require("opencode").ask("@file ", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode ask about buffer", }, { "ap", function() require("opencode").prompt("@this", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode prompt", }, -- Built-in prompts { "ape", function() require("opencode").prompt("explain", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode explain", }, { "apf", function() require("opencode").prompt("fix", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode fix", }, { "apd", function() require("opencode").prompt("diagnose", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode diagnose", }, { "apr", function() require("opencode").prompt("review", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode review", }, { "apt", function() require("opencode").prompt("test", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode test", }, { "apo", function() require("opencode").prompt("optimize", { submit = true }) end, mode = { "n", "x" }, desc = "OpenCode optimize", }, }, config = function() vim.g.opencode_opts = { provider = { snacks = { win = { position = "left", }, }, }, } vim.o.autoread = true end, }