mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
In our basic template we used to provide a check based on `mkTestDerivationFromNvim`. The issue with this check (that is handled correctly internally) is that some plugins _can't_ be used in the test environment, for example image.nvim like in #1085. This commit introduces a new function to generate such checks, `mkTestDerivationFromNixvimModule`, that wraps a nixvim configuration instead of a built nvim instance. Then a configuration can rely on the newly added `helpers.enableExceptInTests` attribute to disable parts of the configuration depending if it is evaluated in tests or in a real final configuration. Resolves #1085
49 lines
904 B
Nix
49 lines
904 B
Nix
{
|
|
lib,
|
|
_nixvimTests,
|
|
}:
|
|
with lib; {
|
|
listToUnkeyedAttrs = list:
|
|
builtins.listToAttrs
|
|
(lib.lists.imap0 (idx: lib.nameValuePair "__unkeyed-${toString idx}") list);
|
|
|
|
enableExceptInTests = !_nixvimTests;
|
|
|
|
emptyTable = {"__empty" = null;};
|
|
|
|
/*
|
|
Convert a string from camelCase to snake_case
|
|
Type: string -> string
|
|
*/
|
|
toSnakeCase = let
|
|
splitByWords = builtins.split "([A-Z])";
|
|
processWord = s:
|
|
if isString s
|
|
then s
|
|
else "_" + toLower (elemAt s 0);
|
|
in
|
|
string: let
|
|
words = splitByWords string;
|
|
in
|
|
concatStrings (map processWord words);
|
|
|
|
mkIfNonNull' = x: y: (mkIf (x != null) y);
|
|
|
|
mkIfNonNull = x: (mkIfNonNull' x x);
|
|
|
|
ifNonNull' = x: y:
|
|
if (x == null)
|
|
then null
|
|
else y;
|
|
|
|
mkRaw = r:
|
|
if (isString r && (r != ""))
|
|
then {__raw = r;}
|
|
else null;
|
|
|
|
wrapDo = string: ''
|
|
do
|
|
${string}
|
|
end
|
|
'';
|
|
}
|