I am not understanding why this would fail:
eddie: > :testpattern (~no) no soup for you
( ~no- Remaining pattern: )
Failed
Adjusted Input: no soup for you
Canonical Input: no soup for you
(~yes) seems to match as I would expect:
eddie: > :testpattern (~yes) yes soup for you
( ~yes(~yes)+ )+
Matched