summaryrefslogtreecommitdiff
path: root/lua/plugins/ai.lua
diff options
context:
space:
mode:
authorbrustybee <bee@4d2.org>2026-03-09 17:02:03 +0530
committerbrustybee <bee@4d2.org>2026-03-09 17:02:03 +0530
commit972e5f9c68cc433c5fc26adf92cd25b293a3776a (patch)
treec5930854787316181d07854048d9627538017ceb /lua/plugins/ai.lua
One shot upload
Diffstat (limited to 'lua/plugins/ai.lua')
-rw-r--r--lua/plugins/ai.lua29
1 files changed, 29 insertions, 0 deletions
diff --git a/lua/plugins/ai.lua b/lua/plugins/ai.lua
new file mode 100644
index 0000000..0aa51d8
--- /dev/null
+++ b/lua/plugins/ai.lua
@@ -0,0 +1,29 @@
+return {
+ {
+ "opencode-nvim",
+ for_cat = "ai",
+ keys = {
+ -- stylua: ignore start
+ { '<leader>co', function() require('opencode').toggle() end, desc = 'Toggle opencode' },
+ { '<leader>ca', function() require('opencode').ask() end, desc = 'Ask opencode', mode = { 'n', 'v' } },
+ { '<leader>cA', function() require('opencode').ask('@buffer ', { submit = true }) end, desc = 'Ask opencode about current file', mode = { 'n', 'v' } },
+ { '<leader>cn', function() require('opencode').command('session.new') end, desc = 'New session' },
+ { '<leader>ce', function() require('opencode').prompt('Explain @this and its context') end, desc = 'Explain code at cursor', mode = { 'n', 'v' } },
+ { '<leader>cr', function() require('opencode').prompt('Review @buffer for correctness and readability') end, desc = 'Review file' },
+ { '<leader>cf', function() require('opencode').prompt('Fix @diagnostics') end, desc = 'Fix errors' },
+ { '<leader>cp', function() require('opencode').prompt('Optimize @this for performance and readability') end, desc = 'Optimize selection', mode = 'v' },
+ { '<leader>cd', function() require('opencode').prompt('Add documentation comments for @this') end, desc = 'Document selection', mode = 'v' },
+ { '<leader>ct', function() require('opencode').prompt('Add tests for @this') end, desc = 'Test selection', mode = 'v' },
+ { '<leader>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,
+ },
+}