From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 796 invoked from network); 10 Oct 2000 15:05:52 -0000 Received: from unknown (HELO sunsite.auc.dk) (130.225.51.30) by ns1.primenet.com.au with SMTP; 10 Oct 2000 15:05:52 -0000 Received: (qmail 8096 invoked by alias); 10 Oct 2000 15:04:37 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 12948 Received: (qmail 8089 invoked from network); 10 Oct 2000 15:04:36 -0000 Date: Tue, 10 Oct 2000 17:04:34 +0200 (MET DST) Message-Id: <200010101504.RAA25484@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: "Bart Schaefer"'s message of Tue, 10 Oct 2000 14:29:01 +0000 Subject: Re: Global-alias problem with _expand Bart Schaefer wrote: > On Oct 10, 10:13am, Sven Wischnowsky wrote: > } > } Rats. Look: > } > } % alias -g 'T=|foo' > } % eval 'exp=( T )' > } zsh: parse error near `|' > } > } Anyone know how to avoid that? > > By redirecting stderr on the eval? Now where did I get the impression from that the error kept the rest from the function from being executed? Sigh. Bye Sven Index: Completion/Core/_expand =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Core/_expand,v retrieving revision 1.31 diff -u -r1.31 _expand --- Completion/Core/_expand 2000/10/10 09:00:15 1.31 +++ Completion/Core/_expand 2000/10/10 15:03:52 @@ -12,7 +12,6 @@ [[ _matcher_num -gt 1 ]] && return 1 local exp word sort expr expl subd suf=" " force opt asp tmp opre pre epre -local gal (( $# )) && while getopts gsco opt; do @@ -49,12 +48,6 @@ ( "$word" = *\$[a-zA-Z0-9_]## && ${#parameters[(I)${word##*\$}*]} -ne 1 ) ]] && return 1 } -# We have to temporarily remove the global aliases because they can make -# the evals fail. - -gal=( ${(kv)galiases} ) -(( $#gal )) && builtin unalias ${(k)galiases} - # In exp we will collect the expansions. exp=("$word") @@ -66,7 +59,7 @@ if [[ "$force" = *s* ]] || zstyle -T ":completion:${curcontext}:" substitute; then [[ ! -o ignorebraces && "${#${exp}//[^\{]}" = "${#${exp}//[^\}]}" ]] && - eval exp\=\( ${${(q)exp}:gs/\\{/\{/:gs/\\}/\}/} \) + eval exp\=\( ${${(q)exp}:gs/\\{/\{/:gs/\\}/\}/} \) 2>/dev/null eval 'exp=( ${${(e)exp//\\[ ]/ }//(#b)([ ])/\\$match[1]} )' 2>/dev/null @@ -90,20 +83,14 @@ (( $#exp )) || exp=("$subd[@]") -if [[ $#exp -eq 1 && "${exp[1]//\\}" = "${word//\\}"(|\(N\)) ]]; then - galiases=( $gal ) - return 1 -fi +[[ $#exp -eq 1 && "${exp[1]//\\}" = "${word//\\}"(|\(N\)) ]] && return 1 # With subst-globs-only we bail out if there were no glob expansions, # regardless of any substitutions -if { [[ "$force" = *o* ]] || - zstyle -t ":completion:${curcontext}:" subst-globs-only } && - [[ "$subd" = "$exp"(|\(N\)) ]]; then - galiases=( $gal ) - return 1 -fi +{ [[ "$force" = *o* ]] || + zstyle -t ":completion:${curcontext}:" subst-globs-only } && + [[ "$subd" = "$exp"(|\(N\)) ]] && return 1 zstyle -s ":completion:${curcontext}:" keep-prefix tmp || tmp=changed if [[ "$word" = [\~\$]*/* && "$tmp" = (yes|true|on|1|changed) ]]; then @@ -114,12 +101,7 @@ [[ "$tmp" != changed || $#exp -gt 1 || "${opre}${exp[1]#${pre}}" != "$word" ]] && exp=( ${opre}${^exp#${pre}} ) fi - - galiases=( $gal ) - [[ $#exp -eq 1 && "$exp[1]" = "$word" ]] && return 1 -else - galiases=( $gal ) fi # Now add as matches whatever the user requested. -- Sven Wischnowsky wischnow@informatik.hu-berlin.de