zsh-workers
 help / color / mirror / code / Atom feed
From: Felipe Contreras <felipe.contreras@gmail.com>
To: zsh-workers@zsh.org
Cc: Felipe Contreras <felipe.contreras@gmail.com>
Subject: [RFC PATCH 1/3] Make SAVEHIST default to HISTSIZE
Date: Tue, 23 Aug 2022 23:31:43 -0500	[thread overview]
Message-ID: <20220824043145.165779-2-felipe.contreras@gmail.com> (raw)
In-Reply-To: <20220824043145.165779-1-felipe.contreras@gmail.com>

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 Etc/FAQ.yo                            | 10 +++-------
 Functions/Newuser/zsh-newuser-install |  1 -
 Src/builtin.c                         |  2 +-
 Src/hist.c                            | 14 ++++++++++----
 Src/init.c                            |  1 +
 5 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/Etc/FAQ.yo b/Etc/FAQ.yo
index 8c795685a..a334dd384 100644
--- a/Etc/FAQ.yo
+++ b/Etc/FAQ.yo
@@ -1626,19 +1626,15 @@ work?)
 sect(Why is my history not being saved?)
 label(321)
 
-  In zsh, you need to set three variables to make sure your history is
+  In zsh, you need to set two variables to make sure your history is
   written out when the shell exits.  For example,
   verb(
     HISTSIZE=200
     HISTFILE=~/.zsh_history
-    SAVEHIST=200
   )
   tt($HISTSIZE) tells the shell how many lines to keep internally,
