Subject: bufferwords() lexes a subshell in a shortloop repeat as a string
From: Daniel Shahaf <[email-masked]>
To: [email-masked]
Date: Fri, 15 Jan 2016 06:26:48 +0000
List-Id: Zsh Workers List <zsh-workers.zsh.org>

The ${(z)} modifier gives me a subshell as a single unit:

    % pz() { print -rl - ${(qq)${(z)1}} } 
    % pz 'repeat 3 (echo this is a subshell)'
    'repeat'
    '3'
    '(echo this is a subshell)'

I expected the subshell to be broken into '(', 'echo', …, ')' tokens, as
per usual.

Looking at it in gdb, I see (after the third call to ctxtlex()):
    tok == STRING
    tokstr == "(echo this is a subshell)"

Cheers,

Daniel