From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12084 invoked from network); 26 Oct 1999 16:12:11 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 26 Oct 1999 16:12:11 -0000 Received: (qmail 4598 invoked by alias); 26 Oct 1999 16:12:04 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8428 Received: (qmail 4590 invoked from network); 26 Oct 1999 16:12:02 -0000 From: "Bart Schaefer" Message-Id: <991026160826.ZM1681@candle.brasslantern.com> Date: Tue, 26 Oct 1999 16:08:25 +0000 X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.auc.dk Subject: PATCH: predict-on: suppress long listings MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii This is based on Sven's suggestion from 8399. Also deletes two extraneous setopts. Requires two patches I posted previously in 8364 and 8373. The +h in "local -a +h comppostfuncs" is unnecessary, but just in case it ever becomes a special as part of moving common completion ops into C ... Index: Functions/Zle/predict-on =================================================================== @@ -25,14 +25,12 @@ # error message. predict-on() { - setopt localoptions unset noksharrays zle -N self-insert insert-and-predict zle -N magic-space insert-and-predict zle -N backward-delete-char delete-backward-and-predict zle -N delete-char-or-list delete-no-predict } predict-off() { - setopt localoptions unset noksharrays zle -A .self-insert self-insert zle -A .magic-space magic-space zle -A .backward-delete-char backward-delete-char @@ -53,6 +51,8 @@ if [[ ${KEYS[-1]} != ' ' ]] then integer curs=$CURSOR + local -a +h comppostfuncs + comppostfuncs=( predict-limit-list ) zle complete-word CURSOR=$curs fi @@ -79,8 +79,20 @@ fi } delete-no-predict() { - predict-off + [[ $WIDGET != delete-char-or-list || -n $RBUFFER ]] && predict-off zle .$WIDGET "$@" } + +# This is a helper function for autocompletion to prevent long lists +# of matches from forcing a "do you wish to see all ...?" prompt. + +predict-limit-list() { + if [[ compstate[list_lines]+BUFFERLINES -gt LINES ]]; then + compstate[list]='' + compstate[force_list]=yes + fi +} + +# Handle zsh autoloading conventions [[ -o kshautoload ]] || predict-on "$@" -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com