From 0b185e3dcd7348045787b972a80d62da4ca0c79f Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 8 Aug 2013 19:48:11 +0100 Subject: users/17908: Keep history line in sync between ZLE and shell. Update ZLE version if history is read, pushed or popped with ZLE active --- Src/hist.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Src/hist.c') diff --git a/Src/hist.c b/Src/hist.c index 5e962e92f..f78c97d8f 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -76,6 +76,9 @@ mod_export int excs, exlast; * and a temporary history entry is inserted while the user is editing. * If the resulting line was not added to the list, a flag is set so * that curhist will be decremented in hbegin(). + * + * Note curhist is passed to zle on variable length argument list: + * type must match that retrieved in zle_main_entry. */ /**/ @@ -2414,6 +2417,9 @@ readhistfile(char *fn, int err, int readflags) zerr("can't read history file %s", fn); unlockhistfile(fn); + + if (zleactive) + zleentry(ZLE_CMD_SET_HIST_LINE, curhist); } #ifdef HAVE_FCNTL_H @@ -3339,6 +3345,8 @@ pushhiststack(char *hf, zlong hs, zlong shs, int level) } hist_ring = NULL; curhist = histlinect = 0; + if (zleactive) + zleentry(ZLE_CMD_SET_HIST_LINE, curhist); histsiz = hs; savehistsiz = shs; inithist(); /* sets histtab */ @@ -3378,6 +3386,8 @@ pophiststack(void) histtab = h->histtab; hist_ring = h->hist_ring; curhist = h->curhist; + if (zleactive) + zleentry(ZLE_CMD_SET_HIST_LINE, curhist); histlinect = h->histlinect; histsiz = h->histsiz; savehistsiz = h->savehistsiz; -- cgit v1.2.3