return { { "opencode-nvim", for_cat = "ai", keys = { -- stylua: ignore start { 'co', function() require('opencode').toggle() end, desc = 'Toggle opencode' }, { 'ca', function() require('opencode').ask() end, desc = 'Ask opencode', mode = { 'n', 'v' } }, { 'cA', function() require('opencode').ask('@buffer ', { submit = true }) end, desc = 'Ask opencode about current file', mode = { 'n', 'v' } }, { 'cn', function() require('opencode').command('session.new') end, desc = 'New session' }, { 'ce', function() require('opencode').prompt('Explain @this and its context') end, desc = 'Explain code at cursor', mode = { 'n', 'v' } }, { 'cr', function() require('opencode').prompt('Review @buffer for correctness and readability') end, desc = 'Review file' }, { 'cf', function() require('opencode').prompt('Fix @diagnostics') end, desc = 'Fix errors' }, { 'cp', function() require('opencode').prompt('Optimize @this for performance and readability') end, desc = 'Optimize selection', mode = 'v' }, { 'cd', function() require('opencode').prompt('Add documentation comments for @this') end, desc = 'Document selection', mode = 'v' }, { 'ct', function() require('opencode').prompt('Add tests for @this') end, desc = 'Test selection', mode = 'v' }, { 'cs', function() require('opencode').select() end, desc = 'Select opencode action', mode = { 'n', 'v' } }, -- stylua: ignore end }, before = function() vim.g.opencode_opts = { providers = { enabled = "terminal", tmux = {}, }, } end, }, }