nixvim: add diffview, gitsigns, which-key. re-enable treesitter. document some keymaps #33

Merged
sid merged 2 commits from develop into release-25.11 2026-05-05 21:18:20 +02:00
Showing only changes of commit 218b90c412 - Show all commits

View file

@ -2,7 +2,7 @@
let let
cfg = config.programs.nixvim; cfg = config.programs.nixvim;
plugin = cfg.plugins.fugitive; plugin = cfg.plugins.gitsigns;
inherit (lib) mkDefault mkIf; inherit (lib) mkDefault mkIf;
in in
@ -13,36 +13,92 @@ in
enable = mkDefault true; enable = mkDefault true;
settings = { settings = {
current_line_blame = mkDefault false; current_line_blame = mkDefault false;
current_line_blame_opts = mkDefault { current_line_blame_opts = {
virt_text = mkDefault true; virt_text = mkDefault true;
virt_text_pos = mkDefault "eol"; virt_text_pos = mkDefault "eol";
}; };
signcolumn = mkDefault true; signcolumn = mkDefault true;
signs = { signs = {
add = { add.text = mkDefault "+";
text = mkDefault "+"; change.text = mkDefault "";
changedelete.text = mkDefault "~";
delete.text = mkDefault "-";
topdelete.text = mkDefault "-";
untracked.text = mkDefault "?";
}; };
change = { watch_gitdir.follow_files = mkDefault true;
text = mkDefault "";
};
changedelete = {
text = mkDefault "~";
};
delete = {
text = mkDefault "-";
};
topdelete = {
text = mkDefault "-";
};
untracked = {
text = mkDefault "?";
}; };
}; };
watch_gitdir = { keymaps = mkIf plugin.enable [
follow_files = mkDefault true; {
mode = "n";
key = "<leader>hs";
action.__raw = "function() require('gitsigns').stage_hunk() end";
options = {
noremap = true;
silent = true;
desc = "stage hunk";
}; };
}
{
mode = "v";
key = "<leader>hs";
action.__raw = ''
function()
require('gitsigns').stage_hunk({vim.fn.line('.'), vim.fn.line('v')})
end
'';
options = {
noremap = true;
silent = true;
desc = "stage selected hunks";
}; };
}
{
mode = "n";
key = "<leader>hu";
action.__raw = "function() require('gitsigns').undo_stage_hunk() end";
options = {
noremap = true;
silent = true;
desc = "undo stage hunk";
}; };
}
{
mode = "n";
key = "<leader>hS";
action.__raw = "function() require('gitsigns').stage_buffer() end";
options = {
noremap = true;
silent = true;
desc = "stage buffer";
};
}
{
mode = "n";
key = "<leader>hr";
action.__raw = "function() require('gitsigns').reset_hunk() end";
options = {
noremap = true;
silent = true;
desc = "reset hunk";
};
}
{
mode = "v";
key = "<leader>hr";
action.__raw = ''
function()
require('gitsigns').reset_hunk({vim.fn.line('.'), vim.fn.line('v')})
end
'';
options = {
noremap = true;
silent = true;
desc = "reset selected hunks";
};
}
];
}; };
}; };
} }