diff --git a/modules/programs/zsh/plugins/default.nix b/modules/programs/zsh/plugins/default.nix index 06f5179b6..2371f1885 100644 --- a/modules/programs/zsh/plugins/default.nix +++ b/modules/programs/zsh/plugins/default.nix @@ -114,8 +114,14 @@ in for plugin_dir in "''${plugin_dirs[@]}"; do path+="${pluginsDir}/$plugin_dir" fpath+="${pluginsDir}/$plugin_dir" + for plugin_fpath_dir in \ + "$plugin_dir/share/zsh/plugins/$plugin_dir" \ + "$plugin_dir/share/zsh/site-functions" \ + "$plugin_dir/share/zsh/vendor-completions"; do + [[ -d "${pluginsDir}/$plugin_fpath_dir" ]] && fpath+="${pluginsDir}/$plugin_fpath_dir" + done done - unset plugin_dir plugin_dirs + unset plugin_dir plugin_dirs plugin_fpath_dir ${lib.optionalString (completionPaths != [ ]) '' # Add completion paths to fpath ${lib.hm.zsh.define "completion_paths" completionPaths} diff --git a/tests/modules/programs/zsh/plugins.nix b/tests/modules/programs/zsh/plugins.nix index d69b8095f..3c92b1ada 100644 --- a/tests/modules/programs/zsh/plugins.nix +++ b/tests/modules/programs/zsh/plugins.nix @@ -30,14 +30,17 @@ in 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 completion paths to fpath' - assertFileContains home-files/.zshrc 'completion_paths=(' + 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 completion_path in "''${completion_paths[@]}"; do' - assertFileContains home-files/.zshrc 'fpath+="/home/hm-user/.zsh/plugins/$completion_path"' + 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' @@ -45,7 +48,6 @@ in 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"' - assertFileContains home-files/.zshrc 'done' ''; }; }