programs.zsh.syntaxHighlighting: refactor to use attr sets rather than recursive lists for patterns

The idea has been described here: https://github.com/NixOS/nixpkgs/pull/25323#issuecomment-298677369
This commit is contained in:
Maximilian Bosch 2017-05-30 06:55:03 +02:00
parent a908ad6fd3
commit 0925f79d56
No known key found for this signature in database
GPG Key ID: 091DBF4D1FC46B8E

View File

@ -39,12 +39,12 @@ in
patterns = mkOption {
default = [];
type = types.listOf(types.listOf(types.string));
type = types.attrsOf types.string;
example = literalExample ''
[
["rm -rf *" "fg=white,bold,bg=red"]
]
{
"rm -rf *" = "fg=white,bold,bg=red";
}
'';
description = ''
@ -67,14 +67,17 @@ in
"ZSH_HIGHLIGHT_HIGHLIGHTERS=(${concatStringsSep " " cfg.highlighters})"
}
${optionalString (length(cfg.patterns) > 0)
(assert(elem "pattern" cfg.highlighters); (foldl (
a: b:
assert(length(b) == 2); ''
${a}
ZSH_HIGHLIGHT_PATTERNS+=('${elemAt b 0}' '${elemAt b 1}')
''
) "") cfg.patterns)
${let
n = attrNames cfg.patterns;
in
optionalString (length(n) > 0)
(assert(elem "pattern" cfg.highlighters); (foldl (
a: b:
''
${a}
ZSH_HIGHLIGHT_PATTERNS+=('${b}' '${attrByPath [b] "" cfg.patterns}')
''
) "") n)
}
'';
};