opencode.lua
1 --- OpenCode: <leader>ot toggle, <leader>oa ask, etc. 2 return { 3 specs = { 4 { src = 'https://github.com/NickvanDyke/opencode.nvim', name = 'opencode.nvim' }, 5 { src = 'https://github.com/folke/snacks.nvim', name = 'snacks.nvim' }, 6 }, 7 config = function() 8 local opencode = require('opencode') 9 if type(opencode) ~= 'table' then 10 return 11 end 12 vim.keymap.set('n', '<leader>ot', function() 13 opencode.toggle() 14 end, { desc = 'Toggle opencode' }) 15 vim.keymap.set({ 'n', 'v' }, '<leader>oa', function() 16 opencode.ask() 17 end, { desc = 'Ask opencode' }) 18 vim.keymap.set({ 'n', 'v' }, '<leader>oA', function() 19 opencode.ask('@file ') 20 end, { desc = 'Ask opencode about current file' }) 21 vim.keymap.set('n', '<leader>on', function() 22 opencode.command('/new') 23 end, { desc = 'New session' }) 24 vim.keymap.set('n', '<leader>oe', function() 25 opencode.prompt('Explain @cursor and its context') 26 end, { desc = 'Explain code near cursor' }) 27 vim.keymap.set('n', '<leader>or', function() 28 opencode.prompt('Review @file for correctness and readability') 29 end, { desc = 'Review file' }) 30 vim.keymap.set('n', '<leader>of', function() 31 opencode.prompt('Fix these @diagnostics') 32 end, { desc = 'Fix errors' }) 33 vim.keymap.set('v', '<leader>od', function() 34 opencode.prompt('Add documentation comments for @selection') 35 end, { desc = 'Document selection' }) 36 vim.keymap.set('v', '<leader>ot', function() 37 opencode.prompt('Add tests for @selection') 38 end, { desc = 'Test selection' }) 39 vim.keymap.set('v', '<leader>oo', function() 40 opencode.prompt('Optimize @selection for performance and readability') 41 end, { desc = 'Optimize selection' }) 42 end, 43 }