nix-community.nixvim/plugins/ui/zen-mode.nix
2024-06-21 08:49:08 +01:00

141 lines
3.5 KiB
Nix

{
lib,
helpers,
config,
pkgs,
...
}:
with lib;
helpers.neovim-plugin.mkNeovimPlugin config {
name = "zen-mode";
originalName = "zen-mode.nvim";
defaultPackage = pkgs.vimPlugins.zen-mode-nvim;
maintainers = [ maintainers.GaetanLepage ];
# Optionally, explicitly declare some options. You don't have to.
settingsOptions = {
window = {
backdrop = helpers.defaultNullOpts.mkNullable (types.numbers.between 0.0 1.0) 0.95 ''
Shade the backdrop of the Zen window.
Set to 1 to keep the same as Normal.
'';
width =
helpers.defaultNullOpts.mkNullable
(
with helpers.nixvimTypes;
oneOf [
ints.positive
(numbers.between 0.0 1.0)
rawLua
]
)
120
''
Width of the zen window.
Can be:
- an absolute number of cells when > 1
- a percentage of the width / height of the editor when <= 1
- a function that returns the width or the height
'';
height =
helpers.defaultNullOpts.mkNullable
(
with helpers.nixvimTypes;
oneOf [
ints.positive
(numbers.between 0.0 1.0)
rawLua
]
)
1
''
Height of the Zen window.
Can be:
- an absolute number of cells when > 1
- a percentage of the width / height of the editor when <= 1
- a function that returns the width or the height
'';
options = helpers.defaultNullOpts.mkAttrsOf types.anything { } ''
By default, no options are changed for the Zen window.
You can set any `vim.wo` option here.
Example:
```nix
{
signcolumn = "no";
number = false;
relativenumber = false;
cursorline = false;
cursorcolumn = false;
foldcolumn = "0";
list = false;
}
```
'';
};
plugins = {
options =
helpers.defaultNullOpts.mkAttrsOf types.anything
{
enabled = true;
ruler = false;
showcmd = false;
laststatus = 0;
}
''
Disable some global vim options (`vim.o`...).
'';
};
on_open = helpers.defaultNullOpts.mkLuaFn "function(win) end" ''
Callback where you can add custom code when the Zen window opens.
'';
on_close = helpers.defaultNullOpts.mkLuaFn "function(win) end" ''
Callback where you can add custom code when the Zen window closes.
'';
};
settingsExample = {
window = {
backdrop = 0.95;
width = 0.8;
height = 1;
options.signcolumn = "no";
};
plugins = {
options = {
enabled = true;
ruler = false;
showcmd = false;
};
twilight.enabled = false;
gitsigns.enabled = true;
tmux.enabled = false;
};
on_open = ''
function()
require("gitsigns.actions").toggle_current_line_blame()
vim.cmd('IBLDisable')
vim.opt.relativenumber = false
vim.opt.signcolumn = "no"
require("gitsigns.actions").refresh()
end
'';
on_close = ''
function()
require("gitsigns.actions").toggle_current_line_blame()
vim.cmd('IBLEnable')
vim.opt.relativenumber = true
vim.opt.signcolumn = "yes:2"
require("gitsigns.actions").refresh()
end
'';
};
}