From 711e1427b5eb80104b4d6ad1504f43ea958970d8 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 29 Aug 2014 09:46:34 +0100 Subject: 33057: %e in prompts shows evaluation / execution depth --- Src/prompt.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'Src/prompt.c') diff --git a/Src/prompt.c b/Src/prompt.c index 328ae3c66..47625351f 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -786,6 +786,19 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep) if(bv->Rstring) stradd(bv->Rstring); break; + case 'e': + { + int depth = 0; + Funcstack fsptr = funcstack; + while (fsptr) { + depth++; + fsptr = fsptr->prev; + } + addbufspc(DIGBUFSIZE); + sprintf(bv->bp, "%d", depth); + bv->bp += strlen(bv->bp); + break; + } case 'I': if (funcstack && funcstack->tp != FS_SOURCE && !IN_EVAL_TRAP()) { -- cgit v1.2.3 From 5b57f28256d30ebb4a2a13e1128184aec32956de Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Sat, 30 Aug 2014 14:11:58 -0700 Subject: 33070: add %(e..) based on %e --- ChangeLog | 2 ++ Doc/Zsh/prompt.yo | 1 + Src/prompt.c | 11 +++++++++++ 3 files changed, 14 insertions(+) (limited to 'Src/prompt.c') diff --git a/ChangeLog b/ChangeLog index cae6399ac..37d111d2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2014-08-30 Barton E. Schaefer + * 33070: Doc/Zsh/prompt.yo, Src/prompt.c: add %(e..) based on %e + * 33069: Completion/Base/Completer/_expand_alias: remove internal quoting before looking up aliases when expanding aliases in an unquoted word diff --git a/Doc/Zsh/prompt.yo b/Doc/Zsh/prompt.yo index 183a93a3b..17af5b0fb 100644 --- a/Doc/Zsh/prompt.yo +++ b/Doc/Zsh/prompt.yo @@ -305,6 +305,7 @@ least var(n) elements relative to the root directory, hence tt(/) is counted as 0 elements.) sitem(tt(D))(True if the month is equal to var(n) (January = 0).) sitem(tt(d))(True if the day of the month is equal to var(n).) +sitem(tt(e))(True if the evaluation depth is at least var(n).) sitem(tt(g))(True if the effective gid of the current process is var(n).) sitem(tt(j))(True if the number of jobs is at least var(n).) sitem(tt(L))(True if the tt(SHLVL) parameter is at least var(n).) diff --git a/Src/prompt.c b/Src/prompt.c index 47625351f..9ed6c54d5 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -372,6 +372,17 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep) if (t0 >= arg) test = 1; break; + case 'e': + { + Funcstack fsptr = funcstack; + test = arg; + while (fsptr && test > 0) { + test--; + fsptr = fsptr->prev; + } + test = !test; + } + break; case 'L': if (shlvl >= arg) test = 1; -- cgit v1.2.3 From 7cabee52d8132fed31767392540ae67bac36377e Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Sat, 27 Sep 2014 09:26:21 -0700 Subject: 33256: fix prompttrunc() counting of %{ %} spans --- ChangeLog | 4 ++++ Src/prompt.c | 14 ++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'Src/prompt.c') diff --git a/ChangeLog b/ChangeLog index 59789aefc..b89f90015 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-09-27 Barton E. Schaefer + + * 33256: Src/prompt.c: fix prompttrunc() counting of %{ %} spans + 2014-09-26 Peter Stephenson * 33242: Src/parse.c: don't treat tokens immediately following diff --git a/Src/prompt.c b/Src/prompt.c index 9ed6c54d5..0cc9ef917 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -1316,12 +1316,11 @@ prompttrunc(int arg, int truncchar, int doprint, int endchar, */ for (;;) { *ptr++ = *fulltextptr; - if (*fulltextptr == Outpar || - *fulltextptr == '\0') + if (*fulltextptr == '\0' || + *fulltextptr++ == Outpar) break; - if (*fulltextptr == Nularg) + if (fulltextptr[-1] == Nularg) remw--; - fulltextptr++; } } else { #ifdef MULTIBYTE_SUPPORT @@ -1397,12 +1396,11 @@ prompttrunc(int arg, int truncchar, int doprint, int endchar, if (*skiptext == Inpar) { /* see comment on left truncation above */ for (;;) { - if (*skiptext == Outpar || - *skiptext == '\0') + if (*skiptext == '\0' || + *skiptext++ == Outpar) break; - if (*skiptext == Nularg) + if (skiptext[-1] == Nularg) maxwidth--; - skiptext++; } } else { #ifdef MULTIBYTE_SUPPORT -- cgit v1.2.3