diff --git a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
index 27fbd68a6f3..1ad1a8e3a36 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
@@ -846,6 +846,12 @@
compatibilty, but will be removed at a later date.
+
+
+ programs.zsh.autosuggestions.strategy now
+ takes a list of strings instead of a string.
+
+
The services.unifi.openPorts option default
diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md
index 388ddc67fb2..bf66e66da62 100644
--- a/nixos/doc/manual/release-notes/rl-2205.section.md
+++ b/nixos/doc/manual/release-notes/rl-2205.section.md
@@ -278,6 +278,8 @@ In addition to numerous new and upgraded packages, this release has the followin
combined `influxdb2` package is still provided in this release for
backwards compatibilty, but will be removed at a later date.
+- `programs.zsh.autosuggestions.strategy` now takes a list of strings instead of a string.
+
- The `services.unifi.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
Configurations using this default will print a warning when rebuilt.
diff --git a/nixos/modules/programs/zsh/zsh-autosuggestions.nix b/nixos/modules/programs/zsh/zsh-autosuggestions.nix
index fee324cc732..2e53e907d54 100644
--- a/nixos/modules/programs/zsh/zsh-autosuggestions.nix
+++ b/nixos/modules/programs/zsh/zsh-autosuggestions.nix
@@ -22,17 +22,18 @@ in
};
strategy = mkOption {
- type = types.enum [ "history" "match_prev_cmd" ];
- default = "history";
+ type = types.listOf (types.enum [ "history" "completion" "match_prev_cmd" ]);
+ default = [ "history" ];
description = ''
- Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions.
- There are currently two to choose from:
+ `ZSH_AUTOSUGGEST_STRATEGY` is an array that specifies how suggestions should be generated.
+ The strategies in the array are tried successively until a suggestion is found.
+ There are currently three built-in strategies to choose from:
- * history: Chooses the most recent match.
- * match_prev_cmd: Chooses the most recent match whose preceding history item matches
- the most recently executed command (more info). Note that this strategy won't work as
- expected with ZSH options that don't preserve the history order such as
- HIST_IGNORE_ALL_DUPS or HIST_EXPIRE_DUPS_FIRST.
+ - `history`: Chooses the most recent match from history.
+ - `completion`: Chooses a suggestion based on what tab-completion would suggest. (requires `zpty` module)
+ - `match_prev_cmd`: Like `history`, but chooses the most recent match whose preceding history item matches
+ the most recently executed command. Note that this strategy won't work as expected with ZSH options that
+ don't preserve the history order such as `HIST_IGNORE_ALL_DUPS` or `HIST_EXPIRE_DUPS_FIRST`.
'';
};
@@ -62,7 +63,7 @@ in
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}"
- export ZSH_AUTOSUGGEST_STRATEGY=("${cfg.strategy}")
+ export ZSH_AUTOSUGGEST_STRATEGY=(${concatStringsSep " " cfg.strategy})
${optionalString (!cfg.async) "unset ZSH_AUTOSUGGEST_USE_ASYNC"}
${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)}