 aa46b1ec0e
			
		
	
	
		aa46b1ec0e
		
	
	
	
	
		
			
			The `zsh-autosuggestions` package provides several configuration options
such as a different highlight style (like `fg=cyan` which is easier to
read).
With `rename.nix` the old `programs.zsh.enableAutosuggestions` is still
functional, but yields the following warning like this during evaluation:
```
trace: warning: The option `programs.zsh.enableAutosuggestions' defined in `<unknown-file>' has been renamed to `programs.zsh.autosuggestions.enable'.
```
The module provides the most common `zsh-autosuggestions` (highlight
style and strategy) as options that will be written into the interactive
shell init (`/etc/zshrc` by default). Further configuration options can
be declared using the `extraConfig` attr set:
```
{
  programs.zsh.autosuggestions.extraConfig = {
    "ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" = "buffer_size";
  };
}
```
A full list of available configuration options for `zsh-autosuggestions`
can be viewed here: https://github.com/zsh-users/zsh-autosuggestions/blob/v0.4.3/README.md
		
	
			
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, pkgs, lib, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let
 | |
|   cfg = config.programs.zsh.autosuggestions;
 | |
| in
 | |
| {
 | |
|   options.programs.zsh.autosuggestions = {
 | |
| 
 | |
|     enable = mkEnableOption "zsh-autosuggestions";
 | |
| 
 | |
|     highlightStyle = mkOption {
 | |
|       type = types.str;
 | |
|       default = "fg=8"; # https://github.com/zsh-users/zsh-autosuggestions/tree/v0.4.3#suggestion-highlight-style
 | |
|       description = "Highlight style for suggestions ({fore,back}ground color)";
 | |
|       example = "fg=cyan";
 | |
|     };
 | |
| 
 | |
|     strategy = mkOption {
 | |
|       type = types.enum [ "default" "match_prev_cmd" ];
 | |
|       default = "default";
 | |
|       description = ''
 | |
|         Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions.
 | |
|         There are currently two to choose from:
 | |
| 
 | |
|           * default: 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.
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|     extraConfig = mkOption {
 | |
|       type = with types; attrsOf str;
 | |
|       default = {};
 | |
|       description = "Attribute set with additional configuration values";
 | |
|       example = literalExample ''
 | |
|         {
 | |
|           "ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" = "20";
 | |
|         }
 | |
|       '';
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
| 
 | |
|     programs.zsh.interactiveShellInit = ''
 | |
|       source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
 | |
| 
 | |
|       export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}"
 | |
|       export ZSH_AUTOSUGGEST_STRATEGY="${cfg.strategy}"
 | |
| 
 | |
|       ${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)}
 | |
|     '';
 | |
| 
 | |
|   };
 | |
| }
 |