plugins/git-worktree: migrate to mkNeovimPlugin

This commit is contained in:
Austin Horstman 2025-01-23 23:29:40 -06:00
parent 4ae6136d12
commit c7a600c3f3
No known key found for this signature in database
3 changed files with 60 additions and 63 deletions

View file

@ -5,64 +5,59 @@
... ...
}: }:
let let
cfg = config.plugins.git-worktree; inherit (lib.nixvim) defaultNullOpts;
in in
{ lib.nixvim.plugins.mkNeovimPlugin {
options = { name = "git-worktree";
plugins.git-worktree = { packPathName = "git-worktree.nvim";
enable = lib.mkEnableOption "git-worktree"; package = "git-worktree-nvim";
package = lib.mkPackageOption pkgs "git-worktree" { maintainers = [ lib.maintainers.khaneliman ];
default = [
"vimPlugins"
"git-worktree-nvim"
];
};
gitPackage = lib.mkPackageOption pkgs "git" { settingsOptions = {
nullable = true; change_directory_command = defaultNullOpts.mkStr "cd" ''
}; The vim command used to change to the new worktree directory.
Set this to `tcd` if you want to only change the `pwd` for the current vim Tab.
'';
enableTelescope = lib.mkEnableOption "telescope integration"; update_on_change = defaultNullOpts.mkBool true ''
If set to true updates the current buffer to point to the new work tree if the file is found in the new project.
Otherwise, the following command will be run.
'';
changeDirectoryCommand = lib.nixvim.defaultNullOpts.mkStr "cd" '' update_on_change_command = defaultNullOpts.mkStr "e ." ''
The vim command used to change to the new worktree directory. The vim command to run during the `update_on_change` event.
Set this to `tcd` if you want to only change the `pwd` for the current vim Tab. Note, that this command will only be run when the current file is not found in the new worktree.
''; This option defaults to `e .` which opens the root directory of the new worktree.
'';
updateOnChange = lib.nixvim.defaultNullOpts.mkBool true '' clear_jumps_on_change = defaultNullOpts.mkBool true ''
If set to true updates the current buffer to point to the new work tree if the file is found in the new project. If set to true every time you switch branches, your jumplist will be cleared so that you don't
Otherwise, the following command will be run. accidentally go backward to a different branch and edit the wrong files.
''; '';
updateOnChangeCommand = lib.nixvim.defaultNullOpts.mkStr "e ." '' autopush = defaultNullOpts.mkBool false ''
The vim command to run during the `update_on_change` event. When creating a new worktree, it will push the branch to the upstream then perform a `git rebase`.
Note, that this command will only be run when the current file is not found in the new worktree. '';
This option defaults to `e .` which opens the root directory of the new worktree. };
'';
clearJumpsOnChange = lib.nixvim.defaultNullOpts.mkBool true '' settingsExample = {
If set to true every time you switch branches, your jumplist will be cleared so that you don't change_directory_command = "z";
accidentally go backward to a different branch and edit the wrong files. update_on_change = false;
''; clear_jumps_on_change = false;
autopush = true;
};
autopush = lib.nixvim.defaultNullOpts.mkBool false '' extraOptions = {
When creating a new worktree, it will push the branch to the upstream then perform a `git rebase`. enableTelescope = lib.mkEnableOption "telescope integration";
'';
gitPackage = lib.mkPackageOption pkgs "git" {
nullable = true;
}; };
}; };
config = extraConfig =
let cfg:
setupOptions = with cfg; {
enabled = cfg.enable;
change_directory_command = cfg.changeDirectoryCommand;
update_on_change = cfg.updateOnChange;
update_on_change_command = cfg.updateOnChangeCommand;
clearjumps_on_change = cfg.clearJumpsOnChange;
inherit autopush;
};
in
lib.mkIf cfg.enable { lib.mkIf cfg.enable {
assertions = [ assertions = [
{ {
@ -71,20 +66,10 @@ in
} }
]; ];
extraPlugins = with pkgs.vimPlugins; [
cfg.package
plenary-nvim
];
extraPackages = [ cfg.gitPackage ]; extraPackages = [ cfg.gitPackage ];
extraConfigLua = plugins.telescope.enabledExtensions = lib.mkIf cfg.enableTelescope [ "git_worktree" ];
let
telescopeCfg = ''require("telescope").load_extension("git_worktree")'';
in
''
require('git-worktree').setup(${lib.nixvim.toLuaObject setupOptions})
${if cfg.enableTelescope then telescopeCfg else ""}
'';
}; };
inherit (import ./deprecations.nix) optionsRenamedToSettings;
} }

View file

@ -0,0 +1,9 @@
{
optionsRenamedToSettings = [
"changeDirectoryCommand"
"updateOnChange"
"updateOnChangeCommand"
"clearJumpsOnChange"
"autopush"
];
}

View file

@ -12,10 +12,13 @@
enable = true; enable = true;
enableTelescope = true; enableTelescope = true;
changeDirectoryCommand = "tcd";
updateOnChange = true; settings = {
updateOnChangeCommand = "e ."; change_directory_command = "tcd";
clearJumpsOnChange = true; update_on_change = true;
update_on_change_command = "e .";
clear_jumps_on_change = true;
};
}; };
plugins.web-devicons.enable = true; plugins.web-devicons.enable = true;