nvf/modules/plugins/utility/harpoon/harpoon.nix
Theodor Bjorkman d126bbdc24 plugins/utility/harpoon: added harpoon
Harpoon (branch harpoon2) has been added as a plugin.
Set under navigation to allow for more naviation plugins to be added in
the future (set telescope under navigation?).
Basic options and keybinds are included.
2025-02-28 09:06:21 +01:00

45 lines
1.6 KiB
Nix

{lib, ...}: let
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) bool;
inherit (lib.nvim.binds) mkMappingOption;
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
inherit (lib.generators) mkLuaInline;
setupOptions = {
defaults = {
save_on_toggle = mkOption {
description = "any time the ui menu is closed then we will save the state back to the backing list, not to the fs";
type = bool;
default = false;
};
sync_on_ui_close = mkOption {
description = "any time the ui menu is closed then the state of the list will be sync'd back to the fs";
type = bool;
default = false;
};
key = mkOption {
description = "how the out list key is looked up. This can be useful when using worktrees and using git remote instead of file path";
type = luaInline;
default = mkLuaInline ''
function()
return vim.loop.cwd()
end
'';
};
};
};
in {
options.vim.navigation.harpoon = {
mappings = {
markFile = mkMappingOption "Mark file [Harpoon]" "<leader>a";
listMarks = mkMappingOption "List marked files [Harpoon]" "<C-e>";
file1 = mkMappingOption "Go to marked file 1 [Harpoon]" "<C-j>";
file2 = mkMappingOption "Go to marked file 2 [Harpoon]" "<C-k>";
file3 = mkMappingOption "Go to marked file 3 [Harpoon]" "<C-l>";
file4 = mkMappingOption "Go to marked file 4 [Harpoon]" "<C-;>";
};
enable = mkEnableOption "Harpoon: quick bookmarks on keybinds";
setupOpts = mkPluginSetupOption "Harpoon" setupOptions;
};
}