zsh-workers
 help / color / mirror / code / Atom feed
From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: zsh-workers@sunsite.auc.dk
Subject: Nested associations (was Re: PATCH: completion functions)
Date: Fri, 27 Aug 1999 17:24:27 +0000	[thread overview]
Message-ID: <990827172427.ZM28187@candle.brasslantern.com> (raw)
In-Reply-To: <199908260928.LAA14797@beta.informatik.hu-berlin.de>

On Aug 26, 11:28am, Sven Wischnowsky wrote:
} Subject: PATCH: completion functions
}
} [If] we were able to put arrays and associations into associations, we
} could have command-specific caches. Internally, this probably wouldn't
} be too hard to implement, I think, but if I remember correctly, Bart
} was against it and explicitly disallowed this. Maybe if we just tell
} the users that associative arrays can act as name-spaces? (In other
} words: Bart, what was the reason that you was against it? Or weren't
} you against it and my memory is failing?)

I wasn't against it; in fact I particularly arranged the storage for
associative arrays to allow for it to be added in the future.  There are
a number of reasons why I didn't do more with it:

I thought it would be better to have it thoroughly tested and working
one level deep before allowing nesting.

I think we need better assignment syntax before allowing nesting; how
do you copy one nested AA to another?

Similarly, I can't decide how expansion should behave.  What happens when
you refer to the entire tree structure with $outermostname ?  What about
${(kv)outermostname}; do the flags propagate to the nested arrays?  Why?
When you ask for $outermostname[(r)...], how is the pattern compared to
nested sub-arrays?  And so on.

Internally, the code is not well-organized to re-enter parameter table
lookups during processing of multiple subscripts.  As with much of zsh,
the parameter lookup code depends on a global value, which I hacked to be
saved/altered/restored during associative array operations.  By the time
you're past the first level of subscripting, it's unclear (to me, anyway)
whether you still have all the necessary data to swap into the `paramtab'
global for the next level of lookup.

Finally, you can get much the same effect either by careful choice of key
names or by indirection with ${(P)...}, so it didn't seem to be necessary.

Why can't you do e.g. _args_cache_dopts[$command.$tmp]="${1#*:}" where
$command comes e.g. from passing the name of the current command to the
call to _arguments from the other completion functions?

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


  reply	other threads:[~1999-08-27 17:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-08-26  9:28 PATCH: completion functions Sven Wischnowsky
1999-08-27 17:24 ` Bart Schaefer [this message]
1999-08-30  9:19 Nested associations (was Re: PATCH: completion functions) Sven Wischnowsky

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=990827172427.ZM28187@candle.brasslantern.com \
    --to=schaefer@candle.brasslantern.com \
    --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).