mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 16:39:00 +02:00
320 lines
5.2 KiB
Nix
320 lines
5.2 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib;
|
|
helpers.neovim-plugin.mkNeovimPlugin config {
|
|
name = "gitsigns";
|
|
originalName = "gitsigns.nvim";
|
|
defaultPackage = pkgs.vimPlugins.gitsigns-nvim;
|
|
|
|
maintainers = [ maintainers.GaetanLepage ];
|
|
|
|
# TODO: introduced 2024-03-12, remove on 2024-05-12
|
|
deprecateExtraOptions = true;
|
|
optionsRenamedToSettings = [
|
|
[
|
|
"signs"
|
|
"add"
|
|
"hl"
|
|
]
|
|
[
|
|
"signs"
|
|
"add"
|
|
"text"
|
|
]
|
|
[
|
|
"signs"
|
|
"add"
|
|
"numhl"
|
|
]
|
|
[
|
|
"signs"
|
|
"add"
|
|
"linehl"
|
|
]
|
|
[
|
|
"signs"
|
|
"add"
|
|
"showCount"
|
|
]
|
|
[
|
|
"signs"
|
|
"change"
|
|
"hl"
|
|
]
|
|
[
|
|
"signs"
|
|
"change"
|
|
"text"
|
|
]
|
|
[
|
|
"signs"
|
|
"change"
|
|
"numhl"
|
|
]
|
|
[
|
|
"signs"
|
|
"change"
|
|
"linehl"
|
|
]
|
|
[
|
|
"signs"
|
|
"change"
|
|
"showCount"
|
|
]
|
|
[
|
|
"signs"
|
|
"topdelete"
|
|
"hl"
|
|
]
|
|
[
|
|
"signs"
|
|
"topdelete"
|
|
"text"
|
|
]
|
|
[
|
|
"signs"
|
|
"topdelete"
|
|
"numhl"
|
|
]
|
|
[
|
|
"signs"
|
|
"topdelete"
|
|
"linehl"
|
|
]
|
|
[
|
|
"signs"
|
|
"topdelete"
|
|
"showCount"
|
|
]
|
|
[
|
|
"signs"
|
|
"changedelete"
|
|
"hl"
|
|
]
|
|
[
|
|
"signs"
|
|
"changedelete"
|
|
"text"
|
|
]
|
|
[
|
|
"signs"
|
|
"changedelete"
|
|
"numhl"
|
|
]
|
|
[
|
|
"signs"
|
|
"changedelete"
|
|
"linehl"
|
|
]
|
|
[
|
|
"signs"
|
|
"changedelete"
|
|
"showCount"
|
|
]
|
|
[
|
|
"signs"
|
|
"untracked"
|
|
"hl"
|
|
]
|
|
[
|
|
"signs"
|
|
"untracked"
|
|
"text"
|
|
]
|
|
[
|
|
"signs"
|
|
"untracked"
|
|
"numhl"
|
|
]
|
|
[
|
|
"signs"
|
|
"untracked"
|
|
"linehl"
|
|
]
|
|
[
|
|
"signs"
|
|
"untracked"
|
|
"showCount"
|
|
]
|
|
"worktrees"
|
|
"signPriority"
|
|
"signcolumn"
|
|
"numhl"
|
|
"linehl"
|
|
"showDeleted"
|
|
[
|
|
"diffOpts"
|
|
"algorithm"
|
|
]
|
|
[
|
|
"diffOpts"
|
|
"internal"
|
|
]
|
|
[
|
|
"diffOpts"
|
|
"indentHeuristic"
|
|
]
|
|
[
|
|
"diffOpts"
|
|
"vertical"
|
|
]
|
|
[
|
|
"diffOpts"
|
|
"linematch"
|
|
]
|
|
"base"
|
|
"countChars"
|
|
"maxFileLength"
|
|
"previewConfig"
|
|
"attachToUntracked"
|
|
"updateDebounce"
|
|
"currentLineBlame"
|
|
[
|
|
"currentLineBlameOpts"
|
|
"virtText"
|
|
]
|
|
[
|
|
"currentLineBlameOpts"
|
|
"virtTextPos"
|
|
]
|
|
[
|
|
"currentLineBlameOpts"
|
|
"delay"
|
|
]
|
|
[
|
|
"currentLineBlameOpts"
|
|
"ignoreWhitespace"
|
|
]
|
|
[
|
|
"currentLineBlameOpts"
|
|
"virtTextPriority"
|
|
]
|
|
"trouble"
|
|
[
|
|
"yadm"
|
|
"enable"
|
|
]
|
|
"wordDiff"
|
|
"debugMode"
|
|
];
|
|
imports =
|
|
let
|
|
basePluginPaths = [
|
|
"plugins"
|
|
"gitsigns"
|
|
];
|
|
settingsPath = basePluginPaths ++ [ "settings" ];
|
|
in
|
|
[
|
|
(mkRenamedOptionModule (
|
|
basePluginPaths
|
|
++ [
|
|
"onAttach"
|
|
"function"
|
|
]
|
|
) (settingsPath ++ [ "on_attach" ]))
|
|
(mkRenamedOptionModule
|
|
(
|
|
basePluginPaths
|
|
++ [
|
|
"watchGitDir"
|
|
"enable"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"watch_gitdir"
|
|
"enable"
|
|
]
|
|
)
|
|
)
|
|
(mkRemovedOptionModule (
|
|
basePluginPaths
|
|
++ [
|
|
"watchGitDir"
|
|
"interval"
|
|
]
|
|
) "The option has been removed from upstream.")
|
|
(mkRenamedOptionModule
|
|
(
|
|
basePluginPaths
|
|
++ [
|
|
"watchGitDir"
|
|
"followFiles"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"watch_gitdir"
|
|
"follow_files"
|
|
]
|
|
)
|
|
)
|
|
(mkRenamedOptionModule (
|
|
basePluginPaths
|
|
++ [
|
|
"statusFormatter"
|
|
"function"
|
|
]
|
|
) (settingsPath ++ [ "status_formatter" ]))
|
|
(mkRenamedOptionModule (
|
|
basePluginPaths
|
|
++ [
|
|
"currentLineBlameFormatter"
|
|
"normal"
|
|
]
|
|
) (settingsPath ++ [ "current_line_blame_formatter" ]))
|
|
(mkRenamedOptionModule (
|
|
basePluginPaths
|
|
++ [
|
|
"currentLineBlameFormatter"
|
|
"nonCommitted"
|
|
]
|
|
) (settingsPath ++ [ "current_line_blame_formatter_nc" ]))
|
|
];
|
|
|
|
extraOptions = {
|
|
gitPackage = helpers.mkPackageOption {
|
|
name = "git";
|
|
default = pkgs.git;
|
|
};
|
|
};
|
|
|
|
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 ];
|
|
};
|
|
}
|