Merge pull request #26229 from Ma27/refactor/use-attr-set-for-syntax-highlighting-patterns

programs.zsh.syntaxHighlighting: refactor to use attr sets rather than recursive lists for patterns
This commit is contained in:
Jörg Thalheim 2017-06-03 19:28:17 +01:00 committed by GitHub
commit d07ad26bfd

View File

@ -8,13 +8,7 @@ in
{ {
options = { options = {
programs.zsh.syntaxHighlighting = { programs.zsh.syntaxHighlighting = {
enable = mkOption { enable = mkEnableOption "zsh-syntax-highlighting";
default = false;
type = types.bool;
description = ''
Enable zsh-syntax-highlighting.
'';
};
highlighters = mkOption { highlighters = mkOption {
default = [ "main" ]; default = [ "main" ];
@ -39,12 +33,12 @@ in
patterns = mkOption { patterns = mkOption {
default = []; default = [];
type = types.listOf(types.listOf(types.string)); type = types.attrsOf types.string;
example = literalExample '' example = literalExample ''
[ {
["rm -rf *" "fg=white,bold,bg=red"] "rm -rf *" = "fg=white,bold,bg=red";
] }
''; '';
description = '' description = ''
@ -67,14 +61,17 @@ in
"ZSH_HIGHLIGHT_HIGHLIGHTERS=(${concatStringsSep " " cfg.highlighters})" "ZSH_HIGHLIGHT_HIGHLIGHTERS=(${concatStringsSep " " cfg.highlighters})"
} }
${optionalString (length(cfg.patterns) > 0) ${let
(assert(elem "pattern" cfg.highlighters); (foldl ( n = attrNames cfg.patterns;
a: b: in
assert(length(b) == 2); '' optionalString (length(n) > 0)
${a} (assert(elem "pattern" cfg.highlighters); (foldl (
ZSH_HIGHLIGHT_PATTERNS+=('${elemAt b 0}' '${elemAt b 1}') a: b:
'' ''
) "") cfg.patterns) ${a}
ZSH_HIGHLIGHT_PATTERNS+=('${b}' '${attrByPath [b] "" cfg.patterns}')
''
) "") n)
} }
''; '';
}; };