Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: RPS* and RPROMPT* are no longer tied since zsh 5.0.6

Marc Cornellà wrote on Wed, Nov 24, 2021 at 11:03:58 +0100:
> doing some testing I've found that, when either RPS1 or RPROMPT are
> unset (but not both), changes in one of them are not reflected in the
> other. The same happens with RPS2 and RPROMPT2.
> The same does not happen with PS* and PROMPT*.
> % zsh_test_versions 'RPS1=abcd; echo RPS1=$RPS1 RPROMPT=$RPROMPT'    #
> function in https://github.com/mcornella/dotfiles/blob/4bf802f6/functions#L78-L118
> 4.3.11: RPS1=abcd RPROMPT=abcd
> 5.0.5: RPS1=abcd RPROMPT=abcd
> 5.0.6: RPS1=abcd RPROMPT=
> 5.8: RPS1=abcd RPROMPT=
> master: RPS1=abcd RPROMPT=

Thanks.  Bisects to 32337.  (That post refers to another thread without
identifying it.  I think the referenced thread is 32158.)

> I can work around that, but should this be considered a bug or is this intended?

Looks like a bug to me.  The two Param's share the param::u.data member,
so once both are set changes to one are reflected in the other.
However, they are both initialized with PM_UNSET.  Presumably, setting
either doesn't remove the PM_UNSET flag from the other, and then the
presence of PM_UNSET causes the value not to be used, even though it's

diff --git a/Test/D01prompt.ztst b/Test/D01prompt.ztst
index 3fb27e620..6879e6fd1 100644
--- a/Test/D01prompt.ztst
+++ b/Test/D01prompt.ztst
@@ -257,3 +257,9 @@
     ZTST_skip='Missing terminfo module or non-colour terminal'
 0:Equivalence of terminal colour settings (background colour)
+ (RPS1=foo; echo $RPS1 $RPROMPT)
+ (RPS2=bar; echo $RPS2 $RPROMPT2)
+-fD:RPS1 and RPROMPT are aliases (regression from 5.0.6) (workers/49600)
+>foo foo
+>bar bar

Messages sorted by: Reverse Date, Date, Thread, Author