mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-02-23 11:58:23 +00:00
init/autocmds: fix autogroups
Some checks are pending
Check for typos in the source tree / check-typos (push) Waiting to run
Some checks are pending
Check for typos in the source tree / check-typos (push) Waiting to run
This commit is contained in:
parent
403072cae3
commit
80fe9244e2
1 changed files with 58 additions and 37 deletions
|
@ -6,7 +6,7 @@
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
inherit (lib.lists) filter;
|
inherit (lib.lists) filter;
|
||||||
inherit (lib.strings) optionalString;
|
inherit (lib.strings) optionalString;
|
||||||
inherit (lib.types) submodule listOf str bool;
|
inherit (lib.types) nullOr submodule listOf str bool;
|
||||||
inherit (lib.nvim.types) luaInline;
|
inherit (lib.nvim.types) luaInline;
|
||||||
inherit (lib.nvim.lua) toLuaObject;
|
inherit (lib.nvim.lua) toLuaObject;
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
inherit (lib.nvim.dag) entryAfter;
|
||||||
|
@ -21,40 +21,46 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
event = mkOption {
|
event = mkOption {
|
||||||
type = listOf str;
|
type = nullOr (listOf str);
|
||||||
|
default = null;
|
||||||
example = ["BufRead" "BufWritePre"];
|
example = ["BufRead" "BufWritePre"];
|
||||||
description = "The event(s) that trigger the autocommand.";
|
description = "The event(s) that trigger the autocommand.";
|
||||||
};
|
};
|
||||||
|
|
||||||
pattern = mkOption {
|
pattern = mkOption {
|
||||||
type = listOf str;
|
type = nullOr (listOf str);
|
||||||
|
default = null;
|
||||||
example = ["*.lua" "*.vim"];
|
example = ["*.lua" "*.vim"];
|
||||||
description = "The file pattern(s) that determine when the autocommand applies).";
|
description = "The file pattern(s) that determine when the autocommand applies).";
|
||||||
};
|
};
|
||||||
|
|
||||||
callback = mkOption {
|
callback = mkOption {
|
||||||
type = luaInline;
|
type = nullOr luaInline;
|
||||||
|
default = null;
|
||||||
example = ''
|
example = ''
|
||||||
function()
|
function()
|
||||||
print("Saving a Lua file...")
|
print("Saving a Lua file...")
|
||||||
end,
|
end,
|
||||||
'';
|
'';
|
||||||
description = "The file pattern(s) that determine when the autocommand applies).";
|
description = "The file pattern(s) that determine when the autocommand applies.";
|
||||||
};
|
};
|
||||||
|
|
||||||
command = mkOption {
|
command = mkOption {
|
||||||
type = str;
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
description = "Vim command string instead of a Lua function.";
|
description = "Vim command string instead of a Lua function.";
|
||||||
};
|
};
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = str;
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
example = "MyAutoCmdGroup";
|
example = "MyAutoCmdGroup";
|
||||||
description = "An optional autocommand group to manage related autocommands.";
|
description = "An optional autocommand group to manage related autocommands.";
|
||||||
};
|
};
|
||||||
|
|
||||||
desc = mkOption {
|
desc = mkOption {
|
||||||
type = str;
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
example = "Notify when saving a Lua file";
|
example = "Notify when saving a Lua file";
|
||||||
description = "A description for the autocommand.";
|
description = "A description for the autocommand.";
|
||||||
};
|
};
|
||||||
|
@ -127,13 +133,20 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config.vim = let
|
config = {
|
||||||
|
vim = let
|
||||||
enabledAutocommands = filter (cmd: cmd.enable) cfg.autocmds;
|
enabledAutocommands = filter (cmd: cmd.enable) cfg.autocmds;
|
||||||
enabledAutogroups = filter (au: au.enable) cfg.augroups;
|
enabledAutogroups = filter (au: au.enable) cfg.augroups;
|
||||||
in {
|
in {
|
||||||
luaConfigRC = {
|
luaConfigRC = {
|
||||||
augroups = entryAfter ["pluginConfigs"] (optionalString (enabledAutogroups != []) ''
|
augroups = entryAfter ["pluginConfigs"] (optionalString (enabledAutogroups != []) ''
|
||||||
local nvf_autogroups = ${toLuaObject cfg.autogroups}
|
local nvf_autogroups = {}
|
||||||
|
for _, group in ipairs(${toLuaObject enabledAutogroups}) do
|
||||||
|
if group.name then
|
||||||
|
nvf_autogroups[group.name] = { clear = group.clear }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for group_name, options in pairs(nvf_autogroups) do
|
for group_name, options in pairs(nvf_autogroups) do
|
||||||
vim.api.nvim_create_augroup(group_name, options)
|
vim.api.nvim_create_augroup(group_name, options)
|
||||||
end
|
end
|
||||||
|
@ -159,4 +172,12 @@ in {
|
||||||
'');
|
'');
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = builtins.all (cmd: !(cmd.command != null && cmd.callback != null)) cfg.autocmds;
|
||||||
|
message = "An autocommand cannot have both 'command' and 'callback' defined at the same time.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue