zsh-workers
 help / color / mirror / code / Atom feed
From: Zefram <zefram@dcs.warwick.ac.uk>
To: zsh-workers@math.gatech.edu
Subject: ksh autoloading
Date: Tue, 1 Apr 1997 01:08:43 +0100 (BST)	[thread overview]
Message-ID: <17704.199704010008@stone.dcs.warwick.ac.uk> (raw)

-----BEGIN PGP SIGNED MESSAGE-----

This patch makes autoloading work *exactly* like ksh -- at least, it does
in ksh emulation mode.  There is a new option, KSH_AUTOLOAD (the 110th
option if all my recent ones are accepted), which makes the function
definition file just be sourced, regardless of what (if anything) it does.

The autoloading mechanism is also changed.  Rather than sorting out the
autoloading when looking up the function definition, the autoloading
*is* the definition -- a special type of command, used only in undefined
functions.  When this command gets executed, it autoloads and then calls
the function.  What this buys, other than simplicity and maintainability,
is that in the KSH_AUTOLOAD case it sources the file in the context of the
function execution, as ksh does.  In fact, the file can even declare local
parameters, that are still in scope during the first function execution,
but go out of scope thereafter.

There is one remaining incompatibility between ksh and zsh autoloading.
In ksh, if a command can't be found in $PATH, it is treated as
an autoloaded function and searched for in $FPATH as a fallback.
I'll implement this in a separate patch.

This patch depends on my previous autoloading patch, of course.

 -zefram

begin 644 autoload_patch.gz
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
B6#W2Y:TEQ684J\8<H_94H[FBTAS$DM%Z\=_4Y80:(C\`````
`
end

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: ascii

iQCVAwUBMz9tknD/+HJTpU/hAQHjZgQAhPHc5ysXCTYTVbGI4543WqPEpm2d+THE
+MzTSOJScCJ3ki78cHVtpMJ3xRhTF9lh8PX05dKV0UJYOai5QLARgtd7Dc1QxgyF
pnPHfaJBfij8AiA4QRc6uVknHja+JBlXzA+quWt0t4tivOqAGZw7nTJ0+8x1j5qi
qWvydubJoEo=
=8CMI
-----END PGP SIGNATURE-----


             reply	other threads:[~1997-04-01  0:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-04-01  0:08 Zefram [this message]
  -- strict thread matches above, loose matches on Subject: below --
1997-03-26 17:46 Zefram
1997-03-27 18:15 ` Roderick Schertler
1997-03-27 18:36   ` Zefram
1997-03-27 18:57     ` Roderick Schertler
1997-03-27 19:11       ` Zefram

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=17704.199704010008@stone.dcs.warwick.ac.uk \
    --to=zefram@dcs.warwick.ac.uk \
    --cc=zsh-workers@math.gatech.edu \
    /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).