zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh hackers list <zsh-workers@sunsite.dk>
Subject: Re: [PATCH] Proposal: stat -> zstat
Date: Wed, 09 May 2007 10:19:21 -0700	[thread overview]
Message-ID: <070509101921.ZM12391@torch.brasslantern.com> (raw)
In-Reply-To: <20070508154018.9043aaca.pws@csr.com>

On May 8,  3:40pm, Peter Stephenson wrote:
}
} In my reply to Phil I suggested using a convention like b:zstat,
} p:functions, f:sin, c:-pcre-match, etc., to get around namespace
} problems. It's quite possible we don't have clashes at the moment,
} but it's entirely conceivable a module may export both a builtin
} and a parameter with the same name. I think ":" is a good choice
} here---doesn't need quoting, used in a similar way for styles---but
} I'd be happy to entertain alternatives.

I agree that ":" is a good choice; "." is the other obvious possibility,
but we probably want to reserve that for ksh-style parameter namespaces.

} This ought to be transparent to the main shell; it just passes down a
} feature name to be handled by the module...

Right.

} Suppose:
} 
} zmodload -ab zsh/nosh fishfingers
} 
} is defined to be equivalent to
} 
} zmodload -Fa zsh/nosh b:fishfingers

This makes perfect sense.

} and we document that the the second form is preferred? In other words,
} the -a addition to the feature mechanism *does* require the name to
} be in the form <codechar>:<featurename>, and generates an autoload
} request of the appropriate type (or an error if it doesn't recognise
} the prefix).

This is also related to the question of whether a module feature can
represent a collection of things.  Could

  zmodload -Fa zsh/nosh turtleteeth

mean e.g. "autoload anything related to turtleteeth"?  I suppose that
would mean loading zsh/nosh immediately, but with everything disabled,
in order to find out what is contained in that feature.  (And then
unloading it again?  Hrm.)  Or else abstract features are in their
own category, but then how do you know when to autoload them?  For the
first pass, or even the second, perhaps abstract features should not
be auto-loadable.

Which brings up a point:  Previously modules were either all there or
all not, except insofar as certain bits could be hidden by explicitly
using "disable" after loading.  With the features change we can get
into the condition of the module being present, but invisible.

} One extra tweak at least is needed: if we loaded a module through the
} new form of autoload, we only enable any features explicitly requested
} in that list.  For compatibility the old form would fully load the
} module (it may well be that a function assumes that autoloading one
} builtin will bring in a whole load of others).

What happens if both -Fa b:turtleteeth and -ab turtleteeth have been
executed prior to the first attempt to find turtleteeth?  The easy way
out is to do the maximal load that has been previously requested.

Random possibly unrelated thought:
We might want to think ahead to the possibilty of module scopes (like
the local parameter scope).

} Presumably
} 
} zmodload -ab zsh/nosh b:fishfingers
} 
} should generate an error

Since ":" isn't valid in an identifier I think that's OK.  (Have we yet
discussed whether symbolic conditionals like "=~" could be autoloaded?)

} > Can features (or the user, with zmodload -d) declare that they
} > depend on other features (of the same or other modules)?
} 
} Urk. The current dependency mechanism is per-module and if we're going
} to keep it then to do it properly we need it to be per-feature. If
} each *feature* in the target module can depend on a feature in another
} module it gets very hairy even to specify.

I'm actually most concerned with the C definition of the module being
able to specify dependencies, rather than the user being able to do so
with some tangled zmodload -d syntax.

} Although this is a significant question, I think we could implement
} module features without this initially

Yes.


  reply	other threads:[~2007-05-09 17:19 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-03  5:39 Phil Pennock
2007-05-03  8:50 ` Peter Stephenson
2007-05-06  1:07   ` Phil Pennock
2007-05-06 11:57     ` Peter Stephenson
2007-05-06 14:00       ` Phil Pennock
2007-05-07  0:58         ` Peter Stephenson
2007-05-03 14:48 ` Bart Schaefer
2007-05-03 15:46   ` Peter Stephenson
2007-05-07  5:31     ` Bart Schaefer
2007-05-08 14:40       ` Peter Stephenson
2007-05-09 17:19         ` Bart Schaefer [this message]
2007-05-09 17:47           ` Peter Stephenson
2012-06-29  9:40 4.3.17 unset RPS1 vs RPROMPT Phil Pennock
2012-06-29 10:02 ` Mikael Magnusson
2012-06-29 13:32   ` Phil Pennock
2012-06-29 17:35 ` Bart Schaefer
2012-06-29 18:52 ` Peter Stephenson
2012-06-30  5:05   ` Phil Pennock
2012-06-30 17:31     ` Bart Schaefer
2012-07-01 17:39     ` 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=070509101921.ZM12391@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-workers@sunsite.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).