mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
The option appended directories to fpath, but fpath is zsh's lookup path for all autoloadable functions, not just completion functions. Rename the option to functions with mkRenamedOptionModule so existing completions users are migrated through the standard Home Manager deprecation path. Link: https://github.com/nix-community/home-manager/discussions/8701#discussioncomment-16966141
54 lines
2.3 KiB
Nix
54 lines
2.3 KiB
Nix
{ pkgs, ... }:
|
|
|
|
let
|
|
mockZshPluginSrc = pkgs.writeText "mockZshPluginSrc" "echo example";
|
|
in
|
|
{
|
|
config = {
|
|
programs.zsh = {
|
|
enable = true;
|
|
plugins = [
|
|
{
|
|
name = "mockPlugin";
|
|
file = "share/mockPlugin/mockPlugin.plugin.zsh";
|
|
src = mockZshPluginSrc;
|
|
functions = [
|
|
"share/zsh/site-functions"
|
|
"share/zsh/vendor-completions"
|
|
];
|
|
}
|
|
];
|
|
};
|
|
|
|
test.stubs.zsh = { };
|
|
|
|
nmt.script = ''
|
|
# Test the plugin directories loop structure
|
|
assertFileContains home-files/.zshrc '# Add plugin directories to PATH and fpath'
|
|
assertFileContains home-files/.zshrc 'plugin_dirs=('
|
|
assertFileContains home-files/.zshrc 'mockPlugin'
|
|
assertFileContains home-files/.zshrc 'for plugin_dir in "''${plugin_dirs[@]}"; do'
|
|
assertFileContains home-files/.zshrc 'path+="/home/hm-user/.zsh/plugins/$plugin_dir"'
|
|
assertFileContains home-files/.zshrc 'fpath+="/home/hm-user/.zsh/plugins/$plugin_dir"'
|
|
assertFileContains home-files/.zshrc '$plugin_dir/share/zsh/plugins/$plugin_dir'
|
|
assertFileContains home-files/.zshrc '$plugin_dir/share/zsh/site-functions'
|
|
assertFileContains home-files/.zshrc '$plugin_dir/share/zsh/vendor-completions'
|
|
|
|
# Test the completion paths loop structure
|
|
assertFileContains home-files/.zshrc '# Add additional function paths to fpath'
|
|
assertFileContains home-files/.zshrc 'function_paths=('
|
|
assertFileContains home-files/.zshrc 'mockPlugin/share/zsh/site-functions'
|
|
assertFileContains home-files/.zshrc 'mockPlugin/share/zsh/vendor-completions'
|
|
assertFileContains home-files/.zshrc 'for function_path in "''${function_paths[@]}"; do'
|
|
assertFileContains home-files/.zshrc 'fpath+="/home/hm-user/.zsh/plugins/$function_path"'
|
|
|
|
# Test the plugin loading structure
|
|
assertFileContains home-files/.zshrc '# Source plugins'
|
|
assertFileContains home-files/.zshrc 'plugins=('
|
|
assertFileContains home-files/.zshrc 'mockPlugin/share/mockPlugin/mockPlugin.plugin.zsh'
|
|
assertFileContains home-files/.zshrc 'for plugin in "''${plugins[@]}"; do'
|
|
assertFileContains home-files/.zshrc '[[ -f "/home/hm-user/.zsh/plugins/$plugin" ]] && source "/home/hm-user/.zsh/plugins/$plugin"'
|
|
'';
|
|
};
|
|
}
|