return { { "nickjvandyke/opencode.nvim", version = "v0.10.1", dependencies = { { ---@module "snacks" "folke/snacks.nvim", optional = true, opts = { input = {}, -- Enhances `ask()` picker = { -- Enhances `select()` actions = { opencode_send = function(...) return require("opencode").snacks_picker_send(...) end, }, win = { input = { keys = { [""] = { "opencode_send", mode = { "n", "i" } }, }, }, }, }, }, }, }, config = function() local opencode_cmd = "opencode --port" ---@type snacks.terminal.Opts local snacks_terminal_opts = { win = { position = "right", enter = false, on_win = function(win) -- Set up keymaps and cleanup for an arbitary terminal require("opencode.terminal").setup(win.win) end, }, } ---@type opencode.Opts vim.g.opencode_opts = { -- Specific configuration around opencode server = { start = function() require("snacks.terminal").open(opencode_cmd, snacks_terminal_opts) end, stop = function() require("snacks.terminal").get(opencode_cmd, snacks_terminal_opts):close() end, toggle = function() require("snacks.terminal").toggle(opencode_cmd, snacks_terminal_opts) end, }, lsp = { enabled = true, }, } vim.o.autoreload = true -- Required for `opts.events.reload` end, }, }