mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
63 lines
1.7 KiB
Nix
63 lines
1.7 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) types;
|
|
|
|
cfg = config.filetype;
|
|
|
|
filetypeDefinition = helpers.mkNullOrOption (
|
|
with types;
|
|
attrsOf (oneOf [
|
|
# Raw filetype
|
|
str
|
|
# Function to set the filetype
|
|
rawLua
|
|
# ["filetype" {priority = xx;}]
|
|
(listOf (
|
|
either str (submodule {
|
|
options = {
|
|
priority = lib.mkOption {
|
|
type = ints.unsigned;
|
|
description = ''
|
|
Filename patterns can specify an optional priority to resolve cases when a file path
|
|
matches multiple patterns.
|
|
|
|
Higher priorities are matched first.
|
|
When omitted, the priority defaults to 0.
|
|
|
|
A pattern can contain environment variables of the form `"''${SOME_VAR}"` that will
|
|
be automatically expanded.
|
|
If the environment variable is not set, the pattern won't be matched.
|
|
'';
|
|
};
|
|
};
|
|
})
|
|
))
|
|
])
|
|
);
|
|
in
|
|
{
|
|
options.filetype =
|
|
helpers.mkCompositeOption
|
|
''
|
|
Define additional filetypes. The values can either be a literal filetype or a function
|
|
taking the filepath and the buffer number.
|
|
|
|
For more information check `:h vim.filetype.add()`
|
|
''
|
|
{
|
|
extension = filetypeDefinition "set filetypes matching the file extension";
|
|
filename = filetypeDefinition "set filetypes matching the file name (or path)";
|
|
pattern = filetypeDefinition "set filetypes matching the specified pattern";
|
|
};
|
|
|
|
config.extraConfigLua =
|
|
lib.mkIf (cfg != null && (builtins.any (v: v != null) (builtins.attrValues cfg)))
|
|
''
|
|
vim.filetype.add(${lib.nixvim.toLuaObject cfg})
|
|
'';
|
|
}
|