1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-12-03 07:31:03 +01:00

zsh/plugins: optimize plugin loading with array-based loops

Replace individual plugin PATH/fpath statements and conditional sourcing with
efficient array-based loops. Use lib.hm.zsh.define for consistent array
formatting and add unset statements to clean up temporary variables.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
This commit is contained in:
Austin Horstman 2025-09-26 16:45:37 -05:00
parent bd81c11eb3
commit c26a2ac2e4
4 changed files with 116 additions and 29 deletions

View file

@ -23,9 +23,29 @@ in
test.stubs.zsh = { };
nmt.script = ''
assertFileRegex home-files/.zshrc '^path+="/home/hm-user/.zsh/plugins/mockPlugin"$'
assertFileRegex home-files/.zshrc '^fpath+="/home/hm-user/.zsh/plugins/mockPlugin"$'
assertFileRegex home-files/.zshrc '^fpath+=("/home/hm-user/.zsh/plugins/mockPlugin/share/zsh/site-functions" "/home/hm-user/.zsh/plugins/mockPlugin/share/zsh/vendor-completions")$'
# 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"'
# 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 '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"'
# 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"'
assertFileContains home-files/.zshrc 'done'
'';
};
}