Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: odd completion misbehavior?

On Thu, 20 Oct 2011, Danek Duvall wrote:

With the following completion function:

	_danek() {
		_arguments \
			"--zoo-name" \

and running under zsh -f with only

   autoload -Uz compinit
   compinit -i
   compdef _danek danek

if I type "danek --z<TAB>", I end up with "danek --z-name", with the cursor on the dash between "z" and "name". If I hit tab again, I end up with "danek --zoo-name ", with the cursor after the final space. If I setopt menucomplete, I get reasonable behavior.

What have I done wrong with the completion function?

(Everywhere below, I'm marking the cursor position with '|')

Nothing. Zsh is completing the entirety of the unambiguous portions. All of the possible completions in that context:

'--zoo-name' and '--zipple-zoo-name'

begin with: '--z'
and end with: '-name'

So, zsh completes as much as possible.

I'm also interested in a way to disable this behavior, but looking at all of the instances of 'suffix' and 'ambiguous' in anything remotely completion-related in zshall didn't turn up what style to set/unset (if such a style exists).

In my case, the place this bothers me is with _mysql and the --default-character-set, --defaults-file, and --defaults-extra-file settings:

mysql --def|<Tab>
mysql --default|-               # makes sense
mysql --defaults|<Tab>-         # add the 's'
mysql --defaults|<Tab>-file     # okay, now everything starts w/ '--defaults' and ends w/ '-file'
mysql --defaults-file=|         # but, tab again gets me --defaults-file, even though it was still ambiguous with --defaults-extra-file

Might be some way in which my styles are set up (accept-exact somewhere?). But, I'm still getting my feet wet with zstyle.


Messages sorted by: Reverse Date, Date, Thread, Author