mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-01 18:30:55 +01:00
11838: typeset -H
This commit is contained in:
parent
716f5d4e39
commit
6b87e6fda3
7 changed files with 38 additions and 24 deletions
|
|
@ -86,8 +86,8 @@ createmapfilehash()
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,8 @@ createspecialhash(char *name, GetNodeFunc get, ScanTabFunc scan)
|
|||
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 @@ paramtypestr(Param pm)
|
|||
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 @@ boot_(Module m)
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ static struct builtin builtins[] =
|
|||
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 @@ static struct builtin builtins[] =
|
|||
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 @@ static struct builtin builtins[] =
|
|||
#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 @@ static struct builtin builtins[] =
|
|||
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 @@ static struct builtin builtins[] =
|
|||
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"),
|
||||
|
|
|
|||
|
|
@ -3181,7 +3181,7 @@ printparamnode(HashNode hn, int printflags)
|
|||
printf("exported ");
|
||||
}
|
||||
|
||||
if (printflags & PRINT_NAMEONLY) {
|
||||
if ((printflags & PRINT_NAMEONLY) || (p->flags & PM_HIDEVAL)) {
|
||||
zputs(p->nam, stdout);
|
||||
putchar('\n');
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1109,6 +1109,8 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
|
|||
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;
|
||||
|
|
|
|||
23
Src/zsh.h
23
Src/zsh.h
|
|
@ -1117,21 +1117,22 @@ struct param {
|
|||
#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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue