From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5179 invoked from network); 10 Mar 2000 12:56:29 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 10 Mar 2000 12:56:29 -0000 Received: (qmail 15498 invoked by alias); 10 Mar 2000 12:56:14 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 10058 Received: (qmail 15460 invoked from network); 10 Mar 2000 12:56:08 -0000 To: zsh-workers@sunsite.auc.dk Subject: Re: GNU diff completion problem References: <200003100901.KAA02760@beta.informatik.hu-berlin.de> X-Attribution: adl From: Alexandre Duret-Lutz Date: 10 Mar 2000 13:52:16 +0100 In-Reply-To: Sven Wischnowsky's message of "Fri, 10 Mar 2000 10:01:09 +0100 (MET)" Message-ID: User-Agent: Gnus/5.0803 (Gnus v5.8.3) Emacs/20.5 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii >>> "Sven" == Sven Wischnowsky writes: [...] Sven> it makes $words[1] be used as the command if it matches *diff. That Sven> last part -- or at least the pattern -- may have to be changed [...] Isn't this choice better done by the caller of _diff_options? I mean, _diff could say to _diff_options to use "$words[1]", _prcs could tell it to use ${PRCS_DIFF_COMMAND:-diff}, and so on... This patch passes the command name as the first argument to _diff_options (or do you prefer options?), and rewrite _diff_is_gnu as _is_gnu like Bart did in 10035. Index: Completion/User/_prcs --- Completion/User/_prcs Mon, 28 Feb 2000 11:29:42 +0100 Alexandre +++ Completion/User/_prcs Fri, 10 Mar 2000 13:25:35 +0100 Alexandre @@ -136,7 +136,7 @@ '(--new)-N[compare new files against empty files]' \ "(-P)--exclude-project-file[don't diff the project file]" \ "(--exclude-project-file)-P[don't diff the project file]" \ - '--[introduce diff options]:*::diff options: _diff_options' \ + '--[introduce diff options]:*::diff options: _diff_options ${PRCS_DIFF_COMMAND:-diff}' \ ':project name:_prcs_projects' \ '*:file or directory:_files' ;; Index: Completion/User/_diff --- Completion/User/_diff Wed, 02 Feb 2000 23:45:59 +0100 Alexandre +++ Completion/User/_diff Fri, 10 Mar 2000 13:25:35 +0100 Alexandre @@ -1,3 +1,3 @@ #compdef diff -_diff_options ':original file:_files' ':new file:_files' +_diff_options "$words[1]" ':original file:_files' ':new file:_files' Index: Completion/User/_diff_options --- Completion/User/_diff_options Fri, 10 Mar 2000 13:24:57 +0100 Alexandre +++ Completion/User/_diff_options Fri, 10 Mar 2000 13:29:00 +0100 Alexandre @@ -2,23 +2,20 @@ local of ofwuc ouc oss ofwy ofwg ofwl cmd -(( $+_diff_is_gnu )) || typeset -gA _diff_is_gnu +(( $+_is_gnu )) || typeset -gA _is_gnu -if (( ! $+_diff_is_gnu[$words[1]] )); then - if [[ "$words[1]" = *diff ]]; then - cmd="$words[1]" - else - cmd=diff - fi +cmd="$1" +shift +if (( ! $+_is_gnu[$cmd] )); then if [[ $(_call version $cmd -v /dev/null) = *GNU* ]]; then - _diff_is_gnu[$words[1]]=yes + _is_gnu[$cmd]=yes else - _diff_is_gnu[$words[1]]= + _is_gnu[$cmd]= fi fi -if [[ -n "$_diff_is_gnu[$words[1]]" ]]; then +if [[ -n "$_is_gnu[$cmd]" ]]; then # output formats of="-y --side-by-side -n --rcs -e -f --ed -q --brief -c -C --context -u -U \ --unified --old-group-format --new-group-format --changed-group-format \ -- Alexandre Duret-Lutz