help / color / mirror / code / Atom feed
From: Peter Stephenson <p.w.stephenson@ntlworld.com>
To: zsh-users@zsh.org
Subject: Re: Repeating last command from *local* history
Date: Thu, 11 Feb 2021 20:47:46 +0000	[thread overview]
Message-ID: <27299937c9c060b1a8ed1acbce6cda5c72d63a64.camel@ntlworld.com> (raw)
In-Reply-To: <20210211163728.GA8608@box.prefix.duckdns.org>

On Thu, 2021-02-11 at 17:37 +0100, Andreas Kusalananda Kähäri wrote:
> I'm using zsh 5.8 on OpenBSD 6.8, and I set the SHARE_HISTORY and
> EXTENDED_HISTORY shell options.
> I would like to repeat the last command from the command line history
> of the current shell session, without accidentally executing a recent
> command from some other shell session that I'm using in another
> terminal.
> Using "r -L" works, but only if the most recent command in the shared
> history is a command from the current shell session.  If it isn't, the
> shell responds with "fc: no matching events found".
> This *feels* like a bug.

Yes, it's a typical "computer says no" bug.

I thin this one's easy, although it's possible there are more implications
here than I'm picking up...


diff --git a/Src/builtin.c b/Src/builtin.c
index 35a0fb2db..8d7fd23d6 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -1599,8 +1599,9 @@ bin_fc(char *nam, char **argv, Options ops, int func)
 	 * command line to avoid giving the user a nasty turn
 	 * if some helpful soul ran "print -s 'rm -rf /'".
-	first = OPT_ISSET(ops,'l')? addhistnum(curhist,-16,0)
-			: addhistnum(curline.histnum,-1,0);
+	int xflags = OPT_ISSET(ops,'L') ? HIST_FOREIGN : 0;
+	first = OPT_ISSET(ops,'l')? addhistnum(curhist,-16,xflags)
+			: addhistnum(curline.histnum,-1,xflags);
 	if (first < 1)
 	    first = 1;
 	if (last < first)

  reply	other threads:[~2021-02-11 20:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-11 16:37 Andreas Kusalananda Kähäri
2021-02-11 20:47 ` Peter Stephenson [this message]
2021-02-28 13:25   ` Andreas Kusalananda Kähäri

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=27299937c9c060b1a8ed1acbce6cda5c72d63a64.camel@ntlworld.com \
    --to=p.w.stephenson@ntlworld.com \
    --cc=zsh-users@zsh.org \


* 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


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