mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-26 02:38:38 +02:00
We used to only think of it as the plugin repo's name, but we have been needing to use it for the name of the plugin's packpath location.
116 lines
2.8 KiB
Nix
116 lines
2.8 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib.nixvim) defaultNullOpts;
|
|
inherit (lib) types;
|
|
in
|
|
lib.nixvim.neovim-plugin.mkNeovimPlugin {
|
|
name = "persisted";
|
|
packPathName = "persisted.nvim";
|
|
package = "persisted-nvim";
|
|
|
|
maintainers = [ lib.maintainers.GaetanLepage ];
|
|
|
|
extraOptions = {
|
|
enableTelescope = lib.mkEnableOption "persisted-nvim telescope integration";
|
|
};
|
|
|
|
extraConfig = cfg: {
|
|
warnings = lib.optional (cfg.enableTelescope && (!config.plugins.telescope.enable)) ''
|
|
Telescope support for `plugins.persisted` is enabled but the telescope plugin is not.
|
|
'';
|
|
|
|
plugins.telescope.enabledExtensions = lib.mkIf cfg.enableTelescope [ "persisted" ];
|
|
};
|
|
|
|
settingsOptions = {
|
|
autostart = defaultNullOpts.mkBool true ''
|
|
Whether to automatically start the plugin on load.
|
|
'';
|
|
|
|
should_save =
|
|
defaultNullOpts.mkRaw
|
|
''
|
|
function()
|
|
return true
|
|
end
|
|
''
|
|
''
|
|
Function to determine if a session should be saved.
|
|
|
|
```lua
|
|
@type fun(): boolean
|
|
```
|
|
'';
|
|
|
|
save_dir = defaultNullOpts.mkStr (lib.nixvim.literalLua "vim.fn.expand(vim.fn.stdpath('data') .. '/sessions/')") ''
|
|
Directory where session files are saved.
|
|
'';
|
|
|
|
follow_cwd = defaultNullOpts.mkBool true ''
|
|
Whether to change the session file to match any change in the cwd.
|
|
'';
|
|
|
|
use_git_branch = defaultNullOpts.mkBool false ''
|
|
Whether to include the git branch in the session file name.
|
|
'';
|
|
|
|
autoload = defaultNullOpts.mkBool false ''
|
|
Whether to automatically load the session for the cwd on Neovim startup.
|
|
'';
|
|
|
|
on_autoload_no_session = defaultNullOpts.mkRaw "function() end" ''
|
|
|
|
Function to run when `autoload = true` but there is no session to load.
|
|
|
|
```lua
|
|
@type fun(): any
|
|
```
|
|
'';
|
|
|
|
allowed_dirs = defaultNullOpts.mkListOf types.str [ ] ''
|
|
List of dirs that the plugin will start and autoload from.
|
|
'';
|
|
|
|
ignored_dirs = defaultNullOpts.mkListOf types.str [ ] ''
|
|
List of dirs that are ignored for starting and autoloading.
|
|
'';
|
|
|
|
telescope = {
|
|
mappings =
|
|
defaultNullOpts.mkAttrsOf types.str
|
|
{
|
|
copy_session = "<C-c>";
|
|
change_branch = "<C-b>";
|
|
delete_session = "<C-d>";
|
|
}
|
|
''
|
|
Mappings for managing sessions in Telescope.
|
|
'';
|
|
|
|
icons =
|
|
defaultNullOpts.mkAttrsOf types.str
|
|
{
|
|
selected = " ";
|
|
dir = " ";
|
|
branch = " ";
|
|
}
|
|
''
|
|
Icons displayed in the Telescope picker.
|
|
'';
|
|
};
|
|
};
|
|
|
|
settingsExample = {
|
|
use_git_branch = true;
|
|
autoload = true;
|
|
on_autoload_no_session.__raw = ''
|
|
function()
|
|
vim.notify("No existing session to load.")
|
|
end
|
|
'';
|
|
};
|
|
}
|