-  tt($HISTFILE) tells it where to write the history, and tt($SAVEHIST),
-  the easiest one to forget, tells it how many to write out.  The
-  simplest possibility is to set it to the same as tt($HISTSIZE) as
-  above.  There are also various options affecting history; see the
-  manual.
+  tt($HISTFILE) tells it where to write the history.  There are also various
+  options affecting history; see the manual.
 
 sect(How do I get a variable's value to be evaluated as another variable?)
 
diff --git a/Functions/Newuser/zsh-newuser-install b/Functions/Newuser/zsh-newuser-install
index 9e911d07c..26fcaed77 100644
--- a/Functions/Newuser/zsh-newuser-install
+++ b/Functions/Newuser/zsh-newuser-install
@@ -792,7 +792,6 @@ __zni_history_config() {
   __zni_apply_defaults -p \
     HISTSIZE 1000 "Number of lines of history kept within the shell." \
     HISTFILE $zdmsg/.histfile "File where history is saved." \
-    SAVEHIST 1000 "Number of lines of history to save to \$HISTFILE."
 
   if __zni_display_and_edit "History configuration"; then
     install_state[history]="Unsaved changes"
diff --git a/Src/builtin.c b/Src/builtin.c
index a7b7755a7..4c928d9bf 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -1442,7 +1442,7 @@ bin_fc(char *nam, char **argv, Options ops, int func)
     if (OPT_ISSET(ops,'p')) {
 	char *hf = "";
 	zlong hs = DEFAULT_HISTSIZE;
-	zlong shs = 0;
+	zlong shs = hs;
 	int level = OPT_ISSET(ops,'a') ? locallevel : -1;
 	if (*argv) {
 	    hf = *argv++;
diff --git a/Src/hist.c b/Src/hist.c
index bff0abe61..6cc612724 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -238,6 +238,12 @@ static zlong histfile_linect;
 
 /* save history context */
 
+static inline zlong
+get_savehistsiz(void)
+{
+    return savehistsiz < 0 ? histsiz : savehistsiz;
+}
+
 /**/
 void
 hist_context_save(struct hist_stack *hs, int toplevel)
@@ -1348,7 +1354,7 @@ putoldhistentryontop(short keep_going)
     if (isset(HISTEXPIREDUPSFIRST) && !(he->node.flags & HIST_DUP)) {
 	static zlong max_unique_ct = 0;
 	if (!keep_going)
-	    max_unique_ct = savehistsiz;
+	    max_unique_ct = get_savehistsiz();
 	do {
 	    if (max_unique_ct-- <= 0 || he == hist_ring) {
 		max_unique_ct = 0;
@@ -2904,7 +2910,7 @@ savehistfile(char *fn, int err, int writeflags)
     int extended_history = isset(EXTENDEDHISTORY);
     int ret;
 
-    if (!interact || savehistsiz <= 0 || !hist_ring
+    if (!interact || savehistsiz == 0 || !hist_ring
      || (!fn && !(fn = getsparam("HISTFILE"))))
 	return;
     if (writeflags & HFILE_FAST) {
@@ -2915,7 +2921,7 @@ savehistfile(char *fn, int err, int writeflags)
 	}
 	if (!he || lockhistfile(fn, 0))
 	    return;
-	if (histfile_linect > savehistsiz + savehistsiz / 5)
+	if (histfile_linect > get_savehistsiz() + get_savehistsiz() / 5)
 	    writeflags &= ~HFILE_FAST;
     }
     else {
@@ -3086,7 +3092,7 @@ savehistfile(char *fn, int err, int writeflags)
 		/* Zeroing histactive avoids unnecessary munging of curline. */
 		histactive = 0;
 		/* The NULL leaves HISTFILE alone, preserving fn's value. */
-		pushhiststack(NULL, savehistsiz, savehistsiz, -1);
+		pushhiststack(NULL, get_savehistsiz(), savehistsiz, -1);
 
 		hist_ignore_all_dups |= isset(HISTSAVENODUPS);
 		readhistfile(fn, err, 0);
diff --git a/Src/init.c b/Src/init.c
index 871d46b12..8a95192a9 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -962,6 +962,7 @@ setupvals(char *cmd, char *runscript, char *zsh_name)
     noeval = 0;
     curhist = 0;
     histsiz = DEFAULT_HISTSIZE;
+    savehistsiz = -1;
     inithist();
 
     cmdstack = (unsigned char *) zalloc(CMDSTACKSZ);
-- 
2.37.2.351.g9bf691b78c.dirty



  reply	other threads:[~2022-08-24  4:38 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-24  4:31 [RFC PATCH 0/3] Improve defaults Felipe Contreras
2022-08-24  4:31 ` Felipe Contreras [this message]
2022-08-24  4:31 ` [RFC PATCH 2/3] Increase default HISTSIZE to 1000 Felipe Contreras
2022-08-24  4:31 ` [RFC PATCH 3/3] FAQ: sync newuser-install Felipe Contreras
2022-08-24  9:06   ` Daniel Shahaf
2022-08-24 17:32     ` Felipe Contreras
2022-08-24 18:28       ` Eric Cook
2022-08-24 19:11         ` Felipe Contreras
2022-08-24 19:24           ` Matthew Martin
2022-08-24 19:25           ` Eric Cook
2022-08-24 19:40             ` Eric Cook
2022-08-24 20:03             ` Felipe Contreras
2022-08-24 20:11               ` Eric Cook
2022-08-24 20:27                 ` Felipe Contreras
2022-08-24 20:53                   ` Eric Cook
2022-08-25  8:04       ` Daniel Shahaf
2022-08-25 22:22         ` Bart Schaefer
2022-08-25 22:44           ` Felipe Contreras
2022-08-25 23:08             ` Bart Schaefer
2022-08-26  4:22               ` Felipe Contreras
2022-08-31 11:43                 ` Vincent Lefevre
2022-08-26  5:20               ` Daniel Shahaf
2022-08-26 13:57                 ` Mikael Magnusson
2022-08-26 14:04                   ` Roman Perepelitsa
2022-08-26 23:43                     ` Lawrence Velázquez
2022-08-27 15:17                       ` Daniel Shahaf
2022-08-27 15:34                         ` Roman Perepelitsa
2022-08-26 18:44                   ` Felipe Contreras
2022-08-27  0:23                     ` Mikael Magnusson
2022-08-27  0:31                       ` Bart Schaefer
2022-08-27  3:18                         ` Felipe Contreras
2022-08-27  3:52                           ` Lawrence Velázquez
2022-08-27 15:44                             ` Daniel Shahaf
2022-08-30 19:31                             ` Felipe Contreras
2022-08-31 12:28                               ` Vincent Lefevre
2022-08-31 19:36                                 ` Bart Schaefer
2022-09-01  0:23                                   ` Vincent Lefevre
2022-09-01  0:35                                     ` Bart Schaefer
2022-09-01  1:21                                       ` Vincent Lefevre
2022-09-01  2:42                                         ` [PATCH] initialization of main keymap Bart Schaefer
2022-09-01 21:58                                           ` Felipe Contreras
2022-09-01 22:34                                             ` Bart Schaefer
2022-09-01 22:54                                               ` Felipe Contreras
2022-09-02  8:51                                             ` Daniel Shahaf
2022-09-02 13:23                                               ` Vincent Lefevre
2022-09-02 13:42                                                 ` Felipe Contreras
2022-09-04  9:39                                                   ` Daniel Shahaf
2022-09-05  8:55                                                     ` Vincent Lefevre
2022-09-02 13:32                                               ` Felipe Contreras
2022-09-02 16:48                                               ` Bart Schaefer
2022-09-04  9:35                                                 ` Daniel Shahaf
2022-09-02  0:04                                           ` Vincent Lefevre
2022-09-02  5:06                                             ` Bart Schaefer
2022-09-02 13:15                                               ` Vincent Lefevre
2022-09-04  9:42                                                 ` ${EDITOR} with spaces (was: Re: [PATCH] initialization of main keymap) Daniel Shahaf
2022-09-04 10:48                                                   ` Mikael Magnusson
2022-09-05  9:15                                                     ` Vincent Lefevre
2022-09-05 21:17                                                       ` Lawrence Velázquez
2022-09-02  9:20                                 ` [RFC PATCH 3/3] FAQ: sync newuser-install Daniel Shahaf
2022-09-02 13:50                                   ` Vincent Lefevre
2022-08-31 21:57                               ` Mikael Magnusson
2022-08-31 22:28                                 ` Roman Perepelitsa
2022-09-01  0:29                                   ` Bart Schaefer
2022-09-01 22:45                                   ` Felipe Contreras
2022-09-02  3:46                                     ` Mikael Magnusson
2022-09-02  5:57                                       ` Felipe Contreras
2022-09-02 23:14                                         ` Mikael Magnusson
2022-09-02 23:56                                           ` Felipe Contreras
2022-09-02  9:18                                       ` Daniel Shahaf
2022-09-02 12:50                                         ` Vincent Lefevre
2022-09-02 13:28                                           ` Felipe Contreras
2022-09-02 13:47                                             ` Vincent Lefevre
2022-09-02 13:54                                               ` Felipe Contreras
2022-09-03 13:38                                       ` Roman Perepelitsa
2022-09-03 19:07                                         ` Felipe Contreras
2022-09-03 19:27                                           ` Roman Perepelitsa
2022-09-03 20:08                                             ` Felipe Contreras
2022-09-03 20:23                                               ` Roman Perepelitsa
2022-09-03 20:49                                                 ` Felipe Contreras
2022-09-03 23:12                                                   ` Roman Perepelitsa
2022-09-03 18:59                                                     ` Felipe Contreras
2022-09-04  0:08                                                       ` Roman Perepelitsa
2022-09-03 19:24                                                         ` Felipe Contreras
2022-08-27  0:35                       ` Felipe Contreras
2022-08-27  2:24                 ` Bart Schaefer
2022-08-27 15:40                   ` Daniel Shahaf
2022-08-27 15:55                     ` Bart Schaefer
2022-08-27 17:53                       ` Daniel Shahaf
2022-08-24 20:58 ` [RFC PATCH 0/3] Improve defaults Bart Schaefer
2022-08-24 21:50   ` Felipe Contreras
2022-08-24 22:18     ` Bart Schaefer
2022-08-24 22:54       ` Felipe Contreras
2022-08-24 21:39 ` Mikael Magnusson

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=20220824043145.165779-2-felipe.contreras@gmail.com \
    --to=felipe.contreras@gmail.com \
    --cc=zsh-workers@zsh.org \
    /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).