From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8002 invoked from network); 9 Jun 2000 14:13:10 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 9 Jun 2000 14:13:10 -0000 Received: (qmail 10006 invoked by alias); 9 Jun 2000 14:13:04 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 11838 Received: (qmail 9999 invoked from network); 9 Jun 2000 14:13:03 -0000 Date: Fri, 09 Jun 2000 15:12:31 +0100 From: Peter Stephenson Subject: PATCH: typeset -H to hide value of parameters in typeset lists To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Message-id: <0FVW0001X4STIA@la-la.cambridgesiliconradio.com> Content-transfer-encoding: 7BIT This works a bit like the -h flag, but instead of hiding the special parameter from use by typeset, it forces the value not to be shown in typeset listings (and nowhere else). It's on by default for parameters in zsh/parameter and zsh/mapfile. Now a man can once again safely invoke `typeset' without the terrible horror of a thousand lines of shell function being dumped in his face. Index: Doc/Zsh/builtins.yo =================================================================== RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v retrieving revision 1.9 diff -u -r1.9 builtins.yo --- Doc/Zsh/builtins.yo 2000/05/15 00:31:20 1.9 +++ Doc/Zsh/builtins.yo 2000/06/09 13:50:52 @@ -1128,6 +1128,14 @@ modules (currently those in tt(mapfile) and tt(parameter)) are automatically given the tt(-h) attribute to avoid name clashes. ) +item(tt(-H))( +Hide value: specifies that tt(typeset) will not display the value of the +parameter when listing parameters; the display for such parameters is +always as if the `tt(PLUS())' flag had been given. Use of the parameter is +in other respects normal. This is on by default for the parameters in the +tt(zsh/parameter) and tt(zsh/mapfile) modules. Note, however, that unlike +the tt(-h) flag this is also useful for non-special parameters. +) item(tt(-i))( Use an internal integer representation. If var(n) is nonzero it defines the output arithmetic base, otherwise it is determined by the Index: Src/builtin.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v retrieving revision 1.21 diff -u -r1.21 builtin.c --- Src/builtin.c 2000/06/05 07:57:27 1.21 +++ Src/builtin.c 2000/06/09 13:50:53 @@ -50,7 +50,7 @@ BUILTIN("cd", 0, bin_cd, 0, 2, BIN_CD, NULL, NULL), BUILTIN("chdir", 0, bin_cd, 0, 2, BIN_CD, NULL, NULL), BUILTIN("continue", BINF_PSPECIAL, bin_break, 0, 1, BIN_CONTINUE, NULL, NULL), - BUILTIN("declare", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFLRTUZafghilrtux", NULL), + BUILTIN("declare", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFHLRTUZafghilrtux", NULL), BUILTIN("dirs", 0, bin_dirs, 0, -1, 0, "v", NULL), BUILTIN("disable", 0, bin_enable, 0, -1, BIN_DISABLE, "afmr", NULL), BUILTIN("disown", 0, bin_fg, 0, -1, BIN_DISOWN, NULL, NULL), @@ -60,11 +60,11 @@ BUILTIN("enable", 0, bin_enable, 0, -1, BIN_ENABLE, "afmr", NULL), BUILTIN("eval", BINF_PSPECIAL, bin_eval, 0, -1, BIN_EVAL, NULL, NULL), BUILTIN("exit", BINF_PSPECIAL, bin_break, 0, 1, BIN_EXIT, NULL, NULL), - BUILTIN("export", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, BIN_EXPORT, "EFLRTUZafhilrtu", "xg"), + BUILTIN("export", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, BIN_EXPORT, "EFHLRTUZafhilrtu", "xg"), BUILTIN("false", 0, bin_false, 0, -1, 0, NULL, NULL), BUILTIN("fc", BINF_FCOPTS, bin_fc, 0, -1, BIN_FC, "nlreIRWAdDfEim", NULL), BUILTIN("fg", 0, bin_fg, 0, -1, BIN_FG, NULL, NULL), - BUILTIN("float", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "EFghlrtux", "E"), + BUILTIN("float", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "EFHghlrtux", "E"), BUILTIN("functions", BINF_TYPEOPTS, bin_functions, 0, -1, 0, "mtuU", NULL), BUILTIN("getln", 0, bin_read, 0, -1, 0, "ecnAlE", "zr"), BUILTIN("getopts", 0, bin_getopts, 2, -1, 0, NULL, NULL), @@ -75,11 +75,11 @@ #endif BUILTIN("history", 0, bin_fc, 0, -1, BIN_FC, "nrdDfEim", "l"), - BUILTIN("integer", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "ghilrtux", "i"), + BUILTIN("integer", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "Hghilrtux", "i"), BUILTIN("jobs", 0, bin_fg, 0, -1, BIN_JOBS, "dlpZrs", NULL), BUILTIN("kill", 0, bin_kill, 0, -1, 0, NULL, NULL), BUILTIN("let", 0, bin_let, 1, -1, 0, NULL, NULL), - BUILTIN("local", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFLRTUZahilrtux", NULL), + BUILTIN("local", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFHLRTUZahilrtux", NULL), BUILTIN("log", 0, bin_log, 0, 0, 0, NULL, NULL), BUILTIN("logout", 0, bin_break, 0, 1, BIN_LOGOUT, NULL, NULL), @@ -98,7 +98,7 @@ BUILTIN("pwd", 0, bin_pwd, 0, 0, 0, "rLP", NULL), BUILTIN("r", BINF_R, bin_fc, 0, -1, BIN_FC, "nrl", NULL), BUILTIN("read", 0, bin_read, 0, -1, 0, "rzu0123456789pkqecnAlE", NULL), - BUILTIN("readonly", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFLRTUZafghiltux", "r"), + BUILTIN("readonly", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFHLRTUZafghiltux", "r"), BUILTIN("rehash", 0, bin_hash, 0, 0, 0, "df", "r"), BUILTIN("return", BINF_PSPECIAL, bin_break, 0, 1, BIN_RETURN, NULL, NULL), BUILTIN("set", BINF_PSPECIAL, bin_set, 0, -1, 0, NULL, NULL), @@ -112,7 +112,7 @@ BUILTIN("trap", BINF_PSPECIAL, bin_trap, 0, -1, 0, NULL, NULL), BUILTIN("true", 0, bin_true, 0, -1, 0, NULL, NULL), BUILTIN("type", 0, bin_whence, 0, -1, 0, "ampfsw", "v"), - BUILTIN("typeset", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFLRTUZafghilrtuxm", NULL), + BUILTIN("typeset", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "AEFHLRTUZafghilrtuxm", NULL), BUILTIN("umask", 0, bin_umask, 0, 1, 0, "S", NULL), BUILTIN("unalias", 0, bin_unhash, 1, -1, 0, "m", "a"), BUILTIN("unfunction", 0, bin_unhash, 1, -1, 0, "m", "f"), Index: Src/params.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/params.c,v retrieving revision 1.17 diff -u -r1.17 params.c --- Src/params.c 2000/06/05 19:54:03 1.17 +++ Src/params.c 2000/06/09 13:50:53 @@ -3181,7 +3181,7 @@ printf("exported "); } - if (printflags & PRINT_NAMEONLY) { + if ((printflags & PRINT_NAMEONLY) || (p->flags & PM_HIDEVAL)) { zputs(p->nam, stdout); putchar('\n'); return; Index: Src/subst.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/subst.c,v retrieving revision 1.10 diff -u -r1.10 subst.c --- Src/subst.c 2000/06/06 08:35:54 1.10 +++ Src/subst.c 2000/06/09 13:50:53 @@ -1109,6 +1109,8 @@ val = dyncat(val, "-unique"); if (f & PM_HIDE) val = dyncat(val, "-hide"); + if (f & PM_HIDE) + val = dyncat(val, "-hideval"); if (f & PM_SPECIAL) val = dyncat(val, "-special"); vunset = 0; Index: Src/zsh.h =================================================================== RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v retrieving revision 1.12 diff -u -r1.12 zsh.h --- Src/zsh.h 2000/06/02 01:54:16 1.12 +++ Src/zsh.h 2000/06/09 13:50:53 @@ -1117,21 +1117,22 @@ #define PM_UNALIASED (1<<13) /* do not expand aliases when autoloading */ #define PM_HIDE (1<<14) /* Special behaviour hidden by local */ -#define PM_TIED (1<<15) /* array tied to colon-path or v.v. */ +#define PM_HIDEVAL (1<<15) /* Value not shown in `typeset' commands */ +#define PM_TIED (1<<16) /* array tied to colon-path or v.v. */ /* Remaining flags do not correspond directly to command line arguments */ -#define PM_LOCAL (1<<16) /* this parameter will be made local */ -#define PM_SPECIAL (1<<17) /* special builtin parameter */ -#define PM_DONTIMPORT (1<<18) /* do not import this variable */ -#define PM_RESTRICTED (1<<19) /* cannot be changed in restricted mode */ -#define PM_UNSET (1<<20) /* has null value */ -#define PM_REMOVABLE (1<<21) /* special can be removed from paramtab */ -#define PM_AUTOLOAD (1<<22) /* autoloaded from module */ -#define PM_NORESTORE (1<<23) /* do not restore value of local special */ -#define PM_HASHELEM (1<<24) /* is a hash-element */ +#define PM_LOCAL (1<<17) /* this parameter will be made local */ +#define PM_SPECIAL (1<<18) /* special builtin parameter */ +#define PM_DONTIMPORT (1<<19) /* do not import this variable */ +#define PM_RESTRICTED (1<<20) /* cannot be changed in restricted mode */ +#define PM_UNSET (1<<21) /* has null value */ +#define PM_REMOVABLE (1<<22) /* special can be removed from paramtab */ +#define PM_AUTOLOAD (1<<23) /* autoloaded from module */ +#define PM_NORESTORE (1<<24) /* do not restore value of local special */ +#define PM_HASHELEM (1<<25) /* is a hash-element */ /* The option string corresponds to the first of the variables above */ -#define TYPESET_OPTSTR "aiEFALRZlurtxUhT" +#define TYPESET_OPTSTR "aiEFALRZlurtxUhHT" /* These typeset options take an optional numeric argument */ #define TYPESET_OPTNUM "LRZiEF" Index: Src/Modules/mapfile.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/mapfile.c,v retrieving revision 1.3 diff -u -r1.3 mapfile.c --- Src/Modules/mapfile.c 2000/06/02 01:54:16 1.3 +++ Src/Modules/mapfile.c 2000/06/09 13:50:53 @@ -86,8 +86,8 @@ unsetparam(mapfile_nam); mapfile_pm = NULL; - if (!(pm = createparam(mapfile_nam, - PM_SPECIAL|PM_HIDE|PM_REMOVABLE|PM_HASHED))) + if (!(pm = createparam(mapfile_nam, PM_SPECIAL|PM_HIDE|PM_HIDEVAL| + PM_REMOVABLE|PM_HASHED))) return NULL; pm->level = pm->old ? locallevel : 0; Index: Src/Modules/parameter.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/Modules/parameter.c,v retrieving revision 1.9 diff -u -r1.9 parameter.c --- Src/Modules/parameter.c 2000/06/05 07:57:27 1.9 +++ Src/Modules/parameter.c 2000/06/09 13:50:53 @@ -51,7 +51,8 @@ Param pm; HashTable ht; - if (!(pm = createparam(name, PM_SPECIAL|PM_HIDE|PM_REMOVABLE|PM_HASHED))) + if (!(pm = createparam(name, PM_SPECIAL|PM_HIDE|PM_HIDEVAL| + PM_REMOVABLE|PM_HASHED))) return NULL; pm->level = pm->old ? locallevel : 0; @@ -122,6 +123,8 @@ val = dyncat(val, "-unique"); if (f & PM_HIDE) val = dyncat(val, "-hide"); + if (f & PM_HIDEVAL) + val = dyncat(val, "-hideval"); if (f & PM_SPECIAL) val = dyncat(val, "-special"); } else @@ -1942,8 +1945,8 @@ if (def->hsetfn) def->pm->sets.hfn = def->hsetfn; } else { - if (!(def->pm = createparam(def->name, def->flags | PM_HIDE | - PM_REMOVABLE))) + if (!(def->pm = createparam(def->name, def->flags | PM_HIDE| + PM_HIDEVAL | PM_REMOVABLE))) return 1; def->pm->sets.afn = def->setfn; def->pm->gets.afn = def->getfn; -- Peter Stephenson Cambridge Silicon Radio, Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070