Subject: bug#59956: 29.0.60: Failure when completing arguments in Eshell after variable interpolation

From: Augusto Stoffel <[email-masked]>
Date: Sun, 11 Dec 2022 09:56:18 +0100

On Sun, 11 Dec 2022 at 09:44, Eli Zaretskii wrote:

>> Cc: [email-masked]
>> Date: Sat, 10 Dec 2022 17:25:53 -0800
>> From: Jim Porter <[email-masked]>
>> 
>> X-Debbugs-CC: [email-masked]
>> 
>> Starting from "emacs -Q -f -eshell", type "echo $exec-path " (note the 
>> trailing space), and then hit TAB. The result is this error:
>> 
>>    pcomplete-match: Wrong type argument: stringp, ("/usr/bin" ...)
>> 
>> This is a regression from Emacs 28, and it looks like it's due to 
>> 'pcomplete-here-using-help' assuming that all the pcomplete args are 
>> strings. However, 'exec-path' is a list (and Eshell reports it this way 
>> to pcomplete), so the completion fails. I think all that's necessary is 
>> checking that the pcomplete args are strings in 
>> 'pcomplete-here-using-help', but I know next to nothing about pcomplete...
>
> Adding Stefan, who should know more about pcomplete.
>
> Stefan, any suggestions?

For the record, this problem afflicts just about every pcomplete rule
(except probably those meant specifically for eshell).  I just tried
`cvs $echo-path TAB` and I get the same error.

The issue here is what eshell returns via (pcomplete-arg ...) etc.
Currently it can be a list.  How about changing it to the string
"$echo-path", with the list sneaked in as a text property?