## vim:ft=zsh # Since source in a function makes typeset'ed parameters local # (which is not what we want), we use a combination of functions # and aliases here: # autoload xsource; xsource # xsource file anotherfile && x_source xsource() { typeset file (( ${#*} )) && unset xsource_files for file in $*; { [[ -r $file ]] && xsource_files=($xsource_files $file) } (( ${#xsource_files} )) || return 1 } alias x_source='source $xsource_files; unset xsource_files'