42 lines
1.6 KiB
Nix
42 lines
1.6 KiB
Nix
|
|
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/_astroui_status.lua#L5-L36
|
||
|
|
{
|
||
|
|
__raw = ''
|
||
|
|
(function()
|
||
|
|
local sign_handlers = {}
|
||
|
|
-- gitsigns handlers
|
||
|
|
local gitsigns_handler = function(_)
|
||
|
|
local gitsigns_avail, gitsigns = pcall(require, "gitsigns")
|
||
|
|
if gitsigns_avail then vim.schedule(gitsigns.preview_hunk) end
|
||
|
|
end
|
||
|
|
for _, sign in ipairs { "Topdelete", "Untracked", "Add", "Change", "Changedelete", "Delete" } do
|
||
|
|
local name = "GitSigns" .. sign
|
||
|
|
if not sign_handlers[name] then sign_handlers[name] = gitsigns_handler end
|
||
|
|
end
|
||
|
|
sign_handlers["gitsigns_extmark_signs_"] = gitsigns_handler
|
||
|
|
-- diagnostic handlers
|
||
|
|
local diagnostics_handler = function(args)
|
||
|
|
if args.mods:find "c" then
|
||
|
|
vim.schedule(vim.lsp.buf.code_action)
|
||
|
|
else
|
||
|
|
vim.schedule(vim.diagnostic.open_float)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
for _, sign in ipairs { "Error", "Hint", "Info", "Warn" } do
|
||
|
|
local name = "DiagnosticSign" .. sign
|
||
|
|
if not sign_handlers[name] then sign_handlers[name] = diagnostics_handler end
|
||
|
|
end
|
||
|
|
-- DAP handlers
|
||
|
|
local dap_breakpoint_handler = function(_)
|
||
|
|
local dap_avail, dap = pcall(require, "dap")
|
||
|
|
if dap_avail then vim.schedule(dap.toggle_breakpoint) end
|
||
|
|
end
|
||
|
|
for _, sign in ipairs { "", "Rejected", "Condition" } do
|
||
|
|
local name = "DapBreakpoint" .. sign
|
||
|
|
if not sign_handlers[name] then sign_handlers[name] = dap_breakpoint_handler end
|
||
|
|
end
|
||
|
|
|
||
|
|
return sign_handlers
|
||
|
|
end)()
|
||
|
|
'';
|
||
|
|
}
|