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

Re: "zstyle -L" doesn't quote properly



Bart Schaefer wrote on Wed, Apr 07, 2021 at 09:42:12 -0700:
> This occurs as a result of a typo when defining the style (the word
> "menu" is misplaced after a copy/paste/edit) but produces garbage
> output.  I think the assumption is that in the syntax ...
> 
>   zstyle [ -e | - | -- ] PATTERN STYLE STRING ...
> 
> ... the STYLE must be a simple word and therefore doesn't need
> quoting, but in fact the command will accept any sort of string in
> that position.
> 
> % zstyle -e ':completion::*:default' '[[ $WIDGET =
> (|reverse-)menu-complete ]] && reply=(menu yes select interactive)'
> % zstyle -L
> zstyle -e ':completion::*:default' [[ $WIDGET =
> (|reverse-)menu-complete ]] && reply=(menu yes select interactive)

Here's a test.

Right now it prints "ke\x83 y", i.e., the correct value, but metafied
and not escaped.

I'll go ahead and commit it, but whoever is working on a fix, feel free
to tweak/extend it as needed.

Cheers,

Daniel
.oO( type-safety for metafied/tokenized/verbatim strings )


diff --git a/Test/V05styles.ztst b/Test/V05styles.ztst
index 048751941..3fcedfef1 100644
--- a/Test/V05styles.ztst
+++ b/Test/V05styles.ztst
@@ -164,3 +164,12 @@
 0:the example in the documentation remains correct
 >snow
 >snow
+
+ (
+  zstyle $'con\x00text' $'ke\x00y' $'val\x00u' $'e'
+  a=( ${(f)"$(zstyle -L)"} )
+  a=( ${(M)a:#*con*text*ke*y*val*u*e} )
+  print -r -- "$a"
+ )
+-f:zstyle -L escapes the key (regression: workers/48424)
+>zstyle $'con\C-@text' $'ke\C-@y' $'val\C-@u' e




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