zsh-workers
 help / color / mirror / code / Atom feed
From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: zsh-workers@sunsite.auc.dk
Subject: Compinstall, zcompile, and my .zshrc
Date: Mon, 10 Apr 2000 03:48:51 +0000	[thread overview]
Message-ID: <1000410034852.ZM5603@candle.brasslantern.com> (raw)

I've presently got my .zshrc chopped up into about a dozen smaller files
all of which are read in turn from the "real" .zshrc via the `.' builtin.
Partly this is to have localized files for setting cdpath and the like in
different places where I use zsh (work, home, sourceforge (though I have
yet to actually copy it there), etc.); partly its to organize all the
cruft that's been creeping into my .zshrc in random places over the last
ten years and leave out the stuff I don't need anymore.  Those dozen files
are all in ~/.zsh/.

Now, as I sit here contemplating putting all this back together, two things
come to mind:

First, I'd like to run compinstall, but I'd like to have it put its output
somewhere other than .zshrc or .compinstall.  For that matter, I'd like to
tell it to get its *input* from somewhere other than .zshrc.  And shouldn't
it read an existing .compinstall file if there is one, either in preference
to or as well as .zshrc?

Second, it'd be nice if I could do something like

	zcompile .zshrc.zwc .zshrc .zsh/*

but I'm 100% certain that's not going to produce the result I want.  For
one thing, `. .zsh/foo' executed from the code in .zshrc.zwc is going to
look for .zsh/foo{,.zwc}, not discover that .zsh/foo is already compiled
into the current file.  For another, I don't know how the `.' command
decides that xxx.zwc is the compiled form of xxx, but I wouldn't expect
it to use a multi-file archive that way.  (Hmm, trying it, though, seems
to show that it *will* use a multi-file archive, but that only works for
the very first file in such an archive.)

I could almost make this work by putting .zshrc.zwc in $fpath and making
all the other files be autoloaded functions, but function semantics are
not quite the same as `.' -- for example, I can't use `typeset -g' if I
want any of these files to be usable by older versions of zsh, but -g is
necessary to set parameters (e.g. `typeset -U cdpath') within a function.

There's one other thing I've just started worrying about with zcompile.
Normally in my .zshrc I could do something like this:

    [[ $ZSH_VERSION > 3.1.6 ]] && alias typeset='typeset -g'

and now all later uses of typeset would get the -g option, because the
code for .zshrc is actually executing as it's read.  But if I zcompile
my .zshrc, the wordcode for the rest of the file beyond that point does
NOT have that alias expanded.  That's a serious drawback for compilation
of scripts, and particularly of .z* init files; it should probably be
called out explicitly in the docs.

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


             reply	other threads:[~2000-04-10  3:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-04-10  3:48 Bart Schaefer [this message]
2000-04-10  8:37 Sven Wischnowsky
2000-04-10  8:54 ` Bart Schaefer
2000-04-10  9:05 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=1000410034852.ZM5603@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).