mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
113 lines
2.6 KiB
Nix
113 lines
2.6 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib;
|
|
lib.nixvim.plugins.mkNeovimPlugin {
|
|
name = "gitsigns";
|
|
packPathName = "gitsigns.nvim";
|
|
package = "gitsigns-nvim";
|
|
|
|
maintainers = [ maintainers.GaetanLepage ];
|
|
|
|
# TODO: introduced 2024-03-12, remove on 2024-05-12
|
|
deprecateExtraOptions = true;
|
|
optionsRenamedToSettings = import ./renamed-options.nix;
|
|
imports =
|
|
let
|
|
basePluginPaths = [
|
|
"plugins"
|
|
"gitsigns"
|
|
];
|
|
settingsPath = basePluginPaths ++ [ "settings" ];
|
|
|
|
highlights = {
|
|
add = "Add";
|
|
change = "Change";
|
|
delete = "Delete";
|
|
topdelete = "Topdelete";
|
|
changedelete = "Changedelete";
|
|
untracked = "Untracked";
|
|
};
|
|
|
|
subHighlights = {
|
|
hl = "";
|
|
linehl = "Ln";
|
|
numhl = "Nr";
|
|
};
|
|
|
|
highlightRemovals = flatten (
|
|
mapAttrsToList (
|
|
opt: hlg:
|
|
mapAttrsToList (subOpt: subHlg: {
|
|
optionPath = settingsPath ++ [
|
|
"signs"
|
|
opt
|
|
subOpt
|
|
];
|
|
hlg = "GitSigns${hlg}${subHlg}";
|
|
}) subHighlights
|
|
) highlights
|
|
);
|
|
in
|
|
(map (
|
|
{ optionPath, hlg }:
|
|
helpers.mkDeprecatedSubOptionModule optionPath "Please define the `${hlg}` highlight group instead."
|
|
) highlightRemovals)
|
|
++ [
|
|
(mkRemovedOptionModule (
|
|
basePluginPaths
|
|
++ [
|
|
"watchGitDir"
|
|
"interval"
|
|
]
|
|
) "The option has been removed from upstream.")
|
|
(helpers.mkDeprecatedSubOptionModule (
|
|
settingsPath
|
|
++ [
|
|
"yadm"
|
|
"enable"
|
|
]
|
|
) "yadm support was removed upstream.")
|
|
];
|
|
|
|
extraOptions = {
|
|
gitPackage = lib.mkPackageOption pkgs "git" {
|
|
nullable = true;
|
|
};
|
|
};
|
|
|
|
settingsOptions = import ./options.nix { inherit lib helpers; };
|
|
|
|
settingsExample = {
|
|
signs = {
|
|
add.text = "│";
|
|
change.text = "│";
|
|
delete.text = "_";
|
|
topdelete.text = "‾";
|
|
changedelete.text = "~";
|
|
untracked.text = "┆";
|
|
};
|
|
signcolumn = true;
|
|
watch_gitdir.follow_files = true;
|
|
current_line_blame = false;
|
|
current_line_blame_opts = {
|
|
virt_text = true;
|
|
virt_text_pos = "eol";
|
|
};
|
|
};
|
|
|
|
extraConfig = cfg: {
|
|
warnings =
|
|
optional ((isBool cfg.settings.trouble && cfg.settings.trouble) && !config.plugins.trouble.enable)
|
|
''
|
|
Nixvim (plugins.gitsigns): You have enabled `plugins.gitsigns.settings.trouble` but
|
|
`plugins.trouble.enable` is `false`.
|
|
You should maybe enable the `trouble` plugin.
|
|
'';
|
|
extraPackages = [ cfg.gitPackage ];
|
|
};
|
|
}
|