120 lines
3.3 KiB
Nix
120 lines
3.3 KiB
Nix
{ ... }:
|
|
{
|
|
youthlic.plugins.gitsigns = {
|
|
enable = true;
|
|
luaConfig.post =
|
|
#lua
|
|
''
|
|
_M.on_load("snacks", function()
|
|
vim.schedule(function()
|
|
Snacks.toggle({
|
|
name = "Git Signs",
|
|
get = function()
|
|
return require("gitsigns.config").config.signcolumn
|
|
end,
|
|
set = function(state)
|
|
require("gitsigns").toggle_signs(state)
|
|
end,
|
|
}):map("<leader>uG")
|
|
end)
|
|
end)
|
|
'';
|
|
settings = {
|
|
current_line_blame = true;
|
|
signcolumn = true;
|
|
numhl = true;
|
|
linehl = false;
|
|
signs = {
|
|
add = {
|
|
text = "┃";
|
|
};
|
|
change = {
|
|
text = "┃";
|
|
};
|
|
delete = {
|
|
text = "";
|
|
};
|
|
topdelete = {
|
|
text = "";
|
|
};
|
|
changedelete = {
|
|
text = "┃";
|
|
};
|
|
untracked = {
|
|
text = "┃";
|
|
};
|
|
};
|
|
signs_staged = {
|
|
add = {
|
|
text = "┃";
|
|
};
|
|
change = {
|
|
text = "┃";
|
|
};
|
|
delete = {
|
|
text = "";
|
|
};
|
|
topdelete = {
|
|
text = "";
|
|
};
|
|
changedelete = {
|
|
text = "┃";
|
|
};
|
|
};
|
|
on_attach = {
|
|
__raw =
|
|
#lua
|
|
''
|
|
function(buffer)
|
|
local gs = package.loaded.gitsigns
|
|
|
|
local map = function(mode, l, r, desc)
|
|
vim.keymap.set(mode, l, r, {
|
|
buffer = buffer,
|
|
desc = desc,
|
|
})
|
|
end
|
|
|
|
map("n", "]h", function()
|
|
if vim.wo.diff then
|
|
vim.cmd.normal({ "]c", bang = true })
|
|
else
|
|
gs.nav_hunk("next")
|
|
end
|
|
end, "Next Hunk")
|
|
map("n", "[h", function()
|
|
if vim.wo.diff then
|
|
vim.cmd.normal({ "[c", bang = true })
|
|
else
|
|
gs.nav_hunk("prev")
|
|
end
|
|
end, "Prev Hunk")
|
|
map("n", "]H", function()
|
|
gs.nav_hunk("last")
|
|
end, "Last Hunk")
|
|
map("n", "[H", function()
|
|
gs.nav_hunk("first")
|
|
end, "First Hunk")
|
|
map({ "n", "v" }, "<leader>ghs", ":Gitsigns stage_hunk<CR>", "Stage Hunk")
|
|
map({ "n", "v" }, "<leader>ghr", ":Gitsigns reset_hunk<CR>", "Reset Hunk")
|
|
map("n", "<leader>ghS", gs.stage_buffer, "Stage Buffer")
|
|
map("n", "<leader>ghu", gs.undo_stage_hunk, "Undo Stage Hunk")
|
|
map("n", "<leader>ghR", gs.reset_buffer, "Reset Buffer")
|
|
map("n", "<leader>ghp", gs.preview_hunk_inline, "Preview Hunk Inline")
|
|
map("n", "<leader>ghb", function()
|
|
gs.blame_line({ full = true })
|
|
end, "Blame Line")
|
|
map("n", "<leader>ghB", function()
|
|
gs.blame()
|
|
end, "Blame Buffer")
|
|
map("n", "<leader>ghd", gs.diffthis, "Diff This")
|
|
map("n", "<leader>ghD", function()
|
|
gs.diffthis("~")
|
|
end, "Diff This ~")
|
|
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "GitSigns Select Hunk")
|
|
end
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|