mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-11-11 16:05:30 +00:00
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.
45 lines
1.6 KiB
Nix
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;
|
|
};
|
|
}
|