Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH 1/2] Set SAVEHIST to $HISTSIZE by default



On Fri, Sep 2, 2022 at 5:01 AM Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx> wrote:
> Felipe Contreras wrote on Fri, Sep 02, 2022 at 04:29:30 -0500:
> > On Fri, Sep 2, 2022 at 3:59 AM Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx> wrote:
> > > Felipe Contreras wrote on Tue, Aug 30, 2022 at 22:18:53 -0500:

> > > > If they are the same, this makes it clearer that they are the same.
> > > >
> > > > Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx>
> > > > ---
> > > >  Etc/FAQ.yo                            | 2 +-
> > > >  Functions/Newuser/zsh-newuser-install | 2 +-
> > > >  2 files changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/Etc/FAQ.yo b/Etc/FAQ.yo
> > > > index 8c795685a..dd573767e 100644
> > > > --- a/Etc/FAQ.yo
> > > > +++ b/Etc/FAQ.yo
> > > > @@ -1631,7 +1631,7 @@ label(321)
> > > >    verb(
> > > >      HISTSIZE=200
> > > >      HISTFILE=~/.zsh_history
> > > > -    SAVEHIST=200
> > > > +    SAVEHIST=$HISTSIZE
> > >
> > > Personally, I'm not going to commit this since I find the increased
> > > semantic precision / DRY compliance to be outweighed by the reduced
> > > readability (both here and in the code below, but for different
> > > reasons).
> >
> > But you only need to read it *once* and forget about it forever (or at
> > least as long as you keep the same history strategy).
>
> You're summing over the wrong variable.  This isn't jrandom's zshrc;
> this is the FAQ.  So, don't sum over how often jrandom will read this
> passage of their zshrc, but over how often this part of the FAQ will be
> read by existing and prospective users.

First of all the text is wrong, setting HISTFILE is not necessary to
save history, the default is 30, and that works fine.

Now, let's imagine a world in which the text is fixed and HISTSIZE is
not mentioned, what value do we recommend our users to set? By inertia
we would do what we are currently doing, but there's a discrepancy:

    The simplest possibility is to set it to the same as tt($HISTSIZE) as above.

Why is it the simplest possibility? Well, because if you have one next
to the other, you can simply set both to the same value. But now
that's not true, because we don't have the value of HISTSIZE at hand.
We could explain what is the default value of HISTSIZE, and recommend
the users to set that, but it's 30, which is not very useful, we would
want something at least the current recommended value, so this works:

  HISTFILE=~/.zsh_history
  SAVEHIST=200

But what happens if the default value of HISTSIZE is increased? (as it
happens in patch 2) If the value is bigger than 200, it will basically
be ignored, so if the new HISTSIZE is 1000, you potentially could lose
800 entries. Therefore the usefulness of the new default is lost.

And what happens in the year 2050 when computers have 8 TB of RAM and
we decide our users can probably afford a default HISTSIZE of 10000?
Are we going to update the FAQ yet again? Are we going to recommend
users to increase the SAVEHIST accordingly?

None of this is *necessary* for what the objective of the text
initially was, which is to explain why the history is not being saved.

The answer is simple: the history is not saved because SAVEHIST isn't
set and the simplest way to set it is to $HISTSIZE. There is no need
to care what the value of HISTSIZE is, or whether the user sets it or
not, setting SAVEHIST to $HISTSIZE just works, now and forever.

-- 
Felipe Contreras




Messages sorted by: Reverse Date, Date, Thread, Author