Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: zsh spinning for ages when I hit tab on directory
On Nov 8, 3:21pm, Markus Trippelsdorf wrote:
} Subject: Re: zsh spinning for ages when I hit tab on directory
}
} > > When position the cursor after the man1/ of
} > > ~ % /usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.0/man/man1/
} > > and hit tab, zsh starts spinning:
}
} zstyle ':completion:::::' completer _complete _approximate
} zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) )'
} zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
}
} When I comment out the max-errors zstyle, zsh no longer hangs.
}
} So the next question is, how can I get the same behavior as before, but
} without the long hangs?
You're computing max-errors based on the length of the entire path, but
the effect of correction is applied to each individual component, so
you're allowing 18 corrections per filename in man1/ with the above.
Try changing to something like
zstyle -e ':completion:*:approximate:*' \
max-errors 'reply=( $(( ($#PREFIX:t+$#SUFFIX:h)/3 )) )'
although that (and your original) allows no corrections unless there
are at least 6 characters already in the current word, so you might
want to use e.g. ($#PREFIX:t+2) or ($#PREFIX:t < 3 ? 3 : $#PREFIX:t).
Messages sorted by:
Reverse Date,
Date,
Thread,
Author