-
-
Notifications
You must be signed in to change notification settings - Fork 250
/
autocmd.nix
93 lines (88 loc) · 2.35 KB
/
autocmd.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
{
lib,
helpers,
config,
...
}:
{
options = {
autoGroups = lib.mkOption {
type = lib.types.attrsOf helpers.autocmd.autoGroupOption;
default = { };
description = "augroup definitions";
example = {
my_augroup = {
clear = true;
};
};
};
autoCmd = lib.mkOption {
type = lib.types.listOf helpers.autocmd.autoCmdOption;
default = [ ];
description = "autocmd definitions";
example = [
{
event = [
"BufEnter"
"BufWinEnter"
];
pattern = [
"*.c"
"*.h"
];
command = "echo 'Entering a C or C++ file'";
}
];
};
};
config =
let
inherit (config) autoGroups autoCmd;
in
lib.mkIf (autoGroups != { } || autoCmd != [ ]) {
# Introduced early October 2023.
# TODO remove in early December 2023.
assertions = [
{
assertion = lib.all (x: x.description == null) autoCmd;
message = ''
RENAMED OPTION: `autoCmd[].description` has been renamed `autoCmd[].desc`.
Please update your configuration.
'';
}
];
extraConfigLuaPost =
(lib.optionalString (autoGroups != { }) ''
-- Set up autogroups {{
do
local __nixvim_autogroups = ${helpers.toLuaObject autoGroups}
for group_name, options in pairs(__nixvim_autogroups) do
vim.api.nvim_create_augroup(group_name, options)
end
end
-- }}
'')
+ (lib.optionalString (autoCmd != [ ]) ''
-- Set up autocommands {{
do
local __nixvim_autocommands = ${helpers.toLuaObject autoCmd}
for _, autocmd in ipairs(__nixvim_autocommands) do
vim.api.nvim_create_autocmd(
autocmd.event,
{
group = autocmd.group,
pattern = autocmd.pattern,
buffer = autocmd.buffer,
desc = autocmd.desc,
callback = autocmd.callback,
command = autocmd.command,
once = autocmd.once,
nested = autocmd.nested
}
)
end
end
-- }}
'');
};
}