zsh-workers
 help / color / mirror / code / Atom feed
From: Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
To: zsh-workers@sunsite.auc.dk
Subject: Re: PATCH: completion
Date: Thu, 26 Aug 1999 15:52:24 +0200 (MET DST)	[thread overview]
Message-ID: <199908261352.PAA16045@beta.informatik.hu-berlin.de> (raw)
In-Reply-To: Tanaka Akira's message of 26 Aug 1999 22:17:14 +0900


Tanaka Akira wrote:

> Hm. `cvs -e vi <TAB>' works now. Thanks.
> But common options are too disabled.
> 
> Z(2):akr@is27e1u11% ./Src/zsh -f
> is27e1u11% bindkey -e; fpath=($PWD/Completion/*(/)); autoload -U compinit; compinit -D; compdef _tst tst
> is27e1u11% compconf group_matches=yes
> is27e1u11% compconf message_format='%d'
> is27e1u11% compconf description_format='%d'
> is27e1u11% cvs <TAB>
> add        commit     export     log        release    tag        watchers
> admin      diff       history    login      remove     unedit     
> annotate   edit       import     logout     rtag       update     
> checkout   editors    init       rdiff      status     watch      
> 
> In this case, the cursor is on first non-option argument *or* option
> argument.  So, _arguments should complete options addition to call
> _cvs_command, I suppose.
> 
> Or, should _cvs be changed to
> "_arguments ... ':cvs command:_cvs_commands' '*::cvs command arguments:_cvs_args'" ?

I /think/ we should help users and add some special casing to allow
options in the first rest-arguments position.

> is27e1u11% cvs -evi <TAB>
> unknown cvs command: -evi
> 
> Hm.

Should work now (this functions has already become more complicated
than `_path_files' -- makes me reluctant to merge it with
`_long_options', although that would be a good thing).

Bye
 Sven

--- oc/Base/_arguments	Thu Aug 26 14:06:15 1999
+++ Completion/Base/_arguments	Thu Aug 26 15:48:01 1999
@@ -7,7 +7,7 @@
 
 local long args rest ws cur nth def nm expl descr action opt arg tmp
 local single uns ret=1 soptseq soptseq1 sopts prefix line
-local beg optbeg argbeg nargbeg inopt
+local beg optbeg argbeg nargbeg inopt fromrest
 
 # Associative arrays used to collect information about the options.
 
@@ -236,7 +236,7 @@
 	  def="$opts[$tmp]"
 	  optbeg="$beg"
 	  argbeg="$beg"
-          inopt=yes
+	  inopt=yes
 	  uns="${ws[1][2,-1]}"
 	  opt=''
 	fi
@@ -277,10 +277,10 @@
 	  def="$dopts[$tmp[1]]"
 	  optbeg="$beg"
 	  argbeg="$beg"
+	  inopt=yes
 	  [[ -n "$oneshot[$tmp[1]]" ]] && unset "dopts[$tmp[1]]"
 	  if [[ "$def" = [^*]*[^\\]:*[^\\]:* ]]; then
             def="${def#?*[^\\]:*[^\\]:}"
-            inopt=yes
           else
             def=''
 	  fi
@@ -305,6 +305,7 @@
 	  def="$odopts[$tmp[1]]"
 	  optbeg="$beg"
 	  argbeg="$beg"
+	  inopt=yes
 	  [[ -n "$oneshot[$tmp[1]]" ]] && unset "odopts[$tmp[1]]"
 
 	  # For options whose first argument *may* come after the
@@ -318,7 +319,6 @@
               def="${def#?*[^\\]:*[^\\]:}"
 	      optbeg="$beg"
 	      argbeg="$beg"
-              inopt=yes
             else
               def=''
             fi
@@ -358,7 +358,7 @@
   (( beg++ ))
 done
 
-[[ -n "$inopt" ]] && nargbeg="$beg"
+[[ -n "$inopt" ]] && nargbeg=$(( beg - 1 ))
 
 # Now generate the matches.
 
@@ -390,6 +390,7 @@
         def="$rest"
 	optbeg="$nargbeg"
 	argbeg="$nargbeg"
+	fromrest=yes
       fi
     fi
 
@@ -453,7 +454,8 @@
       (( $#tmp )) && unset "$tmp[@]"
     fi
 
-    if [[ -n "$opt" ]]; then
+    if [[ -n "$opt" && ( "$def" != \** ||
+                         ( -n "$fromrest" && CURRENT -eq argbeg+1 ) ) ]]; then
 
       # We aren't in an argument directly after a option name, so
       # all option names are possible matches.

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


             reply	other threads:[~1999-08-26 13:52 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-08-26 13:52 Sven Wischnowsky [this message]
  -- strict thread matches above, loose matches on Subject: below --
2000-02-21  9:50 Sven Wischnowsky
1999-10-28  8:12 Sven Wischnowsky
1999-10-28  6:58 Sven Wischnowsky
1999-10-27  8:42 Sven Wischnowsky
1999-10-27 16:39 ` Bart Schaefer
1999-10-27  7:14 Sven Wischnowsky
1999-10-27 21:26 ` Tanaka Akira
1999-10-26 13:17 Sven Wischnowsky
1999-10-26 13:01 Oliver Kiddle
1999-10-26 13:35 ` Zefram
1999-10-26 11:03 Sven Wischnowsky
1999-10-26 17:17 ` Bart Schaefer
1999-10-26 17:22 ` Tanaka Akira
1999-10-26 17:32   ` Tanaka Akira
1999-08-30  9:30 Sven Wischnowsky
1999-08-27  7:03 Sven Wischnowsky
1999-08-27  8:29 ` Tanaka Akira
1999-08-28  6:01   ` Tanaka Akira
1999-08-26 12:20 Sven Wischnowsky
1999-08-26 13:17 ` Tanaka Akira
1999-08-26 17:56 ` Tanaka Akira
1999-08-25 12:57 Sven Wischnowsky
1999-08-25 12:54 Sven Wischnowsky
1999-08-25  8:24 Sven Wischnowsky
1999-08-26 10:54 ` Tanaka Akira
1999-08-24 10:43 Sven Wischnowsky
1999-08-25  1:56 ` Tanaka Akira
1999-08-24  9:12 Sven Wischnowsky
1999-08-24 10:04 ` Tanaka Akira
1999-08-23 13:46 Sven Wischnowsky
1999-08-23 16:16 ` Tanaka Akira
1999-08-24 15:56 ` Tanaka Akira
1999-08-23 12:00 Sven Wischnowsky
1999-08-23  9:32 Sven Wischnowsky
1999-08-23 10:54 ` Tanaka Akira
1999-08-20 12:59 Sven Wischnowsky
1999-08-20 23:22 ` Tanaka Akira
1999-08-21  8:39   ` Tanaka Akira
1999-08-21 17:47     ` Tanaka Akira
1999-08-20  7:42 Sven Wischnowsky
1999-08-19 13:59 Sven Wischnowsky
1999-08-19 10:44 Sven Wischnowsky
1999-08-19 14:38 ` Tanaka Akira
1999-08-24 13:46 ` Peter Stephenson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=199908261352.PAA16045@beta.informatik.hu-berlin.de \
    --to=wischnow@informatik.hu-berlin.de \
    --cc=zsh-workers@sunsite.auc.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).