zsh-workers
 help / color / mirror / code / Atom feed
* Amusing (?) behavior of zsh/parameter specials
@ 2016-01-23 17:07 Bart Schaefer
  2016-01-24 18:26 ` Peter Stephenson
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2016-01-23 17:07 UTC (permalink / raw)
  To: zsh-workers

This is clearly a side-effect of feature autoloading, but:

torch% typeset -m -p fun\*
typeset functrace
typeset funcsourcetrace
typeset funcstack
typeset functions
typeset funcfiletrace
torch% : $funcstack
torch% typeset -m -p fun\*
typeset functrace
typeset funcsourcetrace
typeset functions
typeset funcfiletrace
torch% () { print $functrace }
Src/zsh:21
torch% typeset -m -p fun\*    
typeset funcsourcetrace
typeset functions
typeset funcfiletrace

Note how each parameter name disappears from the typeset output after it
has been reference once.

torch% print ${(t)functrace}
array-readonly-hide-hideval-special

Probably there's nothing to be done about this, I just found it curious.
Maybe autoloaded parameters should always be hidden until they load?


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Amusing (?) behavior of zsh/parameter specials
  2016-01-23 17:07 Amusing (?) behavior of zsh/parameter specials Bart Schaefer
@ 2016-01-24 18:26 ` Peter Stephenson
  2016-01-26  5:11   ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Stephenson @ 2016-01-24 18:26 UTC (permalink / raw)
  To: zsh-workers

On Sat, 23 Jan 2016 09:07:36 -0800
Bart Schaefer <schaefer@brasslantern.com> wrote:
> Maybe autoloaded parameters should always be hidden until they load?

That's definitely arguable, yes.  -p and its features are there as a
concession to POSIX-style order, in order to make it easy to restore
parameters the user has defined, and autoloaded parameters, whether
disappearing or not, don't fit that picture.

pws


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Amusing (?) behavior of zsh/parameter specials
  2016-01-24 18:26 ` Peter Stephenson
@ 2016-01-26  5:11   ` Bart Schaefer
  2016-01-26  9:58     ` Peter Stephenson
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2016-01-26  5:11 UTC (permalink / raw)
  To: zsh-workers

On Jan 24,  6:26pm, Peter Stephenson wrote:
} Subject: Re: Amusing (?) behavior of zsh/parameter specials
}
} On Sat, 23 Jan 2016 09:07:36 -0800
} Bart Schaefer <schaefer@brasslantern.com> wrote:
} > Maybe autoloaded parameters should always be hidden until they load?
} 
} That's definitely arguable, yes.  -p and its features are there as a
} concession to POSIX-style order, in order to make it easy to restore
} parameters the user has defined, and autoloaded parameters, whether
} disappearing or not, don't fit that picture.

Two competing potential patches for this.


I lean a little bit toward this one:

diff --git a/Src/params.c b/Src/params.c
index b2e8897..a1f0292 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -5258,7 +5258,8 @@ printparamnode(HashNode hn, int printflags)
 
     if (printflags & PRINT_TYPESET) {
 	if ((p->node.flags & (PM_READONLY|PM_SPECIAL)) ==
-	    (PM_READONLY|PM_SPECIAL)) {
+	    (PM_READONLY|PM_SPECIAL) ||
+	    (p->node.flags & PM_AUTOLOAD)) {
 	    /*
 	     * It's not possible to restore the state of
 	     * these, so don't output.


But this one has its attractions as well:

diff --git a/Src/params.c b/Src/params.c
index b2e8897..0ec0042 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -5265,7 +5265,10 @@ printparamnode(HashNode hn, int printflags)
 	     */
 	    return;
 	}
-	printf("typeset ");
+	if (p->node.flags & PM_AUTOLOAD)
+	    printf("unset ");
+	else
+	    printf("typeset ");
     }
 
     /* Print the attributes of the parameter */


The main problem with the latter one is that, if the parameter really
is read-only after autoloading, "restoring" the unset will fail.  I
guess the point is to restore the parameters that ARE set, so now that
I've written this all down I lean even more to the first variant.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Amusing (?) behavior of zsh/parameter specials
  2016-01-26  5:11   ` Bart Schaefer
@ 2016-01-26  9:58     ` Peter Stephenson
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Stephenson @ 2016-01-26  9:58 UTC (permalink / raw)
  To: zsh-workers

On Mon, 25 Jan 2016 21:11:40 -0800
Bart Schaefer <schaefer@brasslantern.com> wrote:
> The main problem with the latter one is that, if the parameter really
> is read-only after autoloading, "restoring" the unset will fail.  I
> guess the point is to restore the parameters that ARE set, so now that
> I've written this all down I lean even more to the first variant.

Yes, that was my attitude in previous changes for typeset -p.

pws


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-01-26  9:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-23 17:07 Amusing (?) behavior of zsh/parameter specials Bart Schaefer
2016-01-24 18:26 ` Peter Stephenson
2016-01-26  5:11   ` Bart Schaefer
2016-01-26  9:58     ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).