diff --git a/nvim/lua/config/keys.lua b/nvim/lua/config/keys.lua index 39b0f96..0797519 100644 --- a/nvim/lua/config/keys.lua +++ b/nvim/lua/config/keys.lua @@ -154,6 +154,138 @@ if config.use_kraken then }) end +-- add opencode.nvim keymaps +if config.use_copilot then + table.insert(M.keymaps, { + mode = "n", + keys = "oA", + command = function() require("opencode").ask() end, + opts = { desc = "Ask opencode" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "oa", + command = function() require("opencode").ask("@cursor: ") end, + opts = { desc = "Ask opencode about this" }, + }) + table.insert(M.keymaps, { + mode = "v", + keys = "oa", + command = function() require("opencode").ask("@selection: ") end, + opts = { desc = "Ask opencode about selection" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "ot", + command = function() require("opencode").toggle() end, + opts = { desc = "Toggle embedded opencode" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "on", + command = function() require("opencode").command("session_new") end, + opts = { desc = "New session" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "oy", + command = function() require("opencode").command("messages_copy") end, + opts = { desc = "Copy last message" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "", + command = function() require("opencode").command("messages_half_page_up") end, + opts = { desc = "Scroll messages up" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "", + command = function() require("opencode").command("messages_half_page_down") end, + opts = { desc = "Scroll messages down" }, + }) + table.insert(M.keymaps, { + mode = { "n", "v" }, + keys = "op", + command = function() require("opencode").select_prompt() end, + opts = { desc = "Select prompt" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "oe", + command = function() require("opencode").prompt("Explain @cursor and its context") end, + opts = { desc = "Explain code near cursor" }, + }) +end + +-- add sidekick.nvim keymaps +if config.use_copilot then + table.insert(M.keymaps, { + mode = "n", + keys = "", + command = function() + if not require("sidekick").nes_jump_or_apply() then + return "" + end + end, + opts = { desc = "Goto/Apply Next Edit Suggestion", expr = true }, + }) + table.insert(M.keymaps, { + mode = { "n", "t", "i", "x" }, + keys = "", + command = function() require("sidekick.cli").toggle() end, + opts = { desc = "Sidekick Toggle" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "aa", + command = function() require("sidekick.cli").toggle() end, + opts = { desc = "Sidekick Toggle CLI" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "as", + command = function() require("sidekick.cli").select() end, + opts = { desc = "Select CLI" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "ad", + command = function() require("sidekick.cli").close() end, + opts = { desc = "Detach a CLI Session" }, + }) + table.insert(M.keymaps, { + mode = { "x", "n" }, + keys = "at", + command = function() require("sidekick.cli").send({ msg = "{this}" }) end, + opts = { desc = "Send This" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "af", + command = function() require("sidekick.cli").send({ msg = "{file}" }) end, + opts = { desc = "Send File" }, + }) + table.insert(M.keymaps, { + mode = "x", + keys = "av", + command = function() require("sidekick.cli").send({ msg = "{selection}" }) end, + opts = { desc = "Send Visual Selection" }, + }) + table.insert(M.keymaps, { + mode = { "n", "x" }, + keys = "ap", + command = function() require("sidekick.cli").prompt() end, + opts = { desc = "Sidekick Select Prompt" }, + }) + table.insert(M.keymaps, { + mode = "n", + keys = "ac", + command = function() require("sidekick.cli").toggle({ name = "claude", focus = true }) end, + opts = { desc = "Sidekick Toggle Claude" }, + }) +end + ---@type KeymapDefinition[] M.terminal_keymaps = { { diff --git a/nvim/lua/core/plugins.lua b/nvim/lua/core/plugins.lua index 222f8ba..46849e2 100644 --- a/nvim/lua/core/plugins.lua +++ b/nvim/lua/core/plugins.lua @@ -154,6 +154,28 @@ if config.feature_config.use_copilot then event = "LspAttach", config = function() require("core.configs.copilot") end, } + plugins[#plugins + 1] = { + "NickvanDyke/opencode.nvim", + dependencies = { + { "folke/snacks.nvim", opts = { input = { enabled = true } } }, + }, + ---@type opencode.Opts + opts = { + -- Your configuration, if any — see lua/opencode/config.lua + }, + } + plugins[#plugins + 1] = { + "folke/sidekick.nvim", + opts = { + -- add any options here + cli = { + mux = { + backend = "tmux", + enabled = true, + }, + }, + }, + } end if config.feature_config.use_kraken then