mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
146 lines
3.8 KiB
Nix
146 lines
3.8 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
|
||
|
'';
|
||
|
};
|
||
|
}
|