diff options
author | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2014-09-12 20:35:16 +0100 |
---|---|---|
committer | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2014-09-12 20:35:16 +0100 |
commit | 246404a44d14e733d275e20c32dcb756e5b88a0b (patch) | |
tree | 0f619dda23773b65681d4f3c5b58aa98f862eb6b /Src/Modules/parameter.c | |
parent | add8d94665bc180e781b87051d8dcf71e7b3cb53 (diff) | |
download | zsh-246404a44d14e733d275e20c32dcb756e5b88a0b.tar.gz zsh-246404a44d14e733d275e20c32dcb756e5b88a0b.tar.xz zsh-246404a44d14e733d275e20c32dcb756e5b88a0b.zip |
Add $functypestack special parameter in zsh/parameter
Diffstat (limited to 'Src/Modules/parameter.c')
-rw-r--r-- | Src/Modules/parameter.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c index 0385a709e..02a642bec 100644 --- a/Src/Modules/parameter.c +++ b/Src/Modules/parameter.c @@ -640,6 +640,41 @@ funcfiletracegetfn(UNUSED(Param pm)) return ret; } +/* Functions for the functypestack special parameter. */ + +static char ** +functypestackgetfn(UNUSED(Param pm)) +{ + Funcstack f; + int num; + char **ret, **p; + + for (f = funcstack, num = 0; f; f = f->prev, num++); + + ret = (char **) zhalloc((num + 1) * sizeof(char *)); + + for (f = funcstack, p = ret; f; f = f->prev, p++) + { + switch (f->tp) + { + case FS_SOURCE: + *p = "source"; + break; + + case FS_FUNC: + *p = "function"; + break; + + case FS_EVAL: + *p = "eval"; + break; + } + } + *p = NULL; + + return ret; +} + /* Functions for the builtins special parameter. */ /**/ @@ -2046,6 +2081,8 @@ static const struct gsu_array funcsourcetrace_gsu = { funcsourcetracegetfn, arrsetfn, stdunsetfn }; static const struct gsu_array funcfiletrace_gsu = { funcfiletracegetfn, arrsetfn, stdunsetfn }; +static const struct gsu_array functypestack_gsu = +{ functypestackgetfn, arrsetfn, stdunsetfn }; static const struct gsu_array reswords_gsu = { reswordsgetfn, arrsetfn, stdunsetfn }; static const struct gsu_array disreswords_gsu = @@ -2090,6 +2127,8 @@ static struct paramdef partab[] = { scanpmfunctions), SPECIALPMDEF("functrace", PM_ARRAY|PM_READONLY, &functrace_gsu, NULL, NULL), + SPECIALPMDEF("functypestack", PM_ARRAY|PM_READONLY, + &functypestack_gsu, NULL, NULL), SPECIALPMDEF("galiases", 0, &pmgaliases_gsu, getpmgalias, scanpmgaliases), SPECIALPMDEF("history", PM_READONLY, |