fix nvim: menu for gitsigns失效

This commit is contained in:
Yuan Chiu 2025-06-02 22:16:03 +08:00
parent 52960297c1
commit e533009bea
Signed by: yuan
GPG Key ID: 50FBE4156404B98D

View File

@ -20,43 +20,45 @@ return {
vim.cmd.exec '"normal! \\<RightMouse>"' vim.cmd.exec '"normal! \\<RightMouse>"'
-- clicked buf vim.defer_fn(function()
local mouse = vim.fn.getmousepos() -- clicked buf
local buf = vim.api.nvim_win_get_buf(mouse.winid) local mouse = vim.fn.getmousepos()
local name = vim.api.nvim_buf_get_name(buf) local buf = vim.api.nvim_win_get_buf(mouse.winid)
local ft = vim.bo[buf].ft local name = vim.api.nvim_buf_get_name(buf)
local gitsigns = require("gitsigns") local ft = vim.bo[buf].ft
local hunks = gitsigns.get_hunks and gitsigns.get_hunks(buf) local gitsigns = require("gitsigns")
local lsp = vim.lsp.get_clients({ bufnr = buf }) local hunks = gitsigns.get_hunks and gitsigns.get_hunks(buf)
local lsp = vim.lsp.get_clients({ bufnr = buf })
local in_signcolumn = mouse.wincol <= vim.fn.getwininfo(mouse.winid)[1].textoff local in_signcolumn = mouse.wincol <= vim.fn.getwininfo(mouse.winid)[1].textoff
local is_git_buf = vim.b[buf].gitsigns_head ~= nil local is_git_buf = vim.b[buf].gitsigns_head ~= nil
local has_hunks = hunks and #hunks > 0 local has_hunks = hunks and #hunks > 0
local options local options
if ft == "neo-tree" then if ft == "neo-tree" then
options = "neo-tree" options = "neo-tree"
elseif in_signcolumn and is_git_buf and has_hunks then elseif in_signcolumn and is_git_buf and has_hunks then
options = "gitsigns" options = "gitsigns"
else else
options = "default" options = "default"
end end
-- -- Debug用途 -- -- Debug用途
-- local name = vim.api.nvim_buf_get_name(buf) -- local name = vim.api.nvim_buf_get_name(buf)
-- local lsp = vim.lsp.get_clients({ bufnr = buf }) -- local lsp = vim.lsp.get_clients({ bufnr = buf })
-- vim.notify("👉 Buffer: " .. buf .. -- vim.notify("👉 Buffer: " .. buf ..
-- "\nFile: " .. name .. -- "\nFile: " .. name ..
-- "\nFiletype: " .. ft .. -- "\nFiletype: " .. ft ..
-- "\nGitsigns Head: " .. vim.inspect(vim.b[buf].gitsigns_head) .. -- "\nGitsigns Head: " .. vim.inspect(vim.b[buf].gitsigns_head) ..
-- "\nHas Hunks: " .. tostring(has_hunks) .. -- "\nHas Hunks: " .. tostring(has_hunks) ..
-- "\nMouse Col: " .. mouse.wincol .. -- "\nMouse Col: " .. mouse.wincol ..
-- "\nText Offset: " .. vim.fn.getwininfo(mouse.winid)[1].textoff .. -- "\nText Offset: " .. vim.fn.getwininfo(mouse.winid)[1].textoff ..
-- "\nIn SignColumn: " .. tostring(in_signcolumn) .. -- "\nIn SignColumn: " .. tostring(in_signcolumn) ..
-- "\nLSP: " .. tostring(#lsp > 0) .. -- "\nLSP: " .. tostring(#lsp > 0) ..
-- "\n🧭 Menu: " .. options, vim.log.levels.INFO -- "\n🧭 Menu: " .. options, vim.log.levels.INFO
-- ) -- )
require("menu").open(options, { mouse = true }) require("menu").open(options, { mouse = true })
end, 10)
end, {}) end, {})
end, end,