On 2024-04-20 00:42, Roman Perepelitsa wrote: Hafta start using lines like this all the time.  You guys never start a function without one of these 'emulate' instructions -- make sure that the func has the environment it needs. > emulate zsh -o no_unset -o pipe_fail -o err_exit > () { > local last_pkg pkg file So you break it into words automatically here, and any spaced filenames end up in 'file' anyway! > apt-file search "$1" | while read -r pkg file; do > if [[ $pkg != $last_pkg ]]; then > [[ -n $last_pkg ]] && print > last_pkg=$pkg ... this line is Basque to me.  It works but I have no idea how. Anyway that's for me to research.  It baffles me that there's color codes in there. > print -P "%B%2F${pkg//\%/%%}%f%b" > fi Seems we want '-r' most of the time.  And the '--' should always be there.  Now that I know not to use newlines for splitting.  And of course that obviates most of my '(@f)'s too. > print -r -- $file > done > } "$@" > > This implementation fixes a couple of bugs in addition to those > mentioned by Lawrence: it gets rid of the empty line at start of the > output, and leaves whitespace in file names unchanged. To pick nits I want the leading empty line.  But I'm betting your code will be faster.  I'll keep Lawrence's edits until such times as I understand that 'print -P' tho.