zsh-workers
 help / color / mirror / code / Atom feed
From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: Anthony Heading <aheading@jpmorgan.com>
Cc: zsh-workers@math.gatech.edu
Subject: Re: pushd
Date: Thu, 17 Oct 1996 10:01:15 -0700	[thread overview]
Message-ID: <961017100115.ZM2502@candle.brasslantern.com> (raw)
In-Reply-To: Anthony Heading <aheading@jpmorgan.com> "Re: pushd" (Oct 17,  2:22pm)

On Oct 17,  2:22pm, Anthony Heading wrote:
} Subject: Re: pushd
}
} Bart wrote:
} > } I have to say, the cd functions are a real mess.
} > 
} > and I agree you have a bit of a mess.
} 
} Hmmph.  I guess I'm not supposed to take that personally. :-)

A former employer of mine, venturing rather too far into the Dilbert Zone,
once sent thirty of us to a three-day seminar whose main focus was how to
have code reviews without taking them personally.  A fine idea, but not
one that requires three days to elaborate upon.

} Bart wrote:
} > 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 [push] the current directory
} 
} [...] 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.

The question is not, "Why is $PWD pushed onto the stack?"  The question is,
"Why is $PWD always popped off the stack?"  To save a couple hundred bytes?

If you just leave it there, then every routine sees the stack the same way;
even fewer special cases.  It does mean the you have to setdata() whenever
you change directories, but that's less effort than pushing/popping and
easier to isolate.

Yes, it does introduce the possibility that a careless programmer will let
$PWD and the top of the stack get out of sync.  But that's why we have
this list, and particularly why we have Zoltan.  And it would be possible
to have a special var-get-fn for PWD that returns the top of the dirstack.
(There's already a special var-set-fn to prevent PWD from being changed.)
If PWD just refers to the top of the stack, you've saved your bytes again
and simplified some other code.

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

Usually the answer to those sorts of questions is, "because it was obvious."
:-)  It's easy to get so deep into the mechanics that places where mechanics
could be avoided simply go past overhead.

} 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.

Ah, but as Peter already pointed out, that's not the effect.  Its the
most similar to

pushd() { setopt localoptions autopushd pushdignoredups; cd $* }

except that the `pushdignoredups' part only sometimes applies.

-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern

New male in /home/schaefer:
>N  2 Justin William Schaefer  Sat May 11 03:43  53/4040  "Happy Birthday"


  parent reply	other threads:[~1996-10-17 17:03 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                   ` pushd Anthony Heading
1996-10-17 13:47                     ` pushd Peter Stephenson
1996-10-17 17:01                     ` Bart Schaefer [this message]
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=961017100115.ZM2502@candle.brasslantern.com \
    --to=schaefer@candle.brasslantern.com \
    --cc=aheading@jpmorgan.com \
    --cc=schaefer@nbn.com \
    --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).