diff options
Diffstat (limited to 'Src/hist.c')
-rw-r--r-- | Src/hist.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Src/hist.c b/Src/hist.c index b7ef52230..70dfac036 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -527,10 +527,20 @@ histsubchar(int c) static int marg = -1; static zlong mev = -1; char *buf, *ptr; - char *sline; + char *sline, *lexraw_mark; Histent ehist; size_t buflen; + /* + * If accumulating raw input for use in command substitution, + * we don't want the history text, so mark it for later removal. + * It would be better to do this at a level above the history + * and below the lexer --- but there isn't one. + * + * Include the character we are attempting to substitute. + */ + lexraw_mark = zshlex_raw_mark(-1); + /* look, no goto's */ if (isfirstch && c == hatchar) { int gbal = 0; @@ -864,6 +874,8 @@ histsubchar(int c) } } + zshlex_raw_back_to_mark(lexraw_mark); + /* * Push the expanded value onto the input stack, * marking this as a history word for purposes of the alias stack. |