zsh-workers
 help / color / mirror / code / Atom feed
From: Anthony Heading <aheading@jpmorgan.com>
To: schaefer@nbn.com
Cc: zefram@dcs.warwick.ac.uk, zsh-workers@math.gatech.edu
Subject: Re: pushd
Date: Thu, 17 Oct 1996 14:22:37 +0100 (BST)	[thread overview]
Message-ID: <199610171322.OAA10786@gmp-etpres1.uk.jpmorgan.com> (raw)
In-Reply-To: <961016141659.ZM31300@candle.brasslantern.com> from Bart Schaefer at "Oct 16, 96 02:16:58 pm"

Bart wrote:
> } I have to say, the cd functions are a real mess.
> 
> There are several confusing things here.  (1) The current directory isn't
> kept on the stack (so the stack really is empty if you've never pushd'd);
> but (2) the first thing bin_cd() does is put the current directory on the
> stack; so (3) none of the functions that manipulate the stack ever see it
> in empty state, *except* (4) bin_dirs(), printdirstack(), and dstackent()
> [in subst.c], which all have to special case ~0 as equivalent to $PWD; and
> (5) all of this means that cd_new_pwd() and/or bin_cd() have to discard
> the top of the stack once the other routines are finished.
> 
> Add to this the ability to shovel random tripe into the stack with:
> [...] 
> and I agree you have a bit of a mess.

Hmmph.  I guess I'm not supposed to take that personally. :-)

Seriously, the explanation above is exactly right, and I don't think
it's as messy as all that -- it's just not documented or restructured.
And BTW the reason that it's not documented is that RC didn't want to
incorporate any of the versions of this patch that I produced, so I tried
to keep the patch as small as possible so that it wouldn't cause Zoltan
too much trouble in maintaining his releases.  But once you've got the
hang of the fact that $PWD is pushed onto the stack, the rest follows. And
pushing $PWD is a good idea, since you might be executing pushd, or have
AUTOPUSHD set, or whatever, and you don't need to specialcase.

But Bart's changes to popd make complete sense -- in retrospect I've no
idea why I didn't do the obvious optimisation.

I'm still puzzled, though, as to why Peter et al want this PUSHD_CYCLE option.
The reason it's so easy to implement is that it is, in effect, simply
aliasing pushd=cd.  Completely altering the de-facto standard definition of a
shell command is something on balance to be avoided.  To repeat my suggestion,
why not just make cd +n push the current directory?  Then it'll do exactly
the same as pushd, while being two less chars to type, and not requiring
extra emulation parameters.

Anthony


  reply	other threads:[~1996-10-17 13:36 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-10-11 12:34 pushd Peter Stephenson
1996-10-11 13:01 ` pushd Vinnie Shelton
1996-10-11 15:13   ` pushd Peter Whaite
1996-10-11 19:53 ` pushd Bart Schaefer
1996-10-15 12:45   ` pushd Peter Stephenson
1996-10-15 17:08     ` pushd Bart Schaefer
1996-10-15 17:34       ` pushd Zoltan Hidvegi
1996-10-16  5:38         ` pushd Bart Schaefer
1996-10-16  8:42           ` pushd Zefram
1996-10-16 17:36             ` pushd Bart Schaefer
1996-10-16 18:10               ` pushd Zefram
1996-10-16 21:16                 ` pushd Bart Schaefer
1996-10-17 13:22                   ` Anthony Heading [this message]
1996-10-17 13:47                     ` pushd Peter Stephenson
1996-10-17 17:01                     ` pushd Bart Schaefer
1996-10-16 22:28                 ` pushd Zoltan Hidvegi
1996-10-16 12:42           ` pushd Peter Stephenson
1996-10-15 18:45       ` pushd Anthony Heading
1996-10-18 13:14 pushd Ray Van Tassle-CRV004

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=199610171322.OAA10786@gmp-etpres1.uk.jpmorgan.com \
    --to=aheading@jpmorgan.com \
    --cc=schaefer@nbn.com \
    --cc=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).