/ nvim / lua / plugins / opencode.lua
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  }