fix <leader> pause in opencode window

This commit is contained in:
G 2026-05-14 17:12:06 -07:00
parent 83fe9874b7
commit 75c475fc3c
No known key found for this signature in database
GPG key ID: 2A5B7E3754629705

View file

@ -28,25 +28,20 @@ return {
opts.spec = opts.spec or {} opts.spec = opts.spec or {}
table.insert(opts.spec, { "<leader>a", group = "OpenCode" }) table.insert(opts.spec, { "<leader>a", group = "OpenCode" })
table.insert(opts.spec, { "<leader>ag", group = "git" }) table.insert(opts.spec, { "<leader>ag", group = "git" })
table.insert(opts.spec, { "<leader>ax", group = "diagnostics/quickfix" })
if LazyVim.has("grapple.nvim") then
table.insert(opts.spec, { "<leader>af", group = "grapple" })
end
table.insert(opts.spec, { "<leader>ap", group = "prompt" }) table.insert(opts.spec, { "<leader>ap", group = "prompt" })
end, end,
}, },
{
"folke/snacks.nvim",
},
{ {
"Nickvandyke/opencode.nvim", "Nickvandyke/opencode.nvim",
version = "*", version = "*",
cmd = "OpenCode", dependencies = {
keys = function() "nvim-lua/plenary.nvim",
local keys = { },
cmd = { "OpenCode", "OpenCodeToggle" },
keys = {
{ "gO", false }, { "gO", false },
{ {
"<leader>aa", "<leader>aa",
function() function()
@ -56,6 +51,7 @@ return {
mode = { "n", "t" }, mode = { "n", "t" },
desc = "Toggle OpenCode", desc = "Toggle OpenCode",
}, },
{ {
"<leader>aq", "<leader>aq",
function() function()
@ -64,6 +60,7 @@ return {
mode = { "n", "t" }, mode = { "n", "t" },
desc = "Stop/Close OpenCode", desc = "Stop/Close OpenCode",
}, },
{ {
"<leader>as", "<leader>as",
function() function()
@ -72,6 +69,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Select action", desc = "Select action",
}, },
{ {
"<leader>ai", "<leader>ai",
function() function()
@ -80,6 +78,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask (empty)", desc = "Ask (empty)",
}, },
{ {
"<leader>aI", "<leader>aI",
function() function()
@ -88,6 +87,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask with context", desc = "Ask with context",
}, },
{ {
"<leader>ab", "<leader>ab",
function() function()
@ -96,6 +96,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask about buffer", desc = "Ask about buffer",
}, },
{ {
"<leader>agd", "<leader>agd",
function() function()
@ -104,26 +105,16 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Git diff", desc = "Git diff",
}, },
{ {
"<leader>ax", "<leader>ax",
group = "diagnostics/quickfix",
},
{
"<leader>axx",
function() function()
safe_ask("@quickfix ", { submit = true, focus = false }) safe_ask("@quickfix ", { submit = true, focus = false })
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask with quickfix", desc = "Ask with quickfix",
}, },
{
"<leader>axd",
function()
safe_ask("@diagnostics ", { submit = true, focus = false })
end,
mode = { "n", "x" },
desc = "Ask with diagnostics",
},
{ {
"<leader>av", "<leader>av",
function() function()
@ -132,6 +123,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask with visible text", desc = "Ask with visible text",
}, },
{ {
"<leader>aB", "<leader>aB",
function() function()
@ -140,6 +132,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask with all buffers", desc = "Ask with all buffers",
}, },
{ {
"<leader>am", "<leader>am",
function() function()
@ -148,6 +141,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Ask with marks", desc = "Ask with marks",
}, },
{ {
"<leader>ape", "<leader>ape",
function() function()
@ -156,6 +150,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Explain", desc = "Explain",
}, },
{ {
"<leader>apf", "<leader>apf",
function() function()
@ -164,6 +159,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Fix", desc = "Fix",
}, },
{ {
"<leader>apd", "<leader>apd",
function() function()
@ -172,6 +168,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Diagnose", desc = "Diagnose",
}, },
{ {
"<leader>apr", "<leader>apr",
function() function()
@ -180,6 +177,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Review", desc = "Review",
}, },
{ {
"<leader>apt", "<leader>apt",
function() function()
@ -188,6 +186,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Test", desc = "Test",
}, },
{ {
"<leader>apo", "<leader>apo",
function() function()
@ -196,6 +195,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Optimize", desc = "Optimize",
}, },
{ {
"<leader>an", "<leader>an",
function() function()
@ -204,6 +204,7 @@ return {
mode = { "n" }, mode = { "n" },
desc = "New session", desc = "New session",
}, },
{ {
"<leader>ac", "<leader>ac",
function() function()
@ -212,6 +213,7 @@ return {
mode = { "n" }, mode = { "n" },
desc = "Close session", desc = "Close session",
}, },
{ {
"go", "go",
function() function()
@ -221,6 +223,7 @@ return {
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Add range to OpenCode", desc = "Add range to OpenCode",
}, },
{ {
"goo", "goo",
function() function()
@ -230,40 +233,13 @@ return {
mode = { "n" }, mode = { "n" },
desc = "Add line to OpenCode", desc = "Add line to OpenCode",
}, },
} },
opts = function()
if LazyVim.has("grapple.nvim") then -- 1. Setup autogroups/autocmds for terminal optimizations
table.insert(keys, { local opencode_augroup = vim.api.nvim_create_augroup("opencode_integrated", { clear = true })
"<leader>af",
function()
safe_ask("@grapple ", { submit = true, focus = false })
end,
mode = { "n", "x" },
desc = "Ask with grapple",
})
end
return keys
end,
config = function()
vim.g.opencode_opts = {}
-- Fix for marksman crashing on opencode buffers
vim.api.nvim_create_autocmd({ "BufAdd", "BufWinEnter", "TermOpen" }, {
callback = function(event)
if vim.api.nvim_buf_get_name(event.buf):match("opencode") then
vim.bo[event.buf].filetype = "opencode"
vim.b[event.buf].lsp_ignore = true
-- Detach any clients that might have already attached
local clients = vim.lsp.get_clients({ bufnr = event.buf })
for _, client in ipairs(clients) do
vim.lsp.buf_detach_client(event.buf, client.id)
end
end
end,
})
vim.api.nvim_create_autocmd({ "BufEnter" }, { vim.api.nvim_create_autocmd({ "BufEnter" }, {
group = opencode_augroup,
pattern = "*:opencode --port*", pattern = "*:opencode --port*",
callback = function() callback = function()
vim.cmd("startinsert") vim.cmd("startinsert")
@ -271,11 +247,15 @@ return {
}) })
vim.api.nvim_create_autocmd({ "TermOpen" }, { vim.api.nvim_create_autocmd({ "TermOpen" }, {
group = vim.api.nvim_create_augroup("opencode_integrated", { clear = true }), -- group = vim.api.nvim_create_augroup("opencode_integrated", { clear = true }),
group = opencode_augroup,
pattern = "*:opencode --port*", pattern = "*:opencode --port*",
callback = function(event) callback = function(event)
vim.bo[event.buf].buflisted = false vim.bo[event.buf].buflisted = false
vim.bo[event.buf].filetype = "opencode"
-- Override space layout globally inside this exact buffer window
vim.keymap.set("t", "<space>", "<space>", { buffer = event.buf, nowait = true, noremap = true })
vim.b[event.buf].which_key_ignore = true
vim.keymap.set({ "t", "n" }, "<C-h>", "<C-\\><C-n><C-w>h", { buffer = event.buf, desc = "Go to Left Window" }) vim.keymap.set({ "t", "n" }, "<C-h>", "<C-\\><C-n><C-w>h", { buffer = event.buf, desc = "Go to Left Window" })
vim.keymap.set( vim.keymap.set(
@ -319,6 +299,36 @@ return {
end end
end, end,
}) })
-- Essential: Return an empty table container to stop lazy.nvim fallback calls
return {}
end,
},
-- 2. Modify which-key v3 auto-triggers to fully drop terminal mode input tracking
{
"folke/which-key.nvim",
optional = true,
opts = function(_, opts)
opts.triggers = opts.triggers or {}
-- Check if default auto triggers are present
local has_auto = false
for _, trigger in ipairs(opts.triggers) do
-- Standard v3 layout tables wrap the auto hook directive as an array string value
if type(trigger) == "table" and trigger == "<auto>" then
has_auto = true
-- Strip terminal mode ("t") and command mode ("c") from automatic hooking loops
trigger.mode = "nixso"
elseif trigger == "<auto>" then
-- Fallback mutation path if declared as a raw flat string pattern
has_auto = true
end
end
-- If LazyVim default configs haven't initialized it, enforce a clean non-terminal rule
if not has_auto then
table.insert(opts.triggers, { "<auto>", mode = "nixso" })
end
end, end,
}, },
} }