From 9c0533931c51b7d512d3e95850404f5aac2dbce1 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 16 Feb 2021 18:34:41 +0000 Subject: 48073: Add fc -s as POSIX way of rerunning command without starting editor --- ChangeLog | 5 +++++ Doc/Zsh/builtins.yo | 3 ++- Src/builtin.c | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c89fce748..cbc5eb23b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2021-02-17 Peter Stephenson + + * 48073: Martijn Dekker: Doc/Zsh/builtins.yo, Src/builtin.c: fc + -s is POSIX version of fc -e -. + 2021-02-16 Peter Stephenson * 47876: Justtine Tunney: Src/exec.c: Add more cases where diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo index ebb29f632..a7afe42cf 100644 --- a/Doc/Zsh/builtins.yo +++ b/Doc/Zsh/builtins.yo @@ -736,7 +736,7 @@ findex(fc) cindex(history, editing) cindex(editing history) redef(SPACES)(0)(tt(ifztexi(NOTRANS(@ @ @ @ @ @ ))ifnztexi( ))) -xitem(tt(fc) [ tt(-e) var(ename) ] [ tt(-LI) ] [ tt(-m) var(match) ] [ var(old)tt(=)var(new) ... ] [ var(first) [ var(last) ] ]) +xitem(tt(fc) [ tt(-e) var(ename) ] [ tt(-s) ] [ tt(-LI) ] [ tt(-m) var(match) ] [ var(old)tt(=)var(new) ... ] [ var(first) [ var(last) ] ]) xitem(tt(fc -l )[ tt(-LI) ] [ tt(-nrdfEiD) ] [ tt(-t) var(timefmt) ] [ tt(-m) var(match) ]) xitem(SPACES()[ var(old)tt(=)var(new) ... ] [ var(first) [ var(last) ] ]) xitem(tt(fc -p )[ tt(-a) ] [ var(filename) [ var(histsize) [ var(savehistsize) ] ] ]) @@ -783,6 +783,7 @@ the parameter tt(EDITOR) is used; if that is not set a builtin default, usually `tt(vi)' is used. If var(ename) is `tt(-)', no editor is invoked. When editing is complete, the edited command is executed. +The flag `tt(-s)' is equivalent to `tt(-e -)'. The flag tt(-r) reverses the order of the events and the flag tt(-n) suppresses event numbers when listing. diff --git a/Src/builtin.c b/Src/builtin.c index 35a0fb2db..3093a3056 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -71,7 +71,7 @@ static struct builtin builtins[] = * But that's actually not useful, so it's more consistent to * cause an error. */ - BUILTIN("fc", 0, bin_fc, 0, -1, BIN_FC, "aAdDe:EfiIlLmnpPrRt:W", NULL), + BUILTIN("fc", 0, bin_fc, 0, -1, BIN_FC, "aAdDe:EfiIlLmnpPrRst:W", NULL), BUILTIN("fg", 0, bin_fg, 0, -1, BIN_FG, NULL, NULL), BUILTIN("float", BINF_PLUSOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL | BINF_ASSIGN, (HandlerFunc)bin_typeset, 0, -1, 0, "E:%F:%HL:%R:%Z:%ghlp:%rtux", "E"), BUILTIN("functions", BINF_PLUSOPTS, bin_functions, 0, -1, 0, "ckmMstTuUWx:z", NULL), @@ -1643,7 +1643,7 @@ bin_fc(char *nam, char **argv, Options ops, int func) if (!fclist(out, ops, first, last, asgf, pprog, 1)) { char *editor; - if (func == BIN_R) + if (func == BIN_R || OPT_ISSET(ops, 's')) editor = "-"; else if (OPT_HASARG(ops, 'e')) editor = OPT_ARG(ops, 'e'); -- cgit 1.4.1